Skip to content

Bloques PCS

sofiavalos edited this page May 4, 2024 · 5 revisions

Bloques PCS 10GBASE

Tabla de Contenidos:

  1. Módulo completo
  2. eth_phy_10g_rx
  3. xgmii_baser_dec_64
  4. eth_phy_10g_rx_if
  5. eth_phy_10g_rx_frame_sync
  6. eth_phy_10g_rx_ber_mon
  7. eth_phy_10g_rx_watchdog
  8. lfsr
  9. eth_phy_10g_tx
  10. xgmii_baser_enc_64
  11. eth_phy_10g_tx_if

Módulo completo

modulo_completo_compuesto

Parámetros

Corresponden al ancho de buses.

  • data_width
  • ctrl_width
  • hdr_width

Controlan si se realiza una inversión de bits.

  • bit_reverse

Controla si se deshabilita el scrambler.

  • scrambler_disable

Habilita la generación y verificación de secuencias pseudoaleatorias.

  • prbs31_enable

Controlan la profundidad del pipeline.

  • tx_serdes_pipeline
  • rx_serdes_pipeline

Controlan el desplazamiento de bits.

  • bitslip_high_cycles
  • bitslip_low_cycles

Contador de 125 microsegundos.

  • count_125us

Inputs/Outputs

Inputs

  • tx_clk
  • tx_rst
  • rx_clk
  • rx_rst
  • xgmii_txd
  • xgmii_txc
  • cfg_tx_prbs31_enable
  • cfg_rx_prbs31_enable
  • serdes_rx_data
  • serdes_rx_hdr

Outputs

  • xgmii_rxd
  • xgmii_rxc
  • serdes_tx_data
  • serdes_tx_hdr
  • serdes_rx_bitslip
  • serdes_rx_reset_req
  • tx_bad_block
  • rx_error_count
  • rx_bad_block
  • rx_sequence_error
  • rx_block_lock
  • rx_high_ber
  • rx_status

Módulos internos

eth_phy_10g_rx

rx_compuesto

Parámetros

Corresponden al ancho de buses.

  • data_width
  • ctrl_width
  • hdr_width

Controla si se realiza una inversión de bits.

  • bit_reverse

Controla si se deshabilita el scrambler.

  • scrambler_disable

Habilita la generación y verificación de secuencias pseudoaleatorias.

  • prbs31_enable

Controlan la profundidad del pipeline.

  • rx_serdes_pipeline

Controlan el desplazamiento de bits.

  • bitslip_high_cycles
  • bitslip_low_cycles

Contador de 125 microsegundos.

  • count_125us

Inputs/Outputs

Inputs

  • clk
  • rst
  • cfg_rx_prbs31_enable
  • serdes_rx_data
  • serdes_rx_hdr

Outputs

  • xgmii_rxd
  • xgmii_rxc
  • serdes_rx_bitslip
  • serdes_rx_reset_req
  • rx_error_count
  • rx_bad_block
  • rx_sequence_error
  • rx_block_lock
  • rx_high_ber
  • rx_status

Módulos internos

xgmii_baser_dec_64

xgmii_baser_enc_64

Parámetros

Corresponden al ancho de buses.

  • data_width
  • ctrl_width
  • hdr_width

Inputs/Outputs

Inputs

  • clk
  • rst
  • encoded_rx_data
  • encoded_rx_hdr

Outputs

  • xgmii_rxd
  • xgmii_rxc
  • rx_bad_block
  • rx_sequence_error

Función

  • Decodifica los datos y los convierte en datos XGMII estándar y señales de control.
  • Detecta bloques incorrectos o mal formados con detección de errores.
  • Maneja la sincronización de datos y control.

eth_phy_10g_rx_if

rx_if_compuesto

Parámetros

  • Corresponden al ancho de buses:

    • data_width
    • hdr_width
  • Controla si se realiza una inversión de bits:

    • bit_reverse
  • Controla si se deshabilita el scrambler:

    • scrambler_disable
  • Habilita la generación y verificación de secuencias pseudoaleatorias:

    • prbs31_enable
  • Controlan la profundidad del pipeline:

    • rx_serdes_pipeline
  • Controlan el desplazamiento de bits:

    • bitslip_high_cycles
    • bitslip_low_cycles
  • Contador de 125 microsegundos:

    • count_125us

Inputs/Outputs

Inputs

  • clk
  • rst
  • cfg_rx_prbs31_enable
  • serdes_rx_data
  • serdes_rx_hdr
  • rx_bad_block
  • rx_sequence_error

Outputs

  • encoded_rx_data
  • encoded_rx_hdr
  • serdes_rx_bitslip
  • serdes_rx_reset_req
  • rx_error_count
  • rx_block_lock
  • rx_high_ber
  • rx_status

Módulos internos

