当前位置:文档之家› (最新版)VHDL,CPU实验报告

(最新版)VHDL,CPU实验报告

计算机硬件课程设计设计报告学号:姓名:成绩:学号:姓名:成绩:东南大学计算机科学与工程系二0 10 年12 月目录1.实验名称 (2)2.实验目的 (2)3.实验任务……………………………………………………………………… 2.4.主要特色 (2)5. 设计方案 (3)5.1 数据格式和指令系统 (3)5.2本设计的体系结构 (5)5.测试结果与性能分析 (20)6.课程设计总结 (22)1.实验名称微程序控制的模型计算机的设计与调试2.实验目的1.综合运用“计算机组成原理”和“数字电路”等课程的知识,通过对模型机的设计和调试,加深对计算机各部件工作原理的认识。

2.进一步掌握运用EDA技术进行设计和调试的工作方法。

3.掌握计算机硬件设计的思想,方法及工作过程,进一步培养工程设计的能力。

3.实验任务1.自行规定数据格式和指令格式,在所提供的条件范围内设计一台由微程序控制(也可以用其他方式如组合逻辑等)的模型计算机。

2.根据设计方案,将模型机调试成功。

3.整理出相关文件。

(1)数据格式和指令系统。

(2)总框图。

(3)详细电路图或有关电路的VHDL语言源程序。

(4)微指令格式和微程序。

(5)调试过程和测试结果(包括测试程序)。

4.主要特色1.增加了ROM的宽度,改为24位,使得可以在一个时钟内读出24位的微指令。

2.对电路进行了合理的修改,具体增加了SRC. DEST结合IR0,IR2,IR1,IR3到RA,RB的译码电路。

3.SRC. DEST结合IR0,IR2,IR1,IR3到WA,WB的译码电路,实现了对于源操作数的写入。

4.由微指令到8CPU中对应的端口译码。

5.重新构造了ROM,RAM,修改了时序电路,调整了M1,M2,M3,M4的时序。

6.除了书上要求的指令微程序以外,还对微程序进行了扩充,加了逻辑左移指令:SAL(每次执行左移一位),以及乘法指令:MUL(8位与8位数据相乘,得到16位数据高8位写回源操作数,低8位写回目的操作数)7.修改了M1,M2,M3,M4的连接电路。

8.通过用软件模拟的方法,成功的构造了一个简单的CPU,更加熟练的学会使用EDA技术。

试验中结合了数字实验和组成原理部分内容。

9.用简单易读的方式排列24位控制信号,使得操作更加简便,如图所示5.设计方案5.1数据格式和指令系统(参考教材)采用8位数据通路,数据采用8位二进制定点表示。

7 6 5 4 3 2 1 0.设置7条机器指令和两条面板操作指令(1)面板操作指令(因为没有一BIOS 及操作系统,所以用面板指令进行初始化,启动机器)a.输入地址为PC置初始值,即输入程序的起始地址,当K1开关置“1”,K2开关置“0”时执行此操作。

b.输入程序将程序输入到内存的指定区域,当K1,K2开关均置“1”时,由面板输入开关输入程序c.本模型机设置K3开关,K3置1表示执行单步操作。

d.START表示启动开关。

(2)指令系统a.指令格式操作码寻址方式7 6 5 4 3 2 1 0有二种寻址方式寄存器寻址操作码R目R源7 6 5 4 3 2 1 0直接地址寻址由于地址要占用一个字节,所以此类指令为双字节指令。

操作码R目R源内存地址b.9条机器指令IN R;从开关输入数据送入到指定的寄存器R。

格式:0 0 0 1 R目0 0OUT R;从指定的寄存器R中取出数据送入到输出缓冲器,显示灯亮。

格式:0 0 1 0 0 0 R源LD R , address ;从内存指定单元取出数据,送入指定的寄存器R。

格式:0 0 1 1 R目0 0内存地址ST address, R; 从指定的寄存器R中取出数据,存入内存指定单元。

格式:0 1 0 0 0 0 R源内存地址ADD R1,R2;将两个寄存器中的数据相加,结果送到R1。

格式:0 1 0 1 R目R源JMP address; 无条件转移,即address PC。

格式:0 1 1 0 0 0 0 0内存地址HALT ;停机指令。

MUL R1,R2;将两个寄存器中的数据相乘,结果高8位送到R1,低8位送到R2。

格式:1 0 1 0 R目R源SAL R;将R中的数据左移一位,结果送到R1。

格式:1 0 0 1 R目5.2本设计的体系结构为了简单方便起见,我们采用单总线结构,总体机构和CPU内部结构设计如图所示总体结构图CPU内部结构1.数据通路设计(1)采用Quartus—II软件工具,先设计出运算器部分,如图所示.ALU.bdf,经时序仿真正确后,进行符号封装。

(2)采用Quartus—II软件工具,先设计出运算器部分,如图所示MUL.bdf,经时序仿真正确后,进行符号封装。

介绍数据通路时打开8CPU.bdf(2)根据指令系统,数据通路中应包括寄存器组,存储器等,采用单总线结构,截图一分为二(1)(2)其中为了做乘法,我们对8cpu加了6个控制信号,如图所示2.控制器设计(1)控制器总框图.控制信号(2)微指令格式和微命令首先对数据通路进行分析,需要22个控制信号。

