多周期流水处理器MIPS架构的CPU设计Verilog代码ISE仿真
名称:多周期流水处理器MIPS架构的CPU设计Verilog代码ISE仿真
软件:ISE
语言:Verilog
代码功能:
1. 设计一个基于MIPS架构的基本CPU,并能下载到FPGA上。利用所设计的CPU能够执行相应的程序,并能返回正确结果。
2. 扩展完成以下内容:设计深度为5流水线CPU。 5个流水段分别命名为IF(取指),ID(指令译码),EXE(执行),MEM(访存)和WB(回写)。
3. 当指令采用流水线技术行执行时候可能会产生相关和冲突。请采取简单方式合理解决冲突。
FPGA代码Verilog/VHDL代码资源下载:www.hdlcode.com
演示视频:
设计文档:
基于FPGA的MIPS架构的CPU设计
一、要求:
(1)设计一个基于MIPS架构的基本CPU,并能下载到FPGA上。利用所设计的CPU能够执行相应的程序,并能返回正确结果。
(2)扩展完成以下内容:设计深度为5流水线CPU。5个流水段分别命名为IF(取指),ID(指令译码),EXE(执行),MEM(访存)和WB(回写)。
(3)当指令采用流水线技术行执行时候可能会产生相关和冲突。请采取简单方式合理解决冲突。
二、实验目的:
理解和掌握5级流水线CPU的设计。
三、开发环境与工具:
1、Win 8.1
2、Xilinx ISE 14.7
3、FPGA Anvyl
四、实验过程:
(1)设计原理图:

(2)指令设计:
实验中共涉及三种类型的MIPS指令,分别为R型、I型和J型,三种类型的MIPS指令格式定义如下:
● R(register)类型的指令从寄存器堆中读取两个源操作数,计算结果写回寄存器堆;
● I(immediate)类型的指令使用一个 16位的立即数作为一个源操作数;
● J(jump)类型的指令使用一个 26位立即数作为跳转的目标地址(target address);
图:MIPS指令集三种类型
由从MIPS指令集中选择的一些常用指令构成的MIPS-C指令集。MIPS-C可以支持除浮点运算外的绝大多数定点类程序的运行,并且提供了包括CP0、异常处理等指令,可以支持简单的操作系统运行。 MIPS-C指令集共包括55条指令。从更细致的功能角度,MIPS-C被划分为11个子类。
在完成指令设计过程中,参考了MIPS-C指令集,最后选取了35条进行实现,各类均有涉及。
1.Lw:加载字:

2. Addu:无符号加

3.Subu:无符号减

4.and:与

5.or: 或

6.Slt: 小于置1(有符号)

7.Div: 符号除

8.add:符号加

9.sub: 符号减

10.addi:符号加立即数

11.addiu:无符号加立即数

12. Jump :跳转

13. mulu : 无符号乘

14. divu :无符号除

15.Mult:符号乘

16. Sllv:逻辑可变左移

17.Srav: 算数可变右移

18.Xor:异或

19. Ori:或立即数

20.Slti:小于立即数置1(有符号)

21.And: 与立即数

22.Xori: 异或立即数

23. Sltu: 小于置1(无符号)

24. Sltiu:小于立即数置1(无符号)

25. Sll:逻辑左移

26.Srl:逻辑右移

27.Srlv: 逻辑可变右移

28.Srav : 算数可变右移

29.Sra:算数右移

30.beq: 相等时转移

31.bne : 不等于时转移

32.bgez:大于等于0时转移

33.bgtz: 大于0时转移

34.blez: 小于等于0时转移

35.bltz: 小于0时转移

(3)模块定义(详见代码):
模块设计过程中,
1)CPU控制器的实现:

2)ALU的实现:

3)Instruction memory的实现

4)Data Memory的实现

5)Register的实现

6)有符号扩展的实现

7)top文件
将以上几个模块联系在一起,实现5级流水线CPU。
(4) 冲突解决设计方案:
在ID段进行判断,针对不同指令,判断此时所需数据是否到达,如果有继续执行,否则加入停顿。
五、实验结果:
(1)模拟仿真

(2)下载验证:



部分代码展示:
`timescale 1ns / 1ps ////////////////////////////////////////////////////////////////////////////////// // Company: // Engineer: // // Create Date: 16:47:50 07/01/2015 // Design Name: // Module Name: Ctr // Project Name: // Target Devices: // Tool versions: // Description: // // Dependencies: // // Revision: // Revision 0.01 - File Created // Additional Comments: // ////////////////////////////////////////////////////////////////////////////////// module Ctr( input [5:0] OpCode, input [5:0] Funct, output reg RegDst, output reg ALUSrc, output reg RegWrite, output reg MemWrite, output reg MemRead, output reg MemtoReg, output reg Branch, output reg Jump, output reg [3:0] ALUControl ); reg[1:0] ALUOp; always @(OpCode) begin case(OpCode) // R-format 6'b000000: begin RegDst = 1; ALUSrc = 0; MemtoReg = 0; RegWrite = 1; MemRead = 0; MemWrite = 0; Branch = 0; ALUOp = 2'b10; Jump = 0; end // lw 6'b100011: begin RegDst = 0; ALUSrc = 1; MemtoReg = 1; RegWrite = 1; MemRead = 1; MemWrite = 0; Branch = 0; ALUOp = 2'b00; Jump = 0; end // sw 6'b101011: begin RegDst = 1'bx; ALUSrc = 1; MemtoReg = 1'bx; RegWrite = 0; MemRead = 0; MemWrite = 1; Branch = 0; ALUOp = 2'b00; Jump = 0; end // beq 6'b000100: begin RegDst = 1'bx; ALUSrc = 0; MemtoReg = 1'bx; RegWrite = 0;
代码文件(付费下载):
![]()
2、支付问题请联系微信公众号客服。
3、优质Verilog/VHDL代码资源,所见即所得。
Verilog/VHDL资源下载 » 多周期流水处理器MIPS架构的CPU设计Verilog代码ISE仿真
发表评论
模板文件不存在: ./template/plugins/comment/pc/index.htm