OpenCores
URL https://opencores.org/ocsvn/or1k/or1k/trunk

Subversion Repositories or1k

[/] [or1k/] [tags/] [rel_1/] [or1200/] [rtl/] [verilog/] [or1200_cpu.v] - Diff between revs 660 and 788

Go to most recent revision | Show entire file | Details | Blame | View Log

Rev 660 Rev 788
Line 43... Line 43...
//////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////
//
//
// CVS Revision History
// CVS Revision History
//
//
// $Log: not supported by cvs2svn $
// $Log: not supported by cvs2svn $
 
// Revision 1.7  2002/02/11 04:33:17  lampret
 
// Speed optimizations (removed duplicate _cyc_ and _stb_). Fixed D/IMMU cache-inhibit attr.
 
//
// Revision 1.6  2002/02/01 19:56:54  lampret
// Revision 1.6  2002/02/01 19:56:54  lampret
// Fixed combinational loops.
// Fixed combinational loops.
//
//
// Revision 1.5  2002/01/28 01:15:59  lampret
// Revision 1.5  2002/01/28 01:15:59  lampret
// Changed 'void' nop-ops instead of insn[0] to use insn[16]. Debug unit stalls the tick timer. Prepared new flag generation for add and and insns. Blocked DC/IC while they are turned off. Fixed I/D MMU SPRs layout except WAYs. TODO: smart IC invalidate, l.j 2 and TLB ways.
// Changed 'void' nop-ops instead of insn[0] to use insn[16]. Debug unit stalls the tick timer. Prepared new flag generation for add and and insns. Blocked DC/IC while they are turned off. Fixed I/D MMU SPRs layout except WAYs. TODO: smart IC invalidate, l.j 2 and TLB ways.
Line 122... Line 125...
        // Clk & Rst
        // Clk & Rst
        clk, rst,
        clk, rst,
 
 
        // Insn interface
        // Insn interface
        ic_en,
        ic_en,
        icpu_adr_o, icpu_cycstb_o, icpu_we_o, icpu_sel_o, icpu_tag_o,
        icpu_adr_o, icpu_cycstb_o, icpu_sel_o, icpu_tag_o,
        icpu_dat_i, icpu_ack_i, icpu_rty_i, icpu_err_i, icpu_adr_i, icpu_tag_i,
        icpu_dat_i, icpu_ack_i, icpu_rty_i, icpu_err_i, icpu_adr_i, icpu_tag_i,
        immu_en,
        immu_en,
 
 
        // Debug unit
        // Debug unit
        ex_insn, ex_freeze, branch_op,
        ex_insn, ex_freeze, branch_op,
Line 163... Line 166...
// Insn (IC) interface
// Insn (IC) interface
//
//
output                          ic_en;
output                          ic_en;
output  [31:0]                   icpu_adr_o;
output  [31:0]                   icpu_adr_o;
output                          icpu_cycstb_o;
output                          icpu_cycstb_o;
output                          icpu_we_o;
 
output  [3:0]                    icpu_sel_o;
output  [3:0]                    icpu_sel_o;
output  [3:0]                    icpu_tag_o;
output  [3:0]                    icpu_tag_o;
input   [31:0]                   icpu_dat_i;
input   [31:0]                   icpu_dat_i;
input                           icpu_ack_i;
input                           icpu_ack_i;
input                           icpu_rty_i;
input                           icpu_rty_i;
Line 325... Line 327...
wire                            except_ibuserr;
wire                            except_ibuserr;
wire                            except_dbuserr;
wire                            except_dbuserr;
wire                            abort_ex;
wire                            abort_ex;
 
 
//
//
// icpu_we_o
 
//
 
assign icpu_we_o = 1'b0;
 
 
 
//
 
