目录
A)创建工程(选择的芯片为 family=Cyclone II;name=EP2C5T144C8)
C)编译与调试(包含编译调试过程中的错误、警告信息以及资源消耗)
A)创建工程(选择的芯片为 family=Cyclone II;name=EP2C5T144C8)
C) 编译与调试(包含编译调试过程中的错误、警告信息以及资源消耗)
A)创建工程(选择的芯片为 family=Cyclone II;name=EP2C5T144C8)
C)编译与调试(包含编译调试过程中的错误、警告信息以及资源消耗)
1、任选一条指令,介绍指令的过程、信息流动的情况以及执行时控制信号的值。
1、从需要掌握的理论、遇到的困难、解决的办法以及经验教训等方面进行总结。
【说明】
电子电路每次实验的提交都是会进行查重的,不过后面的三次实验都比电子秤要好通过的多,这个不必太担心,这里给出的代码提交都是100分,可以参考一下。
与本次实验相关的代码及报告等文件见以下链接:
通过网盘分享的文件:电子电路实验三.zip
链接:https://pan.baidu.com/s/1lVssy5tbf0vsWbuKl45Qaw
提取码:9785
一、实验目的
1.了解简易模型机的内部结构和工作原理。
2.分析模型机的功能,设计 8 重 3-1 多路复用器。
3.分析模型机的功能,设计 8 重 2-1 多路复用器。
4.分析模型机的工作原理,设计模型机控制信号产生逻辑。
二、实验内容
1.用 VERILOG 语言设计模型机的 8 重 3-1 多路复用器;
2.用 VERILOG 语言设计模型机的 8 重 2-1 多路复用器;
3.用 VERILOG 语言设计模型机的控制信号产生逻辑。
三、实验过程
1、8 重 3-1 多路复用器
A)创建工程(选择的芯片为 family=Cyclone II;name=EP2C5T144C8)

B)编写源代码

C)编译与调试(包含编译调试过程中的错误、警告信息以及资源消耗)
调试过程无错误
图示为警告信息

图示为资源消耗

D)RTL视图

视图分析及结论:
视图分析:
通过观察 RTL 视图可知:左侧为输入,右侧为输入,电路中有很多的元器件进行连接,如:比较器(输入相等输出 1,输入不相等输入 0)等,以及含有多路复用器 mux2_1,输入信号包括控制信号 s 以及 8 位数字信号 a、b、c,输出信号为 s 对 a、b、c 信号的选择,各个输出端口以及输入端口由导线相连接。
结论:
一个功能的实现需要多重门的处理,Verilog 中简单的代码对应的实际元件内部的结构原理十分复杂。
E) 功能仿真波形

结果分析及结论:
结果分析:
功能仿真是指不考虑器件延时和布线延时的理想情况下对源代码进行逻辑功能的验证。由仿真波形可得,对于输入状态的变化,输出结果实时变化,没有延迟,其结果与电路设计的真值表的结果相对应。
当 s=00 或者 11 时,输出 t=a;
当 s=01 时,输出 y=b;当 s=10 时,输出 y=c;
结论:功能仿真操作简单,能体现和验证实验的功能,但忽略延迟的影响会使结果与实际结果有一定误差。
F) 时序仿真波形

结果分析及结论:
结果分析:
时序仿真是指在布线后进行,是最接近真实器件运行的仿真,它与特定的器件有关,又包含了器件和布线的延时信息。由波形可得,当输入状态发生改变时,输出结果并未同时改变,而是有一定延迟,同时由于输入状态的改变,导致电路出现“冒险”,导致输出结果并未与预期结果相同。
结论:
1、时序仿真可以用来验证程序在目标器件中的时序关系。同时考虑了器件的延迟后,其输出结果跟接近实际情况,但是考虑的情况过多,不容易操作,容易产生错误。
2、时序仿真不 仅反应出输出和输入的逻辑关系,同时还计算了时间的延时信息,是与实际系统更接近的一种仿真结果。不过,要注意的是,这个时间延时是仿真软件“估算”出来的。
G)时序分析
操作方法是:编译后,在 compilation report 中选择【timing analysis】-【summary】和【tpd】


