Verilog中的流水线MIPS处理器(第1部分)

此项目是Verilog中的流水线MIPS处理器(第1部分)。上次,发布了一个用于16位单周期MIPS处理器的Verilog代码,并且多次要求提供一个32位5级流水线MIPS处理器的Verilog代码。 单周期MIPS的第一个问题是浪费每个时钟周期仅使用每个功能单元一次的区域。 另一个严重的缺点是时钟周期由处理器中可能的最长路径确定。 因此,流水线式MIPS通过在一个时钟周期内利用大多数功能单元并通过增加指令吞吐量来提高性能来解决这些问题。

应用介绍

此项目是Verilog中的流水线MIPS处理器(第1部分)。

上次,发布了一个用于16位单周期MIPS处理器的Verilog代码,并且多次要求提供一个32位5级流水线MIPS处理器的Verilog代码。 单周期MIPS的第一个问题是浪费每个时钟周期仅使用每个功能单元一次的区域。 另一个严重的缺点是时钟周期由处理器中可能的最长路径确定。 因此,流水线式MIPS通过在一个时钟周期内利用大多数功能单元并通过增加指令吞吐量来提高性能来解决这些问题。 但是,流水线式MIPS还面临控制和数据危害等挑战。现将在Verilog中设计和实现32位5级流水线MIPS处理器。还提供用于解决危险的特殊模块(例如转发单元,冲洗控制单元和失速控制单元)的Verilog代码。 32位流水线式MIPS处理器的Verilog代码主要通过使用结构建模来完成。

这个项目很长,因此将其分为3部分(第1部分,第2部分和第3部分)。

附件文件包括:MIPS处理器的指令集、指令存储器的Verilog代码、32位加法器的Verilog代码、注册文件的Verilog代码。

本人在下方展示了指令存储器的Verilog代码;如想了解的更多请下载附件。

/* Instruction memory module.  Change the $readmemb line to have the name of the program you want to load */
// fpga4student.com: FPGA projects, Verilog Projects, VHDL projects
// Verilog project: 32-bit 5-stage Pipelined MIPS Processor in Verilog 
// Instruction memory module
`timescale 1 ps / 100 fs
module InstructionMem(instruction, address);
input [31:0] address;
output [31:0] instruction;
reg [31:0]instrmem[1023:0];
reg [31:0] temp;
buf #1000 buf0(instruction[0],temp[0]),
   buf1(instruction[1],temp[1]),
   buf2(instruction[2],temp[2]),
   buf3(instruction[3],temp[3]),
   buf4(instruction[4],temp[4]),
   buf5(instruction[5],temp[5]),
   buf6(instruction[6],temp[6]),
   buf7(instruction[7],temp[7]),
   buf8(instruction[8],temp[8]),
   buf9(instruction[9],temp[9]),
   buf10(instruction[10],temp[10]),
   buf11(instruction[11],temp[11]),
   buf12(instruction[12],temp[12]),
   buf13(instruction[13],temp[13]),
   buf14(instruction[14],temp[14]),
   buf15(instruction[15],temp[15]),
   buf16(instruction[16],temp[16]),
   buf17(instruction[17],temp[17]),
   buf18(instruction[18],temp[18]),
   buf19(instruction[19],temp[19]),
   buf20(instruction[20],temp[20]),
   buf21(instruction[21],temp[21]),
   buf22(instruction[22],temp[22]),
   buf23(instruction[23],temp[23]),
   buf24(instruction[24],temp[24]),
   buf25(instruction[25],temp[25]),
   buf26(instruction[26],temp[26]),
   buf27(instruction[27],temp[27]),
   buf28(instruction[28],temp[28]),
   buf29(instruction[29],temp[29]),
   buf30(instruction[30],temp[30]),
   buf31(instruction[31],temp[31]);
always @(address)
begin
 temp=instrmem[address/4];
end
initial
begin
$readmemb("instr.txt", instrmem);
end
endmodule

module instrmemstimulous();
reg [31:0] addr;
wire [31:0] instr;
InstructionMem instructionmemory(instr, addr);
initial
begin
$monitor("Mem Address=%h instruction=%b",addr,instr);
addr=32'd0;
#10000 addr=32'd4;
#10000 addr=32'd8;
#10000 addr=32'd12;
#10000 addr=32'd16;
#10000 addr=32'd20;
#10000 addr=32'd24;
#10000 addr=32'd28;
#10000;
$finish;
end
endmodule

文件列表(部分)

名称 大小 修改日期
Verilog中的流水线MIPS处理器(第1部分)附件.txt4.08 KB2020-04-01

立即下载

相关下载

[Verilog中的流水线MIPS处理器(第3部分)] 此项目是Verilog中的流水线MIPS处理器(第3部分)。该项目将展示32位流水线MIPS处理器的Verilog代码。 在第2部分中,我介绍了单周期MIPS数据路径的所有Verilog代码。在这一部分中,添加了流水线寄存器以完成流水线MIPS处理器。 将提供完整的32位流水线MIPS处理器的Verilog代码。在将流水线寄存器,转发单元,停顿控制单元和刷新控制单元添加到单周期数据路径后,转发,停转控制和冲洗控制单元旨在解决流水线MIPS处理器中的数据并控制危害。
[Verilog中的流水线MIPS处理器(第1部分)] 此项目是Verilog中的流水线MIPS处理器(第1部分)。上次,发布了一个用于16位单周期MIPS处理器的Verilog代码,并且多次要求提供一个32位5级流水线MIPS处理器的Verilog代码。 单周期MIPS的第一个问题是浪费每个时钟周期仅使用每个功能单元一次的区域。 另一个严重的缺点是时钟周期由处理器中可能的最长路径确定。 因此,流水线式MIPS通过在一个时钟周期内利用大多数功能单元并通过增加指令吞吐量来提高性能来解决这些问题。
[用于16位单周期MIPS处理器的Verilog代码] 此项目是用于16位单周期MIPS处理器的Verilog代码。在此项目中,Verilog HDL中实现了16位单周期MIPS处理器。 MIPS是一种RISC处理器,在许多大学中,与计算机组织和体系结构相关的学术课程广泛使用了MIPS。在完成MIPS处理器的设计之后,可以很容易地为MIPS处理器编写Verilog代码。想了解更多请下载附件。

评论列表 共有 0 条评论

暂无评论

微信捐赠

微信扫一扫体验

立即
上传
发表
评论
返回
顶部