《系统结构第三四次实验》由会员分享,可在线阅读,更多相关《系统结构第三四次实验(12页珍藏版)》请在金锄头文库上搜索。
1、实验三 环境熟悉与基本CPU设计一、 实验目的(1) 熟悉实验台运行环境与调试方法,掌握基本CPU的设计,为自行设计多级流水CPU打好基础。(2) 熟练掌握HDL硬件描述语言,对CPU的各个功能模块进行代码编写,并学会将各个功能部分组织连接成一个完整CPU体系结构,学会利用硬件设计工具软件Quartus对程序进行仿真和调试。并熟练掌握FPGA-CPU在“TEC-CA开放式CPU实验教学系统”上的调试方法。(3) 学习设计一个包括指令系统、运算器、控制器和寄存器组等的完整的CPU。设计的CPU具有复位功能,以便使用TEC-CA实验台上的“CPU复位”按钮对CPU复位,使CPU处于调试前的初始状态
2、。CPU复位脉冲按负脉冲设计。(4) 掌握调试软件Debugcontroller的使用方法,学习编写指令系统的规则文件。二、 实验内容学习附录A TEC-CA开放式CPU实验教学系统介绍,了解实验台的组成与结构,熟悉运行环境。学习基本CPU的设计,为了配合CPU的调试,需要学习软件Debugcontroller的使用,编写指令系统的规则文件以及调试方法,调试软件Debugcontroller详细介绍见附录B。基本CPU的设计完成从指令系统到CPU的设计。这里提供3个测试程序,通过运行测试程序进行正确性评定。三、 实验步骤与现象 1Testl(EXlTXT):8位8位乘法运算第1个测试程序,初始
3、值R0=25,R1=6。相乘结果(150)存放在R2中。源代码见EXltxt。 (1)在Quartus下将cpuOsof下载到FPGA中。 (2)打开Debugcontroller,执行FileRule Open命令,打开规则文件cputxt。 (3)在Debugcontroller中,执行FileCode Open命令,打开汇编文件EXltxt。 (4)在Debugcontr01ler中,执行BuildCompile Code命令,将EXltxt编译得到目标二进制文件,显示在机器代码窗口中。 (5)在Debugcontroller中,执行BuildUpload BIN命令,将目标二进制代码写
4、入实验台上存储器中。为了检查是否正确写入,执行BuildDownload RAM命令,将存储器中代码读回(从0开始,本例中写入18个words,所以从017),以做比较。 (6)在Debugcontroller中,利用Debug菜单中的命令调试程序。注意,CPU下载一次后不必再下载,除非重启实验台!但是每次执行新程序前要按实验台上的CPU复位按钮,使FPGA-CPU复位,然后执行DebugReset命令,使Debugcontroller处于开始调试状态。实验截图:执行前:执行后:2Test2(EX2TXT):内存读写测试第2个测试程序:将320存到0x11F0x100,将161取出,存到0x0
5、20F0x0200,源代码见EX2txt。按照第1个测试程序的实验步骤,对程序进行调试,不过要注意:不需要对cpuOsol重新下载。不需要重新打开规则文件cputxt。在将测试文件EX2txt编译并下载到实验台上的存储器中后,要首先按实验台上的CPU复位按钮,使FPGA-CPU复位,然后执行 Debugcontroller中的DebugReset命令,使Debugcontroller处于开始调试状态。实验截图:执行前:执行后:3Test3(EX3TXT):冒泡排序执行前:第3个测试程序:0x00FF0x0104存储5 3 2 1 6 4,升序排序后存储在Ox01FF0x0204。参照第2个测试
6、程序的实验步骤,对程序进行调试。观察内存地址的内容。OxOOFF0x0104是5 3 2 1 6 4,0x01FF0x0204存储是1 2 3 4 5 6。执行后:四测试程序在CPU上运行的测试程序有3个,设计的CPU能够运行这些程序(或者性能相当的程序)是基本要求,指令格式自定。T1txt测试基本的ALU指令,跳转指令;T2txt测试内存读写,做数据缓存的CPU可能需要在程序后面添加若干指令,以保证缓存内的内容被写回到内存中;T3txt两者兼有。T1txt;8bit X 8bit;测试指令:置立即数,AND,条件跳转,左移,右移;MAIN: SET r0,25 ;被乘数 SET rl,6 ;
7、乘数 SET r2,0 ;结果 SET r3,8 ;循环次数L00P: SET r4,1 AND r4r1 BZ r4,T1 ;r40时往前跳转T1标号处 ADD r2,r0 ;否则加到部分积T1: SHL r0 ;逻辑左移一位 SHR r1 ;逻辑右移一位 DEC r3 ;r3减1 BNZ r3,L00PT2: B MAIN ;结束,返回重新开始T2txt;memory copy;内存读写测试MAIN: SET r0,0xff ;源地址 SET rl,0xlff ;目的地址 SET r2,32T1:MOV r3,rO ADD r3,r2 STORE r2,r3 ;r2数据,r3地址 DEC
8、r2 BNZ r2,T1 SET r2,16T2:MOV r3,rO ADD r3,r2 LOAD r4,r3 ;r4数据,r3地址 MOV r3,r1 ADD r3,r2 STORE r4,r3 ;r4数据,r3地址 DEC r2 BNZ r2,T2T3:B MAIN ;结束,返回重新开始T3txt;prime numbers between 0-64MAIN: SET r0,0x200 SET rl,64 SET r20xffffT1:STORE r2,r0 ;r2 data,r0 addr; INC rO DEC r1 BNZ r1,T1 SET r2,O SET r1,2T3:SET
9、r0,0x200 ADD rO,r1 LOAD r3,rO BZ r3,T2T4:ADD rO,r1 SET r4,0xc0 AND r4,rO BNZ r4,T2 STORE r2,r0 B T4T2:INC r1 SET r4,0xc0 AND r4,r1 BZ r4,T3 SET r2,2 SET r1,0x300T5:SET r4,0xc0 AND r4,r2 BNZ r4,FINISH SET r0,0x200 ADD rO,r2 LOAD r3,rO BZ r3,T6 STORE r2,rl INC r1T6:INC r2 FINISH:B MAIN ;结束,返回重新开始五、 实验
10、思考总结1.简述基本CPU的结构,各部件如何设计实现?2.指令译码选用组合逻辑控制器与选用微程序控制器的区别? 1、答:由于没有流水线和Cache,CPU的结构还是比较简单的。主要的部件就是算术单元ALU、控制逻辑、通用寄存器组、指令寄存器IR、地址寄存器AR、程序计数器PC、标志寄存器、节拍发生器以及一些数据选择器和译码电路。运算器方面,由一个ALU部件完成全部算数、逻辑、移位操作,输出设置了4个标志位并保存在标志寄存器内。与之相关的还有寄存器组和数据选择器。16个16位的通用寄存器既是参与运算的数据的来源,又是运算结果的暂存地,而数据选择器为AIU正确选择了两个输入数据。控制器方面,使用了
11、组合逻辑控制器。2、 答:共同点:基本功能都是提供计算机各个部件协同运行所需要的控制信号;组成部分都有程序计数器PC,指令寄存器IR;都分成几个执行步骤完成每一条指令的具体功能。不同点:主要表现在处理指令执行步骤的办法,提供控制信号的方案不一样。微程序的控制器是通过微指令地址的衔接区分指令执行步骤,应提供的控制信号从控制存储器中读出,并经过一个微指令寄存器送到被控制部件。组合逻辑控制器是用节拍发生器指明指令执行步骤,用组合逻辑电路直接给出应提供的控制信号。微程序的控制器的优点是设计与实现简单些,易用于实现系列计算机产品的控制器,理论上可实现动态微程序设计,缺点是运行速度要慢一些。组合逻辑控制器
12、的优点是运行速度明显地快,缺点是设计与实现复杂些,但随着EDA工具的成熟,该缺点已得到很大缓解。实验四 多级流水CPU设计一、 实验目的(1)设计一个包括指令系统、寻址方式、数据表示、寄存器组、存储系统、流水线结构等的CPU。设计的CPU必须具有复位功能,以便使用TEC-CA实验台上的“CPU复位”按钮对CPU复位,使CPU处于调试前的初始状态。CPU复位脉冲按负脉冲设计。(2)熟练掌握VHDL硬件描述语言,对CPU的各个功能模块进行代码编写,并学会将各个功能部分组织连接成一个完整CPU体系结构。 (3)学会利用硬件设计工具软件Quartus对程序进行仿真和调试。并熟练掌握FPGA-CPU在“
13、TEC-CA开放式CPU实验教学系统”上的调试方法。(4)加深对数据相关、结构相关的理解,了解这两类相关对CPU性能的影响。二、 流水线的工作原理流水线是现代CPU中普遍采用的一种技术,它只需要增加很少硬件就能使CPU的速度提高很多倍。流水处理技术是在重叠、先行控制(先行控制方式实际上是一种指令的预取方式和缓冲方式相结合的程序控制方式)的基础上发展起来的,包括指令控制过程和功能处理过程都可采用流水处理。三、 实验步骤与现象 (1)将实验台模式开关置为101,为单片机控制FPGA-CPU调试运行模式。 (2)将子板上的JTAG端口和PC机的并行口用下载电缆连接。用RS-232通信线将PC机的一个串口和实验台背面的串口连接,或者用USB通信线将PC机上的一个USB口和实验台右边小板上的一个B型USB口连接,二者选一。当使用RS-232通信线时,将开关SW22拨到朝下方向;当使用USB通信线时,将开关SW22拨到朝上方向。如果是第一次使用USB驱动RS-232串行通信,必须安装驱动程序。打开实验台电源。(3)打开Quartus II,如果未安装ByteBlaster II,需要先安装ByteBlaster II驱动。CPU中各信号与灯