LOGIN   :::   RECOVER PASS   :::   GET ACCOUNT    
Browse
  • Projects
  • Code (CVS)
  • Forums
  • News
  • Articles
  • Polls
  •  
    OpenCores
  • FAQ
  • CVS HowTo
  • Mission
  • Media
  • Tools
  • Advertise
  • Mirrors
  • Logos
  • Contact us
  • Find Resources
  • Job Opportunity
  •  
    Tools
  • Search
      
  • Download Cores (CVSGet)
  •  
    More
  • Wishbone
  • Perlilog
  • EDA tools
  • OpenTech CD
  •  
    Navigation: All forums > Cvs-checkins > Message List > Message Post

    Message

    Reply | Reply all
    Date Prev | Date Next | Thread Prev | Thread Next Date Index | Thread Index

    From: cvs at opencores.org<cvs@o...>
    Date: Thu Nov 29 04:50:36 CET 2007
    Subject: [cvs-checkins] MODIFIED: mips789 ...
    Top
    Date: 00/07/11 29:04:50

    Modified: mips789/rtl/verilog EXEC_stage.v RF_components.v ctl_fsm.v
    dvc.v forward.v mem_module.v mips789_defs.v
    mips_uart.v ulit.v
    Log:
    no message


    Revision Changes Path
    1.10 mips789/rtl/verilog/EXEC_stage.v

    http://www.opencores.org/cvsweb.shtml/mips789/rtl/verilog/EXEC_stage.v.diff?r1=1.9&r2=1.10

    (In the diff below, changes in quantity of whitespace are not shown.)

    Index: EXEC_stage.v
    ===================================================================
    RCS file: /cvsroot/mcupro/mips789/rtl/verilog/EXEC_stage.v,v
    retrieving revision 1.9
    retrieving revision 1.10
    diff -u -b -r1.9 -r1.10
    --- EXEC_stage.v 26 Nov 2007 13:46:21 -0000 1.9
    +++ EXEC_stage.v 29 Nov 2007 03:50:36 -0000 1.10
    @@ -65,7 +65,7 @@
    wire [31:0] BUS476;


    - big_alu MIPS_alu
    + mips_alu MIPS_alu
    (
    .a(BUS476),
    .b(BUS468),
    @@ -140,7 +140,7 @@

    endmodule

    -module big_alu(clk,rst,a,b,c,ctl);
    +module mips_alu(clk,rst,a,b,c,ctl);
    input clk,rst ;
    input [31:0] a,b ;
    output [31:0] c ;
    @@ -235,11 +235,13 @@

    //This file is based on YACC ->alu.v and UCORE ->alu.v

    -module alu (a,b,alu_out,alu_func);
    +module alu (
    + input [31:0] a,
    + input [31:0]b,
    + output reg [31:0] alu_out,
    + input [4:0] alu_func
    + );

    - input [31:0] a,b;
    - output reg [31:0] alu_out;
    - input [4:0] alu_func;
    reg [32:0] sum;

    always @(*)
    @@ -294,8 +296,7 @@
    endmodule


    -module
    - shifter_tak(
    +module shifter_tak(
    input [31:0] a,
    output reg [31:0] shift_out,
    input [4:0] shift_func,//connect to alu_func_ctl



    1.9 mips789/rtl/verilog/RF_components.v

    http://www.opencores.org/cvsweb.shtml/mips789/rtl/verilog/RF_components.v.diff?r1=1.8&r2=1.9

    (In the diff below, changes in quantity of whitespace are not shown.)

    Index: RF_components.v
    ===================================================================
    RCS file: /cvsroot/mcupro/mips789/rtl/verilog/RF_components.v,v
    retrieving revision 1.8
    retrieving revision 1.9
    diff -u -b -r1.8 -r1.9
    --- RF_components.v 26 Nov 2007 13:46:21 -0000 1.8
    +++ RF_components.v 29 Nov 2007 03:50:36 -0000 1.9
    @@ -21,21 +21,17 @@
    wire [25:0] instr25_0;
    assign instr25_0 = ins_i[25:0] ;

    - wire[15:0] sign = {
    - instr25_0[15],instr25_0[15],instr25_0[15],instr25_0[15],
    - instr25_0[15],instr25_0[15],instr25_0[15],instr25_0[15],
    - instr25_0[15],instr25_0[15],instr25_0[15],instr25_0[15],
    - instr25_0[15],instr25_0[15],instr25_0[15],instr25_0[15]};
    + wire[15:0] sign = {16{instr25_0[15]}};

    always @ (*)
    case (ctl)
    `EXT_SIGN :res ={sign,instr25_0[15:0]};//sign
    `EXT_UNSIGN :res ={16'b0,instr25_0[15:0]};//zeroext
    `EXT_J :res ={4'b0,instr25_0[25:0],2'b0};//jmp - `EXT_B :res ={sign[13:0],instr25_0[15:0],2'B0};//brach + `EXT_B :res ={sign[13:0],instr25_0[15:0],2'B0};//branch `EXT_SA :res ={27'b0,instr25_0[10:6]} ;//sll,srl `EXT_S2H :res ={instr25_0[15:0],16'B0};//shift to high - default: res=0; + default: res=32'bx; endcase endmodule @@ -54,7 +50,7 @@ `CMP_BGTZ: res = ~s[31] && (|s[30:0]); `CMP_BLEZ: res = s[31] |(~|s); `CMP_BGEZ: res = ~s[31]; - default res=1'B0; + default res=1'Bx; endcase endmodule @@ -72,20 +68,6 @@ ); wire [32:0] br_addr = pc + imm ; - /* - pc_gen i_pc_gen - ( - .check(NET904), - .ctl(pc_gen_ctl), - .imm(ext_o), - .irq(irq_addr_i), - .pc(pc_i), - .pc_next(pc_next), - .pc_prectl(BUS1013), - .s(rs_o), - .zz_spc(zz_spc_i) - ); - */ always @ (*) if(pc_prectl == `PC_IGN ) begin @@ -94,8 +76,8 @@ `PC_J : pc_next ={pc[31:28],imm[27:0]}; `PC_JR : pc_next = s; `PC_BC : pc_next = (check)?({br_addr[31:0]}):(pc+4); - `PC_NEXT : pc_next = pc+ 4 ; - default pc_next = pc + 4; + default + /* `PC_NEXT :*/ pc_next = pc + 4 ; endcase end else @@ -103,8 +85,9 @@ case (pc_prectl) `PC_KEP : pc_next=pc; `PC_IRQ : pc_next=irq; - `PC_RST : pc_next='d0; - default pc_next =0; + default + /* `PC_RST : pc_next='d0;*/ + pc_next =0; endcase end @@ -143,6 +126,7 @@ output [31:0] qa; output [31:0] qb; reg [31:0]reg_bank[0:31]; + integer i; initial begin @@ -150,13 +134,12 @@ reg_bank[i]=0; end - assign qa=(r_rdaddress_a[4:0]==0)?0: - ((r_wraddress==r_rdaddress_a)&&(1==r_wren))?r_data: - reg_bank[r_rdaddress_a]; - - assign qb=(r_rdaddress_b[4:0]==0)?0: - ((r_wraddress==r_rdaddress_b)&&(1==r_wren))?r_data: - reg_bank[r_rdaddress_b]; + always@(posedge clock) + begin + r_data <=data; + r_wraddress<=wraddress; + r_wren<=wren; + end always@(posedge clock) if (~rd_clk_cls) @@ -166,12 +149,15 @@ end always@(posedge clock) - begin - r_data <=data; - r_wraddress<=wraddress; - r_wren<=wren; - end - always@(posedge clock) if (r_wren) reg_bank[r_wraddress] <= r_data ; + + assign qa=(r_rdaddress_a[4:0]==0)?0: + ((r_wraddress==r_rdaddress_a)&&(1==r_wren))?r_data: + reg_bank[r_rdaddress_a]; + + assign qb=(r_rdaddress_b[4:0]==0)?0: + ((r_wraddress==r_rdaddress_b)&&(1==r_wren))?r_data: + reg_bank[r_rdaddress_b]; + endmodule 1.9 mips789/rtl/verilog/ctl_fsm.v http://www.opencores.org/cvsweb.shtml/mips789/rtl/verilog/ctl_fsm.v.diff?r1=1.8&r2=1.9 (In the diff below, changes in quantity of whitespace are not shown.) Index: ctl_fsm.v =================================================================== RCS file: /cvsroot/mcupro/mips789/rtl/verilog/ctl_fsm.v,v retrieving revision 1.8 retrieving revision 1.9 diff -u -b -r1.8 -r1.9 --- ctl_fsm.v 26 Nov 2007 13:46:21 -0000 1.8 +++ ctl_fsm.v 29 Nov 2007 03:50:36 -0000 1.9 @@ -13,273 +13,165 @@ `include "mips789_defs.v" module ctl_FSM ( - clk, iack, id2ra_ctl_clr, id2ra_ctl_cls, - id2ra_ins_clr, id2ra_ins_cls, id_cmd, irq, - pc_prectl, ra2exec_ctl_clr, rst ,zz_is_nop + input clk, + input [2:0] id_cmd, + input irq, + input rst, + output reg iack, + output reg zz_is_nop, + output reg id2ra_ctl_clr, + output reg id2ra_ctl_cls, + output reg id2ra_ins_clr, + output reg id2ra_ins_cls, + output reg [3:0] pc_prectl, + output reg ra2exec_ctl_clr ); - parameter - - ID_CUR = 1, - ID_LD = 5, - ID_MUL = 2, - ID_NOI = 6, - ID_RET = 4, - ONE = 1, - PC_IGN = 1, - PC_IRQ = 4, - PC_KEP = 2, - PC_RST = 8, - ZERO = 0; - - input clk; - input [2:0] id_cmd; - input irq; - input rst; - output iack; - output zz_is_nop; - output id2ra_ctl_clr; - output id2ra_ctl_cls; - output id2ra_ins_clr; - output id2ra_ins_cls; - output [3:0] pc_prectl; - output ra2exec_ctl_clr; - - wire clk; - reg iack; - reg zz_is_nop; - reg id2ra_ctl_clr; - reg id2ra_ctl_cls; - reg id2ra_ins_clr; - reg id2ra_ins_cls; - wire [2:0] id_cmd; - wire irq; - reg [3:0] pc_prectl; - reg ra2exec_ctl_clr; - wire rst; + ID_CUR = `FSM_CUR, ID_LD = `FSM_LD , + ID_MUL = `FSM_MUL, ID_NOI = `FSM_NOI, + ID_RET = `FSM_RET, + + PC_IGN = `PC_IGN , PC_IRQ = `PC_IRQ, + PC_KEP = `PC_KEP , PC_RST = `PC_RST; + + reg [5:0] delay_counter; + reg [4:0] CurrState ; + reg [4:0] NextState ; reg riack; + always @(posedge clk) if (~rst) riack<=0; else riack<=iack; - reg [5:0]delay_counter_Sreg0, next_delay_counter_Sreg0; + always @(*) + begin //deal with iack + case (CurrState ) + `IRQ:iack=1'b1; + `RET:iack=1'b0; + //onlt this 2 states those will change the iack state + default iack=riack; + endcase + end - reg [3:0] CurrState_Sreg0; - reg [3:0] NextState_Sreg0; + always @ (posedge clk ) + if (~rst)delay_counter <=0; + else + case (CurrState) + //any delay state can be added here + `MUL: delay_counter <=delay_counter + 1; + default : delay_counter <=0; + endcase - always @ (*) - begin : Sreg0_NextState - case (CurrState_Sreg0) +///////////////////////////////////////////////////////// +// Finite State Machine +// + /*Finite State Machine part1*/ + always @ (posedge clk) if (~rst) CurrState <= `RST; else CurrState <= NextState ; + + always @ (*)/*Finite State Machine part2*/ + begin + case (CurrState) `IDLE: begin - id2ra_ins_clr=ZERO; - id2ra_ins_cls=ZERO; - id2ra_ctl_clr=ZERO; - id2ra_ctl_cls=ZERO; - ra2exec_ctl_clr =ZERO; - pc_prectl=PC_IGN; - iack = riack; - if (~rst) - NextState_Sreg0 = `RST; - else - if ((irq)&&(~iack)) - NextState_Sreg0 = `IRQ; - else - if (id_cmd ==ID_NOI) - NextState_Sreg0 = `NOI; - else - if (id_cmd==ID_CUR) - NextState_Sreg0 = `CUR; - else - if (id_cmd==ID_MUL) - NextState_Sreg0 = `MUL; - else - if (id_cmd==ID_LD) - NextState_Sreg0 = `LD; - else - if (id_cmd==ID_RET) - NextState_Sreg0 = `RET; - else - NextState_Sreg0 = `IDLE; + if (~rst) NextState = `RST; + else if ((irq)&&(~riack)) NextState = `IRQ; + else if (id_cmd ==ID_NOI) NextState = `NOI; + else if (id_cmd==ID_CUR) NextState = `CUR; + else if (id_cmd==ID_MUL) NextState = `MUL; + else if (id_cmd==ID_LD) NextState = `LD; + else if (id_cmd==ID_RET) NextState = `RET; + else NextState = `IDLE; end - `MUL: + `NOI: begin - id2ra_ins_clr=ONE; - id2ra_ins_cls=ZERO; - id2ra_ctl_clr=ONE; - id2ra_ctl_cls=ZERO; - ra2exec_ctl_clr=ZERO; - pc_prectl =PC_KEP; - iack = riack; - if (~rst) - NextState_Sreg0 = `RST; - else - NextState_Sreg0 = `D2_MUL_DLY; - next_delay_counter_Sreg0 = 34; - zz_is_nop =0; + if (id_cmd ==ID_NOI) NextState = `NOI; + else if (id_cmd==ID_CUR) NextState = `CUR; + else if (id_cmd==ID_MUL) NextState = `MUL; + else if (id_cmd==ID_LD) NextState = `LD; + else if (id_cmd==ID_RET) NextState = `RET; + else NextState = `IDLE; + end + `CUR: NextState = `NOI; + `RET: NextState = `IDLE; + `IRQ: NextState = `IDLE; + `RST: NextState = `IDLE; + `LD: NextState = `IDLE; + `MUL: NextState = (delay_counter==32)?`IDLE:`MUL; + default NextState =`IDLE; + endcase end - `CUR: + + always @ (*)/*Finite State Machine part3*/ begin - id2ra_ins_clr=ZERO; - id2ra_ins_cls=ONE; - id2ra_ctl_clr=ZERO; - id2ra_ctl_cls=ONE; - ra2exec_ctl_clr=ONE; + case (CurrState ) + `IDLE: begin id2ra_ins_clr = 1'b0; + id2ra_ins_cls = 1'b0; + id2ra_ctl_clr = 1'b0; + id2ra_ctl_cls = 1'b0; + ra2exec_ctl_clr = 1'b0; + pc_prectl=PC_IGN; + zz_is_nop = 0;end + `MUL: begin + id2ra_ins_clr = 1'b1; + id2ra_ins_cls = 1'b0; + id2ra_ctl_clr = 1'b1; + id2ra_ctl_cls = 1'b0; + ra2exec_ctl_clr = 1'b0; pc_prectl =PC_KEP; - iack = riack; - if (~rst) - NextState_Sreg0 = `RST; - else - NextState_Sreg0 = `NOI; - zz_is_nop = 1; - end - `RET: - begin - id2ra_ins_clr=ZERO; - id2ra_ins_cls=ZERO; - id2ra_ctl_clr=ZERO; - id2ra_ctl_cls=ZERO; - ra2exec_ctl_clr =ZERO; + zz_is_nop =0; end + `CUR: begin + id2ra_ins_clr = 1'b0; + id2ra_ins_cls = 1'b1; + id2ra_ctl_clr = 1'b0; + id2ra_ctl_cls = 1'b1; + ra2exec_ctl_clr = 1'b1; + pc_prectl =PC_KEP; + zz_is_nop = 1; end + `RET: begin id2ra_ins_clr = 1'b0; + id2ra_ins_cls = 1'b0; + id2ra_ctl_clr = 1'b0; + id2ra_ctl_cls = 1'b0; + ra2exec_ctl_clr = 1'b0; pc_prectl =PC_IGN; - iack =ZERO; - riack =ZERO; - if (~rst) - NextState_Sreg0 = `RST; - else - NextState_Sreg0 = `IDLE; - zz_is_nop = ZERO; - end - `IRQ: - begin - id2ra_ins_clr=ONE; - id2ra_ins_cls=ZERO; - id2ra_ctl_clr=ONE; - id2ra_ctl_cls=ZERO; - ra2exec_ctl_clr=ONE; + zz_is_nop = 1'b0; end + `IRQ: begin + id2ra_ins_clr = 1'b1; + id2ra_ins_cls = 1'b0; + id2ra_ctl_clr = 1'b1; + id2ra_ctl_cls = 1'b0; + ra2exec_ctl_clr = 1'b1; pc_prectl =PC_IRQ; - iack =ONE; - riack=ONE; - if (~rst) - NextState_Sreg0 = `RST; - else - NextState_Sreg0 = `IDLE; - zz_is_nop = ZERO; - end - `RST: - begin - id2ra_ins_clr=ONE; - id2ra_ins_cls=ZERO; - id2ra_ctl_clr=ONE; - id2ra_ctl_cls=ZERO; - ra2exec_ctl_clr=ONE; + zz_is_nop = 1'b0;end + `RST: begin + id2ra_ins_clr = 1'b1; + id2ra_ins_cls = 1'b0; + id2ra_ctl_clr = 1'b1; + id2ra_ctl_cls = 1'b0; + ra2exec_ctl_clr = 1'b1; pc_prectl=PC_RST; - iack=ZERO; - zz_is_nop = ONE; - riack=ZERO; - if (~rst) - NextState_Sreg0 = `RST; - else - NextState_Sreg0 = `IDLE; - end - `LD: - begin - id2ra_ins_clr=ONE; - id2ra_ins_cls=ZERO; - id2ra_ctl_clr=ONE; - id2ra_ctl_cls=ZERO; - ra2exec_ctl_clr=ZERO; + zz_is_nop = 1'b1; end + `LD:begin + id2ra_ins_clr = 1'b1; + id2ra_ins_cls = 1'b0; + id2ra_ctl_clr = 1'b1; + id2ra_ctl_cls = 1'b0; + ra2exec_ctl_clr = 1'b0; pc_prectl =PC_KEP; - iack=riack; - if (~rst) - NextState_Sreg0 = `RST; - else - NextState_Sreg0 = `IDLE; - zz_is_nop = ZERO; - end - `NOI: - begin - id2ra_ins_clr=ZERO; - id2ra_ins_cls=ZERO; - id2ra_ctl_clr=ZERO; - id2ra_ctl_cls=ZERO; - ra2exec_ctl_clr =ZERO; - iack=riack; + zz_is_nop = 1'b0;end + `NOI:begin + id2ra_ins_clr = 1'b0; + id2ra_ins_cls = 1'b0; + id2ra_ctl_clr = 1'b0; + id2ra_ctl_cls = 1'b0; + ra2exec_ctl_clr = 1'b0; pc_prectl=PC_IGN; - zz_is_nop = ZERO; - if (~rst) - NextState_Sreg0 = `RST; - else - if (id_cmd ==ID_NOI) - NextState_Sreg0 = `NOI; - else if (id_cmd==ID_CUR) - NextState_Sreg0 = `CUR; - else if (id_cmd==ID_MUL) - NextState_Sreg0 = `MUL; - else if (id_cmd==ID_LD) - NextState_Sreg0 = `LD; - else if (id_cmd==ID_RET) - NextState_Sreg0 = `RET; - else - NextState_Sreg0 = `IDLE; - end - `D2_MUL_DLY: - begin - id2ra_ins_clr=ONE; - id2ra_ins_cls=ZERO; - id2ra_ctl_clr=ONE; - id2ra_ctl_cls=ZERO; - ra2exec_ctl_clr=ZERO; - pc_prectl =PC_KEP; - iack=riack; - zz_is_nop = ONE; - if (~rst) - NextState_Sreg0 = `RST; - else - if (delay_counter_Sreg0 == 0) - NextState_Sreg0 = `IDLE; - else - begin - NextState_Sreg0 = `D2_MUL_DLY; - // if (delay_counter_Sreg0 != 0) - next_delay_counter_Sreg0 = delay_counter_Sreg0 - 1; - end - end - - default : //the same as RST - begin - id2ra_ins_clr=ONE; - id2ra_ins_cls=ZERO; - id2ra_ctl_clr=ONE; - id2ra_ctl_cls=ZERO; - ra2exec_ctl_clr=ONE; + zz_is_nop = 1'b0;end + default begin + id2ra_ins_clr = 1'b1; + id2ra_ins_cls = 1'b0; + id2ra_ctl_clr = 1'b1; + id2ra_ctl_cls = 1'b0; + ra2exec_ctl_clr = 1'b1; pc_prectl=PC_RST; - iack=ZERO; - riack=ZERO; - zz_is_nop = ONE; - if (~rst) - NextState_Sreg0 = `RST; - else - NextState_Sreg0 =`IDLE; - end - + zz_is_nop = 1'b1;end endcase end - - always @ (posedge clk) - begin : Sreg0_CurrentState - if (~rst) - CurrState_Sreg0 <= `RST; - else - CurrState_Sreg0 <= NextState_Sreg0; - end - - always @ (posedge clk ) - begin : Sreg0_RegOutput - if (~rst) - begin - delay_counter_Sreg0 <=40; // Initialization in the reset state or default value required!! - end - else - begin - delay_counter_Sreg0 <= next_delay_counter_Sreg0; - end - end endmodule 1.9 mips789/rtl/verilog/dvc.v http://www.opencores.org/cvsweb.shtml/mips789/rtl/verilog/dvc.v.diff?r1=1.8&r2=1.9 (In the diff below, changes in quantity of whitespace are not shown.) Index: dvc.v =================================================================== RCS file: /cvsroot/mcupro/mips789/rtl/verilog/dvc.v,v retrieving revision 1.8 retrieving revision 1.9 diff -u -b -r1.8 -r1.9 --- dvc.v 26 Nov 2007 13:46:21 -0000 1.8 +++ dvc.v 29 Nov 2007 03:50:36 -0000 1.9 @@ -22,17 +22,12 @@ output tmr_req, output [31:0] cntr_o ); - reg [31:0]s_cntr; reg [31:0]cntr; - assign cntr_o=cntr; - always @(posedge clk) if (ld) s_cntr<= din; - - always @(posedge clk) if (ld) cntr<=din; @@ -40,9 +35,7 @@ cntr<=s_cntr; else if (tmr_en) cntr<=cntr-1; - wire w_irq = cntr==0; - tmr_d itmr_d( .clr(clr), .clk(clk), @@ -77,22 +70,22 @@ input [3:0] addr; begin case(addr) - 0: seg = 7'b0111111; - 1: seg = 7'b0000110; - 2: seg = 7'b1011011; - 3: seg = 7'b1001111; - 4: seg = 7'b1100110; - 5: seg = 7'b1101101; - 6: seg = 7'b1111100; - 7: seg = 7'b0000111; - 8: seg = 7'b1111111; - 9: seg = 7'b1100111; - 10: seg = 7'b1110111; - 11: seg = 7'b1111100; - 12: seg = 7'b1011000; - 13: seg = 7'b1011110; - 14: seg = 7'b1111001; - 15: seg = 7'b1110001; + 0: seg = 7'b011_1111; + 1: seg = 7'b000_0110; + 2: seg = 7'b101_1011; + 3: seg = 7'b100_1111; + 4: seg = 7'b110_0110; + 5: seg = 7'b110_1101; + 6: seg = 7'b111_1100; + 7: seg = 7'b000_0111; + 8: seg = 7'b111_1111; + 9: seg = 7'b110_0111; + 10: seg = 7'b111_0111; + 11: seg = 7'b111_1100; + 12: seg = 7'b101_1000; + 13: seg = 7'b101_1110; + 14: seg = 7'b111_1001; + 15: seg = 7'b111_0001; default seg = 7'bx; endcase end 1.9 mips789/rtl/verilog/forward.v http://www.opencores.org/cvsweb.shtml/mips789/rtl/verilog/forward.v.diff?r1=1.8&r2=1.9 (In the diff below, changes in quantity of whitespace are not shown.) Index: forward.v =================================================================== RCS file: /cvsroot/mcupro/mips789/rtl/verilog/forward.v,v retrieving revision 1.8 retrieving revision 1.9 diff -u -b -r1.8 -r1.9 --- forward.v 26 Nov 2007 13:46:21 -0000 1.8 +++ forward.v 29 Nov 2007 03:50:36 -0000 1.9 @@ -46,8 +46,9 @@ case (fw_ctl) `FW_ALU :dout=fw_alu; `FW_MEM :dout=fw_dmem; - `FW_NOP :dout=din; - default dout=din; + default + /*`FW_NOP :dout=din;*/ + dout=din; endcase endmodule 1.8 mips789/rtl/verilog/mem_module.v http://www.opencores.org/cvsweb.shtml/mips789/rtl/verilog/mem_module.v.diff?r1=1.7&r2=1.8 (In the diff below, changes in quantity of whitespace are not shown.) Index: mem_module.v =================================================================== RCS file: /cvsroot/mcupro/mips789/rtl/verilog/mem_module.v,v retrieving revision 1.7 retrieving revision 1.8 diff -u -b -r1.7 -r1.8 --- mem_module.v 18 Nov 2007 03:36:45 -0000 1.7 +++ mem_module.v 29 Nov 2007 03:50:36 -0000 1.8 @@ -99,6 +99,7 @@ wire [1:0]byte_addr_i; assign byte_addr_i = dmem_addr_i[1:0] ; + always @(posedge clk) begin ctl_o<=(dmem_addr_i[31]==0)?ctl_i:0; @@ -142,7 +143,6 @@ endmodule - module mem_dout_ctl( input [1:0]byte_addr, input [3:0]ctl, @@ -150,41 +150,19 @@ output reg [31:0] dout ); - wire [31:0] w31 = { - din[31],din[31],din[31],din[31],din[31],din[31],din[31],din[31], - din[31],din[31],din[31],din[31],din[31],din[31],din[31],din[31], - din[31],din[31],din[31],din[31],din[31],din[31],din[31],din[31], - din[31],din[31],din[31],din[31],din[31],din[31],din[31],din[31]} ; - - wire [31:0] w23 = { - din[23],din[23],din[23],din[23],din[23],din[23],din[23],din[23], - din[23],din[23],din[23],din[23],din[23],din[23],din[23],din[23], - din[23],din[23],din[23],din[23],din[23],din[23],din[23],din[23], - din[23],din[23],din[23],din[23],din[23],din[23],din[23],din[23]} ; - - wire [31:0] w15 = { - din[15],din[15],din[15],din[15],din[15],din[15],din[15],din[15], - din[15],din[15],din[15],din[15],din[15],din[15],din[15],din[15], - din[15],din[15],din[15],din[15],din[15],din[15],din[15],din[15], - din[15],din[15],din[15],din[15],din[15],din[15],din[15],din[15]} ; - wire [31:0] w7 = { - din[7],din[7],din[7],din[7],din[7],din[7],din[7],din[7], - din[7],din[7],din[7],din[7],din[7],din[7],din[7],din[7], - din[7],din[7],din[7],din[7],din[7],din[7],din[7],din[7], - din[7],din[7],din[7],din[7],din[7],din[7],din[7],din[7]} ; - always @(*) case (ctl) `DMEM_LBS : case (byte_addr) - 'd0:dout={w31[23:0],din[31:24]}; - 'd1:dout={w23[23:0],din[23:16]}; - 'd2:dout={w15[23:0],din[15:8]}; - 'd3:dout={w7[23:0],din[7:0] }; + + 'd0:dout={{24{din[31]}},din[31:24]}; + 'd1:dout={{24{din[23]}},din[23:16]}; + 'd2:dout={{24{din[15]}},din[15:8]}; + 'd3:dout={{24{din[7]}},din[7:0] }; default : - dout=32'b0; - endcase//checked + dout=32'bX; + endcase `DMEM_LBU : case (byte_addr) 'd3:dout={24'b0,din[7:0]}; @@ -192,19 +170,19 @@ 'd1:dout={24'b0,din[23:16]}; 'd0:dout={24'b0,din[31:24]}; default : - dout=32'b0; + dout=32'bX; endcase `DMEM_LHU : case (byte_addr) 'd0:dout={16'b0,din[31:24],din[23:16]}; 'd2:dout={16'b0,din[15:8],din[7 :0]}; - default:dout=0; + default:dout=32'bX; endcase `DMEM_LHS : case (byte_addr) - 'd0 :dout={w31[15:0],din[31:24],din[23:16]}; - 'd2 :dout={w15[15:0],din[15:8],din[7 :0]}; - default:dout=0; + 'd0 :dout={{16{din[31]}},din[31:24],din[23:16]}; + 'd2 :dout={{16{din[15]}},din[15:8],din[7 :0]}; + default:dout=32'bX; endcase `DMEM_LW : dout=din; @@ -228,7 +206,7 @@ dout = {din[15:0],din[15:0]}; `DMEM_SW : dout =din; - default dout=din; + default dout=32'bX; endcase endmodule 1.5 mips789/rtl/verilog/mips789_defs.v http://www.opencores.org/cvsweb.shtml/mips789/rtl/verilog/mips789_defs.v.diff?r1=1.4&r2=1.5 (In the diff below, changes in quantity of whitespace are not shown.) Index: mips789_defs.v =================================================================== RCS file: /cvsroot/mcupro/mips789/rtl/verilog/mips789_defs.v,v retrieving revision 1.4 retrieving revision 1.5 diff -u -b -r1.4 -r1.5 --- mips789_defs.v 26 Nov 2007 13:46:21 -0000 1.4 +++ mips789_defs.v 29 Nov 2007 03:50:36 -0000 1.5 @@ -179,6 +179,8 @@ `define COUNTER_VALUE2 (`COUNTER_VALUE1*2+1) `define COUNTER_VALUE3 (`COUNTER_VALUE1+3) + `define DEFAULT_IRQ_ADDR 'H00_00_00_5C + `define ALTERA `else 1.8 mips789/rtl/verilog/mips_uart.v http://www.opencores.org/cvsweb.shtml/mips789/rtl/verilog/mips_uart.v.diff?r1=1.7&r2=1.8 (In the diff below, changes in quantity of whitespace are not shown.) Index: mips_uart.v =================================================================== RCS file: /cvsroot/mcupro/mips789/rtl/verilog/mips_uart.v,v retrieving revision 1.7 retrieving revision 1.8 diff -u -b -r1.7 -r1.8 --- mips_uart.v 18 Nov 2007 03:36:45 -0000 1.7 +++ mips_uart.v 29 Nov 2007 03:50:36 -0000 1.8 @@ -48,6 +48,20 @@ wire clk_uart=clk; wire w_rxd_rdy; + integer uart_send; +initial begin + + + + uart_send = $fopen("uart_send.txt"); + + +end + +always @ (txd_ld) +begin + if (txd_ld) $fwrite( uart_send,"%c",din[7:0]); +end uart_read uart_rd_tak( .sync_reset(rst), 1.9 mips789/rtl/verilog/ulit.v http://www.opencores.org/cvsweb.shtml/mips789/rtl/verilog/ulit.v.diff?r1=1.8&r2=1.9 (In the diff below, changes in quantity of whitespace are not shown.) Index: ulit.v =================================================================== RCS file: /cvsroot/mcupro/mips789/rtl/verilog/ulit.v,v retrieving revision 1.8 retrieving revision 1.9 diff -u -b -r1.8 -r1.9 --- ulit.v 26 Nov 2007 13:46:21 -0000 1.8 +++ ulit.v 29 Nov 2007 03:50:36 -0000 1.9 @@ -115,6 +115,7 @@ endmodule */ //these modules below are genated automaticly by a software written in C language... +//Some of these may not be used module ext_ctl_reg_clr_cls(input[`EXT_CTL_LEN-1:0] ext_ctl_i,output reg[`EXT_CTL_LEN-1:0] ext_ctl_o,input clk,input clr,input cls);always@(posedge clk)if(clr) ext_ctl_o<=0;else if(cls)ext_ctl_o<=ext_ctl_o;else ext_ctl_o<=ext_ctl_i;endmodule module rd_sel_reg_clr_cls(input[`RD_SEL_LEN-1:0] rd_sel_i,output reg[`RD_SEL_LEN-1:0] rd_sel_o,input clk,input clr,input cls);always@(posedge clk)if(clr) rd_sel_o<=0;else if(cls)rd_sel_o<=rd_sel_o;else rd_sel_o<=rd_sel_i;endmodule

     
    Copyright (c) 1999 OPENCORES.ORG. All rights reserved.