系统结构 第三四次实验.docx
- 文档编号:30014591
- 上传时间:2023-08-04
- 格式:DOCX
- 页数:17
- 大小:2.89MB
系统结构 第三四次实验.docx
《系统结构 第三四次实验.docx》由会员分享,可在线阅读,更多相关《系统结构 第三四次实验.docx(17页珍藏版)》请在冰豆网上搜索。
系统结构第三四次实验
实验三环境熟悉与基本CPU设计
一、实验目的
(1)熟悉实验台运行环境与调试方法,掌握基本CPU的设计,为自行设计多级流水CPU打好基础。
(2)熟练掌握HDL硬件描述语言,对CPU的各个功能模块进行代码编写,并学会将各个功能部分组织连接成一个完整CPU体系结构,学会利用硬件设计工具软件QuartusⅡ对程序进行仿真和调试。
并熟练掌握FPGA-CPU在“TEC-CA开放式CPU实验教学系统”上的调试方法。
(3)学习设计一个包括指令系统、运算器、控制器和寄存器组等的完整的CPU。
设计的CPU具有复位功能,以便使用TEC-CA实验台上的“CPU复位”按钮对CPU复位,使CPU处于调试前的初始状态。
CPU复位脉冲按负脉冲设计。
Forpersonaluseonlyinstudyandresearch;notforcommercialuse
(4)掌握调试软件Debugcontroller的使用方法,学习编写指令系统的规则文件。
二、实验内容
学习附录ATEC-CA开放式CPU实验教学系统介绍,了解实验台的组成与结构,熟悉运行环境。
学习基本CPU的设计,为了配合CPU的调试,需要学习软件Debugcontroller的使用,编写指令系统的规则文件以及调试方法,调试软件Debugcontroller详细介绍见附录B。
Forpersonaluseonlyinstudyandresearch;notforcommercialuse
基本CPU的设计完成从指令系统到CPU的设计。
这里提供3个测试程序,通过运行测试程序进行正确性评定。
三、实验步骤与现象
1.Testl(EXl.TXT):
8位×8位乘法运算
Forpersonaluseonlyinstudyandresearch;notforcommercialuse
第1个测试程序,初始值R0=25,R1=6。
相乘结果(150)存放在R2中。
源代码见EXl.txt。
(1)在QuartusⅡ下将cpuO.sof下载到FPGA中。
(2)打开Debugcontroller,执行File→RuleOpen命令,打开规则文件cpu.txt。
(3)在Debugcontroller中,执行File→CodeOpen命令,打开汇编文件EXl.txt。
(4)在Debugcontr01ler中,执行Build→CompileCode命令,将EXl.txt编译得到目标二进制文件,显示在机器代码窗口中。
(5)在Debugcontroller中,执行Build→UploadBIN命令,将目标二进制代码写入实验台上存储器中。
为了检查是否正确写入,执行Build→DownloadRAM命令,将存储器中代码读回(从0开始,本例中写入18个words,所以从0~17),以做比较。
(6)在Debugcontroller中,利用Debug菜单中的命令调试程序。
注意,CPU下载一次后不必再下载,除非重启实验台!
但是每次执行新程序前要按实验台上的CPU复位按钮,使FPGA-CPU复位,然后执行Debug→Reset命令,使Debugcontroller处于开始调试状态。
实验截图:
执行前:
执行后:
2.Test2(EX2.TXT):
内存读写测试
第2个测试程序:
将32~0存到0x11F~0x100,将16~1取出,存到0x020F~0x0200,源代码见EX2.txt。
按照第1个测试程序的实验步骤,对程序进行调试,不过要注意:
①不需要对cpuO.sol重新下载。
②不需要重新打开规则文件cpu.txt。
③在将测试文件EX2.txt编译并下载到实验台上的存储器中后,要首先按实验台上的CPU复位按钮,使FPGA-CPU复位,然后执行Debugcontroller中的Debug→Reset命令,使Debugcontroller处于开始调试状态。
实验截图:
执行前:
执行后:
3.Test3(EX3.TXT):
冒泡排序
执行前:
第3个测试程序:
0x00FF~0x0104存储532164,升序排序后存储在Ox01FF~0x0204。
参照第2个测试程序的实验步骤,对程序进行调试。
观察内存地址的内容。
OxOOFF~0x0104是532164,0x01FF~0x0204存储是123456。
执行后:
四.测试程序
在CPU上运行的测试程序有3个,设计的CPU能够运行这些程序(或者性能相当的程序)是基本要求,指令格式自定。
T1.txt测试基本的ALU指令,跳转指令;
T2.txt测试内存读写,做数据缓存的CPU可能需要在程序后面添加若干指令,以保证缓存内的内容被写回到内存中;
T3.txt两者兼有。
T1.txt
;8bitX8bit
;
;测试指令:
置立即数,AND,条件跳转,左移,右移
;
MAIN:
SETr0,25;被乘数
SETrl,6;乘数
SETr2,0;结果
SETr3,8;循环次数
L00P:
SETr4,1
ANDr4.r1
BZr4,T1;r4—0时往前跳转T1标号处
ADDr2,r0;否则加到部分积
T1:
SHLr0;逻辑左移一位
SHRr1;逻辑右移一位
DECr3;r3减1
BNZr3,L00P
T2:
BMAIN;结束,返回重新开始
T2.txt
;memorycopy
;内存读写测试
MAIN:
SETr0,0xff;源地址
SETrl,0xlff;目的地址
SETr2,32
T1:
MOVr3,rO
ADDr3,r2
STOREr2,r3;r2数据,r3地址
DECr2
BNZr2,T1
SETr2,16
T2:
MOVr3,rO
ADDr3,r2
LOADr4,r3;r4数据,r3地址
MOVr3,r1
ADDr3,r2
STOREr4,r3;r4数据,r3地址
DECr2
BNZr2,T2
T3:
BMAIN;结束,返回重新开始
T3.txt
;primenumbersbetween0-64
MAIN:
SETr0,0x200
SETrl,64
SETr2.0xffff
T1:
STOREr2,r0;r2data,r0addr;
INCrO
DECr1
BNZr1,T1
SETr2,O
SETr1,2
T3:
SETr0,0x200
ADDrO,r1
LOADr3,rO
BZr3,T2
T4:
ADDrO,r1
SETr4,0xc0
ANDr4,rO
BNZr4,T2
STOREr2,r0
BT4
T2:
INCr1
SETr4,0xc0
ANDr4,r1
BZr4,T3
SETr2,2
SETr1,0x300
T5:
SETr4,0xc0
ANDr4,r2
BNZr4,FINISH
SETr0,0x200
ADDrO,r2
LOADr3,rO
BZr3,T6
STOREr2,rl
INCr1
T6:
INCr2
FINISH:
BMAIN;结束,返回重新开始
五、实验思考总结
1.简述基本CPU的结构,各部件如何设计实现?
2.指令译码选用组合逻辑控制器与选用微程序控制器的区别?
1、答:
由于没有流水线和Cache,CPU的结构还是比较简单的。
主要的部件就是算术单元ALU、控制逻辑、通用寄存器组、指令寄存器IR、地址寄存器AR、程序计数器PC、标志寄存器、节拍发生器以及一些数据选择器和译码电路。
运算器方面,由一个ALU部件完成全部算数、逻辑、移位操作,输出设置了4个标志位并保存在标志寄存器内。
与之相关的还有寄存器组和数据选择器。
16个16位的通用寄存器既是参与运算的数据的来源,又是运算结果的暂存地,而数据选择器为AIU正确选择了两个输入数据。
控制器方面,使用了组合逻辑控制器。
2、答:
共同点:
①基本功能都是提供计算机各个部件协同运行所需要的控制信号;②组成部分都有程序计数器PC,指令寄存器IR;③都分成几个执行步骤完成每一条指令的具体功能。
不同点:
主要表现在处理指令执行步骤的办法,提供控制信号的方案不一样。
微程序的控制器是通过微指令地址的衔接区分指令执行步骤,应提供的控制信号从控制存储器中读出,并经过一个微指令寄存器送到被控制部件。
组合逻辑控制器是用节拍发生器指明指令执行步骤,用组合逻辑电路直接给出应提供的控制信号。
微程序的控制器的优点是设计与实现简单些,易用于实现系列计算机产品的控制器,理论上可实现动态微程序设计,缺点是运行速度要慢一些。
组合逻辑控制器的优点是运行速度明显地快,缺点是设计与实现复杂些,但随着EDA工具的成熟,该缺点已得到很大缓解。
实验四多级流水CPU设计
一、实验目的
(1)设计一个包括指令系统、寻址方式、数据表示、寄存器组、存储系统、流水线结构等的CPU。
设计的CPU必须具有复位功能,以便使用TEC-CA实验台上的“CPU复位”按钮对CPU复位,使CPU处于调试前的初始状态。
CPU复位脉冲按负脉冲设计。
(2)熟练掌握VHDL硬件描述语言,对CPU的各个功能模块进行代码编写,并学会将各个功能部分组织连接成一个完整CPU体系结构。
(3)学会利用硬件设计工具软件QuartusⅡ对程序进行仿真和调试。
并熟练掌握FPGA-CPU在“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)打开QuartusII,如果未安装ByteBlasterII,需要先安装ByteBlasterII驱动。
CPU中各信号与灯的对应关系如下:
●内存地址线对应灯A15~A0。
●C、Z、V、S对应ALU的状态标志。
●内存数据线对应D15~D0。
1.Testl(Exl.txt):
8位×8位乘法运算
第1个测试程序,初始值R0=25,R1=6,运算结果(150)存放在R2中。
源代码见EXl.txt。
(1)将实验台模式开关置为101,为单片机控制FPGA-CPU调试运行模式。
(2)在Quartus1I下将cpuentity.sol下载到FPGA中。
(3)打开Debugcontroller,执行FileRuleOpen命令,打开规则文件cpu.txt。
(4)在Debugcontroller中,执行File→CodeOpen命令,打开汇编文件EXl.txt。
(5)在Debugcontroller中,执行Build→CompileCode命令,将EXl.txt编译得到目标二进制文件,显示在机器代码窗口中。
(6)在Debugcontr011er中,执行Build→UploadBIN命令,将目标二进制代码写入实验台上存储器中。
为了检查是否正确写入,执行Build→DownloadRAM命令,将存储器中的代码读回(从0开始,本例中写入23个words,所以从0~22),以做比较。
(7)在Debugcontroller中,利用Debug菜单中的命令调试程序。
实验截图:
2.Test2(Ex2.TXT):
内存读写测试
第2个测试程序:
将32~1存到OxllF~0x100,将16~1取出,存到0x020F~0x0200,源代码见EX2.txt。
按照第1个测试程序的实验步骤,对程序进行调试,不过要注意:
①不需要对cpuentity.sof重新下载。
②不需要重新打开规则文件cpu.txt。
③在将测试文件EX2.txt编译并下载到实验台上的存储器中后,要首先按实验台上的CPU复位按钮,使FPGA-CPU复位,然后执行Debugcontroller中的Debug→Reset命令,使Debugcontroller处于开始调试状态。
最后结果是Ox11F~Oxl00的内容是32~l,0x020F~0x0200的内容是16~1。
实验截图:
3.Test3(EX3.TXT):
求质数
第3个测试程序:
求出1~64之间的质数,存储到0x300~0x311。
参照第1个测试程序的实验步骤对程序进行调试。
最后的实验结果是1~64之间求出的质数存储在Ox0300~Ox0311。
五、实验总结思考
1.并简述多级流水CPU设计思想,你有何看法?
答:
计算机的流水技术它从系统结构上考虑使计算机在运行时各个"工序"都不能闲着,每时刻都要在进行处理。
这就是引入的并行处理能力。
流水控制方式就是一种非常经济有效的方法。
在流水技术中有如下一些特点:
1)一条流水线由多个流水段组成(多段);2)每个流水段有专门的功能部件对指令进行某种加工(专件);3)各流水段所需时间是一样的(同时);4)流水线工作阶段可分为建立、满载和排空三个阶段(在阶段);5)在理想情况下,当流水线充满后,每隔Δt时间将会有一个结果流出流水线。
2.该流水线相关专用通路处理策略是怎样?
如何实现的?
答:
结构相关的处理:
由于设计中不包含缓存,因此会有取指和访存的冲突,即结构相关。
当冲突发生时,必须先“访存”,将“取指”延后一个时钟周期,这样才能保证指令的正确执行。
处理结构相关需要做两项工作:
①在MEM段进行冲突检测,确认是否有LOAD、STORE操作。
②取指延后。
每次取指时,若有冲突,则往IR中写入空指令(NOP),并保持PC不变,使取指延后一个节拍。
数据相关的处理:
首先,我们将数据相关简化处理。
若前一条指令是LOAD指令,而后一条指令和其他数据相关,要用到LOAD给出的数据,这时LOAD指令尚未给出数据。
针对这种情况,在LOAD指令译码时,后面自动加一条空指令,即增加冗余,就可以避免上述情况的出现。
控制相关:
除JR外,JRZ等条件跳转需要根据当前状态位来决定是否跳转,而当前状态位是由前面最近的会影响状态位的指令(如算术指令)决定。
常规的也是比较简单的做法是在碰到JRX之类的跳转指令时,延迟后边流水线的进入。
但通过分析发现,可以通过旁路处理把控制相关转为数据相关来处理。
这样处理,不必延迟,可以提高流水线的性能。
按这种方式解决控制相关需要做两项工作:
①通过旁路,提供状态寄存器的值和临时状态位的值,为判断是否跳转作准备;选择PC机的更新时间,将PC机的更新放在时钟的下降沿。
3.ALU输入多路选择器,选通条件是什么?
答:
访存,译码完成后
实验总结:
通过本次实验的学习,我了解了多级流水CPU设计实现的原理及方法;了解了如何设计一个包括指令系统、寻址方式、数据表示、寄存器组、存储系统、流水线结构等的CPU。
学会了利用硬件设计工具软件QuartusⅡ对程序进行仿真和调试。
并熟练掌握FPGA-CPU在“TEC-CA开放式CPU实验教学系统”上的调试方法。
通过已有代码的运行与调试,我再次复习了多级流水CPU设计的原理及思想,收获很多!
仅供个人用于学习、研究;不得用于商业用途。
Forpersonaluseonlyinstudyandresearch;notforcommercialuse.
NurfürdenpersönlichenfürStudien,Forschung,zukommerziellenZweckenverwendetwerden.
Pourl'étudeetlarechercheuniquementàdesfinspersonnelles;pasàdesfinscommerciales.
толькодлялюдей,которыеиспользуютсядляобучения,исследованийинедолжныиспользоватьсявкоммерческихцелях.
以下无正文
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 系统结构 第三四次实验 系统 结构 第三 四次 实验