bao cao lab1

Upload: anh-minh-nguyen-duc

Post on 09-Feb-2018

234 views

Category:

Documents


0 download

TRANSCRIPT

  • 7/22/2019 Bao Cao Lab1

    1/34

    Lab 1 Cu trc my tnh MIPS_Register File

    Nhm 14A 08DT1 1

    LAB 1 : MIPS 32 by 32 REGISTER FILE1. Yu cu thit k:- Thit k 1 b MIPS 32 by 32 Register dng Verilog HDL.- Yu cu:

    + Dng cu trc lnh structural+ Cc cng logic khng c qu 4 ng vo+ Delay 50ps

    2. Gii thiu file thanh ghi:Cu to 1 file thanh ghi bao gm:+ 32 thanh ghi 32 bit, ring thanh ghi u tin( Reg0) th lun mang gi tr 0.+ C 2 ng vo chn thanh ghi c (Read Register 1 v Read Register 2) v 2 ng

    ra d liu (Read Data 1 v Dead Data 2) khi c file thanh ghi+ C 1 ng vo chn thanh ghi ghi d liu (Write register) , 1 ng vo cho php

    ghi (RegWrite) v1 ng vo d liu (Write Data) khi ghi vo file thanh ghi.

    S khi:

  • 7/22/2019 Bao Cao Lab1

    2/34

    Lab 1 Cu trc my tnh MIPS_Register File

    Nhm 14A 08DT1 2

    S chi tit:

    3. Ni dung thit k:-

    T s chi tit cho thy, thit k 1 file thanh ghi yu cu:+ 32 thanh ghi c cu to t cc DFF+ 1 b gii m 5:12 iu khin ghi d liu+ 2 b multiplexor 32x32 to 32

  • 7/22/2019 Bao Cao Lab1

    3/34

    Lab 1 Cu trc my tnh MIPS_Register File

    Nhm 14A 08DT1 3

    3.1Thit k b gii m 5:12- Yu cu ca khi mch cn thit k l xut ra tn hiu iu khin ghi d liu

    vo cc thanh ghi, vi u vo l 5 bits chn thanh ghi, v tn hiu iu khin ghiRegWrite.

    - thit k b gii m 5:12, ta xy dng t cc b gii m 2:4 v 3:8a) Mch gii m 2:4:

    Code Verilog:

    /*bo giai ma 2:4 */

    module decoder2to4(out,in,en);

    output [3:0]out;

    input [1:0]in;

    input en;

    wire [1:0]outnot;//ngo ra cong not

    not #50 not1(outnot[0],in[0]);

    not #50 not2(outnot[1],in[1]);

    and #50 and1(out[0],en,outnot[0],outnot[1]);

    and #50 and2(out[1],en,in[0],outnot[1]);

    and #50 and3(out[2],en,outnot[0],in[1]);and #50 and4(out[3],en,in[0],in[1]);

    endmodule

  • 7/22/2019 Bao Cao Lab1

    4/34

    Lab 1 Cu trc my tnh MIPS_Register File

    Nhm 14A 08DT1 4

    - Kt qu m phng trn Quartus:

    b) Mch gii m 3:8

    Code Verilog/* bo giai ma 3:8 */

    module decoder3to8(out,in,en);

    output [7:0]out;

    input [2:0]in;

    input en;

    wire [2:0]outnot;

  • 7/22/2019 Bao Cao Lab1

    5/34

    Lab 1 Cu trc my tnh MIPS_Register File

    Nhm 14A 08DT1 5

    not #50 not1(outnot[0],in[0]);

    not #50 not2(outnot[1],in[1]);

    not #50 not3(outnot[2],in[2]);

    and #50 and1(out[0],en,outnot[0],outnot[1],outnot[2]);

    and #50 and2(out[1],en,in[0],outnot[1],outnot[2]);

    and #50 and3(out[2],en,outnot[0],in[1],outnot[2]);and #50 and4(out[3],en,in[0],in[1],outnot[2]);

    and #50 and5(out[4],en,outnot[0],outnot[1],in[2]);

    and #50 and6(out[5],en,in[0],outnot[1],in[2]);

    and #50 and7(out[6],en,outnot[0],in[1],in[2]);

    and #50 and8(out[7],en,in[0],in[1],in[2]);

    endmodule

    - Kt qu m phng trn Quartus:

  • 7/22/2019 Bao Cao Lab1

    6/34

    Lab 1 Cu trc my tnh MIPS_Register File

    Nhm 14A 08DT1 6

    c) Mch gii m 5:32:

    - Ghp cc b gii m 2:4 v 3:8

  • 7/22/2019 Bao Cao Lab1

    7/34

    Lab 1 Cu trc my tnh MIPS_Register File

    Nhm 14A 08DT1 7

    Code Verilog:/* bo giai ma 5:32 */

    module decoder5to32(out, writereg, regwrite);

    output [31:0]out;// 32 bit dau ra, 1 bit cao, cac bit con lai

    thap

    input [4:0]writereg;//5 bit ngo vao Write register, chon thanh

    ghi ghi du lieu

    input regwrite;// ngo vao cho phep ghi

    wire [3:0]todec3_8;//ngo ra bo giai ma 2:4, ngo vao enable cac bo

    giai ma 3:8

    decoder2to4 decode1(todec3_8,writereg[4:3],regwrite);//dau vao la

    bit thu 1 va thu 2

    decoder3to8 decode2(out[7:0],writereg[2:0],todec3_8[0]);

    decoder3to8 decode3(out[15:8],writereg[2:0],todec3_8[1]);

    decoder3to8 decode4(out[23:16],writereg[2:0],todec3_8[2]);

    decoder3to8 decode5(out[31:24],writereg[2:0],todec3_8[3]);endmodule

    - Kt qu m phng trn Quartus:

  • 7/22/2019 Bao Cao Lab1

    8/34

    Lab 1 Cu trc my tnh MIPS_Register File

    Nhm 14A 08DT1 8

    3.2Thit k 1 thanh ghi 32 bit:- Theo cu trc ca file thanh ghi ta thit k th n bao gm 32 thanh ghi, m

    mi thanh ghi l gm 32 bit, mi bit li c to bi 1 DFF. Do ta phi tri qua ccbc sau:

    + Xy dng 1 bit t DFF.

    + Xy dng 1 thanh ghi 32 bit t 32 DFF.

    a) Xy dng 1 bit t DFF:

    - Bng trng thi:

    - Phng trnh logic ca DFF : Qn+1= DnCode Verilog thc hin 1 DFF:

    module D_FF (q, d, reset, clk);

    output q;

    input d, reset, clk;

    reg q; // Indicate that q is stateholding

    always @(posedge clk or posedge reset)

    if (reset)

    q = 0; // On reset, set to 0

    elseq = d; // Otherwise out = d

    endmodule

    Dn Qn+1

    01

    01

  • 7/22/2019 Bao Cao Lab1

    9/34

    Lab 1 Cu trc my tnh MIPS_Register File

    Nhm 14A 08DT1 9

    - T DFF, ta xy dng 1 bit thanh ghi vi 2 ng vo Enable v WriteData:

    Code Verilog thc hin 1 bit thanh ghi:

    /*Tao 1 bit thanh ghi tu 1 D_Flipflop*/

    module Regbit(BitOut, DataIn,En, clk,reset);

    output BitOut; // 1 bit cua thanh ghi

    input DataIn, En;input clk,reset;

    wire d,f1, f2; // ngo vao D Flip-Flop

    // bo multiplexor 2to1 dieu khien ghi 1 bit

    and #50 and1(f1, BitOut, (~En));

    and #50 and2(f2, DataIn, En);

    or #50 or1(d, f1, f2);

    D_FF DFF0(BitOut, d, reset, clk);

    endmodule

    - Kt qu m phng trn Quartus:

    b) Xy dng mt thanh ghi 32 bit:- trn ta thc hin to 1 bit ca thanh ghi, do ch cn dng module trn to ra

    32 i tng ri ghp li ta c 1 thanh ghi 32 bits:

  • 7/22/2019 Bao Cao Lab1

    10/34

    Lab 1 Cu trc my tnh MIPS_Register File

    Nhm 14A 08DT1 10

    Code Verilog:

    /************Thiet ke 1 thanh ghi 32 bit****************/

    module Reg32(WriteEnable,

    WriteData,d_out0,d_out1,d_out2,d_out3,d_out4,

    d_out5,d_out6,d_out7,d_out8,d_out9,

    d_out10,d_out11,d_out12,d_out13,d_out14,

    d_out15,d_out16,d_out17,d_out18,d_out19,

    d_out20,d_out21,d_out22,d_out23,d_out24,

    d_out25,d_out26,d_out27,d_out28,d_out29,d_out30,d_out31,clk);

    input WriteEnable, clk;

    input [31:0] WriteData;

    output d_out0,d_out1,d_out2,d_out3,d_out4,d_out5,d_out6,d_out7,d_out8,d_out9,

    d_out10,d_out11,d_out12,d_out13,d_out14,

    d_out15,d_out16,d_out17,d_out18,d_out19,

    d_out20,d_out21,d_out22,d_out23,d_out24,

    d_out25,d_out26,d_out27,d_out28,d_out29,d_out30,d_out31;

    Regbit Bit0 (d_out0,WriteData[0],WriteEnable,clk);

  • 7/22/2019 Bao Cao Lab1

    11/34

    Lab 1 Cu trc my tnh MIPS_Register File

    Nhm 14A 08DT1 11

    Regbit Bit1 (d_out1,WriteData[1],WriteEnable,clk);

    Regbit Bit2 (d_out2,WriteData[2],WriteEnable,clk);

    Regbit Bit3 (d_out3,WriteData[3],WriteEnable,clk);

    Regbit Bit4 (d_out4,WriteData[4],WriteEnable,clk);

    Regbit Bit5 (d_out5,WriteData[5],WriteEnable,clk);

    Regbit Bit6 (d_out6,WriteData[6],WriteEnable,clk);

    Regbit Bit7 (d_out7,WriteData[7],WriteEnable,clk);Regbit Bit8 (d_out8,WriteData[8],WriteEnable,clk);

    Regbit Bit9 (d_out9,WriteData[9],WriteEnable,clk);

    Regbit Bit10 (d_out10,WriteData[10],WriteEnable,clk);

    Regbit Bit11 (d_out11,WriteData[11],WriteEnable,clk);

    Regbit Bit12 (d_out12,WriteData[12],WriteEnable,clk);

    Regbit Bit13 (d_out13,WriteData[13],WriteEnable,clk);

    Regbit Bit14 (d_out14,WriteData[14],WriteEnable,clk);

    Regbit Bit15 (d_out15,WriteData[15],WriteEnable,clk);

    Regbit Bit16 (d_out16,WriteData[16],WriteEnable,clk);

    Regbit Bit17 (d_out17,WriteData[17],WriteEnable,clk);

    Regbit Bit18 (d_out18,WriteData[18],WriteEnable,clk);Regbit Bit19 (d_out19,WriteData[19],WriteEnable,clk);

    Regbit Bit20 (d_out20,WriteData[20],WriteEnable,clk);

    Regbit Bit21 (d_out21,WriteData[21],WriteEnable,clk);

    Regbit Bit22 (d_out22,WriteData[22],WriteEnable,clk);

    Regbit Bit23 (d_out23,WriteData[23],WriteEnable,clk);

    Regbit Bit24 (d_out24,WriteData[24],WriteEnable,clk);

    Regbit Bit25 (d_out25,WriteData[25],WriteEnable,clk);

    Regbit Bit26 (d_out26,WriteData[26],WriteEnable,clk);

    Regbit Bit27 (d_out27,WriteData[27],WriteEnable,clk);

    Regbit Bit28 (d_out28,WriteData[28],WriteEnable,clk);

    Regbit Bit29 (d_out29,WriteData[29],WriteEnable,clk);

    Regbit Bit30 (d_out30,WriteData[30],WriteEnable,clk);

    Regbit Bit31 (d_out31,WriteData[31],WriteEnable,clk);

    endmodule

    Kt qu m phng trn Quartus

  • 7/22/2019 Bao Cao Lab1

    12/34

    Lab 1 Cu trc my tnh MIPS_Register File

    Nhm 14A 08DT1 12

  • 7/22/2019 Bao Cao Lab1

    13/34

    Lab 1 Cu trc my tnh MIPS_Register File

    Nhm 14A 08DT1 13

    3.3Thit k b multiplexor 32x32 to 32:- BMultiplexor 32x32 to 32c 32 ng d liu u vo, mi ng d liu c 32

    bits. D liu ng raReadDatac 32 bits bng mt trong s cc ng vo. 5 bits caReadRegisters quyt nh ng d liu u vo no s c truyn n u ra.

    - thit k bMultiplexor 32x32 to 32, u tin ta thit k bMultiplexor 32to 1

    a) B multiplexor 32 to 1:- B mux 32 to 1 c xy dng t cc b mux 8 to 1, m mi b mux 8 to 1

    c xy dng t cc b mux 2 to 1 v 4 to 1:

  • 7/22/2019 Bao Cao Lab1

    14/34

    Lab 1 Cu trc my tnh MIPS_Register File

    Nhm 14A 08DT1 14

  • 7/22/2019 Bao Cao Lab1

    15/34

    Lab 1 Cu trc my tnh MIPS_Register File

    Nhm 14A 08DT1 15

    Code Verilog://thiet ke bo mux2_1

    module mux2_1(in,sel,out);

    input [1:0]in;

    input sel;

    output out;

    wire notsel;

    not#50 notsel0(notsel,sel);

    wire [1:0]f;

    and#50 and0(f[0],notsel,in[0]);

    and#50 and1(f[1],sel,in[1]);

    or#50 or0(out,f[0],f[1]);

    endmodule

    //thiet ke bo mux4_1

    module mux4_1(in,sel,out);

    input [3:0]in;input [1:0]sel;

    output out;

    wire [1:0]notsel;

    wire [3:0]f;

    not#50 notsel0(notsel[0],sel[0]);

    not#50 notsel1(notsel[1],sel[1]);

    and#50 and0(f[0],in[0],notsel[0],notsel[1]);

    and#50 and1(f[1],in[1],notsel[0],sel[1]);

    and#50 and2(f[2],in[2],sel[0],notsel[1]);

    and#50 and3(f[3],in[3],sel[0],sel[1]);

    or#50 or0(out,f[0],f[1],f[2],f[3]);endmodule

    //thiet ke mux8_1 gom 2mux4_1 va 1mux2_1

    module mux8_1(in,sel,out);

    input [7:0]in;

    input [2:0]sel;

    output out;

    wire [1:0]f;

    mux4_1 mux0(in[3:0],sel[1:0],f[0]);

    mux4_1 mux1(in[7:4],sel[1:0],f[1]);

    mux2_1 mux2(f[1:0],sel[2],out);

    endmodule

    //thiet ke mux32_1 gom 4mux8_1,1mux4_1

    module mux32_1(in,sel,out);

    input [4:0]sel;

    input [31:0]in;

    output out;

  • 7/22/2019 Bao Cao Lab1

    16/34

    Lab 1 Cu trc my tnh MIPS_Register File

    Nhm 14A 08DT1 16

    wire [3:0]f;

    mux8_1 mux0(in[7:0],sel[2:0],f[0]);

    mux8_1 mux1(in[15:8],sel[2:0],f[1]);

    mux8_1 mux2(in[23:16],sel[2:0],f[2]);

    mux8_1 mux3(in[31:24],sel[2:0],f[3]);

    mux4_1 mux4(f[3:0],sel[4:3],out);endmodule

    - M phng trn Quartus:

  • 7/22/2019 Bao Cao Lab1

    17/34

    Lab 1 Cu trc my tnh MIPS_Register File

    Nhm 14A 08DT1 17

    b) B multiplexor 32x32 to 32:- Sau khi thc hin bMultiplexor 32 to 1 , ta dng 32 bMUX (Multiplexor) 32

    to 1 thc hin bMUX 32x32 to 32 . Cch thc hin nh sau:- Ta xem 32 thanh ghi 32 bit nh mt mng 2 chiu 32x32 bit:

    A[0] A[1] . A[30] A[31]

    Reg0

    Reg1

    Reg30

    Reg31

    - Gi s ta c tn hiu iu khin chn thanh ghiReadRegister= 5b00001 , tcxut d liu thanh ghi s 1 ra ng ra. Ta mun a 32 bits ca Reg1 ra th khng th

    cho chng cng vo 1 bMUX 32 to 1 , thay vo ta dng 32 bMUX 32 to1, uvo mi bMUX 32 to1l 1 ct bit ca bng trn: A[0], A[1] A[31], tn hiu iu

    khin vn dng chung. Qua mi bMUX 32 to 1s thu c 1 bit ca Reg1, c 32 bMUX nh vy th s a c ton b Reg1 ra ng ra.

    Code Verilog:

    module mux32_32(reg0,reg1,reg2,reg3,reg4,reg5,reg6,reg7,reg8,

    reg9,reg10,reg11,reg12,reg13,reg14,reg15,reg16,reg17,reg18,

    reg19,reg20,reg21,reg22,reg23,reg24,reg25,reg26,reg27,reg28,

    reg29,reg30,reg31,sel,readata);

    input [31:0]reg0,reg1,reg2,reg3,reg4,reg5,reg6,reg7,reg8,

    reg9,reg10,reg11,reg12,reg13,reg14,reg15,reg16,reg17,reg18,

    reg19,reg20,reg21,reg22,reg23,reg24,reg25,reg26,reg27,reg28,

    reg29,

    reg30,reg31;

    input [4:0]sel;

    output [31:0]readata;

    mux32_1 r0(reg0,sel,readata[0]);

    mux32_1 r1(reg1,sel,readata[1]);mux32_1 r2(reg2,sel,readata[2]);

    mux32_1 r3(reg3,sel,readata[3]);

    mux32_1 r4(reg4,sel,readata[4]);

    mux32_1 r5(reg5,sel,readata[5]);

    mux32_1 r6(reg6,sel,readata[6]);

    mux32_1 r7(reg7,sel,readata[7]);

    mux32_1 r8(reg8,sel,readata[8]);

  • 7/22/2019 Bao Cao Lab1

    18/34

    Lab 1 Cu trc my tnh MIPS_Register File

    Nhm 14A 08DT1 18

    mux32_1 r9(reg9,sel,readata[9]);

    mux32_1 r10(reg10,sel,readata[10]);

    mux32_1 r11(reg11,sel,readata[11]);

    mux32_1 r12(reg12,sel,readata[12]);

    mux32_1 r13(reg13,sel,readata[13]);

    mux32_1 r14(reg14,sel,readata[14]);

    mux32_1 r15(reg15,sel,readata[15]);

    mux32_1 r16(reg16,sel,readata[16]);

    mux32_1 r17(reg17,sel,readata[17]);

    mux32_1 r18(reg18,sel,readata[18]);

    mux32_1 r19(reg19,sel,readata[19]);

    mux32_1 r20(reg20,sel,readata[20]);

    mux32_1 r21(reg21,sel,readata[21]);

    mux32_1 r22(reg22,sel,readata[22]);

    mux32_1 r23(reg23,sel,readata[23]);

    mux32_1 r24(reg24,sel,readata[24]);

    mux32_1 r25(reg25,sel,readata[25]);mux32_1 r26(reg26,sel,readata[26]);

    mux32_1 r27(reg27,sel,readata[27]);

    mux32_1 r28(reg28,sel,readata[28]);

    mux32_1 r29(reg29,sel,readata[29]);

    mux32_1 r30(reg30,sel,readata[30]);

    mux32_1 r31(reg31,sel,readata[31]);

    endmodule

    -Kt qu m phng trn Quartus:

  • 7/22/2019 Bao Cao Lab1

    19/34

    Lab 1 Cu trc my tnh MIPS_Register File

    Nhm 14A 08DT1 19

  • 7/22/2019 Bao Cao Lab1

    20/34

    Lab 1 Cu trc my tnh MIPS_Register File

    Nhm 14A 08DT1 20

    3.4 Xy dng b 32 thanh ghi 32 bit:- Kt hp cc module vit cc phn trc li, ta xy dng c 1 b thanh

    ghi vi cu trc, chc nng nh gii thiu

    Code Verilog:

    /*==========================FILE REGISTER==================*/

    /*thiet ke 32 thanh ghi*/

    module

    regfile(ReadData1,ReadData2,WriteData,ReadRegister1,ReadRegister2,Wr

    iteRegister,RegWrite,clk);

    output [31:0]ReadData1,ReadData2;

    input [31:0]WriteData;

    input [4:0]WriteRegister,ReadRegister1,ReadRegister2;

    input RegWrite,clk;

    wire [31:0]

    W0,W1,W2,W3,W4,W5,W6,W7,W8,W9,W10,W11,W12,W13,W14,W15,W16,W17,W18,W1

    9,W20,W21,W22,W23,W24,W25,W26,W27,W28,W29,W30,W31;

    // Wn: tat ca bit thu n cua 32 thanh ghi

    wire [31:0] decode_out;

    wire [31:0]

    WREG0,WREG1,WREG2,WREG3,WREG4,WREG5,WREG6,WREG7,WREG8,WREG9,WREG10,W

    REG11,WREG12,WREG13,WREG14,WREG15,WREG16,WREG17,WREG18,

    WREG19,WREG20,WREG21,WREG22,WREG23,WREG24,WREG25,WREG26,WREG27

    ,WREG28,WREG29,WREG30,WREG31;

    // WREG : thanh ghi

    assign

    WREG0={W31[0],W30[0],W29[0],W28[0],W27[0],W26[0],W25[0],W24[0],W23[0

    ],W22[0],W21[0],W20[0],W19[0],W18[0],W17[0],W16[0],W15[0],W14[0],

    W13[0],W12[0],W11[0],W10[0],W9[0],W8[0],W7[0],W6[0],W5[0],W4[0

    ],W3[0],W2[0],W1[0],W0[0]};

    assign

    WREG1={W31[1],W30[1],W29[1],W28[1],W27[1],W26[1],W25[1],W24[1],W23[1

    ],W22[1],W21[1],W20[1],W19[1],W18[1],W17[1],W16[1],W15[1],W14[1],

    W13[1],W12[1],W11[1],W10[1],W9[1],W8[1],W7[1],W6[1],W5[1],W4[1],W3[1],W2[1],W1[1],W0[1]};

    assign

    WREG2={W31[2],W30[2],W29[2],W28[2],W27[2],W26[2],W25[2],W24[2],W23[2

    ],W22[2],W21[2],W20[2],W19[2],W18[2],W17[2],W16[2],W15[2],W14[2],

  • 7/22/2019 Bao Cao Lab1

    21/34

    Lab 1 Cu trc my tnh MIPS_Register File

    Nhm 14A 08DT1 21

    W13[2],W12[2],W11[2],W10[2],W9[2],W8[2],W7[2],W6[2],W5[2],W4[2

    ],W3[2],W2[2],W1[2],W0[2]};

    assign

    WREG3={W31[3],W30[3],W29[3],W28[3],W27[3],W26[3],W25[3],W24[3],W23[3

    ],W22[3],W21[3],W20[3],W19[3],W18[3],W17[3],W16[3],W15[3],W14[3],

    W13[3],W12[3],W11[3],W10[3],W9[3],W8[3],W7[3],W6[3],W5[3],W4[3

    ],W3[3],W2[3],W1[3],W0[3]};

    assign

    WREG4={W31[4],W30[4],W29[4],W28[4],W27[4],W26[4],W25[4],W24[4],W23[4

    ],W22[4],W21[4],W20[4],W19[4],W18[4],W17[4],W16[4],W15[4],W14[4],

    W13[4],W12[4],W11[4],W10[4],W9[4],W8[4],W7[4],W6[4],W5[4],W4[4

    ],W3[4],W2[4],W1[4],W0[4]};

    assign

    WREG5={W31[5],W30[5],W29[5],W28[5],W27[5],W26[5],W25[5],W24[5],W23[5

    ],W22[5],W21[5],W20[5],W19[5],W18[5],W17[5],W16[5],W15[5],W14[5],

    W13[5],W12[5],W11[5],W10[5],W9[5],W8[5],W7[5],W6[5],W5[5],W4[5

    ],W3[5],W2[5],W1[5],W0[5]};

    assign

    WREG6={W31[6],W30[6],W29[6],W28[6],W27[6],W26[6],W25[6],W24[6],W23[6

    ],W22[6],W21[6],W20[6],W19[6],W18[6],W17[6],W16[6],W15[6],W14[6],

    W13[6],W12[6],W11[6],W10[6],W9[6],W8[6],W7[6],W6[6],W5[6],W4[6

    ],W3[6],W2[6],W1[6],W0[6]};

    assign

    WREG7={W31[7],W30[7],W29[7],W28[7],W27[7],W26[7],W25[7],W24[7],W23[7

    ],W22[7],W21[7],W20[7],W19[7],W18[7],W17[7],W16[7],W15[7],W14[7],

    W13[7],W12[7],W11[7],W10[7],W9[7],W8[7],W7[7],W6[7],W5[7],W4[7

    ],W3[7],W2[7],W1[7],W0[7]};

    assignWREG8={W31[8],W30[8],W29[8],W28[8],W27[8],W26[8],W25[8],W24[8],W23[8

    ],W22[8],W21[8],W20[8],W19[8],W18[8],W17[8],W16[8],W15[8],W14[8],

    W13[8],W12[8],W11[8],W10[8],W9[8],W8[8],W7[8],W6[8],W5[8],W4[8

    ],W3[8],W2[8],W1[8],W0[8]};

  • 7/22/2019 Bao Cao Lab1

    22/34

    Lab 1 Cu trc my tnh MIPS_Register File

    Nhm 14A 08DT1 22

    assign

    WREG9={W31[9],W30[9],W29[9],W28[9],W27[9],W26[9],W25[9],W24[9],W23[9

    ],W22[9],W21[9],W20[9],W19[9],W18[9],W17[9],W16[9],W15[9],W14[9],

    W13[9],W12[9],W11[9],W10[9],W9[9],W8[9],W7[9],W6[9],W5[9],W4[9

    ],W3[9],W2[9],W1[9],W0[9]};

    assign

    WREG10={W31[10],W30[10],W29[10],W28[10],W27[10],W26[10],W25[10],W24[

    10],W23[10],W22[10],W21[10],W20[10],W19[10],W18[10],W17[10],W16[10],

    W15[10],W14[10],

    W13[10],W12[10],W11[10],W10[10],W9[10],W8[10],W7[10],W6[10],W5

    [10],W4[10],W3[10],W2[10],W1[10],W0[10]};

    assign

    WREG11={W31[11],W30[11],W29[11],W28[11],W27[11],W26[11],W25[11],W24[11],W23[11],W22[11],W21[11],W20[11],W19[11],W18[11],W17[11],W16[11],

    W15[11],W14[11],

    W13[11],W12[11],W11[11],W10[11],W9[11],W8[11],W7[11],W6[11],W5

    [11],W4[11],W3[11],W2[11],W1[11],W0[11]};

    assign

    WREG12={W31[12],W30[12],W29[12],W28[12],W27[12],W26[12],W25[12],W24[

    12],W23[12],W22[12],W21[12],W20[12],W19[12],W18[12],W17[12],W16[12],

    W15[12],W14[12],

    W13[12],W12[12],W11[12],W10[12],W9[12],W8[12],W7[12],W6[12],W5

    [12],W4[12],W3[12],W2[12],W1[12],W0[12]};

    assign

    WREG13={W31[13],W30[13],W29[13],W28[13],W27[13],W26[13],W25[13],W24[

    13],W23[13],W22[13],W21[13],W20[13],W19[13],W18[13],W17[13],W16[13],

    W15[13],W14[13],

    W13[13],W12[13],W11[13],W10[13],W9[13],W8[13],W7[13],W6[13],W5

    [13],W4[13],W3[13],W2[13],W1[13],W0[13]};

    assign

    WREG14={W31[14],W30[14],W29[14],W28[14],W27[14],W26[14],W25[14],W24[

    14],W23[14],W22[14],W21[14],W20[14],W19[14],W18[14],W17[14],W16[14],

    W15[14],W14[14],

    W13[14],W12[14],W11[14],W10[14],W9[14],W8[14],W7[14],W6[14],W5

    [14],W4[14],W3[14],W2[14],W1[14],W0[14]};

  • 7/22/2019 Bao Cao Lab1

    23/34

    Lab 1 Cu trc my tnh MIPS_Register File

    Nhm 14A 08DT1 23

    assign

    WREG15={W31[15],W30[15],W29[15],W28[15],W27[15],W26[15],W25[15],W24[

    15],W23[15],W22[15],W21[15],W20[15],W19[15],W18[15],W17[15],W16[15],

    W15[15],W14[15],

    W13[15],W12[15],W11[15],W10[15],W9[15],W8[15],W7[15],W6[15],W5

    [15],W4[15],W3[15],W2[15],W1[15],W0[15]};

    assign

    WREG16={W31[16],W30[16],W29[16],W28[16],W27[16],W26[16],W25[16],W24[

    16],W23[16],W22[16],W21[16],W20[16],W19[16],W18[16],W17[16],W16[16],

    W15[16],W14[16],

    W13[16],W12[16],W11[16],W10[16],W9[16],W8[16],W7[16],W6[16],W5

    [16],W4[16],W3[16],W2[16],W1[16],W0[16]};

    assign

    WREG17={W31[17],W30[17],W29[17],W28[17],W27[17],W26[17],W25[17],W24[

    17],W23[17],W22[17],W21[17],W20[17],W19[17],W18[17],W17[17],W16[17],

    W15[17],W14[17],

    W13[17],W12[17],W11[17],W10[17],W9[17],W8[17],W7[17],W6[17],W5

    [17],W4[17],W3[17],W2[17],W1[17],W0[17]};

    assign

    WREG18={W31[18],W30[18],W29[18],W28[18],W27[18],W26[18],W25[18],W24[

    18],W23[18],W22[18],W21[18],W20[18],W19[18],W18[18],W17[18],W16[18],W15[18],W14[18],

    W13[18],W12[18],W11[18],W10[18],W9[18],W8[18],W7[18],W6[18],W5

    [18],W4[18],W3[18],W2[18],W1[18],W0[18]};

    assign

    WREG19={W31[19],W30[19],W29[19],W28[19],W27[19],W26[19],W25[19],W24[

    19],W23[19],W22[19],W21[19],W20[19],W19[19],W18[19],W17[19],W16[19],

    W15[19],W14[19],

    W13[19],W12[19],W11[19],W10[19],W9[19],W8[19],W7[19],W6[19],W5[19],W4[19],W3[19],W2[19],W1[19],W0[19]};

    assign

    WREG20={W31[20],W30[20],W29[20],W28[20],W27[20],W26[20],W25[20],W24[

    20],W23[20],W22[20],W21[20],W20[20],W19[20],W18[20],W17[20],W16[20],

    W15[20],W14[20],

  • 7/22/2019 Bao Cao Lab1

    24/34

    Lab 1 Cu trc my tnh MIPS_Register File

    Nhm 14A 08DT1 24

    W13[20],W12[20],W11[20],W10[20],W9[20],W8[20],W7[20],W6[20],W5

    [20],W4[20],W3[20],W2[20],W1[20],W0[20]};

    assign

    WREG21={W31[21],W30[21],W29[21],W28[21],W27[21],W26[21],W25[21],W24[

    21],W23[21],W22[21],W21[21],W20[21],W19[21],W18[21],W17[21],W16[21],

    W15[21],W14[21],

    W13[21],W12[21],W11[21],W10[21],W9[21],W8[21],W7[21],W6[21],W5

    [21],W4[21],W3[21],W2[21],W1[21],W0[21]};

    assign

    WREG22={W31[22],W30[22],W29[22],W28[22],W27[22],W26[22],W25[22],W24[

    22],W23[22],W22[22],W21[22],W20[22],W19[22],W18[22],W17[22],W16[22],

    W15[22],W14[22],

    W13[22],W12[22],W11[22],W10[22],W9[22],W8[22],W7[22],W6[22],W5

    [22],W4[22],W3[22],W2[22],W1[22],W0[22]};

    assign

    WREG23={W31[23],W30[23],W29[23],W28[23],W27[23],W26[23],W25[23],W24[

    23],W23[23],W22[23],W21[23],W20[23],W19[23],W18[23],W17[23],W16[23],

    W15[23],W14[23],

    W13[23],W12[23],W11[23],W10[23],W9[23],W8[23],W7[23],W6[23],W5

    [23],W4[23],W3[23],W2[23],W1[23],W0[23]};

    assign

    WREG24={W31[24],W30[24],W29[24],W28[24],W27[24],W26[24],W25[24],W24[

    24],W23[24],W22[24],W21[24],W20[24],W19[24],W18[24],W17[24],W16[24],

    W15[24],W14[24],

    W13[24],W12[24],W11[24],W10[24],W9[24],W8[24],W7[24],W6[24],W5

    [24],W4[24],W3[24],W2[24],W1[24],W0[24]};

    assign

    WREG25={W31[25],W30[25],W29[25],W28[25],W27[25],W26[25],W25[25],W24[

    25],W23[25],W22[25],W21[25],W20[25],W19[25],W18[25],W17[25],W16[25],W15[25],W14[25],

    W13[25],W12[25],W11[25],W10[25],W9[25],W8[25],W7[25],W6[25],W5

    [25],W4[25],W3[25],W2[25],W1[25],W0[25]};

    assign

    WREG26={W31[26],W30[26],W29[26],W28[26],W27[26],W26[26],W25[26],W24[

  • 7/22/2019 Bao Cao Lab1

    25/34

    Lab 1 Cu trc my tnh MIPS_Register File

    Nhm 14A 08DT1 25

    26],W23[26],W22[26],W21[26],W20[26],W19[26],W18[26],W17[26],W16[26],

    W15[26],W14[26],

    W13[26],W12[26],W11[26],W10[26],W9[26],W8[26],W7[26],W6[26],W5

    [26],W4[26],W3[26],W2[26],W1[26],W0[26]};

    assign

    WREG27={W31[27],W30[27],W29[27],W28[27],W27[27],W26[27],W25[27],W24[

    27],W23[27],W22[27],W21[27],W20[27],W19[27],W18[27],W17[27],W16[27],

    W15[27],W14[27],

    W13[27],W12[27],W11[27],W10[27],W9[27],W8[27],W7[27],W6[27],W5

    [27],W4[27],W3[27],W2[27],W1[27],W0[27]};

    assign

    WREG28={W31[28],W30[28],W29[28],W28[28],W27[28],W26[28],W25[28],W24[

    28],W23[28],W22[28],W21[28],W20[28],W19[28],W18[28],W17[28],W16[28],W15[28],W14[28],

    W13[28],W12[28],W11[28],W10[28],W9[28],W8[28],W7[28],W6[28],W5

    [28],W4[28],W3[28],W2[28],W1[28],W0[28]};

    assign

    WREG29={W31[29],W30[29],W29[29],W28[29],W27[29],W26[29],W25[29],W24[

    29],W23[29],W22[29],W21[29],W20[29],W19[29],W18[29],W17[29],W16[29],

    W15[29],W14[29],

    W13[29],W12[29],W11[29],W10[29],W9[29],W8[29],W7[29],W6[29],W5[29],W4[29],W3[29],W2[29],W1[29],W0[29]};

    assign

    WREG30={W31[30],W30[30],W29[30],W28[30],W27[30],W26[30],W25[30],W24[

    30],W23[30],W22[30],W21[30],W20[30],W19[30],W18[30],W17[30],W16[30],

    W15[30],W14[30],

    W13[30],W12[30],W11[30],W10[30],W9[30],W8[30],W7[30],W6[30],W5

    [30],W4[30],W3[30],W2[30],W1[30],W0[30]};

    assignWREG31={W31[31],W30[31],W29[31],W28[31],W27[31],W26[31],W25[31],W24[

    31],W23[31],W22[31],W21[31],W20[31],W19[31],W18[31],W17[31],W16[31],

    W15[31],W14[31],

    W13[31],W12[31],W11[31],W10[31],W9[31],W8[31],W7[31],W6[31],W5

    [31],W4[31],W3[31],W2[31],W1[31],W0[31]};

    decoder5to32 decode(decode_out,WriteRegister,RegWrite);

  • 7/22/2019 Bao Cao Lab1

    26/34

    Lab 1 Cu trc my tnh MIPS_Register File

    Nhm 14A 08DT1 26

    Reg32

    reg0(1'b1,32'd0,W0[0],W1[0],W2[0],W3[0],W4[0],W5[0],W6[0],W7[0],W8[0

    ],W9[0],W10[0],W11[0],W12[0],W13[0],W14[0],W15[0],W16[0],W17[0],

    W18[0],W19[0],W20[0],W21[0],W22[0],W23[0],W24[0],W25[0],W26[0]

    ,W27[0],W28[0],W29[0],W30[0],W31[0],clk);

    Reg32

    reg1(decode_out[1],WriteData,W0[1],W1[1],W2[1],W3[1],W4[1],W5[1],W6[

    1],W7[1],W8[1],W9[1],W10[1],W11[1],W12[1],W13[1],W14[1],W15[1],W16[1

    ],W17[1],

    W18[1],W19[1],W20[1],W21[1],W22[1],W23[1],W24[1],W25[1],W26[1],W27[1

    ],W28[1],W29[1],W30[1],W31[1],clk);

    Reg32

    reg2(decode_out[2],WriteData,W0[2],W1[2],W2[2],W3[2],W4[2],W5[2],W6[2],W7[2],W8[2],W9[2],W10[2],W11[2],W12[2],W13[2],W14[2],W15[2],W16[2

    ],W17[2],

    W18[2],W19[2],W20[2],W21[2],W22[2],W23[2],W24[2],W25[2],W26[2],W27[2

    ],W28[2],W29[2],W30[2],W31[2],clk);

    Reg32

    reg3(decode_out[3],WriteData,W0[3],W1[3],W2[3],W3[3],W4[3],W5[3],W6[

    3],W7[3],W8[3],W9[3],W10[3],W11[3],W12[3],W13[3],W14[3],W15[3],W16[3

    ],W17[3],

    W18[3],W19[3],W20[3],W21[3],W22[3],W23[3],W24[3],W25[3],W26[3],W27[3

    ],W28[3],W29[3],W30[3],W31[3],clk);

    Reg32

    reg4(decode_out[4],WriteData,W0[4],W1[4],W2[4],W3[4],W4[4],W5[4],W6[

    4],W7[4],W8[4],W9[4],W10[4],W11[4],W12[4],W13[4],W14[4],W15[4],W16[4

    ],W17[4],

    W18[4],W19[4],W20[4],W21[4],W22[4],W23[4],W24[4],W25[4],W26[4],W27[4

    ],W28[4],W29[4],W30[4],W31[4],clk);

    Reg32

    reg5(decode_out[5],WriteData,W0[5],W1[5],W2[5],W3[5],W4[5],W5[5],W6[

    5],W7[5],W8[5],W9[5],W10[5],W11[5],W12[5],W13[5],W14[5],W15[5],W16[5],W17[5],

    W18[5],W19[5],W20[5],W21[5],W22[5],W23[5],W24[5],W25[5],W26[5],W27[5

    ],W28[5],W29[5],W30[5],W31[5],clk);

    Reg32

    reg6(decode_out[6],WriteData,W0[6],W1[6],W2[6],W3[6],W4[6],W5[6],W6[

  • 7/22/2019 Bao Cao Lab1

    27/34

    Lab 1 Cu trc my tnh MIPS_Register File

    Nhm 14A 08DT1 27

    6],W7[6],W8[6],W9[6],W10[6],W11[6],W12[6],W13[6],W14[6],W15[6],W16[6

    ],W17[6],

    W18[6],W19[6],W20[6],W21[6],W22[6],W23[6],W24[6],W25[6],W26[6],W27[6

    ],W28[6],W29[6],W30[6],W31[6],clk);

    Reg32

    reg7(decode_out[7],WriteData,W0[7],W1[7],W2[7],W3[7],W4[7],W5[7],W6[

    7],W7[7],W8[7],W9[7],W10[7],W11[7],W12[7],W13[7],W14[7],W15[7],W16[7

    ],W17[7],

    W18[7],W19[7],W20[7],W21[7],W22[7],W23[7],W24[7],W25[7],W26[7],W27[7

    ],W28[7],W29[7],W30[7],W31[7],clk);

    Reg32

    reg8(decode_out[8],WriteData,W0[8],W1[8],W2[8],W3[8],W4[8],W5[8],W6[

    8],W7[8],W8[8],W9[8],W10[8],W11[8],W12[8],W13[8],W14[8],W15[8],W16[8

    ],W17[8],

    W18[8],W19[8],W20[8],W21[8],W22[8],W23[8],W24[8],W25[8],W26[8],W27[8],W28[8],W29[8],W30[8],W31[8],clk);

    Reg32

    reg9(decode_out[9],WriteData,W0[9],W1[9],W2[9],W3[9],W4[9],W5[9],W6[

    9],W7[9],W8[9],W9[9],W10[9],W11[9],W12[9],W13[9],W14[9],W15[9],W16[9

    ],W17[9],

    W18[9],W19[9],W20[9],W21[9],W22[9],W23[9],W24[9],W25[9],W26[9],W27[9

    ],W28[9],W29[9],W30[9],W31[9],clk);

    Reg32

    reg10(decode_out[10],WriteData,W0[10],W1[10],W2[10],W3[10],W4[10],W5[10],W6[10],W7[10],W8[10],W9[10],W10[10],W11[10],W12[10],W13[10],W14

    [10],W15[10],W16[10],W17[10],

    W18[10],W19[10],W20[10],W21[10],W22[10],W23[10],W24[10],W25[10],W26[

    10],W27[10],W28[10],W29[10],W30[10],W31[10],clk);

    Reg32

    reg11(decode_out[11],WriteData,W0[11],W1[11],W2[11],W3[11],W4[11],W5

    [11],W6[11],W7[11],W8[11],W9[11],W10[11],W11[11],W12[11],W13[11],W14

    [11],W15[11],W16[11],W17[11],

    W18[11],W19[11],W20[11],W21[11],W22[11],W23[11],W24[11],W25[11],W26[

    11],W27[11],W28[11],W29[11],W30[11],W31[11],clk);

    Reg32

    reg12(decode_out[12],WriteData,W0[12],W1[12],W2[12],W3[12],W4[12],W5

    [12],W6[12],W7[12],W8[12],W9[12],W10[12],W11[12],W12[12],W13[12],W14

    [12],W15[12],W16[12],W17[12],

    W18[12],W19[12],W20[12],W21[12],W22[12],W23[12],W24[12],W25[12],W26[

    12],W27[12],W28[12],W29[12],W30[12],W31[12],clk);

  • 7/22/2019 Bao Cao Lab1

    28/34

    Lab 1 Cu trc my tnh MIPS_Register File

    Nhm 14A 08DT1 28

    Reg32

    reg13(decode_out[13],WriteData,W0[13],W1[13],W2[13],W3[13],W4[13],W5

    [13],W6[13],W7[13],W8[13],W9[13],W10[13],W11[13],W12[13],W13[13],W14

    [13],W15[13],

    W16[13],W17[13],W18[13],W19[13],W20[13],W21[13],W22[13],W23[13],W24[

    13],W25[13],W26[13],W27[13],W28[13],W29[13],W30[13],W31[13],clk);

    Reg32

    reg14(decode_out[14],WriteData,W0[14],W1[14],W2[14],W3[14],W4[14],W5

    [14],W6[14],W7[14],W8[14],W9[14],W10[14],W11[14],W12[14],W13[14],W14

    [14],W15[14],

    W16[14],W17[14],W18[14],W19[14],W20[14],W21[14],W22[14],W23[14],W24[

    14],W25[14],W26[14],W27[14],W28[14],W29[14],W30[14],W31[14],clk);

    Reg32

    reg15(decode_out[15],WriteData,W0[15],W1[15],W2[15],W3[15],W4[15],W5

    [15],W6[15],W7[15],W8[15],W9[15],W10[15],W11[15],W12[15],W13[15],W14

    [15],W15[15],

    W16[15],W17[15],W18[15],W19[15],W20[15],W21[15],W22[15],W23[15],W24[

    15],W25[15],W26[15],W27[15],W28[15],W29[15],W30[15],W31[15],clk);

    Reg32

    reg16(decode_out[16],WriteData,W0[16],W1[16],W2[16],W3[16],W4[16],W5

    [16],W6[16],W7[16],W8[16],W9[16],W10[16],W11[16],W12[16],W13[16],W14[16],W15[16],

    W16[16],W17[16],W18[16],W19[16],W20[16],W21[16],W22[16],W23[16],W24[

    16],W25[16],W26[16],W27[16],W28[16],W29[16],W30[16],W31[16],clk);

    Reg32

    reg17(decode_out[17],WriteData,W0[17],W1[17],W2[17],W3[17],W4[17],W5

    [17],W6[17],W7[17],W8[17],W9[17],W10[17],W11[17],W12[17],W13[17],W14

    [17],W15[17],

    W16[17],W17[17],W18[17],W19[17],W20[17],W21[17],W22[17],W23[17],W24[17],W25[17],W26[17],W27[17],W28[17],W29[17],W30[17],W31[17],clk);

    Reg32

    reg18(decode_out[18],WriteData,W0[18],W1[18],W2[18],W3[18],W4[18],W5

    [18],W6[18],W7[18],W8[18],W9[18],W10[18],W11[18],W12[18],W13[18],W14

    [18],W15[18],

  • 7/22/2019 Bao Cao Lab1

    29/34

    Lab 1 Cu trc my tnh MIPS_Register File

    Nhm 14A 08DT1 29

    W16[18],W17[18],W18[18],W19[18],W20[18],W21[18],W22[18],W23[18],W24[

    18],W25[18],W26[18],W27[18],W28[18],W29[18],W30[18],W31[18],clk);

    Reg32

    reg19(decode_out[19],WriteData,W0[19],W1[19],W2[19],W3[19],W4[19],W5

    [19],W6[19],W7[19],W8[19],W9[19],W10[19],W11[19],W12[19],W13[19],W14

    [19],W15[19],

    W16[19],W17[19],W18[19],W19[19],W20[19],W21[19],W22[19],W23[19],W24[

    19],W25[19],W26[19],W27[19],W28[19],W29[19],W30[19],W31[19],clk);

    Reg32

    reg20(decode_out[20],WriteData,W0[20],W1[20],W2[20],W3[20],W4[20],W5

    [20],W6[20],W7[20],W8[20],W9[20],W10[20],W11[20],W12[20],W13[20],W14

    [20],W15[20],

    W16[20],W17[20],W18[20],W19[20],W20[20],W21[20],W22[20],W23[20],W24[

    20],W25[20],W26[20],W27[20],W28[20],W29[20],W30[20],W31[20],clk);

    Reg32

    reg21(decode_out[21],WriteData,W0[21],W1[21],W2[21],W3[21],W4[21],W5

    [21],W6[21],W7[21],W8[21],W9[21],W10[21],W11[21],W12[21],W13[21],W14

    [21],W15[21],

    W16[21],W17[21],W18[21],W19[21],W20[21],W21[21],W22[21],W23[21],W24[

    21],W25[21],W26[21],W27[21],W28[21],W29[21],W30[21],W31[21],clk);

    Reg32

    reg22(decode_out[22],WriteData,W0[22],W1[22],W2[22],W3[22],W4[22],W5

    [22],W6[22],W7[22],W8[22],W9[22],W10[22],W11[22],W12[22],W13[22],W14

    [22],W15[22],

    W16[22],W17[22],W18[22],W19[22],W20[22],W21[22],W22[22],W23[22],W24[

    22],W25[22],W26[22],W27[22],W28[22],W29[22],W30[22],W31[22],clk);

    Reg32

    reg23(decode_out[23],WriteData,W0[23],W1[23],W2[23],W3[23],W4[23],W5

    [23],W6[23],W7[23],W8[23],W9[23],W10[23],W11[23],W12[23],W13[23],W14[23],W15[23],

    W16[23],W17[23],W18[23],W19[23],W20[23],W21[23],W22[23],W23[23],W24[

    23],W25[23],W26[23],W27[23],W28[23],W29[23],W30[23],W31[23],clk);

    Reg32

    reg24(decode_out[24],WriteData,W0[24],W1[24],W2[24],W3[24],W4[24],W5

  • 7/22/2019 Bao Cao Lab1

    30/34

    Lab 1 Cu trc my tnh MIPS_Register File

    Nhm 14A 08DT1 30

    [24],W6[24],W7[24],W8[24],W9[24],W10[24],W11[24],W12[24],W13[24],W14

    [24],W15[24],

    W16[24],W17[24],W18[24],W19[24],W20[24],W21[24],W22[24],W23[24],W24[

    24],W25[24],W26[24],W27[24],W28[24],W29[24],W30[24],W31[24],clk);

    Reg32

    reg25(decode_out[25],WriteData,W0[25],W1[25],W2[25],W3[25],W4[25],W5

    [25],W6[25],W7[25],W8[25],W9[25],W10[25],W11[25],W12[25],W13[25],W14

    [25],W15[25],

    W16[25],W17[25],W18[25],W19[25],W20[25],W21[25],W22[25],W23[25],W24[

    25],W25[25],W26[25],W27[25],W28[25],W29[25],W30[25],W31[25],clk);

    Reg32

    reg26(decode_out[26],WriteData,W0[26],W1[26],W2[26],W3[26],W4[26],W5

    [26],W6[26],W7[26],W8[26],W9[26],W10[26],W11[26],W12[26],W13[26],W14[26],W15[26],

    W16[26],W17[26],W18[26],W19[26],W20[26],W21[26],W22[26],W23[26],W24[

    26],W25[26],W26[26],W27[26],W28[26],W29[26],W30[26],W31[26],clk);

    Reg32

    reg27(decode_out[27],WriteData,W0[27],W1[27],W2[27],W3[27],W4[27],W5

    [27],W6[27],W7[27],W8[27],W9[27],W10[27],W11[27],W12[27],W13[27],W14

    [27],W15[27],

    W16[27],W17[27],W18[27],W19[27],W20[27],W21[27],W22[27],W23[27],W24[27],W25[27],W26[27],W27[27],W28[27],W29[27],W30[27],W31[27],clk);

    Reg32

    reg28(decode_out[28],WriteData,W0[28],W1[28],W2[28],W3[28],W4[28],W5

    [28],W6[28],W7[28],W8[28],W9[28],W10[28],W11[28],W12[28],W13[28],W14

    [28],W15[28],

    W16[28],W17[28],W18[28],W19[28],W20[28],W21[28],W22[28],W23[28],W24[

    28],W25[28],W26[28],W27[28],W28[28],W29[28],W30[28],W31[28],clk);

    Reg32reg29(decode_out[29],WriteData,W0[29],W1[29],W2[29],W3[29],W4[29],W5

    [29],W6[29],W7[29],W8[29],W9[29],W10[29],W11[29],W12[29],W13[29],W14

    [29],W15[29],

    W16[29],W17[29],W18[29],W19[29],W20[29],W21[29],W22[29],W23[29],W24[

    29],W25[29],W26[29],W27[29],W28[29],W29[29],W30[29],W31[29],clk);

  • 7/22/2019 Bao Cao Lab1

    31/34

    Lab 1 Cu trc my tnh MIPS_Register File

    Nhm 14A 08DT1 31

    Reg32

    reg30(decode_out[30],WriteData,W0[30],W1[30],W2[30],W3[30],W4[30],W5

    [30],W6[30],W7[30],W8[30],W9[30],W10[30],W11[30],W12[30],W13[30],W14

    [30],W15[30],

    W16[30],W17[30],W18[30],W19[30],W20[30],W21[30],W22[30],W23[30],W24[

    30],W25[30],W26[30],W27[30],W28[30],W29[30],W30[30],W31[30],clk);

    Reg32

    reg31(decode_out[31],WriteData,W0[31],W1[31],W2[31],W3[31],W4[31],W5

    [31],W6[31],W7[31],W8[31],W9[31],W10[31],W11[31],W12[31],W13[31],W14

    [31],W15[31],

    W16[31],W17[31],W18[31],W19[31],W20[31],W21[31],W22[31],W23[31],W24[

    31],W25[31],W26[31],W27[31],W28[31],W29[31],W30[31],W31[31],clk);

    mux32_32

    mux1(W0,W1,W2,W3,W4,W5,W6,W7,W8,W9,W10,W11,W12,W13,W14,W15,W16,W17,W

    18,W19,W20,W21,W22,W23,W24,W25,W26,W27,

    W28,W29,W30,W31,ReadRegister1,ReadData1);

    mux32_32

    mux2(W0,W1,W2,W3,W4,W5,W6,W7,W8,W9,W10,W11,W12,W13,W14,W15,W16,W17,W

    18,W19,W20,W21,W22,W23,W24,W25,W26,W27,

    W28,W29,W30,W31,ReadRegister2,ReadData2);

    endmodule

    3.5Kt qu m phng bng ICARUS :Code Verilog:

    /*==============TESTBENCH====================*/

    // The verilog file containing your register file must

    // be named "regfile.v".

    module regstim();

    parameter ClockDelay = 5000;

    reg [4:0] ReadRegister1, ReadRegister2, WriteRegister;

    reg [31:0] WriteData;

    reg RegWrite, clk;

    wire [31:0] ReadData1, ReadData2;

  • 7/22/2019 Bao Cao Lab1

    32/34

    Lab 1 Cu trc my tnh MIPS_Register File

    Nhm 14A 08DT1 32

    integer i;

    // Your register file MUST be named "regfile".

    // Also you must make sure that the port declarations

    // match up with the module instance in this stimulus file.

    regfile reg1(ReadData1,ReadData2,WriteData,

    ReadRegister1,ReadRegister2,WriteRegister,RegWrite,clk);

    initial

    begin

    $dumpfile("regstim.vcd");

    $dumpvars(1,reg1);

    end

    initial clk = 0;

    always #(ClockDelay/2) clk = ~clk;

    initial

    begin $monitor($time, " ReadData1=%h, ReadData2=%h,

    WriteData=%h, WriteReg=%b, Reg1=%h, Reg2=%h, RegWrite=%b,

    clk=%b",

    ReadData1, ReadData2, WriteData, WriteRegister,

    ReadRegister1, ReadRegister2, RegWrite,clk);

    #(ClockDelay/4); // Make all changes away from the

    clock edges

    // Try to write the value 0xA0 into register 0.

    // Register 0 should begin and remain at the valueof 0.

    RegWrite=0;

    ReadRegister1=0;

    ReadRegister2=0;

    WriteRegister=0;

    WriteData=32'hA0;

    #(ClockDelay);

    RegWrite=1;

    #(ClockDelay);

    // Write a value into each register.for (i=1; i

  • 7/22/2019 Bao Cao Lab1

    33/34

    Lab 1 Cu trc my tnh MIPS_Register File

    Nhm 14A 08DT1 33

    #(ClockDelay);

    RegWrite=1;

    #(ClockDelay);

    end

    // Go back and verify that the registers

    // retained the data.

    for (i=0; i

  • 7/22/2019 Bao Cao Lab1

    34/34

    Lab 1 Cu trc my tnh MIPS_Register File

    - Nhn xt:+ Ban u, cha c tn hiu cho php ghi RegWrite, cc thanh ghi cha c gi tr+ Khi RegWrite c set ln 1, b decoder s hot ng da vo tn hiu iukhin chn thanh ghi RegisterWrite, tn hiu ra decoder_out s chn ra 1 trong s32 thanh ghi a gi tr vo. Thanh ghi c np d liu t WriteData.

    + Cc thanh ghi ban u cha c gi tr c biu din bng XXXXXXXX.+ 32 thanh ghi s c a vo b 2 mux32_32 chn ra 2, c d liu trn 2thanh ghi da vo 2 tn hiu iu khin ReadRegister1 v ReadRegister 2. Gitr ca thanh ghi sau c c trn ReadData 1 v ReadData 2+ Gi tr c np vo thanh ghi v ly ra trn ReadData1 v ReadData 2 chmhn so vi tn hiu a vo do khi qua cc cng logic u b tr i 50ps.

    - Nhn chung, thanh ghi hot ng ng vi yu cu thit k.