计算机组成原理32位MIPS CPU设计实验(指令译码器电路设计 、时序发生器状态机设计、时序发生器输出函数、硬布线控制器)

这篇具有很好参考价值的文章主要介绍了计算机组成原理32位MIPS CPU设计实验(指令译码器电路设计 、时序发生器状态机设计、时序发生器输出函数、硬布线控制器)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

实验四 32位MIPS CPU设计实验

这次实验是32位MIPS CPU设计实验(单总线CPU-定长指令周期-3级时序),在头歌当中一共需要我们进行六道题的测试,分别为MIPS指令译码器设计,定长指令周期(时序发生FSM设计,时序发生器输出函数设计,硬布线控制器,单总线CPU设计),硬布线控制器组合逻辑单元。其中由于第六题是对前面五题一个最终的检验,所以我们不需要进行新的设计,这边我按照老师给的提纲分享了以下四个实验的具体设计原理:1、指令译码器电路设计 2、时序发生器状态机(定长指令周期)设计3、时序发生器输出函数(定长指令周期)4、硬布线控制器

1指令译码器电路设计

1.1设计要求

了解指令译码的基本概念,将32位MIPS指令字译码成不同的指令译码信号。利用logisim平台中现有运算部件构建利用比较器等功能模块将32位MIPS 指令字译码生成LW、SW、BEQ、SLT、ADDI、OtherInstr等指令译码信号,早给定CPU中实现支持以上指令的电路

1.2方案设计

1.2.1 指令作用

首先我们需要了解到这六条MIPS指令的作用,其中所有的imm立即数都需要括展到32位
Lw指令作用:从数存(数据存储器)中取数据写进寄存器
Sw指令作用:将寄存器中的值写入数存
Beq指令作用:当寄存器1的值和寄存器2的值相等时发生跳转,跳转的目的地址位当前指令的地址加上符号括展的imm的值
ADDI指令作用:用于寄存器中数值加上常数
Slt指令作用:比较rs和rt两个寄存器中的值,如果rs中的值小于rt中的值,则把rd计算器置一,否则把rd计算器清零
时序发生器状态机 logisim,每日一个小进步,大学冲!!!,计算机组成原理开卷!,fpga开发,硬件工程,嵌入式硬件,后端,单片机

1.2.2 单总线CPU原理

这次使用为单总线CPU
首先我们看以下单总线结构CPU在logisim中的实现,我们可以看到在实际logisim,使用了slt信号控制alu进行比较rs和rt两个寄存器中的值的大小,本次简单的CPU实验,不需要sub信号,但是sub信号在A输入引脚可以进行连接,大家可以在下图寻找,当前并没有使用,psw寄存器只保留了一位equal的控制位,psw中并没有设计其余的状态标记,ALU的每一次运算都会比较x和y,在这边呢,就是A和B引脚输出的两个值的大小是否相等,并通过psw寄存器输出equal信号时序发生器状态机 logisim,每日一个小进步,大学冲!!!,计算机组成原理开卷!,fpga开发,硬件工程,嵌入式硬件,后端,单片机

1.2.3 指令译码原理

时序发生器状态机 logisim,每日一个小进步,大学冲!!!,计算机组成原理开卷!,fpga开发,硬件工程,嵌入式硬件,后端,单片机

指令译码器是控制器核心功能部件,实现译码功能,负责将指令字翻译成一根根的指令译码信号,每一根指令译码信号代表一条具体的指令,如上图中的I1…Im。根据指令码的特定信息,译码产生指令译码信号,时钟产生器承担了持续控制的功能生成状态周期M和时钟节拍T,控制器利用这些持续信号,对操作信号进行持续调制。

1.2.4 设计思路

将指令寄存器IR送来的32位指令字,生成指令译码信号,当前IR中存放的是哪一种指令,讲过译码器之后,就应该令相应的引脚置一,而其余输出引脚为0时序发生器状态机 logisim,每日一个小进步,大学冲!!!,计算机组成原理开卷!,fpga开发,硬件工程,嵌入式硬件,后端,单片机
那么这边是利用比较器等功能模块将32位MIPS指令字译码对应生成指令译码信号,用比较器将IR送来的指令字的op字段,和已由分线器提取出的op字段,其中题目将各个op部分对应的常量值已经给出,我们需要对应指令码结构,将对应的op字段送到比较器,相比较之后的输出结果就连到相应的指令当中时序发生器状态机 logisim,每日一个小进步,大学冲!!!,计算机组成原理开卷!,fpga开发,硬件工程,嵌入式硬件,后端,单片机
时序发生器状态机 logisim,每日一个小进步,大学冲!!!,计算机组成原理开卷!,fpga开发,硬件工程,嵌入式硬件,后端,单片机

