我是靠谱客的博主 唠叨煎饼,最近开发中收集的这篇文章主要介绍寄存器组设计实验,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

试验三 寄存器组设计实验

1实验目的

1 熟悉并掌握基本MIPS计算机组成的工作原理与设计方法。

2 掌握用Verilog语言设计一个由32个寄存器组成的字长为32位的寄存器组。

3 完成一个由16个寄存器组成的字长为4位的寄存器组设计,并在Altera DE2-70开发板上实现。

2 实验设备

1)装有Quartus II的计算机一台。

2Altere DE2-70开发板一台。

http://www.terasic.com.tw/attachment/archive/231/image/500x500.jpg

 

3 实验预备知识

3.1寄存器组

寄存器是CPU内部重要的数据存储资源,是汇编程序员能直接使用的硬件资源之一。由于寄存器的存取速度比内存快,所以,在用汇编语言编写程序时,要尽可能充分利用寄存器的存储功能。

寄存器一般用来保存程序的中间结果,为随后的指令快速提供操作数,从而避免把中间结果存入内存,再读取内存的操作。

3.2 Quartus II 编程平台

Quartus IIAltera公司的综合性PLD开发软件,支持原理图、VHDLVerilogHDL以及AHDL等多种设计输入形式,内嵌自有的综合器以及仿真器,可以完成从设计输入到硬件配置的完整PLD设计流程。Quartus II支持AlteraIP核,包含了LPM/MegaFunction宏功能模块库,使用户可以充分利用成熟的模块,简化了设计的复杂性、加快了设计速度。

3.3 Altera DE2-70开发板

Altera DE2-70 最新多媒体开发平台配备了数量高达70,000个逻辑单元的Altera Cyclone® II 2C70和更大容量的内存组件,并完全承袭了Altera DE2 多媒体平台丰富的多媒体、储存及网络等应用接口的优点。此开发平台提供多样的产品功能,不仅适用于大专院校实验室的教学研究与专题制作,也适合工业界做为开发复杂数字系统的工具。Altera DE2-70 最新多媒体开发平台提供使用者丰富的产品功能,在广泛的电路设计运用上,从简易的电路设计,到多样化的多媒体项目,使用者都能轻易完成。

 

4      实验任务

1.根据实验原理框图完成一个32位字长的32个寄存器组成的寄存器组设计,并在Quartus II上模拟实现。

2.根据下面的实验原理框图完成一个4位字长的16个寄存器组成的寄存器组设计,并在Altera DE2-70开发板实现。 





 

首先进入 project 目录,在该目录下运行一系列命令,创建和修改几个文件,就可以生成符合该平台的Makefile文件,操作过程如下:

5      实验步骤

5.1创建新工程

AQuartus II 工作环境;

B、新建一个Quartus 工程,工程名与顶层实体名设为 reg071221054

5.2Verilog HDL语言编写一个32位字长的32个寄存器组的程序

// Quartus II Verilog Template

//32 register group

//DATA_WIDTH=32

module registers071221049

(

                       input [4:0]s1,s2,

                       input [4:0] wd,

                       input [31:0] data,

                       input wre, clk,

                       input he,hc,le,lc,

                       output [31:0] out1,

                       output [31:0] out2

);

                       reg [31:0] mem [31:0];

//write

                       always @ (posedge clk)

                       begin

                            if(wre == 0 )

                                     begin

                                     if(he == 0)  mem [wd] [31:24] <= data[31:24];

                                     if(hc == 0)  mem [wd] [23:16] <= data[23:16];

                                     if(le == 0)  mem [wd] [15:8]  <= data[15:8];

                                     if(lc == 0)  mem [wd] [7:0]   <= data[7:0];

                                     end

                       end

                       //read

                       assign out1 [31:0] = mem [s1] [31:0];

                       assign out2 [31:0] = mem [s2] [31:0]

endmodule

5.3   编译调试仿真

如图:

 

5.4完成16字长为4位寄存器组设计,并在Altera DE2-70开发板上实现

5.4.1 Verilog HDL语言设计部分

代码如下:

//*********rege.v***********

module rege

(

         input [3:0]s1,s2,

         input [3:0] wd,

         input [3:0] data,

         input wre, clk,

         input he,hc,le,lc,

         output reg [3:0] out1,

         output reg [3:0] out2

);

         reg [3:0] mem [15:0];

//write

         always @ (posedge clk)

         begin

                  if(wre == 0 )

                            begin

                            if(he == 0)  mem [wd] [3] <= data[3];

                            if(hc == 0)  mem [wd] [2] <= data[2];

                            if(le == 0)  mem [wd] [1] <= data[1];

                            if(lc == 0)  mem [wd] [0] <= data[0];

                            end

         end

//read        

    always @ (s1 [3:0] or s2 [3:0])

         begin

             out1  <= mem [s1] ;

             out2  <= mem [s2] ;

         end

endmodule

//***********Top-level entity  reg071221054************

module reg071221054

(

    input [3:0] iKEY,

         input [17:0] iSW,

         output [7:0] oLEDG

);

rege re(iSW[5:2],iSW[9:6],iSW[17:14],iSW[0],iKEY[0],iSW[1],iKEY[3],iKEY[2],iKEY[1],oLEDG[3:0],oLEDG[7:4]);

endmodule

 

5.4.2编译前的准备工作

配置引脚,选择引脚文件配置引脚:Assignments-> Import Assignments…。并同时在:Assignments->device..选择Device and Pin Options,选择Dual-Purpose Pins标签,然后在Use as programming pin处双击,在出现的下拉栏中把nCEO那一项改为Used as regular I/O

生成图:

4RTL.bmp

 

具体导出电路图见rege_re.jpg

 

6      实验思考题

6.1   MIPS机器的运算器与普通运算器有哪些不同?

答:1.指令集

采用MIPS指令集,有60余条常用指令,体现R类型、I类型、J类型三种基本的指令格式;有五种寻址方式:寄存器寻址、立即数寻址、基址偏移量寻址、PC相对寻址和伪直接寻址;提供了乘法指令的硬件处理机制。

2.流水线:

具有完整的五级流水线架构,采用独立的32位的数据总线和地址总线;采用旁路、数据前推技术解决数据相关问题;提供了分支延迟槽机制和无延迟跳转网络。jal指令的返回地址跟随其后的第二条指令;具有指令CACHE和数据CACHE

 

6.2不带使能端的8D触发器构成的一个8位的时钟上升沿有效并带使能端(低电平有效)的寄存器设计。

答:见rege_8.vsd

 

 

 

 

最后

以上就是唠叨煎饼为你收集整理的寄存器组设计实验的全部内容,希望文章能够帮你解决寄存器组设计实验所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(51)

评论列表共有 0 条评论

立即
投稿
返回
顶部