Longitud del polinomio primario para el aleatorizador

0

Necesito mezclar algunos datos en FPGA antes de transmitir a otro FPGA para permitir la recuperación del reloj y mantener el balance de DC. He implementado un aleatorizador paralelo síncrono para un bloque de datos de 119 bits, pero no puedo encontrar información si hay restricciones en la longitud del polinomio primario.

Me he dado cuenta de que usar polinomios más cortos consume menos recursos después de la síntesis, por ejemplo, x ^ 9 + x ^ 4 + 1 consume 131 LUT de segmento mientras que x ^ 93 + x ^ 2 + 1 consume 262 LUT de segmento.

Me gustaría que mi componente consumiera lo menos posible, pero no estoy seguro si el uso de un polinomio demasiado corto conduce a una "peor" pseudo aleatoriedad?

EDITAR:

Implementación en github: sync_scrambler

    
pregunta Al Bundy

1 respuesta

2

Un polinomio más corto tiene menos estados posibles, lo que se vuelve bastante obvio si lo consideras como un registro de desplazamiento.

En primer lugar, estoy sorprendido

  1. su polinomio de orden superior usa exactamente dos veces la cantidad de LUT como su orden inferior, y
  2. que incluso su polinomio de orden inferior usa 131 LUT.

En una implementación ingenua, simplemente utilizaría order número de registros para implementar el registro de desplazamiento, y una LUT por ruta de retroalimentación para implementar una adición en GF (2). De hecho, la adición en GF (2) es XOR, y los FPGA modernos tienen celdas que probablemente pueden hacer un XOR de salida única de tres entradas. Por lo tanto, su polinomio debería ser posible implementarlo con 1 o 2 LUT y muchos registros para implementar los retrasos de la unidad.

Su uso de recursos apunta a que posiblemente realice una multiplicación de enteros reales o una exponenciación en algún lugar de su código. Eso no tiene sentido.

Pero, a tu pregunta actual:

sí, un polinomio más corto no garantiza la "blancura" como lo haría uno largo.

Para ilustrar: imagine que sus datos de entrada fueron constantes; en ese caso, cada polinomio se repetiría después de su secuencia (y eso en el mejor de los casos, y generalmente, si se diseña sensiblemente, será \ $ 2 ^ \ text {order PS Por lo tanto, la salida de su polinomio de orden inferior sería muy periódica, lo que podría o no ser un problema, dependiendo de si realmente depende de la blancura real de sus datos codificados.

Ahora, la señal constante no es lo único que puede hacer que la salida de tu aleatorizador sea periódica; de hecho, hay tantas posibilidades de "alcanzar" una secuencia de introducción de periodicidad, ya que hay posibilidades de encontrar order -long señales que repita en su bloque de datos.

    
respondido por el Marcus Müller

Lea otras preguntas en las etiquetas