百度网盘:实验2-ALU 实验2-指令译码器
提取码:0928
实验二 模型机组合部件的实现(一)
班级 姓名 学号
(选择的芯片为family=Cyclone II;name=EP2C5T144C8)
(包含编译调试过程中的错误、警告信息以及资源消耗)
a)指令译码器
结果分析及结论:
因为8位进制数的输入有256个,不便于判断,于是前面几个自己手动输入想要的输入并观测功能仿真的结果。
通过设置需要的输入,功能仿真后的结果与预想的结果一样,满足组合逻辑电路的真值表。
所以本程序通过了功能仿真。
结果分析及结论:
在Assignment的Setting中将仿真选项改为Timing,得到上面的结果。与功能仿真相比,时序仿真不符合满足组合逻辑电路的真值表。因而也证明了Timing时序仿真体现了门电路的延迟效果。
输出和功能仿真相比,集体都有一定的延时,除此之外,在一些本该低电平的地方突然出现了高电平,本该高电平的地方突然出现了低电平,这是时序仿真的过程中出现了冒险现象。
结果分析及结论:
延迟从7.277-18.950ns,大多为13ns。
结果由耗时最长的那个决定,故整体耗时为18.95ns;
没有failed path。
(选择的芯片为family=FLEX10K;name=EPF10K20TI144-4)
结果分析及结论:
电路图中除了基本的逻辑门外,还包含了多路复用器、加法器、加法器等,来执行选择、加法、减法、赋值等操作。
视图较为复杂,通过视图来判断逻辑是否正确难度较大,所以逻辑的正确性将通过后续的波形图来验证。
结果分析及结论:
因为8位进制数的输入有256个,不便于判断,于是前面几个自己手动输入想要的输入并观测功能仿真的结果。
通过设置需要的输入,功能仿真后的结果与预想的结果一样,满足组合逻辑电路的真值表。
所以本程序通过了功能仿真。
结果分析及结论:
在Assignment的Setting中将仿真选项改为Timing,得到上面的结果。与功能仿真相比,时序仿真不符合满足组合逻辑电路的真值表。因而也证明了Timing时序仿真体现了门电路的延迟效果。
输出和功能仿真相比,集体都有一定的延时,除此之外,在一些本该低电平的地方突然出现了高电平,本该高电平的地方突然出现了低电平,这是时序仿真的过程中出现了冒险现象
结果分析及结论:
延迟从12.421-20.218ns,大多为18ns。
结果由耗时最长的那个决定,故整体耗时为为20.218ns;
没有failed path。
1.指令译码器必须要16个输出吗?可否将一些输出合并,哪些可以合并,为什么?
不是必须16个输出。
可以将MOVA、MOVB、MOVC合并,因为其指令编码的前4位数相同,只有后面4位表示寄存器的不同,但是实现都是寄存器的之间的赋值。
2.ALU中的S[3..0]控制信号是来自哪里或者说与什么信息相同?
ALU中的S[3..0]控制信号是来自8位二进制数的指令编码的前4位。
由R2、R1 在 S3~S0 和 M 的控制下,实现运算,经移位逻辑送入总线 BUS;由/WE 控制和 R1 的编码选择 RWBA1、RWBA0,将 BUS 上的数据写入通用寄存器 R1。
3、为何S[3..0]等于1100或0100时将输入a传给t,S[3..0]等于1010时将输入b传给t?
有些逻辑表达式不需要进行加减与非等运算,但是仍需通过ALU、至移位逻辑后进入总线BUS。
而ALU有2个输入端口,通用寄存器组的两个端口一个为源寄存器、一个为目的寄存器,所以ALU须有两个分别输出t=a和t=b的运算。
故S[3..0]等于1100或0100时将输入a传给t,S[3..0]等于1010时将输入b传给t
1、从需要掌握的理论、遇到的困难、解决的办法以及经验教训等方面进行总结。
正像第二个工程的名字simple一样,本次实验难度不算大,代码也比较好理解。
但是代码程序的规则,尤其前面几行的input、output,reg,always等的使用还不是很熟悉。所以虽然代码很好理解,但是自己完整写出来并成功运行还是费了一些功夫。
接下来,还是尽量熟悉 Quartus II 软件的基本操作,学习Verilog语言编写程序。
心得:实践是最好的学习方法。尽管之前老师在课堂上对Verilog语言讲授了很多,但具体的设计和编写步骤经常忘记。这次实验让我快速熟悉了Verilog语言,理解也比之前单纯听老师授课深入了很多。
2、对本实验内容、过程和方法的改进建议(可选项)。
题目可以给出几个样例与正确结果,用于学生自己验证,功能仿真时的正确性。同时也可作为作业要求提交输入该样例得到的正确结果。