CPU大作业实验报告.doc_第1页
CPU大作业实验报告.doc_第2页
CPU大作业实验报告.doc_第3页
CPU大作业实验报告.doc_第4页
CPU大作业实验报告.doc_第5页
已阅读5页,还剩60页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、实验目的1深入理解基本模型计算机的功能、组成知识;2深入学习计算机各类典型指令的执行流程;3学习硬布线控制器的设计过程和相关技术;4在掌握部件单元电路实验的基础上,进一步将单元电路组成系统,构造一台基本模型计算机;5定义20条mips指令集的典型指令,并编写相应的汇编程序,能在模型机上调试,掌握计算机整机概念;6通过熟悉较完整的计算机的设计,全面了解并掌握硬布线控制方式计算机的设计方法,真正理解利用软件进行硬件设计的方法和技巧。实验原理在部件实验过程中,各部件单元的控制信号是人为模拟产生的,而本实验将能在硬布线控制下自动产生各部件单元控制信号,实现特定的功能。实验选择了mips体系结构中比较典

2、型的指令,使用quartusii软件工具,通过原理图以及vhdl语言设计cpu的逻辑电路来实现这些指令。另外还用mips汇编语言编写了用于cpu测试的简单程序,对所设计的cpu逻辑电路进行功能仿真模拟,以验证cpu逻辑电路的正确性。实验涉及到的r指令有add、sub、and、or、xor、sll、srl、sra、jr;i指令有addi、andi、ori、xori、lw、sw、beq、bne、lui;j指令有j、jal。指令格式如下图所示。单周期cpu的逻辑电路图跳转指令寄存器指定是从32位的寄存器堆中选择出一个32位的寄存器用于读或写数据。由于jal指令要把分支延迟槽下一条指令的指令地址保存在

3、寄存器31号中,故需要设置一个控制信号call,当call=1时,选择31号寄存器,为jal跳转指令提供寄存器,当call=0时,从32位的寄存器堆中根据地址选择出一个32位的寄存器用于读或写数据。它的真值表如表9-1所示,电路符号如图9-1所示。表9-1 跳转指令寄存器指定的真值表输入call10regn4.0xregn4.0输出wn4.011111regn4.0原理图设计跳转指令寄存器指定元件图5-10-2跳转指令寄存器指定电路符号由描述和真值表创建跳转指令寄存器指定的原理图,如图5-10-2所示:图5-10-1 跳转指令寄存器指定的原理图vhdl设计跳转指令寄存器指定元件由于vhdl语法

4、的多样性和灵活性。通常可采用不同的方式来进行描述。这里用根据真值表的方式,使用if语句来编写程序。vhdl程序如下:跳转指令寄存器指定元件的仿真验证(1)打开cpu项目。(2)创建一个原理图文件 新建一个原理图文件,在原理图编辑窗口中按照图5-10-1创建跳转指令寄存器指定的原理图,保存为“f.bdf”。(3)创建一个vhdl文件 新建一个vhdl file文件,在vhdl程序编辑窗口中输入跳转指令寄存器指定的vhdl程序,保存为“v_f.vhd”。(4)编译 将要编译的文件设置为顶层文件,编译。(5)创建波形文件 通过编译后,新建vector waveform file文件,将所有的信号节点

5、导入波形图编辑窗口中。对所有信号节点前面有或图标的,按如图9-3所示进行值设置。然后,保存该波形文件为“f.vwf”和“v_f.vwf”。(6)功能仿真 原理图和vhdl最后生成的功能仿真波形图应一样,如图9-3所示。(7)波形分析 由如图9-3所示80.0ns到100.0ns这一时段,call为1,regn为04, wn的值应该为1f(十进制31),图中正好此时段wn的值也为1f。另100.0ns到120.0ns这一时段,call为0,regn为05, wn的值应该为05,图中正好此时段wn的值也为05。因此得证。(8)生成原理图元器件和对应的vhdl定义元件语句。图5-10-3 跳转指令寄

6、存器指定的仿真波形图以下是几个机器指令的逻辑表达式:根据机器指令的可以得到相应的控制信号,举例如下:指令译码是对取指令操作中得到的指令进行译码,确定这条指令需要完成的操作,从而产生相应的控制信号,驱动执行状态中的各种动作,它是控制器的一个重要组成部分。在mips指令集中,根据操作码op和功能码func来区别指令。根据以上的简述列出的20条指令编码,可以得出这20条指令的逻辑表达式如下,其中,op5.0为操作码op,func5.0为功能码func,电路符号如图5-15。type=add=typefunc5sub=typefunc5func1and=typefunc5func2or=typefun

