收藏 分享(赏)

系统结构 第三、四次实验.doc

上传人:dzzj200808 文档编号:2247217 上传时间:2018-09-07 格式:DOC 页数:12 大小:4.42MB
下载 相关 举报
系统结构 第三、四次实验.doc_第1页
第1页 / 共12页
系统结构 第三、四次实验.doc_第2页
第2页 / 共12页
系统结构 第三、四次实验.doc_第3页
第3页 / 共12页
系统结构 第三、四次实验.doc_第4页
第4页 / 共12页
系统结构 第三、四次实验.doc_第5页
第5页 / 共12页
点击查看更多>>
资源描述

1、实验三 环境熟悉与基本 CPU 设计一、 实验目的(1) 熟悉实验台运行环境与调试方法,掌握基本 CPU 的设计,为自行设计多级流水 CPU 打好基础。(2) 熟练掌握 HDL 硬件描述语言,对 CPU 的各个功能模块进行代码编写,并学会将各个功能部分组织连接成一个完整 CPU 体系结构,学会利用硬件设计工具软件 Quartus对程序进行仿真和调试。并熟练掌握 FPGA-CPU 在“TEC-CA开放式 CPU 实验教学系统”上的调试方法。(3) 学习设计一个包括指令系统、运算器、控制器和寄存器组等的完整的CPU。设计的 CPU 具有复位功能,以便使用 TEC-CA 实验台上的“CPU 复位”按

2、钮对 CPU 复位,使 CPU 处于调试前的初始状态。CPU 复位脉冲按负脉冲设计。(4) 掌握调试软件 Debugcontroller 的使用方法,学习编写指令系统的规则文件。二、 实验内容学习附录 A TEC-CA 开放式 CPU 实验教学系统介绍,了解实验台的组成与结构,熟悉运行环境。学习基本 CPU 的设计,为了配合 CPU 的调试,需要学习软件 Debugcontroller 的使用,编写指令系统的规则文件以及调试方法,调试软件 Debugcontroller 详细介绍见附录 B。基本 CPU 的设计完成从指令系统到 CPU 的设计。这里提供 3 个测试程序,通过运行测试程序进行正确

3、性评定。三、 实验步骤与现象1Testl(EXlTXT):8 位8 位乘法运算第 1 个测试程序,初始值 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 编译得到目标

4、二进制文件,显示在机器代码窗口中。(5)在 Debugcontroller 中,执行 BuildUpload BIN 命令,将目标二进制代码写入实验台上存储器中。为了检查是否正确写入,执行BuildDownload RAM 命令,将存储器中代码读回(从 0 开始,本例中写入 18个 words,所以从 017),以做比较。(6)在 Debugcontroller 中,利用 Debug 菜单中的命令调试程序。注意,CPU 下载一次后不必再下载,除非重启实验台!但是每次执行新程序前要按实验台上的 CPU 复位按钮,使 FPGA-CPU 复位,然后执行 DebugReset命令,使 Debugcon

5、troller 处于开始调试状态。实验截图:执行前:执行后:2Test2(EX2TXT):内存读写测试第 2 个测试程序:将 320 存到 0x11F0x100,将 161 取出,存到0x020F0x0200,源代码见 EX2txt。按照第 1 个测试程序的实验步骤,对程序进行调试,不过要注意:不需要对 cpuOsol 重新下载。不需要重新打开规则文件 cputxt。在将测试文件 EX2txt 编译并下载到实验台上的存储器中后,要首先按实验台上的 CPU复位按钮,使 FPGA-CPU 复位,然后执行 Debugcontroller 中的 DebugReset命令,使 Debugcontroll

