计算机组成原理课程设计报告(7).doc

上传人:土8路 文档编号:10001077 上传时间:2021-04-09 格式:DOC 页数:23 大小:1.56MB
返回 下载 相关 举报
计算机组成原理课程设计报告(7).doc_第1页
第1页 / 共23页
计算机组成原理课程设计报告(7).doc_第2页
第2页 / 共23页
计算机组成原理课程设计报告(7).doc_第3页
第3页 / 共23页
计算机组成原理课程设计报告(7).doc_第4页
第4页 / 共23页
计算机组成原理课程设计报告(7).doc_第5页
第5页 / 共23页
点击查看更多>>
资源描述

《计算机组成原理课程设计报告(7).doc》由会员分享,可在线阅读,更多相关《计算机组成原理课程设计报告(7).doc(23页珍藏版)》请在三一文库上搜索。

1、计算机组成与系统结构课程设计目录一、设计目的3二、设计要求3三、 设计3 指令系统4 指令执行流程4 微操作控制信号及其实现方法4 设计微指令格式,微指令由32位组成,设计出每位微操作的定义4 确定微程序控制方式4四、组装与调试51实验计算机的组装5(1)时钟和允许信号的VHDL程序设计5(2)功能部件的VHDL程序设计6(3)VHDL产生电路下载文件8(4)下载目标程序bit文件到实验芯片中142.实验计算机调试17(1)编辑和编译汇编语言源程序,产生目标文件17(2)硬件电路和软件程序连机调式19五、实验编程及调试22六、结果及分析23七、收获、体会及建议23一、设计目的1主要掌握微程序控

2、制结构计算机的设计方法,通过对机器指令和相对应微程序的设计,加深对微程序控制器的理解,加深对微程序设计特点的了解,加深对计算机各部件的理解以及对整机结构的理解。2掌握几种寻址方式的控制执行过程。3了解多累加器计算机的特点。4熟悉VHDL语言的编程。二、设计要求1运算器采用单累加器多寄存器结构2指令系统:16条以上指令,有I/O指令,外部设备统一编址。3内存寻址范围1K以上字节寻址方式: 寄存器直接寻址 寄存器间接寻址 直接寻址 立即数寻址4可执行从键盘上输入的十进制两位数与两位数加法程序并打印输入的数据及结果或实现两数相加通过数码管显示结果。三、 设计1首先设计整机逻辑框图,并分析各主要部件中

3、所使用的关键器件,彻底理解主要芯片的工作原理。根据设计要求,对实验仪硬件模块进行逻辑剪辑组合,便可设计出该实验计算机的整机逻辑框图。为利于调试,应在逻辑框图上表明各器件的控制信号及必要的输出信号。2指令系统和指令执行流程设计 指令系统需确定实验计算机的指令系统具体由哪里指令组成,包括哪几种类型指令,指令操作数有哪几种寻址方式,以及指令编码等。 指令执行流程应根据实验计算机整机逻辑图来设计指令系统中每条指令的执行流程。 一条指令从内存取出到执行完,需要若干个机器周期(节拍)。任何指令的第一个机器周期都是“取指令周期”,或称为公操作周期。而一条指令共需几个机器周期取决于指令在机内实现的复杂程度。3

4、微操作控制信号和微程序设计 微操作控制信号及其实现方法综合实验计算机指令系统各指令执行流程中所涉及到的微操作控制信号,统计总共需要多少个微控制信号,每个信号的有效性,决定这些信号中哪些由软件(微指令)直接产生,哪些需用硬件实现。 设计微指令格式,微指令由32位组成,设计出每位微操作的定义。 确定微程序控制方式设计任务包括设计各微程序入口地址的形成方法和控存的顺序控制(即下地址形成)方法。 编写各指令的微程序根据指令流程和微指令格式仔细地逐条填写微指令各码位。为减少填写错误,可边把本条微指令用到的微码(微操作控制信号)按预定的有效性填入,检查无误后,再对本条微指令用不到的微码(微操作控制信号)填

5、入与预定的有效性相反的代码,核对无误后,最后将这32位微码缩写成8位十六进制微指令。4设计接线表要仔细设计接线表,因为它是组装计算机的依据。 为了避免遗漏,应按模块逐个归纳整理,明确各模块中器件各控制信号的处理方法。 对于模块中不用的器件,也应有所处理。四、组装与调试 1实验计算机的组装 利用FPGA板进行组装计算机,不是用常规的连线方式实现,而是用超大规模集成块XC2S150-PQ208编程来实现。首先要熟悉用可编程逻辑器件设计语言VHDL简单编程,然后根据所设计的连线图编程,包括XC2S150-PQ208各引脚的定义,连线方程等,并编译生成熔丝图文件,下载到XC2S150-PQ208中。