// Send exceptions to Debug Unit
// Send exceptions to Debug Unit
//
//
assign du_except = except_stop;
assign du_except = except_stop;
 
 
//
//
Line 369... Line 366...
        .rst(rst),
        .rst(rst),
        .icpu_adr_o(icpu_adr_o),
        .icpu_adr_o(icpu_adr_o),
        .icpu_cycstb_o(icpu_cycstb_o),
        .icpu_cycstb_o(icpu_cycstb_o),
        .icpu_sel_o(icpu_sel_o),
        .icpu_sel_o(icpu_sel_o),
        .icpu_tag_o(icpu_tag_o),
        .icpu_tag_o(icpu_tag_o),
        .icpu_ack_i(icpu_ack_i),
 
        .icpu_rty_i(icpu_rty_i),
        .icpu_rty_i(icpu_rty_i),
        .icpu_err_i(icpu_err_i),
 
        .icpu_adr_i(icpu_adr_i),
        .icpu_adr_i(icpu_adr_i),
 
 
        .branch_op(branch_op),
        .branch_op(branch_op),
        .except_type(except_type),
        .except_type(except_type),
        .except_start(except_start),
        .except_start(except_start),
Line 388... Line 383...
        .epcr(epcr),
        .epcr(epcr),
        .spr_dat_i(spr_dat_cpu),
        .spr_dat_i(spr_dat_cpu),
        .spr_pc_we(pc_we),
        .spr_pc_we(pc_we),
        .genpc_refetch(genpc_refetch),
        .genpc_refetch(genpc_refetch),
        .genpc_freeze(genpc_freeze),
        .genpc_freeze(genpc_freeze),
        .flushpipe(flushpipe),
 
        .no_more_dslot(no_more_dslot)
        .no_more_dslot(no_more_dslot)
);
);
 
 
//
//
// Instantiation of instruction fetch block
// Instantiation of instruction fetch block
Line 592... Line 586...
        .esr_we(esr_we),
        .esr_we(esr_we),
        .pc_we(pc_we),
        .pc_we(pc_we),
        .epcr(epcr),
        .epcr(epcr),
        .eear(eear),
        .eear(eear),
        .esr(esr),
        .esr(esr),
        .except_start(except_start),
 
        .except_started(except_started),
        .except_started(except_started),
 
 
        .sr(sr),
        .sr(sr),
        .branch_op(branch_op)
        .branch_op(branch_op)
);
);
 
 
//
//
// Instantiation of load/store unit
// Instantiation of load/store unit
//
//
or1200_lsu or1200_lsu(
or1200_lsu or1200_lsu(
        .clk(clk),
 
        .rst(rst),
 
        .addrbase(operand_a),
        .addrbase(operand_a),
        .addrofs(lsu_addrofs),
        .addrofs(lsu_addrofs),
        .lsu_op(lsu_op),
        .lsu_op(lsu_op),
        .lsu_datain(operand_b),
        .lsu_datain(operand_b),
        .lsu_dataout(lsu_dataout),
        .lsu_dataout(lsu_dataout),
        .lsu_stall(lsu_stall),
        .lsu_stall(lsu_stall),
        .lsu_unstall(lsu_unstall),
        .lsu_unstall(lsu_unstall),
        .du_stall(du_stall),
        .du_stall(du_stall),
        .flushpipe(flushpipe),
 
        .except_align(except_align),
        .except_align(except_align),
        .except_dtlbmiss(except_dtlbmiss),
        .except_dtlbmiss(except_dtlbmiss),
        .except_dmmufault(except_dmmufault),
        .except_dmmufault(except_dmmufault),
        .except_dbuserr(except_dbuserr),
        .except_dbuserr(except_dbuserr),
 
 
Line 727... Line 717...
 
 
//
//
// Instantiation of configuration registers
// Instantiation of configuration registers
//
//
or1200_cfgr or1200_cfgr(
or1200_cfgr or1200_cfgr(
        .clk(clk),
 
        .rst(clk),
 
        .spr_addr(spr_addr),
        .spr_addr(spr_addr),
        .spr_dat_o(spr_dat_cfgr)
        .spr_dat_o(spr_dat_cfgr)
);
);
 
 
endmodule
endmodule

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.