1.3实验步骤

  1. 打开源程序,查看控制器的输入引脚,还有其他重要的输出引脚
  2. 查看指令码结构,与系统自带的op字段,然后进行连接
  3. 输出相应经过比较之后输出的指令结果

1.4故障与调试

1.4.1 slt连接问题

故障现象:slt信号的译码条件有两个,连线时发生问题
时序发生器状态机 logisim,每日一个小进步,大学冲!!!,计算机组成原理开卷!,fpga开发,硬件工程,嵌入式硬件,后端,单片机
原因分析:slt信号的译码条件有两个,分别是op和0,以及funct字段的值是固定的十进制44,这两个条件需要同时成立,slt引脚才能输出1,那么两个条件同时成立,连线方式较其他的指令有点复杂
解决方案:在00另一边连的是op,funct旁边连接2a,这样就是正确的连接方式。

1.5测试与分析

溢出测试用例见表 1.3 。
表 1.3溢出信号测试用例
Cnt IR LW SW BEQ ADDI SLT OtherI

  1. 0000 2010ffff 0 0 0 1 0 0
  2. 0001 20110000 0 0 0 1 0 0
  3. 0002 ae300200 0 1 0 0 0 0
  4. 0003 22100001 0 0 0 1 0 0
  5. 0004 22310004 0 0 0 1 0 0
  6. 0005 ae300200 0 1 0 0 0 0
  7. 0006 22100001 0 0 0 1 0 0
  8. 0007 22310004 0 0 0 1 0 0
  9. 0008 ae300200 0 1 0 0 0 0
  10. 0009 22100001 0 0 0 1 0 0
  11. 000a 22310004 0 0 0 1 0 0
  12. 000b ae300200 0 1 0 0 0 0
  13. 000c 22100001 0 0 0 1 0 0
  14. 000d 22310004 0 0 0 1 0 0
  15. 000e ae300200 0 1 0 0 0 0
  16. 000f 22100001 0 0 0 1 0 0
  17. 0010 22310004 0 0 0 1 0 0
  18. 0011 ae300200 0 1 0 0 0 0
  19. 0012 22100001 0 0 0 1 0 0
  20. 0013 22310004 0 0 0 1 0 0
  21. 0014 ae300200 0 1 0 0 0 0
  22. 0015 22100001 0 0 0 1 0 0
  23. 0016 22310004 0 0 0 1 0 0
  24. 0017 ae300200 0 1 0 0 0 0
  25. 0018 20100000 0 0 0 1 0 0
  26. 0019 2011001c 0 0 0 1 0 0
  27. 001a 8e130200 1 0 0 0 0 0
  28. 001b 8e340200 1 0 0 0 0 0
  29. 001c 0274402a 0 0 0 0 1 0
  30. 001d 11000002 0 0 1 0 0 0
  31. 001e ae330200 0 1 0 0 0 0
  32. 001f ae140200 0 1 0 0 0 0
  33. 0020 2231fffc 0 0 0 1 0 0
  34. 0021 12110001 0 0 1 0 0 0
  35. 0022 1000fff7 0 0 1 0 0 0
  36. 0023 22100004 0 0 0 1 0 0
  37. 0024 2011001c 0 0 0 1 0 0
  38. 0025 12110001 0 0 1 0 0 0
  39. 0026 1000fff3 0 0 1 0 0 0
  40. 0027 1000ffff 0 0 1 0 0 0
  41. 0028 00000000 0 0 0 0 0 1
    时序发生器状态机 logisim,每日一个小进步,大学冲!!!,计算机组成原理开卷!,fpga开发,硬件工程,嵌入式硬件,后端,单片机

2时序发生器状态机(定长指令周期)设计

2.1设计要求

利用数字逻辑电路相关知识设计定长指令周期的三级时序系统,时序发生器包括状态机和输出函数两部分,设计状态机。
上一关实现了指令译码器后,就可以开始实现上图中的另外一个核心功能模块,时序发生器了,时序发生器内部框图如下图所示,主要包括状态寄存器,状态机组合逻辑,输出函数组合逻辑三部分。其中状态机负责现态与次态的转换,输出函数根据当前状态生成状态周期电位和节拍周期电位。

2.2方案设计

2.2.1时序产生器原理