6、er 处于开始调试状态。实验截图:执行前:执行后:3Test3(EX3TXT):冒泡排序执行前:第 3 个测试程序:0x00FF0x0104 存储 5 3 2 1 6 4,升序排序后存储在Ox01FF0x0204。参照第 2 个测试程序的实验步骤,对程序进行调试。观察内存地址的内容。OxOOFF0x0104 是 5 3 2 1 6 4,0x01FF0x0204 存储是 1 2 3 4 5 6。执行后:四测试程序在 CPU 上运行的测试程序有 3 个,设计的 CPU 能够运行这些程序(或者性能相当的程序)是基本要求,指令格式自定。T1txt 测试基本的 ALU 指令,跳转指令;T2txt 测试内

7、存读写,做数据缓存的 CPU 可能需要在程序后面添加若干指令,以保证缓存内的内容被写回到内存中;T3txt 两者兼有。T1txt;8bit X 8bit;测试指令:置立即数,AND,条件跳转,左移,右移;MAIN: SET r0,25 ;被乘数SET rl,6 ;乘数SET r2,0 ;结果SET r3,8 ;循环次数L00P: SET r4,1AND r4r1BZ r4,T1 ;r40 时往前跳转 T1 标号处ADD r2,r0 ;否则加到部分积T1: SHL r0 ;逻辑左移一位SHR r1 ;逻辑右移一位DEC r3 ;r3 减 1BNZ r3,L00PT2: B MAIN ;结束,返回

8、重新开始T2txt;memory copy;内存读写测试MAIN:SET r0,0xff ;源地址SET rl,0xlff ;目的地址SET r2,32T1:MOV r3,rOADD r3,r2STORE r2,r3 ;r2 数据,r3 地址DEC r2BNZ r2,T1SET r2,16T2:MOV r3,rOADD r3,r2LOAD r4,r3 ;r4 数据,r3 地址MOV r3,r1ADD r3,r2STORE r4,r3 ;r4 数据,r3 地址DEC r2BNZ r2,T2T3:B MAIN ;结束,返回重新开始T3txt;prime numbers between 0-64MA

9、IN:SET r0,0x200SET rl,64SET r20xffffT1:STORE r2,r0 ;r2 data,r0 addr;INC rODEC r1BNZ r1,T1SET r2,OSET r1,2T3:SET r0,0x200ADD rO,r1LOAD r3,rOBZ r3,T2T4:ADD rO,r1SET r4,0xc0AND r4,rOBNZ r4,T2STORE r2,r0B T4T2:INC r1SET r4,0xc0AND r4,r1BZ r4,T3SET r2,2SET r1,0x300T5:SET r4,0xc0AND r4,r2BNZ r4,FINISHSET

10、r0,0x200ADD rO,r2LOAD r3,rOBZ r3,T6STORE r2,rlINC r1T6:INC r2FINISH:B MAIN ;结束,返回重新开始五、 实验思考总结1.简述基本 CPU 的结构,各部件如何设计实现?2.指令译码选用组合逻辑控制器与选用微程序控制器的区别? 1、答:由于没有流水线和 Cache,CPU 的结构还是比较简单的。主要的部件就是算术单元 ALU、控制逻辑、通用寄存器组、指令寄存器 IR、地址寄存器 AR、程序计数器 PC、标志寄存器、节拍发生器以及一些数据选择器和译码电路。运算器方面,由一个 ALU 部件完成全部算数、逻辑、移位操作,输出设置了

11、4 个标志位并保存在标志寄存器内。与之相关的还有寄存器组和数据选择器。16 个 16位的通用寄存器既是参与运算的数据的来源,又是运算结果的暂存地,而数据选择器为 AIU 正确选择了两个输入数据。控制器方面,使用了组合逻辑控制器。2、答:共同点:基本功能都是提供计算机各个部件协同运行所需要的控制信号;组成部分都有程序计数器 PC,指令寄存器 IR;都分成几个执行步骤完成每一条指令的具体功能。不同点:主要表现在处理指令执行步骤的办法,提供控制信号的方案不一样。微程序的控制器是通过微指令地址的衔接区分指令执行步骤,应提供的控制信号从控制存储器中读出,并经过一个微指令寄存器送到被控制部件。组合逻辑控制