7、c5 func2 func0xor=typefunc5 func2 func1sll=typesrl=type func1sra=type func1 func0jr=type func3addi=op3andi= op3 op2ori= op3 op2 op0xori= op3 op2 op1lw= op5 op1 op0sw= op5 op3 op1 op0beq= op2bnq= op2 op0lui= op3 op2 op1 op0j= op1jal= op1 op0 图5-15指令译码器的电路符号原理图设计指令译码由描述和逻辑关系式创建指令译码器的原理图,如图5-15-1所示:图5-

8、15-1 指令译码器的原理图指令译码的仿真验证(1)打开cpu项目。(2)创建一个原理图文件 新建一个原理图文件,在原理图编辑窗口中按照图5-15-1创建指令译码器的原理图,保存为“instdec.bdf”。(3)编译 将要编译的文件设置为顶层文件,编译。(4)创建波形文件 通过编译后,新建vector waveform file文件,将所有的信号节点导入波形图编辑窗口中。对所有信号节点前面有或图标的,按如图9-6所示进行值设置。然后,保存该波形文件为“instdec.vwf”。(6)功能仿真 如图5-15-2所示。(7)波形分析 由如图9-6所示70.0ns到80.0ns这一时段,op为00

9、0000,func为000011, add,sub,and,or,xor,sll,srl,sra,jr的值应该分别为000000010,图中正好此时段的值也为这样。另120.0ns到130.0ns这一时段,op为001110,func为110000, addi,ori,xori,lw,sw,beq,bnq,lui,j,jal的值应该分别为00010000000,图中正好此时段的值也正好这样。因此得证。(8)生成原理图元器件和对应的vhdl定义元件语句。图5-15-2 指令译码器的仿真波形图控制部件控制器是计算机中发号施令的部件,它控制计算机的各部件有条不紊地进行工作。具体的讲,控制器的任务是从

10、内存中取出题解步骤加以分析,然后执行某种操作。pcsource是用于标记下一条指令的地址,通过计算得到的下一条指令有下列4种情况pc+4(用于指令存储器的地址是7.2)、分支跳转(beq、bnq指令)、跳转(j指令)、跳转变链接(jal指令)。call(jal)标记31号寄存器,由于jal指令要把分支延迟槽下一条指令的指令地址保存在寄存器31号中,故需要设置一个控制信号call,当call=1时,选择31号寄存器,为jal跳转指令提供寄存器,当call=0时,从32位的寄存器堆中根据地址选择出一个32位的寄存器用于读或写数据。m2reg(lw指令)标记是将运算的结果直接写入寄存器堆,还是将数据

11、存储器的数据取出后写入寄存器堆。aluc运算器的控制信号,用于选择做何种运算。wmem数据存储器的读写信号。shift标记移位运算,由于移位运算的运算数需要位数拓展。aluimm标记立即数运算,由于有立即数参与运算前需要位数拓展。sext标记参加运算的是有符号数。wreg寄存器堆的读写信号。regrt标记指令中的20.16或15.11中的哪一种作为运算的目标寄存器。它的电路符号如图5-16。可以得出这些控制信号的逻辑表达式如下:call=jalpcsource0=(beq and z) or j or jal or (bnq and z)pcsource1=j or jal or jrm2re

12、g=lwaluc0=ori or andi or sra or srl or sll or and or oraluc1=lui or xori or sra or srl or sll or xoraluc2=lui or bnq or beq or ori or sra or srl or or or subaluc3=srawmem=swshift=sll or sra or srlaluimm=ori or andi or xori or lw or sw or lui or addisext=addi or lw or sw or beq or bnq or luiwreg=add

13、or sub or and or or or xor or sll or srl or sra or addi or andi or ori or xori or lw or lui or jalregrt=addi or andi or ori or xori or lw or lui图5-16-1控制器的电路符号原理图设计控制部件由描述、调用instdec元件和逻辑关系式创建控制部件的原理图,如图5-16所示:图5-16 控制器的原理图 vhdl设计控制部件由于vhdl语法的多样性和灵活性。通常可采用不同的方式来进行描述。这里用根据表达式的方式,使用逻辑连接词来编写程序。vhdl程序如下:

