实验三 简易模型机中组合部件的实现
一、实验目的
1.了解简易模型机的内部结构和工作原理。
2.分析模型机的功能,设计 ALU 和移位逻辑。
3.分析模型机的工作原理,设计模型机控制信号产生逻辑。
二、实验内容
1.用 VHDL 语言设计模型机的 ALU 模块;
2.用 VHDL 语言设计模型机的 移位模块;
3.用 VHDL 语言设计模型机的 控制信号产生逻辑。
三、实验方法
- 实验方法:
1采用基于FPGA进行数字逻辑电路设计的方法。
2采用的软件工具是QuartusII软件仿真平台。
- 实验步骤:
- 新建,编写源代码。
(1).选择保存项和芯片类型:【File】-【new project wizard】-【next】(设置文件路径+设置project name)-【next】-【next】(设置Family=FLEX10K;name=EPF10K10TI144-4)-【next】-【finish】
(2).新建:【file】-【new】(选择AHDL File)-【OK】
2、写好源代码,保存文件(文件名与工程名需保持一致)。
3、编译与调试。确定源代码文件为当前工程文件,点击【processing】-【start compilation】进行文件编译。编译结果无警告,文件编译成功。
4、波形仿真及验证。【file】-【new】(选择Vector Waveform File)-【OK】。按照程序所述插入节点(插入输入节点和输出节点)。(操作为:左键双击NAME下方框框 -【Node Finder】(设置Filter:Pins:all)-【list】)-【>>】-【ok】-【ok】)。按题目需求设置输入波形,点击保存按钮保存。
5、时序仿真或功能仿真。
(1).时序仿真:
编译VHDL文件-选择.VWF波形文件-【Processing】-【Simulator Tool】(Simulation mode:选择Timing)-点击开始仿真按钮。
(2).功能仿真
编译VHDL文件-选择.VWF波形文件-【Processing】-【Simulator Tool】(Simulation mode:选择Functional)-【Generate Funtional Silmulation Netlist】-点击开始仿真按钮。
6、查看RTL Viewer:【Tools】-【netlist viewer】-【RTL viewer】。
四、实验过程
1. ALU
- 编译过程
a)源代码如图(VHDL设计)
b)编译、调试过程
c)结果分析及结论
结果显示0 errors,60 warnings,VHDL文件满足题目要求。
- 波形仿真
a)波形仿真过程(详见实验步骤)
b)波形仿真波形图
功能仿真波形图:
2. 移位逻辑
A.设计方法一:直接对向量进行赋值
- 编译过程
a)源代码如图(VHDL设计)
b)编译、调试过程
c)结果分析及结论
结果显示0 errors,38 warnings,VHDL文件满足题目要求,采用直接对向量进行赋值思想设计。
- 波形仿真
a)波形仿真过程(详见实验步骤)
b)波形仿真波形图
功能仿真波形图:
c)结果分析及结论
对于功能仿真:
0-10ns对应: 控制信号fbus为1,输出w为a的8位向量,cf为0 正确
10-20ns对应: 控制信号flbus为1,输出w为a左移一位的8位向量,
cf为a的第一位 正确
20-30ns对应: 控制信号frbus为1,输出w为a右移一位的8位向量,
cf为a的最后一位 正确
30-40ns对应: 控制信号均为0,输出高阻,cf为0 正确
40-50ns对应: 控制信号fbus为1,输出w为a的8位向量,cf为0正确
50-60ns对应: 控制信号flbus为1,输出w为a左移一位的8位向量,
cf为a的第一位 正确
60-70ns对应: 控制信号frbus为1,输出w为a右移一位的8位向量,
cf为a的最后一位 正确
- 查看RTL Viewer
B.设计方法二:使用逻辑函数对向量每一位进行赋值
1. 编译过程
a)源代码如图(VHDL设计)
b)编译、调试过程
c)结果分析及结论
结果显示0 errors,0 warnings,VHDL文件满足题目要求。
- 波形仿真
a)波形仿真过程(详见实验步骤)
b)波形仿真波形图
功能仿真波形图:
c)结果分析及结论
对于功能仿真:
0-10ns对应: 控制信号fbus为1,输出w为a的8位向量,cf为0 正确
10-20ns对应: 控制信号flbus为1,输出w为a左移一位的8位向量,
cf为a的第一位 正确
20-30ns对应: 控制信号frbus为1,输出w为a右移一位的8位向量,
cf为a的最后一位 正确
30-40ns对应: 控制信号均为0,输出高阻,cf为0 正确
40-50ns对应: 控制信号fbus为1,输出w为a的8位向量,cf为0正确
50-60ns对应: 控制信号flbus为1,输出w为a左移一位的8位向量,
cf为a的第一位 正确
60-70ns对应: 控制信号frbus为1,输出w为a右移一位的8位向量,
cf为a的最后一位 正确
3. 查看RTL Viewer
3. 控制信号产生逻辑
- 编译过程
a)源代码如图(VHDL设计)
b)编译、调试过程
c)结果分析及结论
结果显示0 errors,2 warnings,VHDL文件满足题目要求。
- 波形仿真
a)波形仿真过程(详见实验步骤)
b)波形仿真波形图
功能仿真波形图:
c)结果分析及结论
对于功能仿真:经检验,所有输出都满足条件。
3 查看RTL Viewer
五、实验结论与心得
经过本次实验,我对Quartus II仿真软件有了更深的理解和运用,对VHDL语言的使用有了更好的掌握,熟练了创建工程文件、软件编译操作、仿真波形模拟等操作。
使用到了VHDL语言中的是顺序描述语句,熟练掌握了IF语句和WHEN的使用,以及VHDL中向量的使用,对VHDL语言有了进一步的学习。
为了更好地运用移位逻辑,熟悉其操作,分别采用了直接对向量进行赋值和使用逻辑函数对向量每一位进行赋值两种方法,对比两者的RTL视图,明白了两者的优缺点。
六、思考题
1.移位逻辑不工作时,输出应该为何值?为什么?
输出应该为高阻,为了防止和引线上的其他数据冲突。
2. ALU 的输出 Cf 和 Zf 应该如何处理?
Cf为两者相加产生的进位,Zf为判断两者运算结果是否为0,对后期指令寄存器和指令译码器的操作产生影响。
3.如何产生正确的控制信号以及具体的编程实现?
通过存储器到指令寄存器再到指令译码器产生。