¿Se puede hacer una palanca de cambio de barril de manera combinatoria?

4

Me dijeron que la codificación 66b / 64b en 10Gb Ethernet (10GBASE-R) requiere una etapa de barril de un ciclo, que agrega un ciclo necesario a la latencia teórica del terminal.

La página de Wikipedia sobre desplazadores de barriles indica que

  

Un desplazador de barril es un circuito digital que puede desplazar una palabra de datos en una   número especificado de bits en un ciclo de reloj .

¿Es "en un ciclo de reloj" un requisito real? ¿No se pueden hacer cambios de barriles combinatoriamente? ¿Por qué la codificación 66b / 64b tiene una latencia de terminal de un ciclo?

    
pregunta Randomblue

3 respuestas

3

No necesita una palanca de cambio de barril de alineación de carril arbitraria en un TenG base-r MAC o PCS (lado TX o RX). Puede agregar dos posiciones de alineación de carriles en el PCS de TX como una optimización si desea usar un IPG en ejecución que pueda agregar el próximo paquete en un límite de 4 carriles en lugar de 8, y tiene un MAC que puede emitir con la mitad alineación. Pero eso es solo una capa de mezcla de 2 entradas y le ahorra 33U en latencia, solo para paquetes back to back.

En el lado de RX hay una especie de cambio en la caja de cambios de RX, pero eso suele ser hardware en el PMA (debajo del 64/66), por lo que generalmente no tienes que preocuparte por eso. La parte más baja (cronometrada en serie) generalmente solo se salta un poco cuando se busca la alineación del bloque, en lugar de hacer muxing. Las conversiones más altas 32:66 o 40:66 hacia el lado de bloqueo de bloqueo están involucradas, pero nuevamente vienen en el PCS duro.

Para la codificación 64/66, cada uno de los 64 bits de datos aparece en solo tres posibles posiciones de bits en la salida, por lo que esto se combina muy bien en un solo 6-LUT. Como siempre, si el tiempo lo permite, puede fusionar el cambio con la lógica circundante, limitado solo por su imaginación y la parte.

    
respondido por el shuckc
2

El hecho de que tome un ciclo de reloj significa que se realiza de manera combinatoria, es decir, no hay bloques de memoria dentro. El punto es que en un sistema digital el reloj es la base de tiempo, por lo tanto, cualquier intervalo de tiempo dura un múltiplo entero de ciclos de reloj. Como nada puede ser instantáneo, el intervalo de tiempo más pequeño es un ciclo de reloj, por lo que un módulo puramente combinacional necesitará (si está bien construido) al menos un ciclo de reloj. Eso es una especie de convención de todos modos.

Sin embargo, puede verlo desde otro punto de vista: su lógica combinacional tendrá algunas entradas y algunas salidas, y dado que es un sistema de reloj digital, tendrá un registro en la entrada y otro en la salida. Si conecta más de un módulo combinacional en cascada, puede verlos como un gran módulo combinatorio WLOG. Cuando coloca en el registro de entrada una entrada válida, espera una salida válida en el registro de salida, pero estará disponible solo después de al menos un ciclo de reloj.

Sobre su pregunta de Ethernet, si ahora lo piensa, estoy seguro de que puede comprender por qué se debe agregar un ciclo: en un sistema sincronizado digital (sincronizado) todo sucede en uno de los bordes del reloj, por lo que cuando la entrada es válido, debe esperar el siguiente borde antes de consumir la salida para asegurarse de que la lógica combinacional hizo su trabajo.

    
respondido por el Vladimir Cravero
2

Está tratando con lógica síncrona, que es FF - > nube lógica - > FF - > nube lógica y nauseam. La relación / captura del nuevo estado y la presentación para el siguiente ciclo de reloj es lo que está tomando el ciclo del reloj. Y es probable que el Muxing se haga de manera combinatoria.

    
respondido por el placeholder

Lea otras preguntas en las etiquetas