此外还要2个信号:UPC (表示一段微程序结束),HALT(停机),共需要24个控制信号。

采用水平型格式表示。

控制数据通路的16个信号说明如下:G1,G2,G3,G4ramormul,cmul 分别控制6个多路开关A,B,C,D,EO,P,Q 分别控制对应的寄存器输入F 控制计数器PC的输入和计数I 控制指令寄存器的输入DEST 目的寄存器的读出控制信号SRC 源寄存器的读出控制信号WE 对RAM的写入信号GWN 通用寄存器组的写入信号LDN PC置初值的控制信号SRCWE 源或目的寄存器的写入信号(3)控存的安排和时序信号本方案采用的时序控制信号是由74393b产生的。

对于时序,本来是有六个时钟周期的,我们将其缩短在了四个,有效的提高了运行效率。

修改后的时序电路图时序脉冲(4)微地址入口电路的设计为简单起见,微地址采用8位,其高4位由指令操作码控制,低4位由一个4位的计数器控制。

将ROM的高段地址区用于存放面板指令的微程序,低段地址存储区存放一般指令的微程序,控制电路可参考图6。

图3-6 微地址入口电路(5)微命令译码电路a.本方案中寄存器组采用的是74670芯片,每次写入可以为源寄存器,也可以为目的寄存器,所以Wa,Wb要经过译码与IR2,IR3连接,读出时目的和源寄存器均可读出,所以依然要用译码电路。

电路设计如下:写寄存器译码电路读寄存器译码电路b.停机电路以下几种情况需停机:(a)总清. (b) 执行单指令操作,且一条指令执行完。

(c) 执行停机指令。

根据这三种情况可以设计出停机电路。

c.UPC微命令表示一段微程序结束,因此该命令要做的工作是:(a)置“0”微程序计数器(74161)。

(b)置“0”指令寄存器。

3.微程序和总电路图微程序定义如下:8cpu中的端口译码电路如下:Rom修改为24位,修改电路如下:24位重新排列微指令顺序8CPU重新封装效果图CPU总的电路图:(截成四部分)时序及upc产生部分8cpu及寄存器读写译码部分控制信号译码部分Rom及取微指令部分、6.测试结果与性能分析(测试程序、时序图、编译报告中资源使用情况)仿真:微程序和电路设计完成后,进行编译,并通过仿真来检验cup的各项功能。

仿真时,先用面板指令输入程序的起始地址和一段小程序。

我们输入的程序为:初始地址为00H,即Ram中程序如下:进行仿真,首先开关K1置1,K2置0,kdata为00H,为PC置初始值00即程序口地址,接着将K1置0,执行程序。

此时,我们置kdata始终为02H,通过IN指令输入到R0和R1中,然后继续执行程序!建立vwf文件如下:仿真结果如下:7.课程设计总结本实验是设计一个小型CPU,主要工作是在给定的CUP主体结构上完善电路,修正已有电路错误以及设计微程序。

本实验有相当的综合性:在实践过程中,我们充分使用了组成原理、微机接口、数字电路等相关知识。

通过本次实验,我们对CPU的结构和工作原理有了切实的认识。

尤其在总线,时序,微指令等方面,投入的时间不少,体会很深。

我们深刻理解了总线作为指令和数据传输的道路和桥梁,在CUP的工作过程中扮演的重要角色;弄懂了通过时序的调节解决总线的冲突的方法;在全面细致地分析了CUP结构和工作原理的基础上,我们掌握了编写微指令的方法与技巧。

通过组内讨论和求教于老师、同学,我们顺利的完成了基本的实验目标,并做了进一步研究。

利用加法指令,我们增加了SAL(左移一位)指令。

采用控制RA、RB读信号的控制思路,我们使得源、目的寄存器均可写入。

在此基础上,我们引入了8位乘法器,将结果——16位二进制数,成功写入源、目的寄存器。

对现有的24位控制信号,我们充分利用了每一位。

同时,我们注意到实验中还有很多可以改进的地方。

由于时间和给定CPU规格的限定,很多想法未能实施。

比如,编写微指令时,我们注意到:一条指令中的某条指令在M3时已经完成,空等一个M4,才取下一条。

这样的情况并不少见。

如果将执行微指令、取微指令等改为下降沿也能触发,就可以把下一条提到M4做,这就省了一个整个指令周期。

宏观的时间节省量自然也十分可观。

再如,实验提供的ROM为24位,这使得控制信号剩余不多,一旦想多加其它组件,就会为之苦恼。

我们想到自取名为“多面手控制信号”的解决方案:对于互斥的两条指令A和B(如ADD和MUL(肯定不会同时做)),可以根据需要,让A的控制型号同时控制B,所需做的额外工作是修改ROM中的微指令即可。

比起想法设法地扩展ROM,这种方法既快速,又充分利用资源。

实验提供的CPU中有不少这样的控制信号,值得好好利用。

当然,缺点也显而易见,由于控制信号一对多,修改、删除时得慎之再慎,增加了CUP维护的难度。

总之,通过本次实验,我们体会了学以致用的快乐,为进一步的深入的学习增添了几分信心。

相关主题