结果分析及结论:
结果分析:
1、由图可得,Timing Analyzer Summmary 总结所有经典定时分析的结果,并报告每个定时特性的最坏情况定时。比如从 c[7]到 y[7] 的最坏定时情况的 tpd 为 13.711ns。下面的 tpd 报告表则给出了源节点和目标节点之间的 tpd 延迟时间,比如第五行中 a[2]到 y[2]的 tpd 为 13.132ns。
结论:
实际连接图中个元器件连接之间是存在时间延迟的,而且不同的元器件之间的时间延迟也不相同。
2、8 重 2-1 多路复用器
A)创建工程(选择的芯片为 family=Cyclone II;name=EP2C5T144C8)

B)编写源代码

C) 编译与调试(包含编译调试过程中的错误、警告信息以及资源消耗)
调试过程无错误
图示为警告信息

图示为资源消耗

D)RTL视图

结果分析及结论:
视图分析:
通过观察 RTL 视图可知:左侧为输入,右侧为输入,电路中有很多的元器件进行连接,如:含有多路复用器,输入信号包括控制信号 s 以及 8 位数字信号 a、b,输出信号为 s 对 a、b 信号的选择,各个输出端口以及输入端口由导线相连接。
结论:
一个功能的实现需要多重门的处理,Verilog 中简单的代码对应的实际元件内部的结构原理十分复杂。
E)功能仿真波形

结果分析及结论:
结果分析:
功能仿真是指不考虑器件延时和布线延时的理想情况下对源代码进行逻辑功能的验证。由仿真波形可得,对于输入状态的变化,输出结果实时变化,没有延迟,其结果与电路设计的真值表的结果相对应。
当 s=0 时,输出 t=a;
当 s=1 时,输出 y=b;
结论:
功能仿真操作简单,能体现和验证实验的功能,但忽略延迟的影响会使结果与实际结果有一定误差。
F) 时序仿真波形

结果分析及结论:
结果分析:
时序仿真是指在布线后进行,是最接近真实器件运行的仿真,它与特定的器件有关,又包含了器件和布线的延时信息。由波形可得,当输入状态发生改变时,输出结果并未同时改变,而是有一定延迟,同时由于输入状态的改变,导致电路出现“冒险”,导致输出结果并未与预期结果相同。
结论:
1、时序仿真可以用来验证程序在目标器件中的时序关系。同时考虑了器件的延迟后,其输出结果跟接近实际情况,但是考虑的情况过多,不容易操作,容易产生错误。
2、时序仿真不 仅反应出输出和输入的逻辑关系,同时还计算了时间的延时信息,是与实际系统更接近的一种仿真结果。不过,要注意的是,这个时间延时是仿真软件“估算”出来的。
G) 时序分析


结果分析及结论:
结果分析:
由图可得,Timing Analyzer Summmary 总结所有经典定时分析的结果,并报告每个定时特性的最坏情况定时。比如从 s 到 y[6] 的最坏定时情况的 tpd 为 15.022ns。下面的 tpd 报告表则给出了源节点和目标节点之间的 tpd 延迟时间,比如第五行中 b[6]到 y[6]的 tpd 为 13.864ns。
结论:
实际连接图中个元器件连接之间是存在时间延迟的,而且不同的元器件之间的时间延迟也不相同。
3.控制信号产生逻辑
A)创建工程(选择的芯片为 family=Cyclone II;name=EP2C5T144C8)

B)编写源代码

C)编译与调试(包含编译调试过程中的错误、警告信息以及资源消耗)
以下为警示信息

以下为资源消耗

D)RTL视图

结果分析及结论:
由视图可得,视图左边为输入,右边为输出。其中连接有一系列的元器件。比如比较器:当输入相等时输出 1,不相等时输出 0;还有大部分的与或门。图中输入信号为 sm 等15个,输出信号包括 reg_sr 等16种情况。各个输出端口之间通过导线相连。
经过检验,RTL 电路逻辑与逻辑表达式含义一致。
E)功能仿真波形

