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

Subversion Repositories or1k

[/] [or1k/] [tags/] [rel_21/] [or1200/] [rtl/] [verilog/] [or1200_top.v] - Diff between revs 636 and 660

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

Rev 636 Rev 660
Line 42... Line 42...
//////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////
//
//
// CVS Revision History
// CVS Revision History
//
//
// $Log: not supported by cvs2svn $
// $Log: not supported by cvs2svn $
 
// Revision 1.4  2002/02/01 19:56:55  lampret
 
// Fixed combinational loops.
 
//
// Revision 1.3  2002/01/28 01:16:00  lampret
// Revision 1.3  2002/01/28 01:16:00  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.
//
//
// Revision 1.2  2002/01/18 07:56:00  lampret
// Revision 1.2  2002/01/18 07:56:00  lampret
// No more low/high priority interrupts (PICPR removed). Added tick timer exception. Added exception prefix (SR[EPH]). Fixed single-step bug whenreading NPC.
// No more low/high priority interrupts (PICPR removed). Added tick timer exception. Added exception prefix (SR[EPH]). Fixed single-step bug whenreading NPC.
Line 245... Line 248...
// DMMU and DC
// DMMU and DC
//
//
wire                    dcdmmu_err_dc;
wire                    dcdmmu_err_dc;
wire    [3:0]            dcdmmu_tag_dc;
wire    [3:0]            dcdmmu_tag_dc;
wire    [aw-1:0] dcdmmu_adr_dmmu;
wire    [aw-1:0] dcdmmu_adr_dmmu;
wire                    dcdmmu_cyc_dmmu;
wire                    dcdmmu_cycstb_dmmu;
wire                    dcdmmu_stb_dmmu;
 
wire                    dcdmmu_ci_dmmu;
wire                    dcdmmu_ci_dmmu;
 
 
//
//
// CPU and data memory subsystem
// CPU and data memory subsystem
//
//
Line 275... Line 277...
//
//
// CPU and insn memory subsystem
// CPU and insn memory subsystem
//
//
wire                    ic_en;
wire                    ic_en;
wire    [31:0]           icpu_adr_cpu;
wire    [31:0]           icpu_adr_cpu;
wire                    icpu_cyc_cpu;
wire                    icpu_cycstb_cpu;
wire                    icpu_stb_cpu;
 
wire                    icpu_we_cpu;
wire                    icpu_we_cpu;
wire    [3:0]            icpu_sel_cpu;
wire    [3:0]            icpu_sel_cpu;
wire    [3:0]            icpu_tag_cpu;
wire    [3:0]            icpu_tag_cpu;
wire    [31:0]           icpu_dat_ic;
wire    [31:0]           icpu_dat_ic;
wire                    icpu_ack_ic;
wire                    icpu_ack_ic;
Line 293... Line 294...
//
//
wire    [aw-1:0] icimmu_adr_immu;
wire    [aw-1:0] icimmu_adr_immu;
wire                    icimmu_rty_ic;
wire                    icimmu_rty_ic;
wire                    icimmu_err_ic;
wire                    icimmu_err_ic;
wire    [3:0]            icimmu_tag_ic;
wire    [3:0]            icimmu_tag_ic;
wire                    icimmu_cyc_immu;
wire                    icimmu_cycstb_immu;
wire                    icimmu_stb_immu;
 
wire                    icimmu_ci_immu;
wire                    icimmu_ci_immu;
 
 
//
//
// Connection between CPU and PIC
// Connection between CPU and PIC
//
//
Line 419... Line 419...
        // CPU i/f
        // CPU i/f
        .ic_en(ic_en),
        .ic_en(ic_en),
        .immu_en(immu_en),
        .immu_en(immu_en),
        .supv(supv),
        .supv(supv),
        .icpu_adr_i(icpu_adr_cpu),
        .icpu_adr_i(icpu_adr_cpu),
        .icpu_cyc_i(icpu_cyc_cpu),
        .icpu_cycstb_i(icpu_cycstb_cpu),
        .icpu_stb_i(icpu_stb_cpu),
 
        .icpu_adr_o(icpu_adr_immu),
        .icpu_adr_o(icpu_adr_immu),
        .icpu_tag_o(icpu_tag_immu),
        .icpu_tag_o(icpu_tag_immu),
        .icpu_rty_o(icpu_rty_immu),
        .icpu_rty_o(icpu_rty_immu),
        .icpu_err_o(icpu_err_immu),
        .icpu_err_o(icpu_err_immu),
 
 
