实验三:简易模型机中组合部件的实现

本次实验旨在理解和实现简易模型机的内部结构,包括使用VHDL设计ALU、移位逻辑和控制信号产生逻辑。通过QuartusII进行设计、编译和仿真,分析了模型机的工作原理,并完成了功能和时序仿真,验证了设计的正确性。实验中,ALU根据S输入执行加法、减法、或运算和取反操作,移位逻辑实现了左移和右移,控制信号产生逻辑根据指令和标志产生各部件的控制信号,确保模型机的有序工作。
摘要由CSDN通过智能技术生成
  • 实验目的

  • 了解简易模型机的内部结构和工作原理。
  • 分析模型机的功能,设计ALU和移位逻辑。
  • 分析模型机的工作原理,设计模型机控制信号产生逻辑。
  • 实验内容

采用基于FPGA进行数字逻辑电路设计的方法。

采用的软件工具是QuartusII软件仿真平台。

  • 实验步骤

  1. 用VHDL设计一个ALU
  1. 新建项目:【Create a New Project】-【next】(设置文件路径+设置project name为ALU)-【next】(添加文件,不进行设置)-【next】(选择芯片类型,不进行设置)-【next】(选择Design Entry等,不进行设置)-【next】-【finish】;
  2. 新建源文件:【File】-【New】(选择VHDL File)-【OK】;
  3. 写好源文件,保存文件(ALU.vhd);
  4. 编译与调试,点击工具栏中的【Start Compilation】进行文件编译,编译结果有五个警告,文件编译成功;
  5. 波形仿真及验证,新建波形仿真文件【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】)。
  6. 分别进行功能仿真(【Assignments】-【Setting】-【Simulator Settings】-【Functional】-【OK】-【Processing】-【Generate Functional Simulation Netlist】-工具栏中【Start Simulation】)和时序仿真(【Assignments】-【Setting】-【Simulator Settings】-【Timing】-【OK】-工具栏中【Start Simulation】),得到【Simulation Report】。
  7. 查看RTL Viewer:【Tools】-【netlist viewer】-【RTL viewer】。
  1. 用VHDL语言设计一个模型机移位逻辑
  1. 新建项目:【Create a New Project】-【next】(设置文件路径+设置project name为shift)-【next】(添加文件,不进行设置)-【next】(选择芯片类型,不进行设置)-【next】(选择Design Entry等,不进行设置)-【next】-【finish】;
  2. 新建源文件:【File】-【New】(选择VHDL File)-【OK】;
  3. 写好源文件,保存文件(shift.vhd);
  4. 编译与调试,点击工具栏中的【Start Compilation】进行文件编译,编译结果有五个警告,文件编译成功;
  5. 波形仿真及验证,新建波形仿真文件【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】)。
  6. 分别进行功能仿真(【Assignments】-【Setting】-【Simulator Settings】-【Functional】-【OK】-【Processing】-【Generate Functional Simulation Netlist】-工具栏中【Start Simulation】)和时序仿真(【Assignments】-【Setting】-【Simulator Settings】-【Timing】-【OK】-工具栏中【Start Simulation】),得到【Simulation Report】。
  7. 查看RTL Viewer:【Tools】-【netlist viewer】-【RTL viewer】。
  1. 用VHDL语言设计一个模型机控制信号产生逻辑
  1. 新建项目:【Create a New Project】-【next】(设置文件路径+设置project name为Control_signal_logic)-【next】(添加文件,不进行设置)-【next】(选择芯片类型,不进行设置)-【next】(选择Design Entry等,不进行设置)-【next】-【finish】;
  2. 新建源文件:【File】-【New】(选择VHDL File)-【OK】;
  3. 写好源文件,保存文件,(Control_signal_logic.vhd);
  4. 编译与调试,点击工具栏中的【Start Compilation】进行文件编译,编译结果有五个警告,文件编译成功;
  5. 波形仿真及验证,新建波形仿真文件【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】)。
  6. 分别进行功能仿真(【Assignments】-【Setting】-【Simulator Settings】-【Functional】-【OK】-【Processing】-【Generate Functional Simulation Netlist】-工具栏中【Start Simulation】)和时序仿真(【Assignments】-【Setting】-【Simulator Settings】-【Timing】-【OK】-工具栏中【Start Simulation】),得到【Simulation Report】。
  7. 查看RTL Viewer:【Tools】-【netlist viewer】-【RTL viewer】。

  • 实验过程

  • 用VHDL设计一个简易模型机ALU部件

  1. 功能实现

判断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

  1. 编译过程
  1. 源文件
  2.  

 

  1. 编译调试过程

成功通过编译,存在二十六个警告信息,无调试过程。

  1. 功能仿真
  1. 功能仿真图

  1. 结果分析及结论

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

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值