14、控制部件的仿真验证(1)打开cpu项目。(2)创建一个原理图文件 新建一个原理图文件,在原理图编辑窗口中按照图5-16-1创建控制部件的原理图,保存为“sc_cu.bdf”。(3)创建一个vhdl文件 新建一个vhdl file文件,在vhdl程序编辑窗口中输入控制部件的vhdl程序,保存为“v_sc_cu.vhd”。(4)编译 将要编译的文件设置为顶层文件,编译。(5)创建波形文件 通过编译后,新建vector waveform file文件,将所有的信号节点导入波形图编辑窗口中。对所有信号节点前面有或图标的,按如图5-16-1所示进行值设置。然后,保存该波形文件为“sc_cu.vwf”和“

15、v_sc_cu.vwf”。(6)功能仿真 原理图和vhdl最后生成的功能仿真波形图应一样,如图5-16-1所示。(7)波形分析 由如图9-9所示80.0ns到90.0ns这一时段,op为08,func为09,z为0,据表达式可得pcsource,sext,shift,wmem,wreg,call,aluc的值应该分别为0,1,0,0,1,0,0。图中正好此时段的值也正好这样。因此得证。(8)生成原理图元器件和对应的vhdl定义元件语句。图5-16-1 控制器的波形仿真图指令存储器指令存储器是用于在计算机中保存指令。在本节中使用lpm_rom来实现,它能保存64条指令字。如图5-17所示。指令存

16、储器输入:a31.0(指令地址),实际使用的地址为a7.2。指令的输出信号:do31.0。指令存储器的元件符号如图5-17所示。真值表如表2所示,do表示在指令数据文件中地址a对应的指令数据。表9-2 指令存储器的真值表输入clk上降沿下升沿a31.0xa输出do31.0保持不变do图5-17 指令存储器的电路符号原理图设计指令寄存器1.创建加法指令数据文件执行菜单“file”“new”,或在工具栏中单击图标,弹出如图5-17-1所示的“new”对话框。在此对话框的“memory files”项中选择“memory initialization file”,在单击“ok”按钮,弹出如图5-17

17、-2所示的对话框,按如图所示的设置后,单击“ok”按钮。在如图所示的对话框中输入相应的数据,保存。图5-17-1 存储数据文件设置对话框图5-17-2存储数据文件2. lpm_rom宏模块的设置(1)创建一个原理图文件 新建一个原理图文件,在原理图编辑窗口的空白处右键单击在弹出的菜单中选择“insert”中的”symbol”,弹出元件输入对话框,在“name”栏中输入lpm_rom,单击ok按钮,弹出如图5-17-3所示对话框。图5-17-3 设定输出文件(2)在如图5-17-3所示的对话框中,上方的一组单选按钮中选择vhdl,因为我们后续的vhdl程序中可能会用到。然后,第一个文本框中是本次

18、宏模块设置生成的文件存放路径和文件名(注意:路径建议不要改动,只修改后面的lpm_rom)。最后单击“next ”,弹出如图5-17-4所示的对话框。图5-17-4 设置选择器是多少位的几选1选择器(3)在如图5-17-4所示的对话框中,按照图上的提示进行设置,这里设置成的是一个存储大小为64位的指令存储器。然后,单击“next ”按钮,弹出如图5-17-5所示的对话框,直接单击“next ”按钮,弹出如图5-17-6所示的对话框,按照图上的提示进行设置。然后,单击“next ”按钮,弹出如图5-17-7所示的对话框,单击“finish”按钮,弹出如图5-17-8所示的对话框,单击“yes”按

19、钮,即可完成lpm_rom宏模块的设置。在后续的原理图和vhdl程序设计中就可调用该元件了。图5-17-8 是否将本机ip添加到元件文件中,来唯一标记元件图5-17-5 显示仿真所需文件图5-17-6 设置存储数据文件对话框图5-17-7 显示将创建的文件3.调用lpm_rom宏设计出指令存储器图5-17-9 指令存储器的原理图vhdl设计指令寄存器由于在lpm_rom宏设计时,可以在项目工程下找到一个v_lpm_rom_inst.vhd的vhdl文件,可以根据该文件的设置,对一些属性配置作修改后,得到指令寄存器的vhdl文件v_rom.vhd。它的程序如下:指令寄存器的仿真验证(1)打开cp

20、u项目。(2)创建一个原理图文件 新建一个原理图文件,在原理图编辑窗口中先创建加法指令数据文件。然后,进行lpm_rom宏设置,最后,按照图5-17-9创建指令寄存器的原理图,保存为“inst_mem.bdf”。(3)编译 将要编译的文件设置为顶层文件,编译。(4)创建波形文件 通过编译后,新建vector waveform file文件,将所有的信号节点导入波形图编辑窗口中。对所有信号节点前面有或图标的,按如图5-17-10所示进行值设置。然后,保存该波形文件为“inst_mem.vwf”。(5)功能仿真 如图5-17-10所示。(6)波形分析 由如图5-17-10所示10.0ns到20.0

