Module ip_mac_tx_sync_g

pi_tx_resetlogicpi_tx_f_clocklogicpi_host_resetlogicpi_host_clocklogicpi_tx_stoplogicpi_host_stoplogicpi_rx_fc_tx_offlogicpi_rx_fc_xofflogicpi_rx_fc_xonlogicpo_host_idoneregpo_host_stopregpo_tx_stopregpo_tx_fc_tx_offregpo_tx_fc_xoffregpo_tx_fc_xonreg

Block Diagram of ip_mac_tx_sync_g

The EMAC Transmit Synchronization module is responsible to synchronize all the control signals necessary to control the functionality of the transmit clock domain modules. Also the signals generated by the transmit modules and needed by the host clock domain modules are synchronized by the EMAC Transmit Synchronization module to host clock domain. In order to avoid the metastability of the output signal the synchronization from one clock domain to another will require two DFF's. The host and transmit clocks used by the synchronization module are free running clocks, since there is no possibility to generate synchronous wake-up's signals for gated clock module. Also this module is responsible to synchronize the reset done information (initialization done) used by the host DMA module in order to start data transfers.

Ports

Name

Type

Direction

Description

pi_tx_reset

wire logic

input

Transmit clock and reset Global Hardware/Software reset (transmit clock domain, active low)

pi_tx_f_clock

wire logic

input

Transmit GMII/MII 125/25/2.5 MHz clock (from Clock Manager)

po_host_idone

reg

output

Reset done Transmit initialization done (host clock domain)

pi_host_reset

wire logic

input

Host clock and reset Global Hardware/Software reset (host clock domain, active low)

pi_host_clock

wire logic

input

Host clock (from Clock Manager)

pi_tx_stop

wire logic

input

Inputs -> Synchronized outputs Transmit stop command acknowledge (transmit clock domain)

po_host_stop

reg

output

Transmit stop command acknowledge (synchronized to host clock domain)

pi_host_stop

wire logic

input

Transmit stop command (host clock domain)

po_tx_stop

reg

output

Transmit stop command (synchronized to transmit clock domain)

pi_rx_fc_tx_off

wire logic

input

Received transmit off command (receive clock domain)

po_tx_fc_tx_off

reg

output

Transmit off command (synchronized to transmit clock domain)

pi_rx_fc_xoff

wire logic

input

Receive FIFO level exceed high threshold, XOFF FC packet insert (receive clock domain)

pi_rx_fc_xon

wire logic

input

Transmit XOFF FC packet insert (synchronized to transmit clock domain)

po_tx_fc_xoff

reg

output

Receive FIFO level below low threshold, XON FC packet insert (receive clock domain)

po_tx_fc_xon

reg

output

Transmit XON FC packet insert (synchronized to transmit clock domain)

Always Blocks

always @ ( posedge pi_tx_f_clock or negedge pi_tx_reset )

Host to Transmit clock domain synchronization

always @ ( posedge pi_host_clock or negedge pi_host_reset )

Transmit to Host clock domain synchronization

Instances