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

Subversion Repositories or1k

[/] [or1k/] [tags/] [rel_27/] [or1200/] [rtl/] [verilog/] [or1200_cpu.v] - Diff between revs 617 and 636

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

Rev 617 Rev 636
Line 43... Line 43...
//////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////
//
//
// CVS Revision History
// CVS Revision History
//
//
// $Log: not supported by cvs2svn $
// $Log: not supported by cvs2svn $
 
// 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.
 
//
// Revision 1.4  2002/01/18 14:21:43  lampret
// Revision 1.4  2002/01/18 14:21:43  lampret
// Fixed 'the NPC single-step fix'.
// Fixed 'the NPC single-step fix'.
//
//
// Revision 1.3  2002/01/18 07:56:00  lampret
// Revision 1.3  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 122... Line 125...
        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,
        du_stall, du_addr, du_dat_du, du_read, du_write, du_dsr, du_except,
        du_stall, du_addr, du_dat_du, du_read, du_write, du_dsr, du_except, du_dat_cpu,
 
 
        // Data interface
        // Data interface
        dc_en,
        dc_en,
        dcpu_adr_o, dcpu_cyc_o, dcpu_stb_o, dcpu_we_o, dcpu_sel_o, dcpu_tag_o, dcpu_dat_o,
        dcpu_adr_o, dcpu_cyc_o, dcpu_stb_o, dcpu_we_o, dcpu_sel_o, dcpu_tag_o, dcpu_dat_o,
        dcpu_dat_i, dcpu_ack_i, dcpu_rty_i, dcpu_err_i, dcpu_tag_i,
        dcpu_dat_i, dcpu_ack_i, dcpu_rty_i, dcpu_err_i, dcpu_tag_i,
Line 134... Line 137...
 
 
        // Interrupt & tick exceptions
        // Interrupt & tick exceptions
        sig_int, sig_tick,
        sig_int, sig_tick,
 
 
        // SPR interface
        // SPR interface
        supv, spr_addr, spr_dataout, spr_dat_pic, spr_dat_tt, spr_dat_pm,
        supv, spr_addr, spr_dat_cpu, spr_dat_pic, spr_dat_tt, spr_dat_pm,
        spr_dat_dmmu, spr_dat_immu, spr_dat_du, spr_cs, spr_we
        spr_dat_dmmu, spr_dat_immu, spr_dat_du, spr_cs, spr_we
);
);
 
 
parameter dw = `OR1200_OPERAND_WIDTH;
parameter dw = `OR1200_OPERAND_WIDTH;
parameter aw = `OR1200_REGFILE_ADDR_WIDTH;
parameter aw = `OR1200_REGFILE_ADDR_WIDTH;
Line 186... Line 189...
input   [dw-1:0]         du_dat_du;
input   [dw-1:0]         du_dat_du;
input                           du_read;
input                           du_read;
input                           du_write;
input                           du_write;
input   [`OR1200_DU_DSR_WIDTH-1:0]       du_dsr;
input   [`OR1200_DU_DSR_WIDTH-1:0]       du_dsr;
output  [12:0]                   du_except;
output  [12:0]                   du_except;
 
output  [dw-1:0]         du_dat_cpu;
 
 
//
//
// Data (DC) interface
// Data (DC) interface
//
//
output  [31:0]                   dcpu_adr_o;
output  [31:0]                   dcpu_adr_o;
Line 220... Line 224...
input   [dw-1:0]         spr_dat_pm;
input   [dw-1:0]         spr_dat_pm;
input   [dw-1:0]         spr_dat_dmmu;
input   [dw-1:0]         spr_dat_dmmu;
input   [dw-1:0]         spr_dat_immu;
input   [dw-1:0]         spr_dat_immu;
input   [dw-1:0]         spr_dat_du;
input   [dw-1:0]         spr_dat_du;
output  [dw-1:0]         spr_addr;
output  [dw-1:0]         spr_addr;
output  [dw-1:0]         spr_dataout;
output  [dw-1:0]         spr_dat_cpu;
output  [31:0]                   spr_cs;
output  [31:0]                   spr_cs;
output                          spr_we;
output                          spr_we;
 
 
//
//
// Interrupt exceptions
// Interrupt exceptions
Line 380... Line 384...
        .lr_restor(operand_b),
        .lr_restor(operand_b),
        .flag(flag),
        .flag(flag),
        .taken(branch_taken),
        .taken(branch_taken),
        .binsn_addr(lr_sav),
        .binsn_addr(lr_sav),
        .epcr(epcr),
        .epcr(epcr),
        .spr_dat_i(spr_dataout),
        .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),
        .flushpipe(flushpipe),
        .no_more_dslot(no_more_dslot)
        .no_more_dslot(no_more_dslot)