21、ns这一时段,a为00000004,clk在10.0ns时刻有一个下降沿,故此时刻do的值应变为地址00000004对应的指令数据为3c010000,然后,直到20.0ns时刻之前都是上升沿,故值一直保持不变为3c010000,直到20.0ns时刻来了一个下降沿,do的值应变为地址00000008对应的指令数据为34240050。图中此时段正好也为这样。因此得证。(7)生成原理图元器件和对应的vhdl定义元件语句。图5-17-10 指令寄存器的波形仿真图数据存储器数据存储器是用于在计算机中读出或写入数据。在本节中使用lpm_ram_dq来实现,它能保存32条32位数据。数据存储器输入:we 读

22、写控制信号,a31.0(指令地址),实际使用的地址为a6.2,di要写入的数据,clk读写控制信号,memclk时钟信号。数据的输出信号:do31.0。数据存储器的元件符号如图5-18所示。真值表如表3所示,“”表示上升沿,“”表示下降沿。图5-18 数据存储器的电路符号表3 数据存储器的真值表输入we0011xxa31.0aaaaaadi31.0xxdidixxclkxx0011memclk输出do31.0do不变di不变do不变原理图设计数据存储器1.创建加法指令数据文件图5-18-1存储数据文件设置对话框图5-18-2存储数据文件2. lpm_ram_dq宏模块的设置(1)创建一个原理图

23、文件 新建一个原理图文件,在原理图编辑窗口的空白处右键单击在弹出的菜单中选择“insert”中的”symbol”,弹出元件输入对话框,在“name”栏中输入lpm_ram_dq,单击ok按钮,弹出如图5-1-38所示对话框。图5-18-3 设定输出文件(2)在如图5-18-3所示的对话框中,上方的一组单选按钮中选择vhdl,因为我们后续的vhdl程序中可能会用到。然后,第一个文本框中是本次宏模块设置生成的文件存放路径和文件名(注意:路径建议不要改动,只修改后面的lpm_ram_dq)。最后单击“next ”,弹出如图5-18-4所示的对话框。图5-18-4 设置选择器是多少位的几选1选择器(3

24、)在如图5-18-4所示的对话框中,按照图上的提示进行设置,这里设置成的是一个存储大小为32位的数据存储器。然后,单击“next ”按钮,弹出如图5-18-5所示的对话框,直接单击“next ”按钮,弹出如图5-18-6所示的对话框,按照图上的提示进行设置。然后,单击“next ”按钮,弹出如图5-18-7所示的对话框,单击“next ”按钮,弹出如图5-18-8所示的对话框,单击“finish”按钮,即可完成lpm_ram_dq宏模块的设置。在后续的原理图和vhdl程序设计中就可调用该元件了。图5-18-5显示仿真所需文件图5-18-6 设置存储数据文件对话框图5-18-7生成的eda元件图

25、5-18-8 显示将创建的文件3.调用lpm_ram_dq宏设计出数据存储器图5-18-9 数据存储器的原理图vhdl设计数据存储器由于在lpm_ram_dq宏设计时,可以在项目工程下找到一个v_lpm_ram_dq_data.vhd的vhdl文件,可以根据该文件的设置,对一些属性配置作修改后,得到指令寄存器的vhdl文件v_ram.vhd。它的程序如下:数据存储器的仿真验证(1)打开cpu项目。(2)创建一个原理图文件 新建一个原理图文件,在原理图编辑窗口中先创建加法数据数据文件。然后,进行lpm_ram_dq宏设置,最后,按照图5-18-9创建数据寄存器的原理图,保存为“data_mem.

26、bdf”。(3)编译 将要编译的文件设置为顶层文件,编译。(4)创建波形文件 通过编译后,新建vector waveform file文件,将所有的信号节点导入波形图编辑窗口中。对所有信号节点前面有或图标的,按如图5-18-10所示进行值设置。然后,保存该波形文件为“data_mem.vwf”。(5)功能仿真 如图5-18-10所示。(6)波形分析 由如图5-18-10所示,20.0ns这一时刻,a为00000060,clk为0,we为0,则为读信号。memclk此时刻有一个上升沿,故读出地址a对应的数据do为000000a3。30.0ns这一时刻,a为00000000,di为00000300