其实这个原理较为简单,只需要了解这张图片就可以了,我们针对单总线架构cpu设计的定长指令周期的三级时序系统,由机器周期,节拍电位构成。其中机器周期用于表示当前指令处于哪一个周期,取指令周期mif,持续四个周期t,t1,t2,t3,t4之后变为低电平,而同时Mcal计算周期变成高电平,表示指令执行进入了计算周期,然后计算周期经过t1,t2,t3,t4,四个时钟节拍之后,变为低电平无效。同时进入执行周期,执行周期执行完4个节拍之后,又进入到取指周期,以此往复不断的循环,从而实现程序的自动执行,而节拍电位t1,t2,t3,t4。每一个t完成一个微操作
时序发生器状态机 logisim,每日一个小进步,大学冲!!!,计算机组成原理开卷!,fpga开发,硬件工程,嵌入式硬件,后端,单片机

2.2.2状态寄存器原理

作用是把三个状态周期,总共12个节拍的三级时序系统,简化成12个状态来进行表示,如下图所示,用s0表示取指令周期的第一个节拍,以此类推,一共12状态。每一个次态和输入的现态都是加1的关系,本质上是计数器.通过下图我们可以得到m和t与现态之间的关系
时序发生器状态机 logisim,每日一个小进步,大学冲!!!,计算机组成原理开卷!,fpga开发,硬件工程,嵌入式硬件,后端,单片机

2.2.3 设计思路

由此可见,现态和次态的真值表,从而得到次态与输入信号和现态之间的逻辑表达式,从而可以是实现状态机的组合逻辑设计,组合时序只与输入的现态有关系的,所以只需要一个一个的进行累加就行,并且还需要将相应的excel文件填写完成,之后将生成的逻辑表示式输入就可以了

2.3实验步骤

1)清楚了解状态机,知道m和t与现态之间的关系
2)将表格单总线MIPS三级时序产生器逻辑自动生成当中,最左侧的状态转换表填完完成,就是我们实现状态机设计,所对应的真值表,这个表我们只需要填写现态,为十进制的现态值,以及十进制的次态值就可以了,其中现态二进制s3-s0的值,与次态n3-n0的值会自动生成
填写完成如下表
时序发生器状态机 logisim,每日一个小进步,大学冲!!!,计算机组成原理开卷!,fpga开发,硬件工程,嵌入式硬件,后端,单片机
3)通过表格触发器输出函数,自动生成逻辑表达式,复制我圈起来部分的内容,将其粘贴到logisim当中时序发生器状态机 logisim,每日一个小进步,大学冲!!!,计算机组成原理开卷!,fpga开发,硬件工程,嵌入式硬件,后端,单片机
4)点击logisim当中的时序发生器状态机(定长指令周期),然后点击分析组合逻辑电路
时序发生器状态机 logisim,每日一个小进步,大学冲!!!,计算机组成原理开卷!,fpga开发,硬件工程,嵌入式硬件,后端,单片机
5)将在文件中复制的逻辑表达式,按照n3-n0的顺序,粘贴到下图当中,全部输入之后,点击生成电路时序发生器状态机 logisim,每日一个小进步,大学冲!!!,计算机组成原理开卷!,fpga开发,硬件工程,嵌入式硬件,后端,单片机
6)点击生成电路,进行测试
时序发生器状态机 logisim,每日一个小进步,大学冲!!!,计算机组成原理开卷!,fpga开发,硬件工程,嵌入式硬件,后端,单片机

2.4故障与调试

这个实验没有遇到问题,较为简单

2.5测试与分析

测试用例如下,实验电路通过所有测试用例
时序发生器状态机 logisim,每日一个小进步,大学冲!!!,计算机组成原理开卷!,fpga开发,硬件工程,嵌入式硬件,后端,单片机
时序发生器状态机 logisim,每日一个小进步,大学冲!!!,计算机组成原理开卷!,fpga开发,硬件工程,嵌入式硬件,后端,单片机

3时序发生器输出函数(定长指令周期)设计

3.1设计要求

理解传统三级时序系统中时序发生器的基本原理,设计定长指令周期的时序发生器状态机以及输出函数。利用数字逻辑电路相关知识设计定长指令周期的三级时序系统,时序发生器包括状态机和输出函数两部分,上一实验完成了状态机的设计,这一实验要求我们实现输出函数的设计部分,设计实现输出函数组合逻辑。

3.2方案设计

3.2.1实际产生器原理

实际发生器组合逻辑,是根据当前输入的现态输出Mif,Mcal,Mex,以及T1到T4的节拍电位,与状态机用同样的方法填写,四个事态为一周期,其中第一阶段Mif=1,T1-T4依此为1,第二阶段,Mcal=1,其他置零,第三阶段,Mex=1.填写同一个表格当中的输出函数表,填好这个表之后,通过输出函数自动生成,表中可以自动获取我们的Mif,Mcal,Mex,T1到T4的逻辑表达式了,把相应的逻辑表达式复制之后,思路与下图相同
时序发生器状态机 logisim,每日一个小进步,大学冲!!!,计算机组成原理开卷!,fpga开发,硬件工程,嵌入式硬件,后端,单片机

