1. Trang chủ
  2. » Kỹ Thuật - Công Nghệ

The mini mips verilog code and the test bench

22 907 0
Tài liệu được quét OCR, nội dung có thể không chính xác

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 22
Dung lượng 84,44 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

The mini mips verilog code and the test bench

Trang 1

THE MINI-MIPS VERILOG CODE AND THE TEST-BENCH

module top(

input clk, reset,

output [31:0] WriteData,DataAdr,

output MemWrite);

wire [31:0] Pcnext, Instr, Readdata;

// instantiate processor and memories

mips mips (clk,reset,Instr,Readdata,Pcnext,DataAdr,WriteData,MemWrite);

instructmem instructmem (Pcnext[7:2],Instr);

datamem datamem (clk,MemWrite,DataAdr,WriteData,Readdata);

Trang 2

Verilog: Mips

module mips(

input clk,reset, input [31:0] InstrF,ReaddataM,

output [31:0] PcnextFD,

output [31:0] ALUoutM,WriteDataM, output MemWriteM);

endmodule

Trang 3

output [1:0] RegDstE, output [1:0] jumpD, output PcSrcM);

flopr register (clk,reset,

{RegWriteE,MemtoRegE,MemWriteE,BegE,BneE}, {RegWriteM,MemtoRegM,MemWriteM,BeqM,BneM});

flopr registerW_ (clk,reset,

{RegWriteM,MemtoRegM), {RegWriteW,MemtoRegW});

endmodule

Trang 4

.MemtoRegW(MemtoRegw), RegWriteW(RegWriteW), jumpD(jumpD),

.ALUSrcE(ALUSrcE), RegDstE(RegDstE));

Trang 9

mux4 muxALUSrcE_ (WriteDataE,SignImmE,{InstrD[16:0],16'b00},32'b00,ALUSrcE,SrcBE);

mux4 muxRegDstE_ (rtE,rdE,5'b11111,4'b0000,RegDstE,WriteRegE);

mux2 muxMemtoRegW (ALUoutW,ReaddataW,MemtoRegW,ResultW);

//register file (operates in Decode and WriteBack)

registerfile rf (clk,RegWriteW,InstrD[25:21],InstrD[20:16],WriteRegW,MuxResultD,SrcAD,WriteDataD);

Trang 10

//Fetch stage Logic

flopr PcReg (clk,reset,PcnextbarFD,PcnextFD);

adder PcAdd1 (PcnextFD,32'b100,PcPlus4F);

//Decode stage

assign opcodeD = InstrD[31:26];

assign functD = InstrD[5:0];

flopr 12D (clk,reset,InstrF,InstrD[31:0]);

Signext se (InstrD[15:0],SignExD);

//Execute stage

flopr rE (clk, reset, SrcAD,SrcAE);

flopr r2E (clk, reset, WriteDataD, WriteDataE);

flopr r3E (clk, reset, InstrD[20:16],rtE);

flopr r4E (clk, reset, InstrD[15:11],rdE);

flopr r5E (clk, reset, SignExD,SignimmE);

flopr r6E (clk, reset, PcPlus4D,PcPlus4E);

adder pcadd2 (SignimmshE,PcPlus4E,PcBranchE);

flopr r1W (clk, reset, ALUoutM, ALUoutW);

flopr r2W (clk, reset, ReaddataM,ReaddataW);

flopr r3W (clk, reset, WriteRegM, WriteRegW);

endmodule

Trang 11

4'b0010: Result <= SrcA+SrcB; //add

4'b1001: Result <=~ (SrcA|SrcB); //nor

4'b1010: Result <= SrcA-SrcB; //sub

Trang 12

.ALUcontrol(ALUcontrol), Result(Result),

Trang 13

Verilog: Resettable Flip-Flop

module flopr #(parameter width = 8) //Resettable register

Trang 14

Verilog: Multiplexer 2 inputs

module mux2 #(parameter width = 8)

-S(S), -Y(y));

Trang 15

Verilog: Multiplexer 4 inputs

module mux4 #(parameter width = 8)

-S(S), V(V));

Trang 16

// three port register file

// read two ports combinationally

// write third port on rising edge of clock

// register O hardwired to 0

always @ (posedge clk)

if (we3) rf[wa3] <= wd3;

assign rd1 = (ral != 0) ? rf[ra1] : 0;

assign rd2 = (ra2 != 0) ? rf[ra2] : 0;

endmodule

Trang 22

// \Instantiate the Unit Under Test (UUT)

Ngày đăng: 29/04/2014, 16:42

TỪ KHÓA LIÊN QUAN