实验三 运算器数据通路 理解运算器数据通路的组成结构; 熟悉ALU、移位寄存器、通用寄存器组的功能和设计方法; 掌握运算器的工作原理和信息传递的控制过程; 掌握双倍字长加减运算的方法; 实验指导:赵蕙
1 打开浏览器 2 点击more>>,进入实验指导
2 下载实验三文件到E或F盘 1 下载工程模板到E盘或F盘
下载的文件解压缩后 下载的压缩文件
1 工程模板文件夹包含下列文件: 2 实验三文件夹包含下列文件: 实验板与调试软件虚拟实验板信息传递的扫描电路源文件 工程文件 工程配置文件 工程默认设置文件 工程顶层文件 数码管七段译码源文件 2 实验三文件夹包含下列文件: 运算器verilog源文件 通用寄存器组verilog源文件 实验电路顶层verilog源文件 虚拟面板构图文件 暂存器A的verilog源文件 移位寄存器verilog源文件
双击工程文件,直接在QuartusII中打开工程 工程模板文件夹 2 双击工程文件,直接在QuartusII中打开工程 1 将实验三相关文件全部复制到工程文件夹中
编译工程
工程编译成功
打开树状结构,根据需要选择源文件进行阅读,将实验报告册程序清单补充完整。 1 打开树状结构,根据需要选择源文件进行阅读,将实验报告册程序清单补充完整。 比实验3.2扩充了逻辑运算,共10种算术逻辑运算 运算控制信号由ALU_OP编码生成
2 工程下载
如果实验板电源没有打开,会出现NO hardware提示,打开开发板电源,点击Hardware Setup选择下载电缆。 电源按钮
1 在下拉列表中选择USB-Blaster 或者在此处双击USB-Blaster 2 单击close确定
下载成功 单击start
现在,“运算器数据通路”实验电路已经下载到实验板的FPGA,接下来的任务是验证电路功能。
1 双击桌面JuLab图标,打开实验调试软件 2 选择逻辑部件实验
虚拟实验板中的绿色发光二极管、红色发光二极管、开关、数码管、按键与实际开发板上资源对应。 9个绿色发光管 18个红色发光管 开关 按键 数码管
使用能够更直观地反映输入输出与实验电路关系的虚拟面板构图,来验证实验电路功能。
1 选择lab3.vpl虚拟面板构图文件 2
时钟使能信号是寄存器能够装入数据的条件,所以实验时注意: 从实验3.1同学们知道,同一时刻,只有一个器件可以向总线输出数据,所以实验时注意: DATAoe Soe GRSoe 同一时刻最多只有一个为1 与实验3.1移位寄存器稍有不同: ST_OP=11 装入数据 ST_OP=01 右移 ST_OP=10 左移 ST_OP=00 数据保持不变 KEY0按钮提供Reset信号,可复位暂存器A和标志寄存器PSW。 虚拟控件根据需要放置在原理图的各个信号位置,方便在做功能验证时进行输入与观察。 接下来,操作实验调试软件、按要求完成实验报告册。 时钟使能信号是寄存器能够装入数据的条件,所以实验时注意: Ace=1,并且有时钟上升沿,A置数 PSWce=1,并且有时钟上升沿,PSW置数 GRSce=1,并且有时钟上升沿,GRS[index]置数 KEY1按钮提供CLK信号,是暂存器A、标志寄存器PSW、移位寄存器SHIFTE、通用寄存器组GRS的时钟输入。
1 #1001送给R1,在一个时钟作用下可以完成: 数据开关置为1001,打开DATA向总线输出的三态门使能(DATAoe=1),可以观察到BUS显示1001(9);GRS的输入来自BUS总线,使用INDEX指示寄存器号(INDEX=01),打开时钟使能信号GRSce=1,点击KEY1产生CLK时钟,可以观察到GRS_Q显示1001(9)。 #1100送给R2,同样在一个时钟作用下可以完成: 数据开关置为1100,打开DATA向总线输出的三态门使能(DATAoe=1),可以观察到BUS显示1100(C);GRS的输入来自BUS总线,使用INDEX指示寄存器号(INDEX=10),打开时钟使能信号GRSce=1,点击KEY1产生CLK时钟,可以观察到GRS_Q显示1100(C)。
GRS_Q直接反映GRS[INDEX]的值,所以设置INDEX,可以观察到各个寄存器的值。 INDEX=00 R0 INDEX=01 R1 INDEX=10 R2 INDEX=11 R3 INDEX=01,观察确认GRS_Q为9(1001) INDEX=10,观察确认GRS_Q为C(1100) 表格2、表格3、表格4沿用表格1完成后的R1和R2的值,所以在进行后续表格操作前,可先确认R1和R2的值,如果发生改变,重新执行表格1,重置R1和R2寄存器的值
2 每一步骤中不使用(即可为任意值)的控制信号可以全部设置成0,减少操作过程中出错的可能,推荐这么做,不是必须。 第一个时钟完成:R1送BUS,A装入数据(被加数送dst) 使用INDEX指示寄存器号(INDEX=01),打开输出使能信号GRSoe=1,可以观察到BUS显示1001(9);打开暂存器A的时钟使能信号Ace=1;点击KEY1产生CLK时钟,可以观察到A输出端(dst)显示1001(9),完成。 第二个时钟完成:R2送BUS(即加数送src),ALU执行加法运算,移位寄存器保存加法结果,PSW寄存器保护结果的标志 使用INDEX指示寄存器号(INDEX=10),打开输出使能信号GRSoe=1,可以观察到BUS显示1100(C);运算器执行加法(ALU_OP=0001),此时可以观察到ALU输出端F结果显示为0101(5);打开标志寄存器PSW的时钟使能信号PSWce=1;移位寄存器控制信号设置为装入数据(ST_OP=11);点击KEY1产生CLK时钟,可以观察到移位寄存器输出端S_Q显示0101(5),标志寄存器输出端显示0011。 第三个时钟完成:Shifter送BUS,R3装入数据 打开移位寄存器输出使能(Soe=1),可以观察到BUS上显示0101(5); 使用INDEX指示寄存器号(INDEX=11),打开时钟使能信号GRSce=1;点击KEY1产生CLK时钟,可以观察到GRS_Q显示0101(5)。
3 因此仍然需要三步(三个时钟)完成目标 第一个时钟完成:R1送BUS,A装入数据 使用INDEX指示寄存器号(INDEX=01),打开输出使能信号GRSoe=1,可以观察到BUS显示1001(9);打开暂存器A的时钟使能信号Ace=1;点击KEY1产生CLK时钟,可以观察到A输出端(dst)显示1001(9),完成。 第二个时钟完成:ALU执行数据值送,移位寄存器保存ALU的输出F 运算器执行数据值送F=A(ALU_OP=0000),此时可以观察到ALU输出端F结果显示为1010(9);移位寄存器控制信号设置为装入数据(ST_OP=11);点击KEY1产生CLK时钟,可以观察到移位寄存器输出端S_Q显示1001(9)。 第三个时钟完成:Shifter送BUS,R3装入数据 打开移位寄存器输出使能(Soe=1),可以观察到BUS上显示1001(9); 使用INDEX指示寄存器号(INDEX=11),打开时钟使能信号GRSce=1;点击KEY1产生CLK时钟,可以观察到GRS_Q显示1001(9)。
4 同样需要三个时钟完成: 与上一个表格的区别仅在于SHIFTER这次要实现的操作是右移(除2)
5 用ADD指令完成低四位相加 用ADDC指令完成高四位相加 X=0001 1010 相加 Y=1000 0111 1 010 + 0111 1 010 + 0111 1 0001 0001 + 1000 + 1 0 1010 高四位相加时要考虑低四位相加产生的CF,所以使用ADDC指令
1 2 3 4 5 6 完成低四位加法,结果保存在R2寄存器 完成高四位加法,结果保存在R3寄存器 Y的低四位送R0 操作过程不记录报告册中
同学们实验结束后,请将电脑和实验板电源关闭,将桌面整理干净,凳子放好,上交实验报告册后,再离开实验室。 6 同学们实验结束后,请将电脑和实验板电源关闭,将桌面整理干净,凳子放好,上交实验报告册后,再离开实验室。