Hnu电子电路实验4
目录
【说明】
与本次实验相关的代码及报告等文件见以下链接:
一、实验目的
二、实验内容
三、实验过程
1.SM
A)创建工程(选择的芯片为 family=Cyclone II;name=EP2C5T144C8)
B) 源代码
C)编译与调试(包含编译调试过程中的错误、警告信息以及资源消耗)
D)RTL视图
E)功能仿真波形
F)时序仿真波形
G)结果分析及结论
2.指令寄存器IR
A)创建工程(选择的芯片为 family=Cyclone II;name=EP2C5T144C8)
B)源代码
C)编译与调试(包含编译调试过程中的错误、警告信息以及资源消耗)
D)RTL视图
E)功能仿真波形
F)时序仿真波形
G)结果分析及结论
3.状态寄存器 PSW
A)创建工程(选择的芯片为 family=Cyclone II;name=EP2C5T144C8)
B)源代码
C)编译与调试(包含编译调试过程中的错误、警告信息以及资源消耗)
D)RTL视图
E)功能仿真波形
F) 时序仿真波形
G)结果分析及结论
4.指令计数器 PC
A)创建工程(选择的芯片为 family=Cyclone II;name=EP2C5T144C8)
B)源代码
C)编译与调试(包含编译调试过程中的错误、警告信息以及资源消耗)
D)RTL视图
E)功能仿真波形
F)时序仿真波形
G)结果分析及结论
5.通用寄存器组
A)创建工程(选择的芯片为 family=Cyclone II;name=EP2C5T144C8)
B)源代码
C)编译与调试(包含编译调试过程中的错误、警告信息以及资源消耗)
D)RTL视图
E)功能仿真波形
F)时序仿真波形
G)时序分析
H)结果分析及结论
四、思考题
1.时钟周期的上升沿实现对 RAM 的读写操作,为何 PC、SM、IR、PSW以及寄存器组的操作是下降沿完成?
2.采用 VERILOG 语言描述时序部件应该采用阻塞赋值语句还是非阻塞赋值语句?
3.通用寄存器组只有 WE 的控制信号,实现通用寄存器组读操作的电路是组合电路还是时序电路?请大致画出对寄存器组进行读操作的电路部分。
五、实验总结、必得体会及建议
1、从需要掌握的理论、遇到的困难、解决的办法以及经验教训等方面进行总结。
2、对本实验内容、过程和方法的改进建议(可选项)。
【说明】
电子电路每次实验的提交都是会进行查重的,不过后面的三次实验都比电子秤要好通过的多,这个不必太担心,这里给出的代码提交都是100分,可以参考一下。
与本次实验相关的代码及报告等文件见以下链接:
通过网盘分享的文件:电子电路实验二.zip
链接:https://pan.baidu.com/s/1X_pMO6QM6x15twjuMM3JWQ
提取码:9785
一、实验目的
1.了解模型机中 SM 的作用。
2.熟悉指令寄存器、状态寄存器、指令计数器、寄存器的工作原理
3.学会使用 VERILOG 语言设计时序电路。
二、实验内容
1.用 VERILOG 语言设计 SM;
2.用 VERILOG 语言设计一个 8 位的指令寄存器 IR;
3.用 VERILOG 语言设计一个 1 位的状态寄存器 PSW;
4.用 VERILOG 语言设计一个 8 位的指令计数器 PC;
5.用 VERILOG 语言设计 4 个 8 位寄存器组成的寄存器组,实现读写操作;
三、实验过程
1.SM
A)创建工程(选择的芯片为 family=Cyclone II;name=EP2C5T144C8)
B) 源代码
C)编译与调试(包含编译调试过程中的错误、警告信息以及资源消耗)
图示为警告信息
图示为资源消耗
D)RTL视图
E)功能仿真波形
F)时序仿真波形
G)结果分析及结论
结果分析:对于功能仿真,当 sm_en 使能有效时(高电平有效),输出信号 sm 在时钟下降沿发生翻转,当 sm_en 禁止时,输出信号不发生翻转。对于时序仿真,输出结果与功能与功能仿真基本一致,但存在 7ns多的延迟。
结论:
SM 的结构是一个锁存器,当时钟下降沿来到时,下一状态变成当前状态取反,元件设计符合要求,元件内部存在 7ns多的延迟。
2.指令寄存器IR
A)创建工程(选择的芯片为 family=Cyclone II;name=EP2C5T144C8)
B)源代码
C)编译与调试(包含编译调试过程中的错误、警告信息以及资源消耗)
图示为警告信息
图示为资源消耗
D)RTL视图
E)功能仿真波形
F)时序仿真波形
G)结果分析及结论
在时钟的下降沿,观察ld_ir 信号(高电平有效),如果 ld_ir 是高电平的话,此时将输入 a 上的指令编码写入指令寄存器,否则不再将 a 进行写入操作。对于时序仿真,基本功能与波形和功能仿真类似,但输出存在 7ns 左右的延迟
ir 的结构是一个指令寄存器,当ld_ir为高电平时,时钟下降沿来到时,将输入 a 上 的指令编码写入指令寄存器x中。观察时序仿真可其输出结果和功能仿真类似,但有7ns左右的延时。
3.状态寄存器 PSW
A)创建工程(选择的芯片为 family=Cyclone II;name=EP2C5T144C8)
B)源代码
C)编译与调试(包含编译调试过程中的错误、警告信息以及资源消耗)
图示为警告信息
图示为资源消耗
D)RTL视图
E)功能仿真波形
F) 时序仿真波形
G)结果分析及结论
PSW 在时钟下降沿时触发输出信号跳变活动,当 gf_en 为高电平有效的时候表示能够进行 gf 的输出,此时 g 的值传送给 gf, 否则不操作。对于时序仿真,基本功能与波形和功能仿真类似,但输出存在 7ns 左右的延迟。
结论:
元件设计符合要求,元件内部存在 7ns 左右的延迟。
4.指令计数器 PC
A)创建工程(选择的芯片为 family=Cyclone II;name=EP2C5T144C8)
B)源代码
C)编译与调试(包含编译调试过程中的错误、警告信息以及资源消耗)
图示为警告信息
图示为资源消耗
D)RTL视图
E)功能仿真波形
F)时序仿真波形
G)结果分析及结论
结果分析:对于功能仿真,当 in_pc=0,ld_pc=1 时进行写入操作,在时钟信号的下降沿将a 写入 c,当 in_pc=0,ld_pc=1 时进行自加操作,c 中的数自加一。对于时序仿真,基本功能与波形和功能仿真类似,但输出存在 9.6ns 左右的延迟,同时部分变化出现冒险。
结论:
元件设计符合要求,元件内部存在 9.6ns 左右的延迟。
5.通用寄存器组
A)创建工程(选择的芯片为 family=Cyclone II;name=EP2C5T144C8)
B)源代码
C)编译与调试(包含编译调试过程中的错误、警告信息以及资源消耗)
图示为警告信息
图示为资源消耗
D)RTL视图
E)功能仿真波形
F)时序仿真波形
G)时序分析
操作方法是:编译后,在 compilation report 中选择【timing analysis】-【summary】
H)结果分析及结论
对于功能仿真,当 we=1 时进行写入操作,在时钟信号的下降沿根据 dr 的值将 i写入寄存器(R0、R2、R1、R0,在波形中未体现),当 dr=00 时将 R0 的值从 d 中输出,dr=01时将 R1 的值从 d 中输出,dr=10 时将 R2 的值从 d 中输出,dr=11 时将 R3 的值从 d 中输出。当 sr=00 时将 R0 的值从 s 中输出,sr=01 时将 R1 的值从 s 中输出,sr=10 时将 R2 的值从 s中输出,sr=11 时将 R3 的值从 s 中输出。对于时序仿真,基本功能与波形和功能仿真类似,但输出存在 10s 左右的延迟,同时其中较多变化出现冒险。
结论:
元件设计符合要求,元件内部存在 10ns 左右的延迟。
四、思考题
1.时钟周期的上升沿实现对 RAM 的读写操作,为何 PC、SM、IR、PSW以及寄存器组的操作是下降沿完成?
答:因为我们既要保证取址操作在一个周期内完成,同时又要保证 RAM 为优先级较高,如果同步处理,可能会导致无法及时进行数据处理,导致出错。
2.采用 VERILOG 语言描述时序部件应该采用阻塞赋值语句还是非阻塞赋值语句?
答:时序部件应该采用非阻塞赋值语句。
3.通用寄存器组只有 WE 的控制信号,实现通用寄存器组读操作的电路是组合电路还是时序电路?请大致画出对寄存器组进行读操作的电路部分。
答:实现通用寄存器组读操作的电路时组合电路。
五、实验总结、必得体会及建议
1、从需要掌握的理论、遇到的困难、解决的办法以及经验教训等方面进行总结。
(1)需要掌握的理论:基本了解了简易模型机的内部结构和工作原理。同时学会使用 Verilog 语言编写简单电路。
(2)遇到的困难:对于 QuartusII 的使用还不够熟练,特别是进行波形仿真的功能仿真和时序仿真时花费时间过长。
(3)解决方法:通过上网查询相关资料,与同学一起讨论,并请教老师。
(4)经验教训:不懂的地方要多向老师请教,对于电路的搭建要多动手,要学会利用好软件工具,不仅是在实验中,在平时的学习中也要学会利用工具。
2、对本实验内容、过程和方法的改进建议(可选项)。
相比于直接按照逻辑表写实现代码,更加重要的步骤应在前面一步,就是电路中信号怎么走 的要先弄明白才更重要。