-
实验目的
- 了解简易模型机的内部结构和工作原理。
- 分析模型机的功能,设计ALU和移位逻辑。
- 分析模型机的工作原理,设计模型机控制信号产生逻辑。
-
实验内容
- 用VHDL语言设计模型机的ALU部件。
- 用VHDL语言设计模型机的移位逻辑。
- 用VHDL语言设计模型机控制信号产生逻辑。
- 实验方法
采用基于FPGA进行数字逻辑电路设计的方法。
采用的软件工具是QuartusII软件仿真平台。
-
实验步骤
- 新建项目:【Create a New Project】-【next】(设置文件路径+设置project name为ALU)-【next】(添加文件,不进行设置)-【next】(选择芯片类型,不进行设置)-【next】(选择Design Entry等,不进行设置)-【next】-【finish】;
- 新建源文件:【File】-【New】(选择VHDL File)-【OK】;
- 写好源文件,保存文件(ALU.vhd);
- 编译与调试,点击工具栏中的【Start Compilation】进行文件编译,编译结果有五个警告,文件编译成功;
- 波形仿真及验证,新建波形仿真文件【File】-【New】(选择Vector Waveform File),按照程序所述插入A7-0,B7-0,S3-0,M,cf,zf,T7-0三十一个节点(A7-0,B7-0,S3-0,M为输入节点,cf,zf,T7-0为输出节点)。(操作为:双击引脚区-【Node Finder】(Pins=all;【List】)-【>>】-【OK】-【OK】)。
- 分别进行功能仿真(【Assignments】-【Setting】-【Simulator Settings】-【Functional】-【OK】-【Processing】-【Generate Functional Simulation Netlist】-工具栏中【Start Simulation】)和时序仿真(【Assignments】-【Setting】-【Simulator Settings】-【Timing】-【OK】-工具栏中【Start Simulation】),得到【Simulation Report】。
- 查看RTL Viewer:【Tools】-【netlist viewer】-【RTL viewer】。
- 用VHDL语言设计一个模型机移位逻辑
- 新建项目:【Create a New Project】-【next】(设置文件路径+设置project name为shift)-【next】(添加文件,不进行设置)-【next】(选择芯片类型,不进行设置)-【next】(选择Design Entry等,不进行设置)-【next】-【finish】;
- 新建源文件:【File】-【New】(选择VHDL File)-【OK】;
- 写好源文件,保存文件(shift.vhd);
- 编译与调试,点击工具栏中的【Start Compilation】进行文件编译,编译结果有五个警告,文件编译成功;
- 波形仿真及验证,新建波形仿真文件【File】-【New】(选择Vector Waveform File),按照程序所述插入fbus,frbus,flbus,A7-0,W7-0,cf二十个节点(fbus,frbus,flbus,A7-0为输入节点,W7-0,cf为输出节点)。(操作为:双击引脚区-【Node Finder】(Pins=all;【List】)-【>>】-【OK】-【OK】)。
- 分别进行功能仿真(【Assignments】-【Setting】-【Simulator Settings】-【Functional】-【OK】-【Processing】-【Generate Functional Simulation Netlist】-工具栏中【Start Simulation】)和时序仿真(【Assignments】-【Setting】-【Simulator Settings】-【Timing】-【OK】-工具栏中【Start Simulation】),得到【Simulation Report】。
- 查看RTL Viewer:【Tools】-【netlist viewer】-【RTL viewer】。
- 新建项目:【Create a New Project】-【next】(设置文件路径+设置project name为Control_signal_logic)-【next】(添加文件,不进行设置)-【next】(选择芯片类型,不进行设置)-【next】(选择Design Entry等,不进行设置)-【next】-【finish】;
- 新建源文件:【File】-【New】(选择VHDL File)-【OK】;
- 写好源文件,保存文件,(Control_signal_logic.vhd);
- 编译与调试,点击工具栏中的【Start Compilation】进行文件编译,编译结果有五个警告,文件编译成功;
- 波形仿真及验证,新建波形仿真文件【File】-【New】(选择Vector Waveform File),按照程序所述插入MOVA,MOVB,MOVC,ADD,SUB,OR0,NOT0, SHR,SHL,JMP,JZ,JC,IN0,OUT0,NOP,HALT,SM,Cf,Zf,IR7-0,WE,M,F_BUS, FR_BUS,FL_BUS,LD_PC,IN_PC,XL,DL,LD_IR,CF_EN,ZF_EN,IN_EN,OUT_EN, SM_EN,RAA, RWBA, MADD,ALU_S等节点。(操作为:双击引脚区-【Node Finder】(Pins=all;【List】)-【>>】-【OK】-【OK】)。
- 分别进行功能仿真(【Assignments】-【Setting】-【Simulator Settings】-【Functional】-【OK】-【Processing】-【Generate Functional Simulation Netlist】-工具栏中【Start Simulation】)和时序仿真(【Assignments】-【Setting】-【Simulator Settings】-【Timing】-【OK】-工具栏中【Start Simulation】),得到【Simulation Report】。
- 查看RTL Viewer:【Tools】-【netlist viewer】-【RTL viewer】。
-
实验过程
-
用VHDL设计一个简易模型机ALU部件
- 功能实现
判断S输入,如果
S=“1001”,执行加法,将R1+R2赋值给R1
S=“0110”,执行减法,将R1-R2赋值给R1
S=“1011”,执行或运算,将(R1)∨(R2)赋值给R1
S=“0101”,执行取反运算,/R1赋值给R1
判断加减法是否有最高位的进位或借位,如果有那就将cf=1,否则为cf=0
判断加减操作的结果是否为0,如果是那就将zf=1,否则zf=0
- 编译过程
- 源文件
- 编译调试过程
- 功能仿真
- 功能仿真图
- 结果分析及结论
0-10ns:总使能M为0,直传通路;
总使能M为1:
70-80ns:A=11111111,B=11111111,此时S=0110执行减法,结果为0,输出T=00000000,进位zf=1;
100-110ns:A=11111111,B=11111111,此时S=1001,执行加法,输出为T=1111110,此时cf=1;
110-120ns:A=1111111,B=11111111,此时S=1011,执行或运算,结果T=11111111,
Cf=0,zf=0;
120-130ns:A=111