3.2.1设计思路

据当前输入的现态输出Mif,Mcal,Mex,以及T1到T4的节拍电位,与状态机用同样的方法填写,填写同一个表格当中的输出函数表,填好这个表之后,通过输出函数自动生成,表中可以自动获取我们的Mif,Mcal,Mex,T1到T4的逻辑表达式了,帮相应的逻辑表达式复制之后, 开始运行

3.3实验步骤

1)了解实际产生器原理,得出每个时期内Mif,Mcal,Mex在不同周期内数值的变化情况
2)根据上一步的数值的变化,将文件表中的输出函数真值表填写完成
时序发生器状态机 logisim,每日一个小进步,大学冲!!!,计算机组成原理开卷!,fpga开发,硬件工程,嵌入式硬件,后端,单片机
3)将表填写完成之后,将其自动生成函数输入进logisim
时序发生器状态机 logisim,每日一个小进步,大学冲!!!,计算机组成原理开卷!,fpga开发,硬件工程,嵌入式硬件,后端,单片机
4)运行电路进行检测

3.4故障与调试

3.4.1 复制出错

故障现象:输出函数真值表填写正确,但是在头歌网进行测评时,答案不正确
时序发生器状态机 logisim,每日一个小进步,大学冲!!!,计算机组成原理开卷!,fpga开发,硬件工程,嵌入式硬件,后端,单片机
原因分析:再次检查函数真值表的填写,发现的确是正确的,那说明只能是复制错了
解决方案:再进行一次复制,结果正确

3.5测试与分析

测试用例如下,实验电路通过所有测试用例
时序发生器状态机 logisim,每日一个小进步,大学冲!!!,计算机组成原理开卷!,fpga开发,硬件工程,嵌入式硬件,后端,单片机

4硬布线控制器设计

4.1设计要求

理解传统三级时序系统中硬布线控制器的设计原理,设计硬布线控制器组合逻辑单元,在实现了指令译码逻辑、时序发生器主要功能部件后,进一步设计实现控制器核心模块硬布线控制器组合逻辑单元

4.2方案设计

4.2.1设计思路

在实现了指令译码逻辑、时序发生器主要功能部件后,进一步设计实现控制器核心模块硬布线控制器组合逻辑单元, 列出所有微操作信号的产生条件,填写下面的excel表格,自动生成逻辑表达式,然后再Logisim中自动生成电路。

4.2.2硬布线控制器组合逻辑

在设计完上面的两个实验之后,就需要设计硬布线控制器的核心组合逻辑单元了,由于时序产生器以及承担了时序控制功能,所以硬布线控制器就变成了一个存组和逻辑,每一个控制信号c都是指令。所以我们只需要弄清楚各个操作控制信号其所产生的调节,就可以得到他们的逻辑表达式
时序发生器状态机 logisim,每日一个小进步,大学冲!!!,计算机组成原理开卷!,fpga开发,硬件工程,嵌入式硬件,后端,单片机

4.2.3信号产生条件

如下图所示,通过前面的数据通路分析,得到五条不同指令,在取指令周期,计算周期,执行周期的不同节拍中,会给出不同的控制信号。这边是所有控制信号的产生条件,需要将下面两图结合来看。所有的控制信号的逻辑表达式,cpu电路重法所有控点的逻辑表达式,是需要经过化简得
时序发生器状态机 logisim,每日一个小进步,大学冲!!!,计算机组成原理开卷!,fpga开发,硬件工程,嵌入式硬件,后端,单片机
时序发生器状态机 logisim,每日一个小进步,大学冲!!!,计算机组成原理开卷!,fpga开发,硬件工程,嵌入式硬件,后端,单片机

4.3实验步骤

1)理解上面两图
2)进行表格状态的填写时序发生器状态机 logisim,每日一个小进步,大学冲!!!,计算机组成原理开卷!,fpga开发,硬件工程,嵌入式硬件,后端,单片机
3)将生成的表达式复制进logisim,生成电路
4)然后进行测评

4.4.1 复制出错

故障现象:输出函数真值表填写正确,但是在头歌网进行测评时,答案不正确
时序发生器状态机 logisim,每日一个小进步,大学冲!!!,计算机组成原理开卷!,fpga开发,硬件工程,嵌入式硬件,后端,单片机
原因分析:再次检查函数真值表的填写,发现的确是正确的,那说明只能是复制错了
解决方案:再进行一次复制,结果正确