27、,clk为0,we为1,则为写信号。memclk此时刻有一个上升沿,故将di数据写入到地址a对应的位置do为00000300。图中正好也为这样,只是整体有一个周期的时延。因此得证。(7)生成原理图元器件和对应的vhdl定义元件语句。图5-18-10 数据寄存器的波形仿真图cpu由于cpu的设计与实现是离不开存储器的,因为cpu要从指令存储器中得到指令,从数据存储器中的得到用于计算的数据。故本节将为cpu加上指令存储器和数据存储器,也就是这里说的主机系统。主机系统的元件符号如图5-19所示。图5-19 主机系统的电路图原理图设计计算机主机系统分析cpu的设计的描述及各端口的描述,不难得出如图5-

28、19-1所示的主机系统的原理图。图5-19-1主机系统的原理图vhdl设计计算机主机系统由于vhdl语法的多样性和灵活性。这里用根据原理图的方式,使用结构化的顶层设计方式来编写程序。主机系统的vhdl程序如下: 调试程序编制及主机系统的调试加法调试程序在这里做一个加法163+39+121+277=600,16进制表示为:000000a3+00000027+00000079+00000115=258。它的汇编代码如下图5-19-2所示,数据如图9-38所示。由于在指令存储器和数据存储器章节以运用了该加法程序,它的数据文件的建立请参照那两节。图5-19-2 加法的汇编代码图5-19-3加法的数据加

29、法程序调试仿真(1)打开cpu项目。(2)创建一个原理图文件 新建一个原理图文件,在原理图编辑窗口中按照图5-19-1创建主机系统的原理图,保存为“sc_comp.bdf”。(3)创建一个vhdl文件 新建一个vhdl file文件,在vhdl程序编辑窗口中输入主机系统的vhdl程序,保存为“v_sc_comp.vhd”。(4)编译 将要编译的文件设置为顶层文件,编译。(5)创建波形文件 通过编译后,新建vector waveform file文件,将所有的信号节点导入波形图编辑窗口中。对所有信号节点前面有或图标的,按如图5-19-3所示进行值设置。然后,保存该波形文件为“sc_comp.vw

30、f”和“v_sc_comp.vwf”。(6)功能仿真 原理图和vhdl最后生成的功能仿真波形图应一样,如图5-19-3所示。并按照如图5-19-3所示进行仿真生成的数据存储文件的保存。(7)波形分析 由如图5-19-3,inclock在下降沿时,从指令存储器中取出指令。memclk在上升沿时,可对数据存储器进行读写操作。resetn为置0信号。clock为cpu的时钟信号,数据存储器的读写控制信号。所示0.0ns到20.0ns这一时段,经过cpu的运算得到pc指令存储器的输入地址为00000000,aluout数据存储器的输入地址00000000,则在指令存储器中取出的指令instr为3c01

31、0000,读出的数据memout为000000a3。图中正好也是这样。因此得证。最后仿真生成的数据存储文件要与图5-19-4所示一致,才表示仿真正确。(8)生成原理图元器件和对应的vhdl定义元件语句。图5-19-3 主机系统的加法仿真波形图图5-19-4 主机系统的加法仿真生成数据存储文件乘法调试程序在这里做一个乘法51630*63205=3263274150,16进制表示为:0000c9ae*0000f6e5=c2819ca6。它的汇编代码如下图5-19-5所示,数据如图5-19-6所示。参照加法建立的指令存储文件如图5-19-7所示,数据存储文件如图5-19-8所示。图5-19-5 乘法

32、的汇编代码图5-19-6 乘法的数据图5-19-7 乘法的指令数据文件图5-19-8 乘法的数据文件由加法而产生的lpm_rom_inst和lpm_ram_dq_data相关文件,在做乘法时,只需要将lpm_rom_inst.vhdl中的(init_file = inst_mem.mif,)改为(init_file = inst_mem_mul.mif,),保存即可。lpm_ram_dq_data.vhdl中的(init_file = data_mem.mif,)改为(init_file = data_mem_mul.mif,),保存即可。乘法程序调试仿真(1)打开cpu项目。(2)打开波形文

33、件 “sc_comp.vwf”和“v_sc_comp.vwf”。(3)重新功能仿真,原理图和vhdl最后生成的功能仿真波形图一样,如图5-19-9所示。(4)波形分析 由如图5-19-9,inclock在下降沿时,从指令存储器中取出指令。memclk在上升沿时,可对数据存储器进行读写操作。resetn为置0信号。clock为cpu的时钟信号,数据存储器的读写控制信号。所示0.0ns到20.0ns这一时段,经过cpu的运算得到pc指令存储器的输入地址为00000000,aluout数据存储器的输入地址00000000,则在指令存储器中取出的指令instr为3c010000,读出的数据memout为0000c9ae。图中正好也是这样。因此得证。最后

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论