单周期CPU实验
来源:互联网 发布:朱宸慧淘宝店经历 编辑:程序博客网 时间:2024/06/06 03:37
注:为了老师的教学正常进行,不上传代码,只有自己的部分实验报告(不包括实验心得)
注:因为涉及到很多截图,为了节省时间,直接采用截图的方式
1.数据通路图
2.实验设计与分析
对每一条指令的理解
3.实验结果截图(略)
4.实验中遇到的问题
(1)PC子模块中最开始的时候没有使用非阻塞赋值,导致PC一直出错。非阻塞赋值使得在结构块结束的时候才进行赋值,而不是立即赋值,后来使用非阻塞赋值后解决了这个错误。
(2)if(PCSrc==1) assign NextPC = PC + 4;将这样的if语句放在过程块中一直出错,一直弄不懂原因,后来请教同学,发现将其放在always结构块中并且检查NextPC的类型就可以解决问题。
(3)若将assign用在过程块initial和always中,此时只支持reg类型,但是对于非过程块中连续赋值,assign支持net型。
(4)对于Extend子模块,我将sa的符号位扩展桶16为立即数的扩展放在一起,使得在执行sll指令的时候能够保证sa扩展为32位。
(5)对于sll,实现起来遇到的麻烦比较大,因为需要同时控制ALUSrcA和ALUSrcB,最终是在CPU主模块中添加了ALUSrcA来作为判断,当执行的ALUSrcA为1的时候,送入到ALU中的data1不再是rs中的数据而是扩展后的sa.
(6) 最开始的时候只写了if语句而对else语句不做处理,本来觉着没什么问题,但是执行后却发现当sll执行过后ALUSrcA就一直为1,不改变,最后添加了else语句使问题得到解决。
(7)最开始的时候对于仿真后出现XXX和ZZZ的结果完全不知所措,因为代码也没有报错。后来发现是因为在CPU中各个子模块中的参数的传递顺序不一致。
(8)一些小细节的错误,比如单词拼写错误或者是input后面的“,”写成了“;”之类的,或者是output最后不能有“,”或者是“;”。这种错误报错的时候很不明确,所以检查的时候很麻烦。
5.小结
关键是理解数据通路图,对每条指令,通过数据通路图完整地走几遍能够有效帮助理解。
- 单周期CPU实验
- #计组实验#单周期CPU设计
- 单周期CPU实验之实验介绍及分析
- 单周期CPU实验之学习之旅
- 单周期CPU实验之代码实现及模拟
- 多周期CPU实验
- 多周期CPU实验
- 单周期CPU设计
- 单周期CPU设计
- 单周期CPU设计
- 单周期CPU的设计
- MIPS-单周期CPU设计
- 制作单周期CPU(分析)
- 制作单周期CPU(代码)
- 单周期CPU设计(Verilog)
- (Verilog)单周期CPU设计
- #计组实验#多周期CPU设计
- 设计单周期cpu的日子
- writing BlueC ore Applications User Guide译文
- 信源编码:huffman编码
- 文件下载--smartupload
- 南阳理工acm 1070诡异的电梯【Ⅰ】(动态规划)
- 伪分布安装Hadoop2.8.0+Hbase1.3.1+Hive1.2.1+Kylin2.0
- 单周期CPU实验
- 设计原则--面向对象
- Maven中后台管理工程的搭建
- HDU3085_Nightmare Ⅱ_双向BFS
- Spring Batch 环境设置
- 在软帝的第二天
- 计算机网络读书笔记——物理层(1)
- VS2015中运行32位汇编程序
- redis主从配置及高可用哨兵