北京航空航天大学计算机学院计算机组成原理课程设计实验报告姓名: ******学号: *******时间:2011年7月 20 日目录第一章MIPS部件基础实验 (1)实验1-1 存储单元 (1)预习题 (1)思考题 (6)实验1-2 运算单元 (9)预习题 (9)思考题 (14)实验1-3 协处理器 (23)实验1-4 其它部件 (26)第二章MIPS处理器综合实验 (31)实验2-1 指令系统 (31)思考题 (31)实验2-2 数据通路 (38)预习题 (38)思考题 (39)实验2-3 多周期控制器设计 (43)预习题 (43)思考题 (72)实验2-4 多周期处理器设计 (75)预习题 (75)思考题 (80)第三章MIPS高级设计实验 (86)实验3-1 MIPS指令扩展处理器设计 (86)预习题 (86)思考题 (92)第一章MIPS部件基础实验实验1-1 存储单元预习题(1)对照实验原理中只读存储器ROM的电路结构,简要说明其工作原理。
答:根据inclock的时钟信号,在inclock上升沿阶段,address[5..0]为读入的6位地址,译码得到该数据的地址,q[23..0]为输出的数据。
(2)如何在图形编辑窗口中设计LPM_ROM存储器?怎样设计地址宽度和数据线的宽度?怎样导入和存储LPM_ROM的设计参数文件?答:打开QuartusII,选菜单File-New,在弹出的New对话框中选择Device Design Files 页的原理图文件编辑输入项Block Diagram/Schematic File,按OK按钮后将打开原理图编辑窗口。
在编辑窗口中任意空白处双击,可出现输入元件对话框,在Name一栏中输入lpm_rom,此元件便出现在显示窗口中,点OK,可进入元件定制对话框。
设置参数值,将地址总线宽度address[]和数据总线宽度q[]分别设置为6位和24位。
可通过.mif 文件进行参数设计和编辑。
设计好相应的mif文件如下图所示。
设置地址宽度和数据宽度,如下图所示。
导入设计好的mif文件,如下图所示。
(3)在对LPM-ROM的设计进行软件仿真测试时,应该如何设计仿真波形的输入信号的?结合实际的仿真结果说明LPM_ROM的功能在仿真波形中是如何体现的?答:创建波形文件时,单击每一个输入数据进行设置,将inclock设计为以一定时间为周期翻转的时钟信号,address为以一定频率改变的6为数据。
从结果来看,随着6位地址数据的改变,24位输出数据线数据也随之改变,体现了LPM_ROM的功能。
(4)请设计在实验台上对LPM-ROM进行测试的方法?答:先在QuartusII中锁定各项输入输出的引脚,addr[5..0]由键1,2控制,时钟inclock 由键8控制,数码管8-3显示ROM中的数据输出,下载到实验台上,按下相关控制键,可进行仿真操作。
(5)总结原理图输入法设计硬件的主要步骤,以及每个步骤的主要目的。
答:(1)建立本项目工程设计文件夹。
目的:任何一项设计都是一项工程,都必须首先为此工程建立一个放置与此工程相关的所有设计文件的文件夹。
不同的设计项目最好放在不同的文件夹中,而同一工程的所有文件都必须放在同一文件夹中。
放于同一个文件夹中便于管理。
(2)MIF格式文件的建立。
目的:初始化ROM的数据。
(3)原理图输入设计项目。
目的:设计选择符合要求的元件,连接元件,以达到所需电路的要求。
(4)创建工程。
目的:将设计文件加入工程中。
(5)全程编译。
目的:检查设计是否有错误,数据网表文件提取、逻辑综合、适配、装配文件生成及基于目标器件的工程时序分析等。
(6)时序仿真。
目的:观察仿真结果,验证硬件设计的正确性。
(7)锁定引脚。
目的:将输入输出的引脚与实验台锁定。
(8)硬件下载。
目的:将设计好的程序下载到实验台上。
(6)试着简要说明读写存储器RAM工作原理。
答:RAM为随机存取存储器,可以随机从任意一个指定的地址读取数据,也可以将数据写入任意的一个指定的存储单元中。
(7)在对读写存储器RAM的设计进行软件仿真测试时,应该如何设计仿真波形的输入信号的?结合实际的仿真结果说明读写存储器RAM的功能在仿真波形中是如何体现的?答:时钟信号以一定周期翻转,当遇到上升沿时,且使能信号为1,RAM开始工作读写信号为高电平时执行写入功能,低电平是执行读出功能。
将地址addr信号以一定的频率改变,当读写信号为高电平即写入信号时,从addrin读取数据,存入RAM所指存储单元中;当读写信号为低电平即读出信号时,从RAM读出RAM所指存储单元的数据,存入addrout中。
以上体现了RAM的功能。
(8)总结Verilog文本输入法设计硬件的主要步骤,以及每个步骤的主要目的。
答:(1)建立本项目工程设计文件夹。
目的:同一工程下的所有文件放在一起便于使用语管理。
(2)输入项目设计。
目的:编写相关程序代码并保存。
(3)创建工程。
目的:将设计程序加入工程中。
(4)全程编译。
目的:检查设计是否有错误,数据网表文件提取、逻辑综合、适配、装配文件生成及基于目标器件的工程时序分析等。
(5)时序仿真。
目的:观察仿真结果,验证硬件设计的正确性。
(6)锁定引脚。
目的:将输入输出的引脚与实验台锁定。
(7)硬件下载。
目的:将设计好的程序下载到实验台上。
(9)预先设计好并绘出32位MIPS的RAM、IR、RegFile等的仿真波形输入及理论输出,结合波形说明其功能及工作原理。
答:以MIPS_RAM为例。
工作原理:该RAM共有四个工作模式,模式控制信号BE为1111时,读写32位;模式控制信号为0111时,读写低16位,高16位置0;模式控制信号为0011时,读写低8位,高24位置0;模式控制信号为其他信号时,32位全置为0。
(10)预先设计好并绘出先进先出存储电路FIFO的仿真波形输入及理论输出,结合波形说明其功能及工作原理。
答:FIFO为先进先出存储电路。
即当给定写入信号时,按一定顺序写入一部分数据,当给定读出信号时,按照先进先出的原则读出已经写入的数据。
思考题(1)MIPS RAM存储器在CPU中是如何与其它部件协同工作的。
请结合其功能详细分析。
答:RAM为存储器,可写入或读出制定地址的数据,地址的指定可由其他寄存器的某些位数通过译码来指定,写入的数据可由其他寄存器的某些位或地址来确定,数据读出后可存放于其他寄存器。
(2)记录下MIPS RAM的仿真结果,并与预习时的理论仿真波形对照,是否一致?结合仿真结果说明电路的工作过程。
答:仿真结果与预期的结果一致,模式控制信号为1111时,从DataIn读入32位数据保存并输出到DataOut;模式控制信号为0111时,从DataIn读入低16位数据,高16位置0,保存并输出到DataOut;模式控制信号为0011时,从DataIn读入低8位数据,高24位置0,保存并输出到DataOut;模式控制信号为其他信号时,RAM全部置0,输出32’b0到DataOut。
(3)MIPS IR在CPU中是如何与其它部件协同工作的。
请结合其功能详细分析。
答:该IR为32位的指令寄存器,用来保存当前正在执行的一条指令。
当执行一条指令时,先把它从内存取到IR中,然后再通过IR输出到后续各个部件。
(4)记录下MIPS IR的仿真结果,并与预习时的理论仿真波形对照,是否一致?结合仿真结果说明电路的工作过程。
答:实际仿真结果与理论仿真结果完全一致。
CPU工作时,控制器的在第一个周期令IRWrite 写使能有效,IR寄存器写入来自存储器的指令。
Clk是CPU时钟信号,IR的写入由IRWrite信号控制。
IR[31:0]是IR寄存器的输出,即控制器的指令来源。
(5)MIPS RegFile在CPU中是如何与其它部件协同工作的。
请结合其功能详细分析。
答:该32位的寄存器堆由32个32位的寄存器组成,主要实现2个功能,一是读寄存器,即将寄存器堆的数据读出,二是写寄存器,即将输入的32位数据写入到特定的寄存器。
(6)记录下MIPS RegFile的仿真结果,并与预习时的理论仿真波形对照,是否一致?结合仿真结果说明电路的工作过程。
答:实际结果与理论预测符合。
Clk是CPU时钟信号,RS1来自指令的第[25:21]位,RS2来自指令的第[20:16]位,分别代表一个寄存器的编号,RD是要写入的寄存器的标号,WData 是来自于外部的32位数据。
RegWrite信号有效后,将WData的12345678和9ABCDEF0分别写入RD选中的6号和8号寄存器,RData1,RData2分别将写入的数据读出。
(7)LPM_FIFO在CPU设计中有何作用?当LPM_FIFO“空”、“未满”、“满”时,full、empty和usedw[7..0]的输出信号如何变化?答:FIFO是一种先进先出存储电路,可实现队列存储结构,用来存储、缓冲在两个异步时钟之间的数据传输。
使用异步FIFO可以在两个不同时钟系统之间快速而方便的实时传输数据。
空:full位为0,empty位为1,usedw[7..0]为7’d0。
未满:full位为0,empty位为0,usedw[7..0]为占用空间的值。
满:full位为1,empty位为0,uesdw[7..0]为7’d1。
(8)记录下LPM_FIFO的仿真结果,并与预习时的理论仿真波形对照,是否一致?结合图说明电路的工作过程。
答:仿真结果与预期相同,U为当前已使用地址数指示,依次增加,写入时,WR信号为1,将D中的信号从00开始依次写入。
读出时,RD信号为1,将写入的信号从00开始依次读取到Q中。
实验1-2 运算单元预习题(1)对照2.2节中乘法运算器的电路结构,简要说明其工作原理。
答:MUL_start为1时,启动运算,进行MUL_DA与MUL_DB的乘法运算,运算结果保存在64位的result中;MUL_Write为写使能,MUL_SELHL控制选择HI或LO寄存器;运算结束后HI中显示result的高32位数字,LO显示低32位数字。
(2)在对乘法运算器的设计进行软件仿真测试时,应该如何设计仿真波形的输入信号的?结合实际的仿真结果说明乘法器的功能在仿真波形中是如何体现的?答:仿真波形如上图,乘法运算器的两个输入端分别为6和3,开始时Reset置为1,系统清0;Reset置为0且MUL_Start置为1时,运算开始,当MUL_SelMD置为0时进行的是乘法运算,得到result为18,finish2置为1表示运算结束,根据MUL_SelHL选择的是输出低32位得到最终的结果MUL_DC为18;Reset置为1且MUL_Start置为1时,且MUL_SelMD置为1时进行的是除法运算。