Line 438... Line 437...
        // IC i/f
        // IC i/f
        .icimmu_rty_i(icimmu_rty_ic),
        .icimmu_rty_i(icimmu_rty_ic),
        .icimmu_err_i(icimmu_err_ic),
        .icimmu_err_i(icimmu_err_ic),
        .icimmu_tag_i(icimmu_tag_ic),
        .icimmu_tag_i(icimmu_tag_ic),
        .icimmu_adr_o(icimmu_adr_immu),
        .icimmu_adr_o(icimmu_adr_immu),
        .icimmu_cyc_o(icimmu_cyc_immu),
        .icimmu_cycstb_o(icimmu_cycstb_immu),
        .icimmu_stb_o(icimmu_stb_immu),
 
        .icimmu_ci_o(icimmu_ci_immu)
        .icimmu_ci_o(icimmu_ci_immu)
);
);
 
 
//
//
// Instantiation of Instruction Cache
// Instantiation of Instruction Cache
Line 453... Line 451...
        .rst(rst_i),
        .rst(rst_i),
 
 
        // IC and CPU/IMMU
        // IC and CPU/IMMU
        .ic_en(ic_en),
        .ic_en(ic_en),
        .icimmu_adr_i(icimmu_adr_immu),
        .icimmu_adr_i(icimmu_adr_immu),
        .icimmu_cyc_i(icimmu_cyc_immu),
        .icimmu_cycstb_i(icimmu_cycstb_immu),
        .icimmu_stb_i(icimmu_stb_immu),
 
        .icimmu_ci_i(icimmu_ci_immu),
        .icimmu_ci_i(icimmu_ci_immu),
        .icpu_we_i(icpu_we_cpu),
        .icpu_we_i(icpu_we_cpu),
        .icpu_sel_i(icpu_sel_cpu),
        .icpu_sel_i(icpu_sel_cpu),
        .icpu_tag_i(icpu_tag_cpu),
        .icpu_tag_i(icpu_tag_cpu),
        .icpu_dat_o(icpu_dat_ic),
        .icpu_dat_o(icpu_dat_ic),
Line 493... Line 490...
        .rst(rst_i),
        .rst(rst_i),
 
 
        // Connection IC and IFETCHER inside CPU
        // Connection IC and IFETCHER inside CPU
        .ic_en(ic_en),
        .ic_en(ic_en),
        .icpu_adr_o(icpu_adr_cpu),
        .icpu_adr_o(icpu_adr_cpu),
        .icpu_cyc_o(icpu_cyc_cpu),
        .icpu_cycstb_o(icpu_cycstb_cpu),
        .icpu_stb_o(icpu_stb_cpu),
 
        .icpu_we_o(icpu_we_cpu),
        .icpu_we_o(icpu_we_cpu),
        .icpu_sel_o(icpu_sel_cpu),
        .icpu_sel_o(icpu_sel_cpu),
        .icpu_tag_o(icpu_tag_cpu),
        .icpu_tag_o(icpu_tag_cpu),
        .icpu_dat_i(icpu_dat_ic),
        .icpu_dat_i(icpu_dat_ic),
        .icpu_ack_i(icpu_ack_ic),
        .icpu_ack_i(icpu_ack_ic),
Line 524... Line 520...
        .immu_en(immu_en),
        .immu_en(immu_en),
 
 
        // Connection DC and CPU
        // Connection DC and CPU
        .dc_en(dc_en),
        .dc_en(dc_en),
        .dcpu_adr_o(dcpu_adr_cpu),
        .dcpu_adr_o(dcpu_adr_cpu),
        .dcpu_cyc_o(dcpu_cyc_cpu),
        .dcpu_cycstb_o(dcpu_cycstb_cpu),
        .dcpu_stb_o(dcpu_stb_cpu),
 
        .dcpu_we_o(dcpu_we_cpu),
        .dcpu_we_o(dcpu_we_cpu),
        .dcpu_sel_o(dcpu_sel_cpu),
        .dcpu_sel_o(dcpu_sel_cpu),
        .dcpu_tag_o(dcpu_tag_cpu),
        .dcpu_tag_o(dcpu_tag_cpu),
        .dcpu_dat_o(dcpu_dat_cpu),
        .dcpu_dat_o(dcpu_dat_cpu),
        .dcpu_dat_i(dcpu_dat_dc),
        .dcpu_dat_i(dcpu_dat_dc),
