Line 53... |
Line 53... |
4. deferral
|
4. deferral
|
5. backoff
|
5. backoff
|
***********************************************************************/
|
***********************************************************************/
|
module g_tx_top(
|
module g_tx_top(
|
app_clk,
|
app_clk,
|
send_pause_active,
|
|
set_fifo_undrn,
|
set_fifo_undrn,
|
|
|
|
|
//Outputs
|
//Outputs
|
//TX FIFO management
|
//TX FIFO management
|
Line 79... |
Line 78... |
|
|
//Inputs
|
//Inputs
|
//MII interface
|
//MII interface
|
phy_tx_en,
|
phy_tx_en,
|
phy_tx_er,
|
phy_tx_er,
|
//application
|
|
app_send_pause,
|
|
|
|
//rx_top
|
|
rx2tx_pause,
|
|
|
|
//configuration
|
//configuration
|
cf2tx_tstate_mode,
|
|
cf2tx_ch_en,
|
cf2tx_ch_en,
|
cf2df_dfl_single,
|
cf2df_dfl_single,
|
cf2tx_pad_enable,
|
cf2tx_pad_enable,
|
cf2tx_append_fcs,
|
cf2tx_append_fcs,
|
cf_mac_mode,
|
cf_mac_mode,
|
cf_mac_sa,
|
cf_mac_sa,
|
cf2tx_pause_quanta,
|
|
cf2tx_force_bad_fcs,
|
cf2tx_force_bad_fcs,
|
//FIFO data
|
//FIFO data
|
app_tx_dt_in,
|
app_tx_dt_in,
|
app_tx_fifo_empty,
|
app_tx_fifo_empty,
|
app_tx_rdy,
|
app_tx_rdy,
|
Line 109... |
Line 101... |
tx_clk);
|
tx_clk);
|
input app_reset_n; // Global app_reset for the MAC
|
input app_reset_n; // Global app_reset for the MAC
|
input tx_reset_n;
|
input tx_reset_n;
|
input tx_clk; // Transmit clock
|
input tx_clk; // Transmit clock
|
|
|
input app_send_pause;
|
|
input [8:0] app_tx_dt_in;
|
input [8:0] app_tx_dt_in;
|
input app_tx_fifo_empty;
|
input app_tx_fifo_empty;
|
input app_tx_rdy;
|
input app_tx_rdy;
|
|
|
input phy_tx_en; // Transmit data Enable
|
input phy_tx_en; // Transmit data Enable
|
input phy_tx_er; // Transmit Error
|
input phy_tx_er; // Transmit Error
|
input cf2tx_tstate_mode; // OFN auth intf fix
|
|
input cf2tx_ch_en; // Transmit channel Enable
|
input cf2tx_ch_en; // Transmit channel Enable
|
input [7:0] cf2df_dfl_single;
|
input [7:0] cf2df_dfl_single;
|
input cf2tx_pad_enable; // Padding Enabled
|
input cf2tx_pad_enable; // Padding Enabled
|
input cf2tx_append_fcs; // Append CRC to packets
|
input cf2tx_append_fcs; // Append CRC to packets
|
input cf2tx_force_bad_fcs; // force bad fcs
|
input cf2tx_force_bad_fcs; // force bad fcs
|
input [47:0] cf_mac_sa; // MAC Source Address
|
input [47:0] cf_mac_sa; // MAC Source Address
|
input [15:0] cf2tx_pause_quanta; // Pause Quanta used when sending a pause frame
|
|
input cf_mac_mode; // Gigabit or 10/100
|
input cf_mac_mode; // Gigabit or 10/100
|
|
|
|
|
input rx2tx_pause;
|
|
|
|
input mi2tx_byte_ack; // Transmit byte ack from RMII
|
input mi2tx_byte_ack; // Transmit byte ack from RMII
|
output tx_commit_read;
|
output tx_commit_read;
|
output tx_dt_rd; //get the next fsm data
|
output tx_dt_rd; //get the next fsm data
|
|
|
Line 145... |
Line 133... |
output [15:0] tx_sts_byte_cntr;
|
output [15:0] tx_sts_byte_cntr;
|
output tx_sts_fifo_underrun;
|
output tx_sts_fifo_underrun;
|
|
|
output tx_ch_en; // MANDAR
|
output tx_ch_en; // MANDAR
|
|
|
output send_pause_active; // condor fix
|
|
output set_fifo_undrn;// Description: At GMII Interface ,
|
output set_fifo_undrn;// Description: At GMII Interface ,
|
// abug after a transmit fifo underun was found.
|
// abug after a transmit fifo underun was found.
|
// The packet after a packet that
|
// The packet after a packet that
|
// underran has 1 too few bytes .
|
// underran has 1 too few bytes .
|
|
|
Line 174... |
Line 161... |
|
|
|
|
|
|
// Instantiate Transmit State machine block
|
// Instantiate Transmit State machine block
|
g_tx_fsm U_tx_fsm(
|
g_tx_fsm U_tx_fsm(
|
.send_pause_active_out(send_pause_active), // condor fix
|
|
.app_clk(app_clk), // condor fix
|
.app_clk(app_clk), // condor fix
|
.set_fifo_undrn(set_fifo_undrn), // E3C fix
|
.set_fifo_undrn(set_fifo_undrn), // E3C fix
|
|
|
//Outputs
|
//Outputs
|
.tx_commit_read(tx_commit_read),
|
.tx_commit_read(tx_commit_read),
|
Line 201... |
Line 187... |
.tx_end_frame(app_tx_dt_in[8]),
|
.tx_end_frame(app_tx_dt_in[8]),
|
.app_tx_dt_in(app_tx_dt_in[7:0]),
|
.app_tx_dt_in(app_tx_dt_in[7:0]),
|
.app_tx_fifo_empty(app_tx_fifo_empty),
|
.app_tx_fifo_empty(app_tx_fifo_empty),
|
//dfl and back off
|
//dfl and back off
|
.df2tx_dfl_dn(df2tx_dfl_dn),
|
.df2tx_dfl_dn(df2tx_dfl_dn),
|
.app_send_pause(app_send_pause),
|
|
//inputs from FCS
|
//inputs from FCS
|
.tc2tx_fcs(tc2tx_fcs),
|
.tc2tx_fcs(tc2tx_fcs),
|
.cf2tx_tstate_mode(cf2tx_tstate_mode),
|
|
.cf2tx_ch_en(cf2tx_ch_en),
|
.cf2tx_ch_en(cf2tx_ch_en),
|
.cf2tx_pad_enable(cf2tx_pad_enable),
|
.cf2tx_pad_enable(cf2tx_pad_enable),
|
.cf2tx_append_fcs(cf2tx_append_fcs),
|
.cf2tx_append_fcs(cf2tx_append_fcs),
|
.cf_mac_mode(cf_mac_mode),
|
.cf_mac_mode(cf_mac_mode),
|
.cf_mac_sa(cf_mac_sa),
|
.cf_mac_sa(cf_mac_sa),
|
.cf2tx_pause_quanta(cf2tx_pause_quanta),
|
|
.cf2tx_force_bad_fcs(cf2tx_force_bad_fcs),
|
.cf2tx_force_bad_fcs(cf2tx_force_bad_fcs),
|
//RX pause frame received
|
|
.rx2tx_pause(rx2tx_pause),
|
|
//MII
|
//MII
|
.mi2tx_byte_ack(mi2tx_byte_ack),
|
.mi2tx_byte_ack(mi2tx_byte_ack),
|
.tx_clk(tx_clk),
|
.tx_clk(tx_clk),
|
.tx_reset_n(tx_reset_n),
|
.tx_reset_n(tx_reset_n),
|
.app_reset_n(app_reset_n));
|
.app_reset_n(app_reset_n));
|