6、(1)时钟和允许信号的VHDL程序设计 时钟信号 寄存器的时钟信号应接1/2时钟(MCLK),它们均应为后沿有效,即各个寄存器的MCLK的下降沿接收数据。微程序计数器应在MPCK的上升沿接数或加1,微指令寄存器应在MICK的上千沿接收数据(微指令码)。MCLK和MPCK、MICK由输入时钟CLK来产生。 复位信号本实验计算机的复位信号有两个:PC的复位控制输入PRST和MPC的复位控制输入MCLR。PRST可接实验仪的复位输出RESET; 对于读、写存储器的信号,一般应加入时钟控制。对于实验计算机,微指令中的读、写微操作信号均为0有效,应加入以下控制:(2)功能部件的VHDL程序设计写出8位微

7、程序控制计算机CPU的VHDL程序。寄存器R例如:对寄存器R0可如下定义:pRi:process(WRC,WRE,RS)beginif WRC event and WRC=0 thenif WRE=0 thencase RS iswhen 000 = R0 R1 R2 R3 R4 R5 R6 R7=DBL;end case;end if;end if;end process pRi;对寄存器输出,可如下定义:ROUTFFFFFFFFFFFF=00000000;end case;程序计数器PCpPC:process(PCK,PRST,PLDR)beginif(PRST=0)then PC=000

8、0000000000000;elsif(PCK event and PCK=0)thenif(PLDR=1) then PC=AB;elsif(PINC=0) then PC=PC+1;end if;end if;end process pPC; 上式中,PLDR为转移信号,在发生转移时,它等于1。PLDR可使用一个多开关实现。它的输入接各个条件转移信号(必转时为0,非转移指令时为0)它的控制接微指令寄存器的PLD2-PLD0。微程序计数器MPCpMPC:process(MPLD,MPCK,MCLR)beginif(MCLR=0)then MPC=0000000000;elsif (MPCK

9、event and MPCK=1)thenif (MPLD=0)then MPC=MD;else MPC=MPC+1;end if;end if;end process pMPC;CI(9 downto 0)=MPC;微指令寄存器MIRpMIR:process(MICK)beginif(MICKevent and MICK=1)thenMIR=CO;end if;end process pMIR;如果指令码为IR73,则微程序计数器入口MD可如下定义(如每条指令最多8拍微指令):MD(0)=1;MD(1)=1;MD(2)=1;MD(7 downto 3)=IR(7 downto 3);MD(9

10、 downto 8) New Project弹出的New Project窗口,在右上角的Project的框中填入工程所在的路径,在左上角的Project Name的框中填入工程名,下方的Top-Level Module Type框中填入HDL,下一步如图设定参数;下一步新建所需的源文件,按New Source按钮选择VHDL Module,下一步加入已经存在的VHDL或UCF引脚分配文件文件添加完毕后,如图所示:完成工程的创建。参数修改Edit - Preferences在Preferences中,选择Processes,将Property Display 的值定为Advanced,确定。单击

11、VHDL 文件,在Processes for Source窗口中,右键单击 Synthesize XST 选择 Properties将Xilinx Specific Options 选项中的Number of Clock Buffers 的值设定为“0”或者“1”;进行VHDL的编写VHDL程序编写完以后,双击Generate Programming File后进行编译生成.bit文件如果编译一切顺利,就能生成目标程序bit文件。(4)下载目标程序bit文件到实验芯片中具体软件调试过程如下:点击impact出现如下对话框,选择Configure Devices,点击下一步然后选择下载方式,生成

12、bit文件时若设定成JTAG Clock方式就选BoundaryScan Mode,如是CCLK就选Slave Serial Mode,点击完成后选择要下载的bit文件。右击生成的cpu图标,执行Programming操作,进行下载。下载成功后提示Programming Succeeded,下载完成。2.实验计算机调试 将所设计机器指令对应的微程序装入到控制存储器中,还要将调试程序(汇编程序)装入到内部存储器中,并观看实验结果。此次课程设计主要实现的功能是:用A的内容减去R0的内容,如果有借位将结果存0020H,否则将结果存0021H。 (1)编辑和编译汇编语言源程序,产生目标文件 根据已有的

13、软件“自己做汇编v1.0”将 指令定义文件.def检查载入,并将汇编语言编写的应用源程序进行编辑编译,汇编成功后生成.s文件和.lst文件。指令定义文件.def-MOVA,#data800110000dddddddd-MOVRi,#data800111iiidddddddd-SUBA,Ri00101iii-JCaddr01010000aaaaaaaaaaaaaaaa-STAaddr01001000aaaaaaaaaaaaaaaa-JMPaddr01011000aaaaaaaaaaaaaaaa 汇编语言编写的应用源程序.ASM ORG 0MOV A,#12HMOV R0,#34HSUB A,R0