Line 482... Line 486...
        .rdb(rf_rdb),
        .rdb(rf_rdb),
        .datab(rf_datab),
        .datab(rf_datab),
        .spr_cs(spr_cs[`OR1200_SPR_GROUP_SYS]),
        .spr_cs(spr_cs[`OR1200_SPR_GROUP_SYS]),
        .spr_write(spr_we),
        .spr_write(spr_we),
        .spr_addr(spr_addr),
        .spr_addr(spr_addr),
        .spr_dat_i(spr_dataout),
        .spr_dat_i(spr_dat_cpu),
        .spr_dat_o(spr_dat_rf)
        .spr_dat_o(spr_dat_rf)
);
);
 
 
//
//
// Instantiation of operand muxes
// Instantiation of operand muxes
Line 540... Line 544...
        .result(mult_mac_result),
        .result(mult_mac_result),
        .mac_stall_r(mac_stall),
        .mac_stall_r(mac_stall),
        .spr_cs(spr_cs[`OR1200_SPR_GROUP_MAC]),
        .spr_cs(spr_cs[`OR1200_SPR_GROUP_MAC]),
        .spr_write(spr_we),
        .spr_write(spr_we),
        .spr_addr(spr_addr),
        .spr_addr(spr_addr),
        .spr_dat_i(spr_dataout),
        .spr_dat_i(spr_dat_cpu),
        .spr_dat_o(spr_dat_mac)
        .spr_dat_o(spr_dat_mac)
);
);
 
 
//
//
// Instantiation of CPU's SPRS block
// Instantiation of CPU's SPRS block
Line 563... Line 567...
 
 
        .du_addr(du_addr),
        .du_addr(du_addr),
        .du_dat_du(du_dat_du),
        .du_dat_du(du_dat_du),
        .du_read(du_read),
        .du_read(du_read),
        .du_write(du_write),
        .du_write(du_write),
 
        .du_dat_cpu(du_dat_cpu),
 
 
        .spr_addr(spr_addr),
        .spr_addr(spr_addr),
        .spr_dat_pic(spr_dat_pic),
        .spr_dat_pic(spr_dat_pic),
        .spr_dat_tt(spr_dat_tt),
        .spr_dat_tt(spr_dat_tt),
        .spr_dat_pm(spr_dat_pm),
        .spr_dat_pm(spr_dat_pm),
Line 576... Line 581...
        .spr_dat_ppc(spr_dat_ppc),
        .spr_dat_ppc(spr_dat_ppc),
        .spr_dat_mac(spr_dat_mac),
        .spr_dat_mac(spr_dat_mac),
        .spr_dat_dmmu(spr_dat_dmmu),
        .spr_dat_dmmu(spr_dat_dmmu),
        .spr_dat_immu(spr_dat_immu),
        .spr_dat_immu(spr_dat_immu),
        .spr_dat_du(spr_dat_du),
        .spr_dat_du(spr_dat_du),
        .spr_dataout(spr_dataout),
        .spr_dat_o(spr_dat_cpu),
        .spr_cs(spr_cs),
        .spr_cs(spr_cs),
        .spr_we(spr_we),
        .spr_we(spr_we),
 
 
        .epcr_we(epcr_we),
        .epcr_we(epcr_we),
        .eear_we(eear_we),
        .eear_we(eear_we),

powered by: WebSVN 2.1.0

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