实验四 模型机时序部件的实现(实验报告格式案例)
班级 计XXXXX 姓名 wolf 学号 2021080XXXXX
一、实验目的
1.了解模型机中 SM 的作用。
2.熟悉指令寄存器、状态寄存器、指令计数器、寄存器的工作原理
3.学会使用 VERILOG 语言设计时序电路。
二、实验内容
1.用 VERILOG 语言设计 SM;
2.用 VERILOG 语言设计一个 8 位的指令寄存器 IR;
3.用 VERILOG 语言设计一个 2 位的状态寄存器 PSW;
4.用 VERILOG 语言设计一个 8 位的指令计数器 PC;
5.用 VERILOG 语言设计 3 个 8 位寄存器组成的寄存器组,实现读写操作;
6.用 LPM_RAM_IO 定制一个 256*8 的 RAM,实现对 RAM 的读写操作。
三、实验过程
1、SM
A)创建工程(选择的芯片为family=Cyclone II;name=EP2C5T144C8)
B) 编写源代码
C) 编译与调试(包含编译调试过程中的错误、警告信息以及资源消耗)
D) RTL视图
E) 功能仿真波形
F) 时序仿真波形
G)结果分析及结论
分析:对于功能仿真,可以看到当 sm_en 信号为 1 有效时,输出 sm 在时钟的下降沿发生翻转,
符号功能设计。当 sm_en 信号为 0 时,输出信号 sm 保持不变,正确。
对于时序仿真,其输出结果和功能仿真类似,但存在 7ns 左右的延迟
结论:元件设计符合设计要求,元件内部存在 7ns 左右的延迟
2、指令寄存器IR
A)创建工程(选择的芯片为family=Cyclone II;name=EP2C5T144C8)
B) 编写源代码
C) 编译与调试(包含编译调试过程中的错误、警告信息以及资源消耗)
D) RTL视图
E) 功能仿真波形
F) 时序仿真波形
G)结果分析及结论
分析:对于功能仿真,在 0-30ns,ir_ld 为 1,在时钟下降沿将输入写入输出,当 ir_ld 为
0 时,输出保持不变,正确
对于时序仿真,可以看到输出存在 9ns 左右的延迟,同时部分时刻输入的变化导致冒险出现,
使得输出错误,输出的变化情况大致与功能仿真相同
结论:元件设计符合设计要求,元件内部存在 9ns 左右的延迟
3、状态寄存器PSW
A)创建工程(选择的芯片为family=Cyclone II;name=EP2C5T144C8)
B) 编写源代码
C) 编译与调试(包含编译调试过程中的错误、警告信息以及资源消耗)
D) RTL视图
E) 功能仿真波形
F) 时序仿真波形
G)结果分析及结论
分析:对于功能仿真,0-20ns,cf_en 和 zf_en 为 1,在时钟下降沿,将 cf 和 zf 的值写入
输出 c,z 中,20-40ns,cf_en 和 zf_en 为 0,输出 c 和 z 保持不变,正确
对于时序仿真,其中输出 c 有 7ns 左右延迟,z 有 8ns 左右延迟,其输出变化与功能仿真大
致相同
结论:元件设计符合要求,输出 c 有 7ns 延迟,输出 z 有 8ns 延迟
4、指令计数器PC
A)创建工程(选择的芯片为family=Cyclone II;name=EP2C5T144C8)
B) 编写源代码
C) 编译与调试(包含编译调试过程中的错误、警告信息以及资源消耗)
D) RTL视图
E) 功能仿真波形
F) 时序仿真波形
G)结果分析及结论
分析:对于功能仿真,5-15ns,pc_inc 为 1,pc_ld 为 0,执行地址加 1 操作,15ns-25ns,pc_inc 为 0,pc_ld 为 1,执行写入操作,将输入写入到输出中,25-40ns,pc_inc 为 0,pc_ld 为
- 数据保持不变,正确
对于时序仿真,存在 9ns 左右的延迟,输出结果大致与功能仿真相同
结论:元件设计符合要求,元件存在 9ns 左右的延迟
5、通用寄存器组
A)创建工程(选择的芯片为family=Cyclone II;name=EP2C5T144C8)
B) 编写源代码
C) 编译与调试(包含编译调试过程中的错误、警告信息以及资源消耗)
D) RTL视图
E) 功能仿真波形
F) 时序仿真波形
G)时序分析
操作方法是:编译后,在compilation report中选择【timing analysis】-【summary】
H)结果分析及结论
分析:对于功能仿真,在 0-35ns,we 为 0,进行写入操作,在每个下降沿,当 rwba=00,01,10
时,将输入 i 分别写入寄存器 A,B,C 中,而在 35-65ns,we 为 1,进行读取操作,在每个下
降沿,根据 raa 和 rwba 的值 s,d 输出对应寄存器的值,当 raa=00,s 输出 A 的值,raa=01,
s 输出 B 的值,raa=10,s 输出 C 的值,正确
对于时序仿真,输出 s 存在 9ns 左右的延迟,输出 d 存在 10ns 左右延迟,其余输出结果大
致与功能仿真相同
对于时序分析,可以得到时钟输出延迟 tco 为 13.487ns,建立时间 tsu 为 7.110ns,保持时
间 th 为 0.479ns,电路延迟时间 tpd 为 16.353ns
结论:元件设计符合要求,输出 s 存在 9ns 左右的延迟,输出 d 存在 10ns 左右延迟
6、RAM的使用
A)创建工程(选择的芯片为family=Cyclone II;name=EP2C5T144C8)
B) 电路图
C) 编译与调试(包含编译调试过程中的错误、警告信息以及资源消耗)
D) RTL视图
E) 功能仿真波形
F) 时序仿真波形
G)结果分析及结论:
分析:对功能仿真,0-15ns,xl 和 dl 都为 0,输出为高阻态。15-45ns,xl 为 1,dl 为 0,
进行写入操作,对于三个上升沿,分别将输入信号 100,101,102 分别写入地址 1,2,3 中。
45-115ns,xl 为 0,dl 为 1,进行读操作,对于每个上升沿,分别将 1,2,3,4,5,11,13 地址
中的指令读出并输出,其中 4,5,11,13 地址中的指令已提前存入对应的 mif 文件中,仿真正
确。
对于时序仿真,输出存在 11ns 左右的延迟,同时由于输入的改变导致某些位置出现冒险。
结论:元件设计符合要求,输出存在 11ns 左右延迟。
四、思考题
1.时钟周期的上升沿实现对RAM的读写操作,为何PC、SM、IR、PSW以及寄存器组的操作是下降沿完成?
答:因为我们既要保证取址操作在一个周期内完成,同时要保证 RAM 为优先级
较高,所以需要放在不同的跳变沿执行。若放在同一时间,可能会便数据处理来
不及,导致出错。
2.采用VERILOG语言描述时序部件应该采用阻塞赋值语句还是非阻塞赋值语句?
答:使用非阻塞赋值。
3、通用寄存器组只有WE的控制信号,实现通用寄存器组读操作的电路是组合电路还是时序电路?请大致画出对寄存器组进行读操作的电路部分。
答:是组合电路。电路图如下
五、实验总结、必得体会及建议
1、从需要掌握的理论、遇到的困难、解决的办法以及经验教训等方面进行总结。
(1)需要掌握的理论:基本了解了简易模型机的内部结构和工作原理。同时熟悉了指令寄存器、状态寄存器、指令计数器、寄存器的工作原理。学会使用 Verilog 语言编写电路。
(2)遇到的困难:对于 QuartusII 的使用还不够熟练,特别是进行波形仿真的功能仿真和时许仿真分别怎么操作的方面有一定不足。
(3)解决方法:通过上网查询相关资料和询问同学后得以解决问题,并通过分析报告发现电路中的问题。有不理解的还请教了老师,不仅收获了方法还掌握的技巧。
(4)经验教训:对于电子电路的学习一定要肯动手,光是看是学不会的,一定要落到实处,多自己使用软件进行仿真,才能加深对于这门课程的理解。
2、对本实验内容、过程和方法的改进建议(可选项)。文章来源:https://www.toymoban.com/news/detail-752255.html
对于RTL视图的研究十分重要,可以引导同学做到自己能看懂RTL视图,否则需要更改并简化写法。文章来源地址https://www.toymoban.com/news/detail-752255.html
到了这里,关于HNU-电路与电子学-实验4的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!