建设网站前端,seo需求,网站的风格设计有哪些,商业空间设计理念写在前面#xff1a;
本次实验是完成cpu设计的剩余部分#xff0c;整体难度比上一次要小#xff0c;细心完成就能顺利通过全部测评
一、实验目的
1.了解简易模型机的内部结构和工作原理。
2.分析模型机的功能#xff0c;设计 8 重 3-1 多路复用器。
3.分析模型机的功能…写在前面
本次实验是完成cpu设计的剩余部分整体难度比上一次要小细心完成就能顺利通过全部测评
一、实验目的
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创建工程选择的芯片为 familyCyclone IInameEP2C5T144C8 B) 编写源代码
module mux3_1(a,b,c,s,y);
input [7:0]a,b,c;
input [1:0]s;
output reg[7:0]y;
always (*)
begin
if(s2b01) yb;
else if(s2b10) yc;
else ya;
end
endmodule
C) 编译与调试包含编译调试过程中的错误、警告信息以及资源消耗
调试过程无错误 图示为警告信息 图示为资源消耗 D) RTL 视图 视图分析及结论
视图分析
通过观察 RTL 视图可知左侧为输入右侧为输入电路中有很多的元器件进行连接如比较器输入相等输出 1输入不相等输入 0等以及含有多路复用器 mux2_1输入信号包括控制信号 s 以及 8 位数字信号 a、b、c输出信号为 s 对 a、b、c 信号的选择各个输出端口以及输入端口由导线相连接。
结论
一个功能的实现需要多重门的处理Verilog 中简单的代码对应的实际元件内部的结构原理十分复杂。
E) 功能仿真波形 结果分析及结论
结果分析
功能仿真是指不考虑器件延时和布线延时的理想情况下对源代码进行逻辑功能的验证。由仿真波形可得对于输入状态的变化输出结果实时变化没有延迟其结果与电路设计的真值表的结果相对应。
当 s00 或者 11 时输出 ta;
当 s01 时输出 yb当 s10 时输出 yc
结论
功能仿真操作简单能体现和验证实验的功能但忽略延迟的影响会使结果与实际结果有一定误
差。
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创建工程选择的芯片为 familyCyclone IInameEP2C5T144C8 B) 编写源代码
module mux2_1(a,b,s,y);
input [7:0]a,b;
input s;
output reg[7:0] y;
always (*)
begin
if(s1b0)ya;
else if(s1b1)yb;
end
endmodule
C) 编译与调试包含编译调试过程中的错误、警告信息以及资源消耗
调试过程无错误 图示为警告信息 图示为资源消耗 D) RTL 视图 结果分析及结论
视图分析
通过观察 RTL 视图可知左侧为输入右侧为输入电路中有很多的元器件进行连接如含有多路复用器输入信号包括控制信号 s 以及 8 位数字信号 a、b输出信号为 s 对 a、b 信号的选择各个输出端口以及输入端口由导线相连接。
结论
一个功能的实现需要多重门的处理Verilog 中简单的代码对应的实际元件内部的结构原理十分复杂。
E) 功能仿真波形 结果分析及结论
结果分析
功能仿真是指不考虑器件延时和布线延时的理想情况下对源代码进行逻辑功能的验证。由仿真波形可得对于输入状态的变化输出结果实时变化没有延迟其结果与电路设计的真值表的结果相对应。
当 s0 时输出 ta;
当 s1 时输出 yb
结论
功能仿真操作简单能体现和验证实验的功能但忽略延迟的影响会使结果与实际结果有一定误差。
F) 时序仿真波形 结果分析及结论
结果分析
时序仿真是指在布线后进行是最接近真实器件运行的仿真它与特定的器件有关又包含了器
件和布线的延时信息。由波形可得当输入状态发生改变时输出结果并未同时改变而是有一定延迟同时由于输入状态的改变导致电路出现“冒险”导致输出结果并未与预期结果相同。
结论
1、时序仿真可以用来验证程序在目标器件中的时序关系。同时考虑了器件的延迟后其输出结果跟接近实际情况但是考虑的情况过多不容易操作容易产生错误。
2、时序仿真不 仅反应出输出和输入的逻辑关系同时还计算了时间的延时信息是与实际系统更接近的一种仿真结果。不过要注意的是这个时间延时是仿真软件“估算”出来的。
G) 时序分析 结果分析及结论
结果分析
由图可得Timing Analyzer Summmary 总结所有经典定时分析的结果并报告每个定时特性的最坏情况定时。比如从 s 到 y[6] 的最坏定时情况的 tpd 为 15.022ns。下面的 tpd 报告表则给出了源节点和目标节点之间的 tpd 延迟时间比如第五行中 b[6]到 y[6]的 tpd 为 13.864ns。
结论
实际连接图中个元器件连接之间是存在时间延迟的而且不同的元器件之间的时间延迟也不相同。
3、控制信号产生逻辑
A创建工程选择的芯片为 familyCyclone IInameEP2C5T144C8 B) 编写源代码
module con_signal(mova,movb,movd,movc,add,sub,jmp,jg,g,in1,out1,movi,halt,ir,sm,sm_en,ir_ld,ram_re,ram_wr,pc_ld,pc_in,reg_sr,reg_dr,reg_we,s,au_en,au_ac,gf_en,in_en,out_en,mux_s);
input mova,movb,movc,movd,add,sub,jmp,sm,jg,g,in1,out1,movi,halt;
input [7:0]ir;
output reg sm_en,ram_re,ir_ld,pc_in,ram_wr,pc_ld,reg_we,gf_en,in_en,out_en,mux_s,au_en;
output reg [1:0]reg_sr,reg_dr,s;
output reg [3:0]au_ac;
always (*)beginau_enmova | movb | add | out1 | sub;sm_en~halt;ir_ld~sm;ram_re(~sm) | movc | movi;ram_wrmovb;gf_ensub;pc_ldjmp | (jg g);pc_inmovi | (~sm);reg_wemovi | mova | movc | movd | sub | add | in1;in_enin1;reg_drir[3:2];out_enout1;reg_srir[1:0];if(movb) s2b10;else if(movc) s2b01;au_acir[7:4];mux_smova | movb |movi | add | sub | in1;end
endmodule
C) 编译与调试包含编译调试过程中的错误、警告信息以及资源消耗
调试过程无错误 图示为警告信息 图示为资源消耗 D) RTL 视图 结果分析及结论
视图分析
通过观察 RTL 视图可知左侧为输入右侧为输入电路中有很多的元器件进行连接如与或门等输入信号包括 mova,movb,movc,movd,add,sub,jmp,sm,jg,g,in1,out1,movi,halt 以及指令码 ir输出信号为 sm_en、ram_re、ir_ld 等图示模型机执行的十六个相应的信号。
结论
一个功能的实现需要多重门的处理Verilog 中简单的代码对应的实际元件内部的结构原理十分复杂。
E) 功能仿真波形 结果分析及结论以下输出均为高电平有效 指令码 ir 为 10100111 时au_ac1010reg_dr01reg_sr11 mova 指令执行时sm_en 输出为 1au_en 输出为 1mux_s 输出为 1reg_we 输出为 1 movb 指令执行时sm_en 输出为 1ram_wr 输出为 1au_en 输出为 1mux_s 输出为 1 movc 指令执行时sm_en 输出为 1ram_re 输出为 1reg_we 输出为 1 movd 指令执行时sm_en 输出为 1reg_we 输出为 1 add 指令执行时sm_en 输出为 1au_en 输出为 1mux_s 输出为 1reg_we 输出为 1 sub 指令执行时sm_en 输出为 1au_en 输出为 1gf_en 输出为 1mux_s 输出为 1reg_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 输出为 1au_en 输出为 1 当 g 与 jg 指令共同执行时pc_ld 输出为 1 当 in1 指令执行时sm_en 输出为 1in_en 输出为 1mux_s 输出为 1reg_we 输出为 1 当 out1 指令执行时sm_en 输出为 1au_en、out_en 输出为 1mux_s 输出为 1reg_we输出为 1 当 movi 指令执行时sm_en 输出为 1pc_in 输出为 1ram_re 输出为 1mux_s 输出为1reg_we 输出为 1; 当 halt 指令执行时sm_en 输出为 0sm 不反转无法进行下一轮取指操作指令机停机。
F) 时序仿真波形 结果分析及结论
结果分析
时序仿真是指在布线后进行是最接近真实器件运行的仿真它与特定的器件有关又包含了器件和布线的延时信息。由波形可得当输入状态发生改变时输出结果并未同时改变而是有一定延迟同时由于输入状态的改变导致电路出现“冒险”导致输出结果并未与预期结果相同。结论
1、时序仿真可以用来验证程序在目标器件中的时序关系。同时考虑了器件的延迟后其输出结果跟接近实际情况但是考虑的情况过多不容易操作容易产生错误。
2、时序仿真不 仅反应出输出和输入的逻辑关系同时还计算了时间的延时信息是与实际系统更接近的一种仿真结果。不过要注意的是这个时间延时是仿真软件“估算”出来的。
G) 时序分析 结果分析及结论
结果分析
由图可得Timing Analyzer Summmary 总结所有经典定时分析的结果并报告每个定时特性的最坏情况定时。比如从 add 到 mux_s 的最坏定时情况的 tpd 为 13.245ns。下面的 tpd 报告表则给出了源节点和目标节点之间的 tpd 延迟时间比如第六行中 mova 到 au_en 的 tpd 为12.731ns。
结论
实际连接图中个元器件连接之间是存在时间延迟的而且不同的元器件之间的时间延迟也不相同。
四、思考题
1、任选一条指令介绍指令的过程、信息流动的情况以及执行时控制信号的值。
答选择 mova 指令根据控制信号 SR1、SR0即指令码 ir 的最后两位将源寄存器 Rs的数据从通用寄存器 S 口输出在 AC3AC0 和 AU_EN 的控制下经 AU 送入总线BUSBUS 上的数据传送至通用寄存器的输入端在 WE 和DR1、DR0 的控制下时钟下降沿将输入端的数据写入目的寄存器 Rd。执行时sm_en、au_en、mux_s、reg_we 为 1其他信号为 0。
2、如何产生正确的控制信号以及具体的编程实现
答应该去分析每一个控制信号在不同指令输入下的状态使用逻辑函数进行分析得出最后的表达式从而在 Quartus 中使用 Verilog 语言实现。
五、实验总结、必得体会及建议
1、从需要掌握的理论、遇到的困难、解决的办法以及经验教训等方面进行总结。
答本实验需要掌握不同指令输入下各控制信号的状态以及信号在模型机中的流动情况同时还需要了解模型机各部件的工作原理在这次实验中我遇上的最大的问题就是不太会使用时序仿真对代码进行模拟经过老师的耐心解答最终我顺利解决了这个问题并顺利完成了各板块的模拟在经验教训方面应该多使用功能仿真去对我们的代码功能进行检验同时使用时序仿真则可以让我们直观地看见电路实际的输出情况便于我们深层次的理解。