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

Subversion Repositories or1k_old

[/] [or1k_old/] [trunk/] [orp/] [orp_soc/] [rtl/] [verilog/] [tc_top.v] - Diff between revs 1176 and 1268

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

Rev 1176 Rev 1268
Line 88... Line 88...
//
//
`define TC_IIN_W        1+1+1+`TC_AW+`TC_BSW+1+`TC_DW
`define TC_IIN_W        1+1+1+`TC_AW+`TC_BSW+1+`TC_DW
 
 
//
//
// Traffic Cop Top
// Traffic Cop Top
// There are two channels to tc_top. One channel
 
// is dedicated to connecting the initiators to target 0 
 
// only. The second channel is is for connecting the initiators
 
// to targets 2-8. Additional comments are added below
 
//
//
module tc_top (
module tc_top (
        wb_clk_i,
        wb_clk_i,
        wb_rst_i,
        wb_rst_i,
 
 
Line 554... Line 550...
// Internal wires & registers
// Internal wires & registers
//
//
 
 
//
//
// Outputs for initiators from both mi_to_st blocks
// Outputs for initiators from both mi_to_st blocks
//Wires prefixed with x refer to a channel that only contains
 
//target 0.
 
//Wires prefixed with y refers to a second channel that contains
 
//targets 1-8
 
//
//
wire    [`TC_DW-1:0]     xi0_wb_dat_o;
wire    [`TC_DW-1:0]     xi0_wb_dat_o;
wire                    xi0_wb_ack_o;
wire                    xi0_wb_ack_o;
wire                    xi0_wb_err_o;
wire                    xi0_wb_err_o;
wire    [`TC_DW-1:0]     xi1_wb_dat_o;
wire    [`TC_DW-1:0]     xi1_wb_dat_o;
Line 625... Line 617...
wire                    z_wb_ack_t;
wire                    z_wb_ack_t;
wire                    z_wb_err_t;
wire                    z_wb_err_t;
 
 
//
//
// Outputs for initiators are ORed from both mi_to_st blocks
// Outputs for initiators are ORed from both mi_to_st blocks
//The two separate channels going back to the initiator are 
 
//merged here
 
//Remember x is target 0 only. y is targets 2-8
 
//
 
//
//
assign i0_wb_dat_o = xi0_wb_dat_o | yi0_wb_dat_o;
assign i0_wb_dat_o = xi0_wb_dat_o | yi0_wb_dat_o;
assign i0_wb_ack_o = xi0_wb_ack_o | yi0_wb_ack_o;
assign i0_wb_ack_o = xi0_wb_ack_o | yi0_wb_ack_o;
assign i0_wb_err_o = xi0_wb_err_o | yi0_wb_err_o;
assign i0_wb_err_o = xi0_wb_err_o | yi0_wb_err_o;
assign i1_wb_dat_o = xi1_wb_dat_o | yi1_wb_dat_o;
assign i1_wb_dat_o = xi1_wb_dat_o | yi1_wb_dat_o;
Line 657... Line 645...
assign i7_wb_ack_o = xi7_wb_ack_o | yi7_wb_ack_o;
assign i7_wb_ack_o = xi7_wb_ack_o | yi7_wb_ack_o;
assign i7_wb_err_o = xi7_wb_err_o | yi7_wb_err_o;
assign i7_wb_err_o = xi7_wb_err_o | yi7_wb_err_o;
 
 
//
//
// From initiators to target 0
// From initiators to target 0
//This defines a channel going only to target 0.
 
//This forms a multiplexing arbiter. The module gets used in two places. 
 
//This instance is used to define a dedicated channel to target 0.
 
//
//
tc_mi_to_st #(t0_addr_w, t0_addr,
tc_mi_to_st #(t0_addr_w, t0_addr,
        0, t0_addr_w, t0_addr) t0_ch(
        0, t0_addr_w, t0_addr) t0_ch(
        .wb_clk_i(wb_clk_i),
        .wb_clk_i(wb_clk_i),
        .wb_rst_i(wb_rst_i),
        .wb_rst_i(wb_rst_i),
Line 769... Line 754...
 
 
);
);
 
 
//
//
//From initiators to targets 1-8 (upper part)
//From initiators to targets 1-8 (upper part)
//This instance is used to define a second channel for accessing
 
//targets 1-8. Note the "z-wires" that connect 
 
//this instance to the t18_ch_lower instance defined
 
//further down
 
//
//
tc_mi_to_st #(t1_addr_w, t1_addr,
tc_mi_to_st #(t1_addr_w, t1_addr,
        1, t28c_addr_w, t28_addr) t18_ch_upper(
        1, t28c_addr_w, t28_addr) t18_ch_upper(
        .wb_clk_i(wb_clk_i),
        .wb_clk_i(wb_clk_i),
        .wb_rst_i(wb_rst_i),
        .wb_rst_i(wb_rst_i),
Line 882... Line 863...
 
 
);
);
 
 
//
//
// From initiators to targets 1-8 (lower part)
// From initiators to targets 1-8 (lower part)
//This instance is used to route the signals 
 
//from tc18_ch_upper to the destination target.
 
//
//
tc_si_to_mt #(t1_addr_w, t1_addr, t28i_addr_w, t2_addr, t3_addr,
tc_si_to_mt #(t1_addr_w, t1_addr, t28i_addr_w, t2_addr, t3_addr,
        t4_addr, t5_addr, t6_addr, t7_addr, t8_addr) t18_ch_lower(
        t4_addr, t5_addr, t6_addr, t7_addr, t8_addr) t18_ch_lower(
 
 
        .i0_wb_cyc_i(z_wb_cyc_i),
        .i0_wb_cyc_i(z_wb_cyc_i),

powered by: WebSVN 2.1.0

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