河北大学 计算机组成原理 实验报告
实验项目 添加CPU指令(算数左移) 成绩 一、实验目的:
(1) 掌握计算机的工作原理及计算机CPU指令的增加。
(2) 掌握调试软件Debugcontroller的使用方法,用于对CPU进行调试。
二、实验原理:
在2章中,详细介绍了实验CPU的设计;在本章的6.9节~6.12节对实验PU的组成部分从原理上进行了实验。这一节将在前面实验的基础上对实验CPU进行总体调试。
第2章中提供的实验CPU是一个能够运行测试程序的CPU,只是在功能上做了简化。这样一个CPU只有经过测试程序的调试才能确认CPU设计的正确性。第5章中介绍了调试软件Debugcontroller的使用方法,本节使用Debugcontroller对实验CPU进行调试。
在Debugcontroller中,能够将测试程序装进试验台上由两片HM6116构成的存储器,通过观测运行的结果能够判断出CPU设计的正确性。
1、修改实验CPU设计,添加一条左移指令,并且能够实现算数左移
添加一条算数左移的指令:先将操作数写入目的寄存器中,利用新添加的算数左移指令将操作数取出并算数左移后在次写入目的寄存器中。为达到这个目的需进行如下一些改动: (1)修改规则文件 在规则文件中添加一条自己制定的规则: SHL DR
\"1011[u2]0000000011\
(2)测试程序(test1)
为了调试新增指令的功能需要编写如下测试程序(可实现算数左移): main: MVRD
MVRD
ADD SUB
R2,0x5555 R3,0xffff
R3,R2
R3,R2 R2
SHL
INC R3 DEC OR
R3 R3,R2
AND NOT
R3,R2 R3 R2,R3
MOV NOP NOP
(3)修改设计实体decoder_unit(指令译码部分) 因为3位操作码不够用,需要增加操作码,将原来的3位改为4位
op_code: out std_logic_vector(3 downto 0); (所有的都改)
因为IR(15) --IR(12) :1011在指令系统中没有用,所以IR(15)--IR(12) 为1011时,操作码为算数左移时的指令操作码,并添加在IR(15)--IR(12) 为1011时目的寄存器的写操作,用于左移后的操作数再次写入寄存器中。可用于多次执行该指令时实现算数左移。
修改寄存器写信号:
DRWr_proc: process(IR)
begin
if IR(15) = '0' then if IR(0) ='1' then DRWr <= '1'; else DRWr <= '0'; end if;
elsif IR(14) = '1' and IR(13) = '0' then DRWr <= '1';
elsif IR(14 downto 12)=\"011\" then DRWr <= '1';
else DRWr <= '0'; end if; end process;
(4)修改设计实体exe_unit
添加一个16位信号接收左移的操作数 算数左移的实现:
when \"1011\" =>
result_t <= ('0' & A(14 downto 0) & '0');
when others =>
result_t <= \"00000000000000000\";
2、根据TEC-CA开放式CPU实验教学系统的要求指定实验CPU的引脚
三、实验步骤
(1)将试验台模式开关置为101,为单片机控制FPGA-CPU调试运行模式。
(2)在QuartusII中队实验CPU进行编译,成功后下载到TEC-CA上的FPGA器件中。 (3)打开Debugcontroller,执行File→Rule Open命令,打开规则文件cpu.txt。 (4)在Debugcontroller中,执行File→Code Open命令,打开会变文件test1.txt。 (5)在Debugcontroller中,执行Build→Compile Code命令,编译test1.txt得到目标二进制文件,显示在机器代码窗口中。
(6)在Debugcontroller中,执行Build→Upload BIN命令,将目标二进制代码写入试验台上的存储器中。为了检查是否正确吸入,执行Build→Download RAM命令,将存储器中的代码读回,以做比较。
(7)在Debugcontroller中,利用Debug菜单中的命令调试程序。观察在半个时钟周期、一个时钟和全部执行周期下,寄存器窗口中数据的变化。
四、实验结果及分析
在寄存器窗口中观察寄存器的变化,能够看到寄存器的值按照测试文件中的指令进行变化。
测试新增指令时,写入一个值在寄存器R2中,经过三个节拍周期即一个指令周期后,R2的值变成写入值,之后的指令周期可实现算数左移,每次左移的值再次写入寄存器R2中。
实验是R2是5555,执行该指令后变为AAAA。
五、实验收获
通过这次实验掌握了计算机的工作原理,建立起了清晰的计算机整机概念,了解计算机中指令的执行过程,掌握了调试软件Debugcontroller的使用方法,学会了对CPU进行调试。读懂了vhdl语言编写的CPU代码,并能够为其添加指令。
因篇幅问题不能全部显示,请点此查看更多更全内容