Module ip_mac_tx_dsplit_g
Name |
Default value |
Description |
---|---|---|
MEM_ADDR |
6 |
Name |
Direction |
Type |
Description |
---|---|---|---|
pi_reset |
input |
wire logic |
Global Software/Hardware Reset (transmit clock domain) |
pi_g_clock |
input |
wire logic |
Transmit GMII/MII 125/25/2.5 MHz clock (from Clock Manager, gated clock) |
pi_f_clock |
input |
wire logic |
Transmit GMII/MII 125/25/2.5 MHz clock (from Clock Manager, free clock) |
po_en_clock |
output |
var reg |
Transmit GMII/MII 125/25/2.5 MHz clock gated clock enable |
pi_data |
input |
wire logic[31:0] |
Signals comming in from the data FIFO related to data transfer FIFO Data bus (frame data 32-bit word) |
pi_sop |
input |
wire logic |
Start of data frame indication |
pi_eop |
input |
wire logic |
End of data frame indication |
pi_err |
input |
wire logic |
Error frame indication |
pi_pad |
input |
wire logic |
Pad append command, valid only when end of frame (When padding enable |
pi_crc |
input |
wire logic |
and frame has less than 64 bytes the CRC is appended regardless of the CRC append setting CRC append command, valid only when end of frame |
pi_byte |
input |
wire logic[1:0] |
Byte enable information |
pi_wr_addr |
input |
wire logic[MEM_ADDR:0] |
Read & Write pointers TX FIFO write address information (used by tx state to determine the |
po_fc_addr |
output |
var reg[2:0] |
FIFO condition full/empty/ready) Flow control read address |
pi_half_duplex |
input |
wire logic |
Half duplex flow control enable Half duplex operating mode |
po_rd_ptr |
output |
wire logic[MEM_ADDR-1:0] |
Output Signals to buffer manager related to data transfer Memory read address |
po_rd_addr |
output |
var reg[MEM_ADDR:0] |
Used by TX FIFO to compute the memory state (full/empty/ready) |
po_fc_req |
output |
var reg |
Request & Acknowledge Flow control frame transmit request |
po_data_req |
output |
var reg |
Data frame transmit request |
pi_fc_ack |
input |
wire logic |
Flow control frame transmit acknowledge |
pi_data_ack |
input |
wire logic |
Data frame transmit acknowledge |
pi_fc_data |
input |
wire logic[31:0] |
Flow control generator interface Flow control frame data |
pi_fc_ready |
input |
wire logic |
New flow control frame ready |
pi_fc_tx_off |
input |
wire logic |
Flow control (pause frame was received, stop transmit command) |
pi_fc_sop |
input |
wire logic |
Flow control frame end |
pi_fc_eop |
input |
wire logic |
Flow control frame start |
pi_read |
input |
wire logic |
Read next data |
pi_remove |
input |
wire logic |
Remove current frame (drop frame) |
pi_reload |
input |
wire logic |
Reload current frame (retransmit) |
pi_update |
input |
wire logic |
Update read pointers (collision window out) |
pi_en_high |
input |
wire logic |
Enable High (MSB) |
po_data |
output |
var reg[7:0] |
Signals comming in from the data FIFO related to data transfer Output 8-bit data |
po_sop |
output |
var reg |
Start of data frame indication |
po_eop |
output |
var reg |
End of data frame indication |
po_err |
output |
var reg |
Error frame indication |
po_pad |
output |
var reg |
Pad append command, valid only when end of frame (When padding enable |
po_crc |
output |
var reg |
and frame has less than 64 bytes the CRC is appended regardless of the CRC append setting CRC append command, valid only when end of frame |
po_valid |
output |
var reg |
Valid output data |
Always Blocks
- always @ ( posedge pi_g_clock or negedge pi_reset )
# |
Current State |
Next State |
Condition |
---|---|---|---|
1 |
`DATA_DROP |
`FC_READ |
[(!(~ pi_reset) && (pi_fc_ack == 1’b1))] |
2 |
`DATA_DROP |
`SPLIT_WAIT |
[(!(~ pi_reset) && !(pi_fc_ack == 1’b1) && (reload_frame == 1’b1)), (!(~ pi_reset) && !(pi_fc_ack == 1’b1) && !(reload_frame == 1’b1) && (valid_data == 1’b1 && pi_sop == 1’b0 || unlock_sop == 1’b0))] |
3 |
`DATA_DROP |
`SPLIT_IDLE |
[(!(~ pi_reset) && !(pi_fc_ack == 1’b1) && !(reload_frame == 1’b1) && !(valid_data == 1’b1 && pi_sop == 1’b0 || unlock_sop == 1’b0) && (valid_data == 1’b1 && pi_sop == 1’b1 && unlock_sop == 1’b1))] |
4 |
`FC_READ |
`DATA_DROP |
[(!(~ pi_reset) && (remove_frame == 1’b1)), (!(~ pi_reset) && !(remove_frame == 1’b1) && (reload_frame == 1’b1)), (!(~ pi_reset) && !(remove_frame == 1’b1) && !(reload_frame == 1’b1) && (po_eop == 1’b1 && pi_read == 1’b1))] |
5 |
`SPLIT_WAIT |
`DATA_DROP |
[(!(~ pi_reset) && !(reload_frame == 1’b1))] |
6 |
`SPLIT_IDLE |
`SPLIT_WAIT |
[(!(~ pi_reset) && (reload_frame == 1’b1))] |
7 |
`SPLIT_IDLE |
`FC_READ |
[(!(~ pi_reset) && !(reload_frame == 1’b1) && (pi_fc_ack == 1’b1))] |
8 |
`SPLIT_IDLE |
`DATA_READ |
[(!(~ pi_reset) && !(reload_frame == 1’b1) && !(pi_fc_ack == 1’b1) && (pi_data_ack == 1’b1))] |
9 |
`DATA_READ |
`SPLIT_WAIT |
[(!(~ pi_reset) && (remove_frame == 1’b1)), (!(~ pi_reset) && !(remove_frame == 1’b1) && (reload_frame == 1’b1)), (!(~ pi_reset) && !(remove_frame == 1’b1) && !(reload_frame == 1’b1) && (po_eop == 1’b1 && valid_data == 1’b1 && pi_read == 1’b1)), (!(~ pi_reset) && !(remove_frame == 1’b1) && !(reload_frame == 1’b1) && !(po_eop == 1’b1 && valid_data == 1’b1 && pi_read == 1’b1) && !(split_cnt == 2’d0 && valid_data == 1’b1 && pi_read == 1’b1) && (po_eop == 1’b1 && valid_data == 1’b0 && pi_read == 1’b1))] |
Instances
- ip_emac_topip_emac_top
- mac_topip_mac_top_g
- mac_tx_topip_mac_tx_top_g
tx_dsplit : ip_mac_tx_dsplit_g#(.MEM_ADDR(10))
Transmit memory address width (9 -> 512 locations, 10->1024)