结果分析及结论:(以下输出均为高电平有效)
指令码ir为 10100111 时,au_ac=1010,reg_dr=01,reg_sr=11;
mova指令执行时,sm_en输出为 1,au_en 输出为 1,mux_s 输出为 1,reg_we 输出为 1;
movb指令执行时,sm_en输出为 1,ram_wr输出为 1,au_en 输出为 1,mux_s 输出为 1;
movc 指令执行时,sm_en 输出为 1,ram_re 输出为 1,reg_we 输出为 1;
movd指令执行时,sm_en 输出为 1,reg_we 输出为 1;
add 指令执行时,sm_en 输出为 1,au_en 输出为 1,mux_s 输出为 1,reg_we 输出为 1;
sub 指令执行时,sm_en 输出为 1,au_en 输出为 1,gf_en输出为 1,mux_s输出为1;reg_we输出为 1;
jmp 指令执行时,sm_en 输出为 1,pc_ld 输出为 1;
sm 指令为 1 时,表示为指令执行阶段,指令可以正常执行;sm 指令为 0 时表示取指阶段,此时 in_pc、ram_re、id_ir、sm_en 输出为 1;
jg 指令执行时,sm_en 输出为 1,au_en 输出为 1;
当 g 与 jg 指令共同执行时,pc_ld 输出为 1;
当 in1指令执行时,sm_en 输出为1,in_en 输出为 1,mux_s 输出为 1,reg_we 输出为 1;
当out1指令执行时,sm_en输出为1,au_en、out_en输出为 1,mux_s 输出为 1,reg_we输出为1;
当 movi 指令执行时,sm_en 输出为 1,pc_in 输出为 1,ram_re 输出为 1,mux_s 输出为1,reg_we 输出为 1;
当 halt 指令执行时,sm_en 输出为 0,sm不反转,无法进行下一轮取指操作,指令机停机。
F)时序仿真波形

结果分析及结论:
1、观察上图我们可以看到输出波形,总体和功能仿真大无二致,但还是有一点小区别,就是在不同的输出之间有一小段短暂的失真,这是由于传输延迟造成。由于我们每一段验证信号的时间较短,都在 ns 级别,但是电路的传输延迟也在 ns 级别,因此这种延迟造成的误差 看起来就显得不可以忽略了。
2、时序仿真可以用来验证程序在目标器件中的时序关系。同时考虑了器件的延迟后,其输出结果跟接近实际情况,但是考虑的情况过多,不容易操作,容易产生错误。时序仿真不仅反应出输出和输入的逻辑关系,同时还计算了时间的延时信息,是与实际系统更接近的一种仿真结果。
G)时序分析


结果分析及结论:
由图可得,Timing Analyzer Summmary 总结所有经典定时分析的结果,并报告每个定时特性的最坏情况定时。比如从in1到 reg_we的最坏定时情况的tpd为12.394 ns。下面 的 tpd 报告表则给出了源节点和目标节点之间的 tpd 延迟时间,比如第二行中 add 到au_en的 tpd 为12.379 ns。
四、思考题
1、任选一条指令,介绍指令的过程、信息流动的情况以及执行时控制信号的值。
答:选择 mova 指令,根据控制信号 SR1、SR0(即指令码 ir 的最后两位)将源寄存器 Rs的数据从通用寄存器 S 口输出,在 AC3~AC0 和 AU_EN 的控制下,经 AU 送入总线BUS,BUS 上的数据传送至通用寄存器的输入端;在 WE 和DR1、DR0 的控制下,时钟下降沿将输入端的数据写入目的寄存器 Rd。执行时sm_en、au_en、mux_s、reg_we 为 1,其他信号为 0。
2、如何产生正确的控制信号以及具体的编程实现?
答:应该去分析每一个控制信号在不同指令输入下的状态,使用逻辑函数进行分析得出最后的表达式,从而在 Quartus 中使用 Verilog 语言实现。
五、实验总结、必得体会及建议
1、从需要掌握的理论、遇到的困难、解决的办法以及经验教训等方面进行总结。
(1)需要掌握的理论:基本了解了简易模型机的内部结构和工作原理。同时学会使用 Verilog 语言编写简单电路。
(2)遇到的困难:对于 QuartusII 的使用还不够熟练,特别是进行波形仿真的功能仿真和 时序仿真时花费时间过长。
(3)解决方法:通过上网查询相关资料,与同学一起讨论。
(4)经验教训:不懂的地方要多向老师请教,对于电路的搭建要多动手,要学会利用好软 件工具,不仅是在实验中,在平时的学习中也要学会利用工具。
2、对本实验内容、过程和方法的改进建议。
编写程序前列写的真值表非常重要,一定要理解通透。

5519

被折叠的 条评论
为什么被折叠?