Line 570... Line 565...
        // CPU i/f
        // CPU i/f
        .dc_en(dc_en),
        .dc_en(dc_en),
        .dmmu_en(dmmu_en),
        .dmmu_en(dmmu_en),
        .supv(supv),
        .supv(supv),
        .dcpu_adr_i(dcpu_adr_cpu),
        .dcpu_adr_i(dcpu_adr_cpu),
        .dcpu_cyc_i(dcpu_cyc_cpu),
        .dcpu_cycstb_i(dcpu_cycstb_cpu),
        .dcpu_stb_i(dcpu_stb_cpu),
 
        .dcpu_we_i(dcpu_we_cpu),
        .dcpu_we_i(dcpu_we_cpu),
        .dcpu_tag_o(dcpu_tag_dmmu),
        .dcpu_tag_o(dcpu_tag_dmmu),
        .dcpu_err_o(dcpu_err_dmmu),
        .dcpu_err_o(dcpu_err_dmmu),
 
 
        // SPR access
        // SPR access
Line 587... Line 581...
 
 
        // DC i/f
        // DC i/f
        .dcdmmu_err_i(dcdmmu_err_dc),
        .dcdmmu_err_i(dcdmmu_err_dc),
        .dcdmmu_tag_i(dcdmmu_tag_dc),
        .dcdmmu_tag_i(dcdmmu_tag_dc),
        .dcdmmu_adr_o(dcdmmu_adr_dmmu),
        .dcdmmu_adr_o(dcdmmu_adr_dmmu),
        .dcdmmu_cyc_o(dcdmmu_cyc_dmmu),
        .dcdmmu_cycstb_o(dcdmmu_cycstb_dmmu),
        .dcdmmu_stb_o(dcdmmu_stb_dmmu),
 
        .dcdmmu_ci_o(dcdmmu_ci_dmmu)
        .dcdmmu_ci_o(dcdmmu_ci_dmmu)
);
);
 
 
//
//
// Instantiation of Data Cache
// Instantiation of Data Cache
Line 602... Line 595...
        .rst(rst_i),
        .rst(rst_i),
 
 
        // DC and CPU/DMMU
        // DC and CPU/DMMU
        .dc_en(dc_en),
        .dc_en(dc_en),
        .dcdmmu_adr_i(dcdmmu_adr_dmmu),
        .dcdmmu_adr_i(dcdmmu_adr_dmmu),
        .dcdmmu_cyc_i(dcdmmu_cyc_dmmu),
        .dcdmmu_cycstb_i(dcdmmu_cycstb_dmmu),
        .dcdmmu_stb_i(dcdmmu_stb_dmmu),
 
        .dcdmmu_ci_i(dcdmmu_ci_dmmu),
        .dcdmmu_ci_i(dcdmmu_ci_dmmu),
        .dcpu_we_i(dcpu_we_cpu),
        .dcpu_we_i(dcpu_we_cpu),
        .dcpu_sel_i(dcpu_sel_cpu),
        .dcpu_sel_i(dcpu_sel_cpu),
        .dcpu_tag_i(dcpu_tag_cpu),
        .dcpu_tag_i(dcpu_tag_cpu),
        .dcpu_dat_i(dcpu_dat_cpu),
        .dcpu_dat_i(dcpu_dat_cpu),
Line 640... Line 632...
//
//
or1200_du or1200_du(
or1200_du or1200_du(
        // RISC Internal Interface
        // RISC Internal Interface
        .clk(clk_i),
        .clk(clk_i),
        .rst(rst_i),
        .rst(rst_i),
        .dcpu_cyc_i(dcpu_cyc_cpu),
        .dcpu_cycstb_i(dcpu_cycstb_cpu),
        .dcpu_stb_i(dcpu_stb_cpu),
 
        .dcpu_we_i(dcpu_we_cpu),
        .dcpu_we_i(dcpu_we_cpu),
        .icpu_cyc_i(icpu_cyc_cpu),
        .icpu_cycstb_i(icpu_cycstb_cpu),
        .icpu_stb_i(icpu_stb_cpu),
 
        .ex_freeze(ex_freeze),
        .ex_freeze(ex_freeze),
        .branch_op(branch_op),
        .branch_op(branch_op),
        .ex_insn(ex_insn),
        .ex_insn(ex_insn),
        .du_dsr(du_dsr),
        .du_dsr(du_dsr),
 
 

powered by: WebSVN 2.1.0

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