14、JC L1STA 0021HJMP L2L1:STA 0020HL2:JMP L2 编译生成的.S文件S1130000301238342850000E48002158001148009ES1070010205800115FS9030000FC编译生成的.lst文件10000 ORG 0200003012MOV A,#12H300023834MOV R0,#34H4000428SUB A,R05000550000EJC M60008480021STA 0021H7000B580011JMP L8000E M:9000E480020STA 0020H100011 L:110011580011JMP

15、 L(2)硬件电路和软件程序连机调式利用已有的软件UniDebugger new对硬件电路和软件程序连机调式,查看内部存储器中的结果,具体调试过程如下:串口设置设置实验模式设置实验方式打开CFG显示配置文件打开M19微程序文件打开汇编生成的.s19文件运行看结果通过软件左边区域的RAM区即可查看运行结果五、实验编程及调试1.编写一个循环程序,求1+2+3+4+5+6+7+8+9+10,把结果存0022H。ORG 0MOV A,#0AHMOV R0,#0HP:MOV R1,AADD A,R0MOV R0,AMOV A,R1SUB A,#01HJZ PMOV A,R0STA 0022HL:JMP

16、L这个程序采用了循环将1到10 十个整数相加,并将相加的结果存入到0022H,在程序中是从10开始递减一直相加到1,用寄存器R0存放每次相加的结果,R1存放要加的数,用STA指令将最后结果保存到0022H地址。2.说明并指出下面程序的输出结果LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL;ENTITY axamp IS PORT(dat1,dat2 : IN STD_LOGIC_VECTOR(3 DOWNTO 0); dat3,dat4 : IN STD_LOGIC_VECTOR(3 DOWNTO 0); out1,out2 : OUT STD_LOGIC_

17、VECTOR(3 DOWNTO 0) ); END; ARCHITECTURE bhv OF axamp ISFUNCTION max( a,b : IN STD_LOGIC_VECTOR) -定义函数体 RETURN STD_LOGIC_VECTOR IS BEGIN IF a b THEN RETURN a; ELSE RETURN b; END IF; END FUNCTION max; -结束FUNCTION语句 END; BEGIN out1 = max(dat1,dat2); PROCESS(dat3,dat4) BEGIN out2 = max(dat3,dat4); END P

18、ROCESS; END; 说明语句out1 = max(dat1,dat2);和语句out2 = max(dat3,dat4);调用函数后out1 、out2的结果是什么?0Out1 dat1,dat2的最大值out2dat3,dat4的最大值六、结果及分析图6.1 循环累加程序实验箱结果显示图6.2 循环累加程序编译运行结果显示1+2+3+4+5+6+7+8+9+10的结果为55,划为十六进制为37H,并将结果存入到0022H地址,从图中可以看出运行的结果和我们预料的结果是一致的。七、收获、体会及建议通过本次课程设计, 我知道了动手做一遍比看书看十遍更有用。之前在课堂上有许多懵懵懂懂的概念,

19、甚至到考试时,也不觉得自己没有完全弄懂。在着手进行设计的时候,才发现自己对基础知识掌握的多么不牢靠。有许多不懂的地方都及时向老师和学的好的同学请教,同学们一起研究,共同进步,增强了动手能力和思考能力。这次课程设计不仅仅是一次交给老师的作业,更是一项通过思考和实践精心完成的作品。虽然仍然有很多不足之处,但是在一次次锻炼中,我相信自己的实践能力会逐渐提高。由于机器有限,这次课程设计老师让我们两人一组,一个人负责硬件,另一人负责软件,其实它们两者没有绝对的分开,硬件和软件是紧密相连系的,用硬件实现的功能在原理上可以用软件来实现,用软件实现的功能也可以用硬件完成。在代码的设计与调试中,我们遇到了一些意想不到的问题,经过请教老师与同学后终于解决。而且我发现细心对这次试验至关重要,无论是接线还是将每条微指令代码化,译成二进制代码表,尤其将二进制代码表转换为联机操作时的十六进制格式文件时,只要中间有一步出现错误,整个程序都会被影响。我认为我和我的队友在这一点做的还是比较好的,我们在做每一步的时候都非常认真,整个过程中几乎没有出现因为粗心而耽误很多时间的错误。总而言之,计算机组成原理课程设计后,我受益很多,耐心、细心、合作、知识、动手能力等等。同时特别要感谢老师的耐心指导与队友的愉快合作。

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

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1