Función

  • Garantiza que los parámetros del ancho del bus sean correctos.
  • Implementa un generador para manejar la inversión de bits y la profundidad del pipeline.
  • Utiliza registros para almacenar el estado del scrambler, los datos descifrados, y el estado del PRBS.
  • Implementa módulos de desencriptación, monitoreo de errores y control para garantizar la integridad de los datos.

eth_phy_10g_rx_frame_sync

rx_frame_sync

Parámetros

Corresponden al ancho de buses.

  • hdr_width

Controlan el desplazamiento de bits.

  • bitslip_high_cycles
  • bitslip_low_cycles

Inputs/Outputs

Inputs

  • clk
  • rst
  • serdes_rx_hdr

Outputs

  • serdes_rx_bitslip
  • rx_block_lock

Función

Sincroniza y detecta bloques de datos en un enlace, controlando el bitslip según sea necesario.

eth_phy_10g_rx_ber_mon

rx_ber_mon

Parámetros

Corresponden al ancho de buses.

  • hdr_width

Contador de 125 microsegundos.

  • count_125us

Inputs/Outputs

Inputs

  • clk
  • rst
  • serdes_rx_hdr

Outputs

  • rx_high_ber

Función

  • Monitorea la tasa de error de bit y activa una señal si esta es alta (supera un umbral previamente definido).

eth_phy_10g_rx_watchdog

rx_watchdog

Parámetros

Corresponden al ancho de buses.

  • hdr_width

Contador de 125 microsegundos.

  • count_125us

Inputs/Outputs

Inputs

  • clk
  • rst
  • serdes_rx_hdr
  • rx_bad_block
  • rx_sequence_error
  • rx_block_lock
  • rx_high_ber

Outputs

  • serdes_rx_reset_req
  • rx_status

Función

  • Determina el estado del receptor, errores de bloques y secuencia, y solicita reset en caso de ser necesario.

lfsr

lfsr

Parámetros

Corresponden al ancho de buses.

  • lfsr_width
  • data_with

Configura el LSFR.

  • lfsr_poly
  • lfsr_config
  • lfsr_feed_forward

Realiza inversión de bits.

  • reverse
  • style

Inputs/Outputs

Inputs

  • data_in
  • state_in

Outputs

  • data_out
  • state_out

Función

  • Dependiendo de su configuración, aplica scrambler, reverse y/o prbs31.

eth_phy_10g_tx

tx_compuesto

Parámetros

Corresponden al ancho de buses.

  • data_width
  • ctrl_width
  • hdr_width

Controla si se realiza una inversión de bits.

  • bit_reverse

Controla si se deshabilita el scrambler.

  • scrambler_disable

Habilita la generación y verificación de secuencias pseudoaleatorias.

  • prbs31_enable

Controlan la profundidad del pipeline.

  • tx_serdes_pipeline

Inputs/Outputs

Inputs

  • clk
  • rst
  • xgmii_txd
  • xgmii_txc
  • cfg_tx_prbs31_enable

Outputs

  • serdes_tx_data
  • serdes_tx_hdr
  • tx_bad_block

Módulos internos

xgmii_baser_enc_64

xgmii_baser_enc_64

Parámetros

Corresponden al ancho de buses.

  • data_width
  • ctrl_width
  • hdr_width

Inputs/Outputs

Inputs

  • clk
  • rst
  • xgmii_txd
  • xgmii_txc

Outputs

  • encoded_tx_data
  • encoded_tx_hdr
  • tx_bad_lock

Función

  • Mapea los datos de XGMII a bloques específicos de 10G.
  • Detecta bloques y señala bloques de transmisión inválidos.
  • Utiliza registros para almacenar los datos codificados y los encabezados de salida.

eth_phy_10g_tx_if

tx_if_compuesto

Parámetros

  • Corresponden al ancho de buses:

    • data_width
    • hdr_width
  • Controla si se realiza una inversión de bits:

    • bit_reverse
  • Controla si se deshabilita el scrambler:

    • scrambler_disable
  • Habilita la generación y verificación de secuencias pseudoaleatorias:

    • prbs31_enable
  • Controlan la profundidad del pipeline:

    • tx_serdes_pipeline

Inputs/Outputs

Inputs

  • clk
  • rst
  • encoded_tx_data
  • encoded_tx_hdr
  • cfg_tx_prbs31_enable

Outputs

  • serdes_tx_data
  • serdes_tx_hdr

Módulos internos

  • lfsr (scrambler y prbs31)

Función

  • Declara reg y wires para el estado del mezclador de bits.
  • Instancia un generador de secuencias que se actualiza en cada flanco positivo del reloj.
  • Si prbs31_enable está activada y la señal de control correspondiente también, se utilizan los datos generados para la transmisión.
  • El estado del mezclador se actualiza en cada flanco positivo del reloj y si la opción scrambler_disable está desactivada los datos codificados se mezclan antes de la transmisión.
  • La salida puede ser opcionalmente invertida bit a bit dependiendo de la configuración de bit_reverse.
  • Si serdes_pipeline es mayor que cero se crea un pipeline opcional.