4.5测试与分析

测试用例如下,实验电路通过所有测试用例
时序发生器状态机 logisim,每日一个小进步,大学冲!!!,计算机组成原理开卷!,fpga开发,硬件工程,嵌入式硬件,后端,单片机文章来源地址https://www.toymoban.com/news/detail-781368.html

到了这里,关于计算机组成原理32位MIPS CPU设计实验(指令译码器电路设计 、时序发生器状态机设计、时序发生器输出函数、硬布线控制器)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 计算机组成原理综合实验设计:基于proteus的小型CPU的设计

    基于proteus的小型CPU的设计 摘要 本文详细介绍了该小型CPU的设计模板及预估实现的功能,然后对模块的原理进行详实的概述。之后对项目设计进行了分析,从原理图和电路设计图方面进行了完整的呈现。在介绍完基本的设计框架后,本文对项目中的每个模块包括ALU、CM、MM等关

    2024年02月13日
    浏览(74)
  • 【计算机硬件系统设计(华科)——单周期MIPS CPU(Logisim 实现)】

    本章继续讲述计算机硬件系统设计的内容,之前已经大概说明了 ALU 和存储系统的设计,本文讲述CPU的设计。对应的有单周期、多周期 CPU 设计,以及流水线设计,中断处理会在后文中详细说明,本文不进行讲述。 即定长指令周期,机器性能取决于最慢的指令,导致时钟周期

    2024年02月02日
    浏览(51)
  • 计算机组成原理——中央处理器cpu

    计算机组成原理-题库 中央处理器选择题 1 、中央处理器(CPU)是指什么。 A、 运算器 B、 控制器 C 、 运算器和控制器 D、 运算器、控制器和主存储器 2 、在CPU中跟踪指令后继地址的寄存器是什么。 A、 主存地址寄存器 B 、 程序计数器 C、 指令寄存器 D、 状态条件寄存器 3

    2024年02月10日
    浏览(41)
  • 计算机组成原理知识——CPU结构组成和功能、堆栈、RISC、

    2023.9.6 计组知识开始学习 中央处理单元 :简称为CPU或处理器,功能是控制计算机的操作和处理数据 控制器 :控制计算机的操作,例如读取指令、分析指令、时序、总线的控制等 运算器 :完成数据处理功能 寄存器 :临时存储指令、地址、数据、计算结果等 中断 3个:取指

    2024年02月09日
    浏览(37)
  • 计算机组成原理 CPU的功能和基本结构和指令执行过程

    CPU的功能 指令控制: 完成取指令、分析指令和执行指令的操作,即程序的顺序控制。 操作控制:一条指令的功能往往是由若干操作信号的组合来实现的。CPU管理并产生由内存取出的每条指令的操作信号,把各种操作信号送往相应的部件,从而控制这些部件按指令的要求进行动

    2024年01月20日
    浏览(49)
  • 计算机组成原理——课程设计

      深入了解计算机各种指令的执行过程,以及控制器的组成,指令系统微程序设计的具体知识,进一步理解和掌握动态微程序设计的概念;完成微程序控制的特定功能计算机的指令系统设计和调试。 1.    TEC-2机一台 2.    电脑一台 3.    TEC-2模拟软件一套 1.分析TEC-2机的功

    2024年02月08日
    浏览(55)
  • 计算机组成原理 存储器设计

    目录 一、把8×8 位的RAM存储器模块扩展为 8×32 位RAM存储空间; 二、把8×8 位的RAM存储器模块扩展为32×8位RAM存储空间; 三、把256×4 位的RAM存储器模块扩展为1K×8b的RAM存储空间。 PS:先说说存储器是什么样的小玩意:                         A x B 位XXX(RAM或者ROM)存储器的

    2024年02月07日
    浏览(45)
  • 西南交通大学 计算机组成原理实验课程设计

     代码部分: 波形图部分: (上图Load为2节拍,我之前写错了。。。这里忘了改了)

    2024年02月13日
    浏览(45)
  • 实验2 存储器设计与实现【计算机组成原理】

    掌握单端口RAM和ROM原理和设计方法。 掌握32位数据的读出和写入方法。 掌握ModelSim和ISEVivado工具软件。 掌握基本的测试代码编写和FPGA开发板使用方法。 装有ModelSim和ISEVivado的计算机。 SwordBasys3EGo1实验系统。 片内存储器分为RAM和ROM两大类。RAM是随机存储器,存储单元的内

    2024年02月06日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包