12、器是用节拍发生器指明指令执行步骤,用组合逻辑电路直接给出应提供的控制信号。微程序的控制器的优点是设计与实现简单些,易用于实现系列计算机产品的控制器,理论上可实现动态微程序设计,缺点是运行速度要慢一些。组合逻辑控制器的优点是运行速度明显地快,缺点是设计与实现复杂些,但随着 EDA 工具的成熟,该缺点已得到很大缓解。实验四 多级流水 CPU 设计一、 实验目的(1)设计一个包括指令系统、寻址方式、数据表示、寄存器组、存储系统、流水线结构等的 CPU。设计的 CPU 必须具有复位功能,以便使用 TEC-CA 实验台上的“CPU 复位”按钮对 CPU 复位,使 CPU 处于调试前的初始状态。CPU 复

13、位脉冲按负脉冲设计。(2)熟练掌握 VHDL 硬件描述语言,对 CPU 的各个功能模块进行代码编写,并学会将各个功能部分组织连接成一个完整 CPU 体系结构。 (3)学会利用硬件设计工具软件 Quartus对程序进行仿真和调试。并熟练掌握 FPGA-CPU 在“TEC-CA 开放式 CPU 实验教学系统”上的调试方法。(4)加深对数据相关、结构相关的理解,了解这两类相关对 CPU 性能的影响。二、 流水线的工作原理流水线是现代 CPU 中普遍采用的一种技术,它只需要增加很少硬件就能使CPU 的速度提高很多倍。流水处理技术是在重叠、先行控制(先行控制方式实际上是一种指令的预取方式和缓冲方式相结合

14、的程序控制方式)的基础上发展起来的,包括指令控制过程和功能处理过程都可采用流水处理。三、 实验步骤与现象(1)将实验台模式开关置为 101,为单片机控制 FPGA-CPU 调试运行模式。(2)将子板上的 JTAG 端口和 PC 机的并行口用下载电缆连接。用 RS-232 通信线将 PC 机的一个串口和实验台背面的串口连接,或者用 USB 通信线将 PC 机上的一个 USB 口和实验台右边小板上的一个 B 型 USB 口连接,二者选一。当使用 RS-232 通信线时,将开关 SW22 拨到朝下方向;当使用 USB 通信线时,将开关 SW22 拨到朝上方向。如果是第一次使用 USB 驱动 RS-2

15、32 串行通信,必须安装驱动程序。打开实验台电源。(3)打开 Quartus II,如果未安装 ByteBlaster II,需要先安装ByteBlaster II 驱动。CPU 中各信号与灯的对应关系如下: 内存地址线对应灯 A15A0。 C、Z、V、S 对应 ALU 的状态标志。 内存数据线对应 D15D0。1Testl(Exltxt):8 位8 位乘法运算第 1 个测试程序,初始值 R0=25,R1=6,运算结果(150)存放在 R2 中。源代码见 EXltxt。(1)将实验台模式开关置为 101,为单片机控制 FPGA-CPU 调试运行模式。(2)在 Quartus 1I 下将 cpu

16、entitysol 下载到 FPGA 中。(3)打开 Debugcontroller,执行 File Rule Open 命令,打开规则文件cpu.txt。(4)在 Debugcontroller 中,执行 FileCode Open 命令,打开汇编文件EXl.txt。(5)在 Debugcontroller 中,执行 BuildCompile Code 命令,将EXl.txt 编译得到目标二进制文件,显示在机器代码窗口中。(6)在 Debugcontr011er 中,执行 BuildUpload BIN 命令,将目标二进制代码写入实验台上存储器中。为了检查是否正确写入,执行BuildDown

