MIPS单周期CPU设计 您所在的位置:网站首页 mips指令集有多少条指令 MIPS单周期CPU设计

MIPS单周期CPU设计

2023-05-29 08:42| 来源: 网络整理| 查看: 265

以下内容仅供参考

主要内容

用硬件描述语言(Verilog)设计单周期CPU,支持如下指令集:

{ lw,sw,add,sub, ori,lui,sll, srl, beq,bne,j }

用仿真软件Modelsim对汇编程序进行仿真测试.

基本要求

    1. 熟悉硬件描述语言(Verilog)和仿真软件Modelsim;

2. 用硬件描述语言(Verilog)设计程序计数器模块(PcUnit);

3. 用硬件描述语言(Verilog)设计指令存储器模块(IM);

4.用硬件描述语言(Verilog)设计寄存器模块(GPR);

5.用硬件描述语言(Verilog)设计数据扩展模块(Extender);

6. 用硬件描述语言(Verilog)设计运算器模块(Alu);

7. 用硬件描述语言(Verilog)设计数据存储器模块(DMem);

8. 用硬件描述语言(Verilog)设计控制器模块(Ctrl);

9. 用硬件描述语言(Verilog)设计整机连接模块(Mips);

10.完成上述汇编程序的仿真调试。

2.1 CPU总体结构

    单周期的CPU总体结构如下图所示,其中包括程序计数器(PcUnit)、指令存储器(IM)、寄存器组(GPR)、运算器(Alu)、数据扩展单元(Extender)、数据存储器(DM)和控制器(Ctrl)。

2.2 PcUnit(程序计数器)

(1)功能描述

     存放将要执行的指令的地址。

(2)模块接口

信号名

方向

描述

代码

Clk

输入

时钟信号

 

PcReSet

输入

PC复位信号

Adress

输入

扩展单元的32位数

PcSel

输入

Beq指令计算转移地址的指示信号

PC

输出

程序计数器的输出

 

2.3 IM(指令存储器)

(1)功能描述

用于读取指令,在本程序中,指令存储器通过直接读取文本文件获取所需要执行的指令。

(2 )模块接口

信号名

方向

描述

代码

OpCode

输入

指令

ImAdress

输出

地址                        

 

2.4 GPR(寄存器)设计

(1)功能描述

用于实现MIPS指令集中的32个寄存器。

(2)模块接口

信号名

方向

描述

代码

DataOut1

输出

读寄存器1的内容

 

DataOut2

输出

读寄存器2的内容

clk

输入

时钟信号

WData

输入

写寄存器的内容

WE

输入

写使能信号

WeSel

输入

写寄存器的地址

ReSel1

输入

读寄存器1的地址

ReSel2

输入

读寄存器2的地址

2.5 Extender(扩展单元)

(1)功能描述

     将16位的数据扩展为32位数据。

(2)模块接口 

信号名

方向

描述

代码

ExtOp 

输出

扩展方式的控制信号

00:0扩展                        

01:符号扩展

10:将立即数扩展到高位

Extout

输出

符号扩展后的数据

DataIn

输入

初始数据

 

 

2.6 Alu(算术逻辑运算单元)

(1)功能描述

     算术逻辑单元,用于逻辑指令计算和跳转指令比较。

(2)模块接口

信号名

方向

描述

代码

AluResult

输出

计算结果

Zero

输出

零信号

DataIn1

输入

操作数1

DataIn2

输入

操作数2

AluCtrl

输入

控制码

 

 

2.7 DMem(数据存储器)

(1)功能描述

该部分控制内存存储,用于内存存储、读写

(2)模块接口

信号名

方向

描述

代码

DMemW

输入

写使能信号

 

DMemR

输入

写使能信号

clk

输入

时钟信号

DataAdr

输入

地址

DataIn

输入

输出地址对应的数据

DataOut

输出

将数据写入对应地址

2.8 Ctrl(控制器)

(1)功能描述

控制器控制各模块有条不紊的工作,主要产生控制信号。

(2 )模块接口

信号名

方向

描述

代码

jump

输出

跳转指令

RegDst

输出

选择寄存器的数据来源

Branch

输出

分支指令

MemR

输出

数据寄存器的写使能信号

Mem2R

输出

写入寄存器

MemW

输出

写入数据存储器

RegW

输出

写入寄存器

Alusrc

输出

ALU第二个操作数的来源

ExtOp

输出

拓展信号

Aluctrl

输出

ALU控制信号

OpCode

输入

操作码

funct

输入

指令的funct字段

2.9 Mips(模型机)

(1)功能描述

用于将各功能模块连接成一个整体单周期CPU。

(2 )模块接口

信号名

方向

描述

代码

Clk

输入

时钟信号

Reset

输入

复位信号

 

3.1测试文件  

测试程序

测试机器码

3.2 测试结果分析 3.2.1 lui $1,0x1000指令

    该指令的仿真结果如下图所示,该指令的功能是将0x1000送入$1寄存器,指令的执行结果$1寄存器的值是0x10000000,仿真结果与指令的预期结果是一致的,说明该指令设计正确。

 

3.2.2 ori $1,$1,0x2211指令

    该指令的仿真结果如下图所示,该指令的功能是将$1寄存器与数0x2211进行“或”运算,指令的执行结果$1寄存器的值是0x00002211,仿真结果与指令的预期结果是一致的,说明该指令设计正确。

 



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有