17、load RAM 命令,将存储器中的代码读回(从 0 开始,本例中写入 23个 words,所以从 022),以做比较。(7)在 Debugcontroller 中,利用 Debug 菜单中的命令调试程序。实验截图:2Test2(Ex2TXT):内存读写测试第 2 个测试程序:将 321 存到 OxllF0x100,将 161 取出,存到0x020F0x0200,源代码见 EX2.txt。按照第 1 个测试程序的实验步骤,对程序进行调试,不过要注意:不需要对 cpuentity.sof 重新下载。不需要重新打开规则文件 cpu.txt。在将测试文件 EX2.txt 编译并下载到实验台上的存储器

18、中后,要首先按实验台上的CPU 复位按钮,使 FPGA-CPU 复位,然后执行 Debugcontroller 中的DebugReset 命令,使 Debugcontroller 处于开始调试状态。最后结果是 Ox11FOxl00 的内容是 32l,0x020F0x0200 的内容是 161。实验截图:3Test3(EX3TXT):求质数第 3 个测试程序:求出 164 之间的质数,存储到 0x3000x311。参照第 1 个测试程序的实验步骤对程序进行调试。最后的实验结果是 164 之间求出的质数存储在 Ox0300Ox0311。五、 实验总结思考1并简述多级流水 CPU 设计思想,你有何看

19、法?答:计算机的流水技术它从系统结构上考虑使计算机在运行时各个“工序“都不能闲着,每时刻都要在进行处理。 这就是引入的并行处理能力。流水控制方式就是一种非常经济有效的方法。在流水技术中有如下一些特点: 1)一条流水线由多个流水段组成(多段) ;2)每个流水段有专门的功能部件对指令进行某种加工(专件);3)各流水段所需时间是一样的(同时);4)流水线工作阶段可分为建立、满载和排空三个阶段(在阶段);5)在理想情况下,当流水线充满后,每隔t 时间将会有一个结果流出流水线。2. 该流水线相关专用通路处理策略是怎样?如何实现的?答:结构相关的处理:由于设计中不包含缓存,因此会有取指和访存的冲突,即结构

20、相关。 当冲突发生时,必须先“访存” ,将“取指”延后一个时钟周期,这样才能保证指令的正确执行。处理结构相关需要做两项工作:在 MEM 段进行冲突检测,确认是否有 LOAD、STORE 操作。取指延后。每次取指时,若有冲突,则往 IR 中写入空指令(NOP),并保持 PC 不变,使取指延后一个节拍。数据相关的处理:首先,我们将数据相关简化处理。若前一条指令是 LOAD 指令,而后一条指令和其他数据相关,要用到 LOAD 给出的数据,这时 LOAD 指令尚未给出数据。针对这种情况,在 LOAD 指令译码时,后面自动加一条空指令,即增加冗余,就可以避免上述情况的出现。控制相关:除 JR 外,JRZ

21、 等条件跳转需要根据当前状态位来决定是否跳转,而当前状态位是由前面最近的会影响状态位的指令(如算术指令)决定。常规的也是比较简单的做法是在碰到 JRX 之类的跳转指令时,延迟后边流水线的进入。但通过分析发现,可以通过旁路处理把控制相关转为数据相关来处理。这样处理,不必延迟,可以提高流水线的性能。按这种方式解决控制相关需要做两项工作:通过旁路,提供状态寄存器的值和临时状态位的值,为判断是否跳转作准备;选择 PC 机的更新时间,将 PC 机的更新放在时钟的下降沿。3. ALU 输入多路选择器,选通条件是什么?答:访存,译码完成后实验总结:通过本次实验的学习,我了解了多级流水 CPU 设计实现的原理及方法;了解了如何设计一个包括指令系统、寻址方式、数据表示、寄存器组、存储系统、流水线结构等的 CPU。学会了利用硬件设计工具软件 Quartus对程序进行仿真和调试。并熟练掌握 FPGA-CPU 在“TEC-CA 开放式 CPU 实验教学系统”上的调试方法。通过已有代码的运行与调试,我再次复习了多级流水 CPU 设计的原理及思想,收获很多!

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 大学课件

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报