Registro de desplazamiento de retroalimentación lineal


En informática , un registro de desplazamiento de retroalimentación lineal ( LFSR ) es un registro de desplazamiento cuyo bit de entrada es una función lineal de su estado anterior.

La función lineal más comúnmente utilizada de bits individuales es exclusiva-o (XOR). Por tanto, un LFSR suele ser un registro de desplazamiento cuyo bit de entrada es impulsado por el XOR de algunos bits del valor total del registro de desplazamiento.

El valor inicial del LFSR se llama semilla, y debido a que la operación del registro es determinista, el flujo de valores producido por el registro está completamente determinado por su estado actual (o anterior). Asimismo, debido a que el registro tiene un número finito de estados posibles, eventualmente debe entrar en un ciclo repetitivo. Sin embargo, un LFSR con una función de retroalimentación bien elegida puede producir una secuencia de bits que parece aleatoria y tiene un ciclo muy largo .

Las aplicaciones de los LFSR incluyen la generación de números pseudoaleatorios , secuencias de pseudo-ruido , contadores digitales rápidos y secuencias de blanqueamiento . Las implementaciones de hardware y software de LFSR son comunes.

Las matemáticas de una verificación de redundancia cíclica , utilizadas para proporcionar una verificación rápida contra errores de transmisión, están estrechamente relacionadas con las de un LFSR. [1] En general, la aritmética detrás de los LFSR los hace muy elegantes como objeto para estudiar e implementar. Se pueden producir lógicas relativamente complejas con bloques de construcción simples. Sin embargo, también se deben considerar otros métodos, que son menos elegantes pero funcionan mejor.

Un Fibonacci LFSR de 16 bits . Los números de toma de retroalimentación que se muestran corresponden a un polinomio primitivo en la tabla, por lo que el registro recorre el número máximo de 65535 estados excluyendo el estado de todos ceros. El estado mostrado, 0xACE1 ( hexadecimal ) será seguido por 0x5670.

Las posiciones de los bits que afectan al siguiente estado se denominan derivaciones. En el diagrama, los grifos son [16,14,13,11]. El bit más a la derecha del LFSR se llama bit de salida. Las derivaciones se XOR secuencialmente con el bit de salida y luego se retroalimentan en el bit más a la izquierda. La secuencia de bits en la posición más a la derecha se llama flujo de salida.

  • Los bits en el estado LFSR que influyen en la entrada se denominan taps .
  • Un LFSR de longitud máxima produce una secuencia m (es decir, recorre todos los  estados posibles de 2 m - 1 dentro del registro de desplazamiento, excepto el estado donde todos los bits son cero), a menos que contenga todos los ceros, en cuyo caso nunca cambiará .
  • Como alternativa a la retroalimentación basada en XOR en un LFSR, también se puede usar XNOR . [2] Esta función es un mapa afín , no estrictamente un mapa lineal , pero da como resultado un contador polinomial equivalente cuyo estado es el complemento del estado de una LFSR. Un estado con todos unos es ilegal cuando se usa una retroalimentación XNOR, de la misma manera que un estado con todos ceros es ilegal cuando se usa XOR. Este estado se considera ilegal porque el contador permanecería "bloqueado" en este estado. Este método puede ser ventajoso en LFSR de hardware que usan flip-flops que comienzan en un estado cero, ya que no comienzan en un estado de bloqueo, lo que significa que no es necesario sembrar el registro para comenzar a operar.

La secuencia de números generada por un LFSR o su contraparte XNOR puede considerarse un sistema numérico binario tan válido como el código Gray o el código binario natural.

La disposición de las derivaciones para la retroalimentación en un LFSR se puede expresar en aritmética de campo finito como un polinomio mod 2. Esto significa que los coeficientes del polinomio deben ser unos o ceros. Esto se denomina polinomio de retroalimentación o polinomio característico recíproco. Por ejemplo, si las derivaciones están en los bits 16, 14, 13 y 11 (como se muestra), el polinomio de retroalimentación es

El "uno" en el polinomio no corresponde a una derivación, corresponde a la entrada del primer bit (es decir, x 0 , que es equivalente a 1). Las potencias de los términos representan los bits tomados, contando desde la izquierda. El primer y último bit siempre están conectados como toma de entrada y salida respectivamente.

Un registro de desplazamiento de retroalimentación lineal de 31 bits de Fibonacci con taps en las posiciones 28 y 31, lo que le da un ciclo y período máximo a esta velocidad de casi 6,7 años. El circuito usa 4x74HC565N para los registros de desplazamiento, un 74HC86N para el XOR y un inversor, y un temporizador LMC555 para pulsos de reloj.

El LFSR es de longitud máxima si y solo si el polinomio de retroalimentación correspondiente es primitivo . Esto significa que las siguientes condiciones son necesarias (pero no suficientes):

  • El número de toques es par .
  • El conjunto de grifos es coprimido bien definido ; es decir, no debe haber más divisor que 1 común a todas las derivaciones.

Las tablas de polinomios primitivos a partir de los cuales se pueden construir LFSR de longitud máxima se dan a continuación y en las referencias.

Puede haber más de una secuencia de derivación de longitud máxima para una longitud LFSR determinada. Además, una vez que se ha encontrado una secuencia de tomas de longitud máxima, otra sigue automáticamente. Si la secuencia de tap en un LFSR de n bits es [ n , A , B , C , 0] , donde el 0 corresponde al término x 0  = 1, entonces la secuencia "espejo" correspondiente es [ n , n - C , n - B , n - A , 0] . Entonces, la secuencia de tap [32, 22, 2, 1, 0] tiene como contraparte [32, 31, 30, 10, 0] . Ambos dan una secuencia de longitud máxima.

A continuación se muestra un ejemplo en C :

# incluir  unsigned  lfsr1 ( void ) {  uint16_t  start_state  =  0xACE1u ;  / * Cualquier estado de inicio distinto de cero funcionará. * /  uint16_t  lfsr  =  start_state ;  uint16_t  bit ;  / * Debe ser de 16 bits para permitir el bit << 15 más adelante en el código * /  período sin firmar  = 0 ;   hacer  {  / * toques: 16 14 13 11; polinomio de retroalimentación: x ^ 16 + x ^ 14 + x ^ 13 + x ^ 11 + 1 * /  bit  =  (( lfsr  >>  0 )  ^  ( lfsr  >>  2 )  ^  ( lfsr  >>  3 )  ^  ( lfsr  >>  5 ))  &  1  / * & 1u * / ;  lfsr  =  ( lfsr  >>  1 )  |  ( bit  <<  15 );  ++ período ;  }  while  ( lfsr  ! =  start_state );  período de retorno ; }

Si está disponible una operación rápida de paridad o conteo , el bit de retroalimentación se puede calcular de manera más eficiente como el producto escalar del registro con el polinomio característico:

bit  =  paridad ( lfsr  y  0x002Du );

o

bit  =  popcnt ( lfsr  y  0x002Du )  / * & 1u * / ;


Si hay una operación de rotación disponible, el nuevo estado se puede calcular de manera más eficiente como

lfsr  =  rotateright (( lfsr  &  ~ 1u )  |  ( bit  &  1u ),  1 );

o el equivalente

bit  ^ =  lfsr ,  bit  & =  1u ,  bit  ^ =  lfsr ,  lfsr  =  rotateright ( bit ,  1 );

Esta configuración LFSR también se conoce como puertas XOR estándar , de varios a uno o externas . La configuración alternativa de Galois se describe en la siguiente sección.

Un Galois LFSR de 16 bits. Los números de registro anteriores corresponden al mismo polinomio primitivo que el ejemplo de Fibonacci, pero se cuentan a la inversa de la dirección de cambio. Este registro también recorre el número máximo de 65535 estados excluyendo el estado de todos ceros. El hex de estado ACE1 que se muestra será seguido por el hex E270.

Nombrado en honor al matemático francés Évariste Galois , un LFSR en configuración de Galois, que también se conoce como modular , XOR interno o LFSR uno a muchos , es una estructura alternativa que puede generar el mismo flujo de salida que un LFSR convencional (pero compensado a tiempo). [3] En la configuración de Galois, cuando el sistema está sincronizado, los bits que no son taps se desplazan una posición a la derecha sin cambios. Las derivaciones, por otro lado, se XOR con el bit de salida antes de que se almacenen en la siguiente posición. El nuevo bit de salida es el siguiente bit de entrada. El efecto de esto es que cuando el bit de salida es cero, todos los bits del registro se desplazan hacia la derecha sin cambios y el bit de entrada se convierte en cero. Cuando el bit de salida es uno, todos los bits en las posiciones de tap se voltean (si son 0, se convierten en 1, y si son 1, se vuelven 0), y luego todo el registro se desplaza hacia la derecha y el bit de entrada se convierte en 1.

Para generar el mismo flujo de salida, el orden de los grifos es la contraparte (ver arriba) del orden del LFSR convencional; de lo contrario, el flujo será al revés. Tenga en cuenta que el estado interno del LFSR no es necesariamente el mismo. El registro de Galois que se muestra tiene el mismo flujo de salida que el registro de Fibonacci en la primera sección. Existe una compensación de tiempo entre las transmisiones, por lo que se necesitará un punto de inicio diferente para obtener la misma salida en cada ciclo.

  • Los LFSR de Galois no concatenan cada toma para producir la nueva entrada (el XORing se realiza dentro del LFSR y no se ejecutan puertas XOR en serie, por lo tanto, los tiempos de propagación se reducen al de un XOR en lugar de a una cadena completa), por lo que Es posible que cada tap se calcule en paralelo, aumentando la velocidad de ejecución.
  • En una implementación de software de un LFSR, la forma de Galois es más eficiente, ya que las operaciones XOR se pueden implementar una palabra a la vez: solo el bit de salida debe examinarse individualmente.

A continuación se muestra un ejemplo de código C para el ejemplo de LFSR de Galois de período máximo de 16 bits en la figura:

# incluir  unsigned  lfsr2 ( void ) {  uint16_t  start_state  =  0xACE1u ;  / * Cualquier estado de inicio distinto de cero funcionará. * /  uint16_t  lfsr  =  start_state ;  período sin firmar  = 0 ;   hacer  { #ifndef IZQUIERDA  unsigned  lsb  =  lfsr  &  1u ;  / * Obtiene LSB (es decir, el bit de salida). * /  lfsr  >> =  1 ;  / * Registro de cambio * /  if  ( lsb )  / * Si el bit de salida es 1, * /  lfsr  ^ =  0xB400u ;  / * aplicar máscara de alternancia. * / #else  unsigned  msb  =  ( int16_t )  lfsr  <  0 ;  / * Obtiene MSB (es decir, el bit de salida). * /  lfsr  << =  1 ;  / * Registro de desplazamiento * /  if  ( msb )  / * Si el bit de salida es 1, * /  lfsr  ^ =  0x002Du ;  / * aplicar máscara de alternancia. * / #endif  ++ período ;  }  while  ( lfsr  ! =  start_state );  período de retorno ; }

Tenga en cuenta que

 if  ( lsb )  lfsr  ^ =  0xB400u ;

también se puede escribir como

 lfsr  ^ =  ( - lsb )  &  0xB400u ;

que puede producir código más eficiente en algunos compiladores; la variante de desplazamiento a la izquierda puede producir un código aún mejor: el msb es el acarreo de la adición de lfsra sí mismo.

Galois LFSR no binario

Los LFSR binarios de Galois como los que se muestran arriba se pueden generalizar a cualquier alfabeto q -ary {0, 1, ..., q  - 1} (p. Ej., Para binario, q = 2, y el alfabeto es simplemente {0, 1} ). En este caso, el componente exclusivo-o se generaliza al módulo de adición - q (tenga en cuenta que XOR es módulo de adición 2), y el bit de retroalimentación (bit de salida) se multiplica (módulo- q ) por un valor q -ary, que es constante para cada punto de toma específico. Tenga en cuenta que esto también es una generalización del caso binario, donde la retroalimentación se multiplica por 0 (sin retroalimentación, es decir, sin tap) o por 1 (hay retroalimentación presente). Dada una configuración de derivación adecuada, tales LFSR se pueden utilizar para generar campos de Galois para valores primos arbitrarios de q .

Como lo muestra George Marsaglia [4] y lo analiza más a fondo Richard P. Brent , [5] los registros de desplazamiento de retroalimentación lineal se pueden implementar usando operaciones XOR y Shift. Este enfoque se presta a una ejecución rápida en software porque estas operaciones generalmente se asignan de manera eficiente a las instrucciones del procesador moderno.

A continuación se muestra un ejemplo de código C para un Xorshift LFSR de período máximo de 16 bits:

# incluir  unsigned  lfsr3 ( void ) {  uint16_t  start_state  =  0xACE1u ;  / * Cualquier estado de inicio distinto de cero funcionará. * /  uint16_t  lfsr  =  start_state ;  período sin firmar  = 0 ;   hacer  {  lfsr  ^ =  lfsr  >>  7 ;  lfsr  ^ =  lfsr  <<  9 ;  lfsr  ^ =  lfsr  >>  13 ;  ++ período ;  }  while  ( lfsr  ! =  start_state );  período de retorno ; }

Las LFSR binarias de las configuraciones de Fibonacci y Galois se pueden expresar como funciones lineales utilizando matrices en (ver GF (2) ). [6] Utilizando la matriz complementaria del polinomio característico del LFSR y denotando la semilla como un vector de columna, el estado del registro en la configuración de Fibonacci después los pasos están dados por

La matriz para la forma de Galois correspondiente es:

Para una inicialización adecuada,

el coeficiente superior del vector columna:

da el término a k de la secuencia original.

Estas formas se generalizan naturalmente a campos arbitrarios.

La siguiente tabla enumera ejemplos de polinomios de realimentación de longitud máxima (polinomios primitivos ) para longitudes de registro de desplazamiento de hasta 24. El formalismo para LFSR de longitud máxima fue desarrollado por Solomon W. Golomb en su libro de 1967. [7] El número de polinomios primitivos diferentes crece exponencialmente con la longitud del registro de desplazamiento y se puede calcular exactamente usando la función totient de Euler [8] (secuencia A011260 en el OEIS ).

  • Los unos y los ceros ocurren en "corridas". El flujo de salida 1110010, por ejemplo, consta de cuatro corridas de longitudes 3, 2, 1, 1, en orden. En un período de un LFSR máximo, se producen 2 n −1 ejecuciones (en el ejemplo anterior, el LFSR de 3 bits tiene 4 ejecuciones). Exactamente la mitad de estas ejecuciones tienen un bit de longitud, una cuarta parte tiene dos bits de longitud, hasta una sola ejecución de ceros n  - 1 bits de longitud y una sola ejecución de unos n bits de longitud. Esta distribución casi iguala el valor estadístico esperado para una secuencia verdaderamente aleatoria. Sin embargo, la probabilidad de encontrar exactamente esta distribución en una muestra de una secuencia verdaderamente aleatoria es bastante baja [ vaga ] .
  • Los flujos de salida LFSR son deterministas . Si se conocen el estado actual y las posiciones de las puertas XOR en el LFSR, se puede predecir el siguiente estado. [9] Esto no es posible con eventos verdaderamente aleatorios. Con LFSR de longitud máxima, es mucho más fácil calcular el siguiente estado, ya que solo hay un número fácilmente limitado de ellos para cada longitud.
  • El flujo de salida es reversible; un LFSR con derivaciones espejadas recorrerá la secuencia de salida en orden inverso.
  • El valor que consta de todos los ceros no puede aparecer. Por tanto, una LFSR de longitud n no se puede utilizar para generar los 2 n valores.

Los LFSR se pueden implementar en hardware, y esto los hace útiles en aplicaciones que requieren una generación muy rápida de una secuencia pseudoaleatoria, como la radio de espectro ensanchado de secuencia directa . Los LFSR también se han utilizado para generar una aproximación del ruido blanco en varios generadores de sonido programables .

Usos como contadores

La secuencia repetida de estados de un LFSR permite que se use como divisor de reloj o como contador cuando una secuencia no binaria es aceptable, como suele ser el caso cuando el índice de computadora o las ubicaciones de encuadre deben ser legibles por máquina. [9] Los contadores LFSR tienen una lógica de retroalimentación más simple que los contadores binarios naturales o los contadores de código Gray y , por lo tanto, pueden operar a velocidades de reloj más altas. Sin embargo, es necesario asegurarse de que el LFSR nunca entre en un estado de ceros, por ejemplo, preconfigurando en el arranque a cualquier otro estado en la secuencia. La tabla de polinomios primitivos muestra cómo las LFSR se pueden organizar en forma de Fibonacci o Galois para dar períodos máximos. Se puede obtener cualquier otro período agregando a una LFSR que tiene un período más largo alguna lógica que acorta la secuencia al omitir algunos estados.

Usos en criptografía

Los LFSR se han utilizado durante mucho tiempo como generadores de números pseudoaleatorios para su uso en cifrados de flujo , debido a la facilidad de construcción a partir de circuitos electrónicos o electromecánicos simples , períodos prolongados y flujos de salida distribuidos de manera muy uniforme . Sin embargo, un LFSR es un sistema lineal que conduce a un criptoanálisis bastante sencillo . Por ejemplo, dado un tramo de texto plano conocido y el texto cifrado correspondiente , un atacante puede interceptar y recuperar un tramo del flujo de salida LFSR utilizado en el sistema descrito, y a partir de ese tramo del flujo de salida puede construir un LFSR de tamaño mínimo que simule el resultado deseado. receptor mediante el algoritmo de Berlekamp-Massey . A continuación, este LFSR se puede alimentar con el tramo interceptado del flujo de salida para recuperar el texto sin formato restante.

Se emplean tres métodos generales para reducir este problema en los cifrados de flujo basados ​​en LFSR:

  • Combinación no lineal de varios bits del estado LFSR ;
  • Combinación no lineal de los bits de salida de dos o más LFSR (ver también: generador de contracción ); o usando el algoritmo evolutivo para introducir la no linealidad. [10]
  • Reloj irregular del LFSR, como en el generador de pasos alternos .

Los cifrados de flujo importantes basados ​​en LFSR incluyen A5 / 1 y A5 / 2 , que se utilizan en teléfonos móviles GSM , E0 , que se utiliza en Bluetooth , y el generador de reducción . El cifrado A5 / 2 se ha roto y tanto A5 / 1 como E0 tienen serias debilidades. [11] [12]

El registro de desplazamiento de retroalimentación lineal tiene una fuerte relación con los generadores congruentes lineales . [13]

Usos en pruebas de circuitos

Los LFSR se utilizan en pruebas de circuitos para la generación de patrones de prueba (para pruebas exhaustivas, pruebas pseudoaleatorias o pruebas pseudo-exhaustivas) y para análisis de firmas.

Generación de patrones de prueba

Los LFSR completos se utilizan comúnmente como generadores de patrones para pruebas exhaustivas, ya que cubren todas las entradas posibles para un circuito de n entradas . Los LFSR de longitud máxima y los LFSR ponderados se utilizan ampliamente como generadores de patrones de prueba pseudoaleatorios para aplicaciones de prueba pseudoaleatorias.

Análisis de firmas

En las técnicas de autoprueba incorporada (BIST), no es posible almacenar todas las salidas del circuito en el chip, pero la salida del circuito se puede comprimir para formar una firma que luego se comparará con la firma dorada (del buen circuito) para detectar fallas. Dado que esta compresión tiene pérdidas, siempre existe la posibilidad de que una salida defectuosa también genere la misma firma que la firma dorada y no se puedan detectar las fallas. Esta condición se denomina enmascaramiento o alias de errores. BIST se logra con un registro de firma de múltiples entradas (MISR o MSR), que es un tipo de LFSR. Un LFSR estándar tiene una única puerta XOR o XNOR, donde la entrada de la puerta está conectada a varios "taps" y la salida está conectada a la entrada del primer flip-flop. Un MISR tiene la misma estructura, pero la entrada a cada flip-flop se alimenta a través de una puerta XOR / XNOR. Por ejemplo, un MISR de 4 bits tiene una salida paralela de 4 bits y una entrada paralela de 4 bits. La entrada del primer flip-flop es XOR / XNORd con el bit de entrada paralelo cero y los "taps". Cada otra entrada de flip-flop es XOR / XNORd con la salida de flip-flop anterior y el bit de entrada paralelo correspondiente. En consecuencia, el siguiente estado del MISR depende de los últimos estados opuestos al estado actual. Por lo tanto, un MISR siempre generará la misma firma dorada dado que la secuencia de entrada es la misma cada vez. Aplicaciones recientes [14] proponen flip-flops set-reset como "taps" del LFSR. Esto permite que el sistema BIST optimice el almacenamiento, ya que los flip-flops set-reset pueden guardar la semilla inicial para generar todo el flujo de bits del LFSR. Sin embargo, esto requiere cambios en la arquitectura de BIST, es una opción para aplicaciones específicas.

Usos en radiodifusión y comunicaciones digitales

Pelea

Para evitar que secuencias repetidas cortas (p. Ej., Series de 0 o 1) formen líneas espectrales que puedan complicar el seguimiento de símbolos en el receptor o interferir con otras transmisiones, la secuencia de bits de datos se combina con la salida de un registro de retroalimentación lineal antes de la modulación y transmisión. Esta codificación se elimina en el receptor después de la demodulación. Cuando el LFSR se ejecuta a la misma tasa de bits que el flujo de símbolos transmitidos, esta técnica se denomina codificación . Cuando el LFSR se ejecuta considerablemente más rápido que el flujo de símbolos, la secuencia de bits generada por LFSR se denomina código de chip . El código de chip se combina con los datos usando exclusivo o antes de transmitir usando codificación por desplazamiento de fase binaria o un método de modulación similar. La señal resultante tiene un ancho de banda mayor que los datos y, por lo tanto, este es un método de comunicación de amplio espectro . Cuando se utiliza sólo para la propiedad de espectro ensanchado, esta técnica se denomina espectro ensanchado de secuencia directa ; cuando se utiliza para distinguir varias señales transmitidas en el mismo canal al mismo tiempo y frecuencia, se denomina acceso múltiple por división de código .

Ninguno de los esquemas debe confundirse con el cifrado o el cifrado ; codificar y difundir con LFSR no protege la información de escuchas. En cambio, se utilizan para producir flujos equivalentes que poseen propiedades de ingeniería convenientes para permitir una modulación y demodulación robustas y eficientes.

Sistemas de radiodifusión digital que utilizan registros de retroalimentación lineal:

  • Estándares ATSC (sistema de transmisión de televisión digital - Norteamérica)
  • DAB ( sistema de transmisión de audio digital - para radio)
  • DVB-T (sistema de transmisión de televisión digital: Europa, Australia, partes de Asia)
  • NICAM (sistema de audio digital para televisión)

Otros sistemas de comunicaciones digitales que utilizan LFSR:

  • Servicio comercial INTELSAT (IBS)
  • Velocidad de datos intermedia (IDR)
  • HDMI 2.0
  • SDI (transmisión de interfaz digital en serie)
  • Transferencia de datos a través de PSTN (de acuerdo con las recomendaciones de la serie ITU-T V)
  • Telefonía celular CDMA (Code Division Multiple Access)
  • Ethernet "rápido" 100BASE-T2 codifica bits utilizando un LFSR
  • 1000BASE-T Ethernet , la forma más común de Gigabit Ethernet, codifica bits usando un LFSR
  • PCI-Express
  • SATA [15]
  • SCSI conectado en serie (SAS / SPL)
  • USB 3.0
  • IEEE 802.11a codifica bits utilizando un LFSR
  • La capa de enlace de Bluetooth de baja energía utiliza LFSR (denominado blanqueamiento)
  • Sistemas de navegación por satélite como GPS y GLONASS . Todos los sistemas actuales utilizan salidas LFSR para generar algunos o todos sus códigos de rango (como el código de chip para CDMA o DSSS) o para modular la portadora sin datos (como el código de rango GPS L2 CL). GLONASS también utiliza acceso múltiple por división de frecuencia combinado con DSSS.

Otros usos

Los LFSR también se utilizan en sistemas de interferencia de radio para generar ruido pseudoaleatorio para elevar el piso de ruido de un sistema de comunicación objetivo.

La señal de tiempo alemana DCF77 , además de la codificación de amplitud, emplea codificación por desplazamiento de fase impulsada por un LFSR de 9 etapas para aumentar la precisión del tiempo recibido y la robustez del flujo de datos en presencia de ruido. [dieciséis]

  • Molinillo
  • Tornado de Mersenne
  • Secuencia de longitud máxima
  • Registro de desplazamiento de retroalimentación analógica
  • NLFSR , registro de desplazamiento de retroalimentación no lineal
  • Contador de anillo
  • Secuencia binaria pseudoaleatoria
  • Secuencia de oro
  • Secuencia JPL
  • Secuencia de Kasami

  1. ^ Geremia, Patrick. "Cálculo de verificación de redundancia cíclica: una implementación utilizando el TMS320C54x" (PDF) . Instrumentos Texas. pag. 6 . Consultado el 16 de octubre de 2016 .
  2. ^ Registros de desplazamiento de retroalimentación lineal en dispositivos Virtex
  3. ^ Prensa, William; Teukolsky, Saul; Vetterling, William; Flannery, Brian (2007). Recetas numéricas: el arte de la informática científica, tercera edición . Prensa de la Universidad de Cambridge . pag. 386. ISBN 978-0-521-88407-5.
  4. ^ Marsaglia, George (julio de 2003). "Xorshift RNG" . Revista de software estadístico . 8 (14). doi : 10.18637 / jss.v008.i14 .
  5. ^ Brent, Richard P. (agosto de 2004). "Nota sobre los generadores de números aleatorios Xorshift de Marsaglia" . Revista de software estadístico . 11 (5). doi : 10.18637 / jss.v011.i05 .
  6. ^ Klein, A. (2013). "Registros de desplazamiento de retroalimentación lineal". Stream Ciphers . Londres: Springer. págs. 17-18. doi : 10.1007 / 978-1-4471-5079-4_2 . ISBN 978-1-4471-5079-4.
  7. ^ Golomb, Solomon W. (1967). Secuencias de registro de cambios . Laguna Hills, California: Aegean Park Press. ISBN 978-0894120480.
  8. ^ Weisstein, Eric W. "Polinomio primitivo" . mathworld.wolfram.com . Consultado el 27 de abril de 2021 .
  9. ^ a b http://www.xilinx.com/support/documentation/application_notes/xapp052.pdf
  10. ^ A. Poorghanad, A. Sadr, A. Kashanipour "Generación de números pseudo aleatorios de alta calidad mediante métodos evolutivos", Congreso IEEE sobre seguridad e inteligencia computacional, vol. 9, págs. 331-335, mayo de 2008 [1]
  11. ^ Barkam, Elad; Biham, Eli; Keller, Nathan (2008), "Criptoanálisis instantáneo de solo texto cifrado de comunicación cifrada GSM" (PDF) , Journal of Cryptology , 21 (3): 392–429, doi : 10.1007 / s00145-007-9001-y
  12. ^ Lu, Yi; Willi Meier; Serge Vaudenay (2005). El ataque de correlación condicional: un ataque práctico al cifrado Bluetooth . Cripto 2005 . Apuntes de conferencias en Ciencias de la Computación. 3621 . Santa Bárbara, California, Estados Unidos. págs. 97-117. CiteSeerX  10.1.1.323.9416 . doi : 10.1007 / 11535218_7 . ISBN 978-3-540-28114-6.
  13. ^ RFC 4086 sección 6.1.3 "Secuencias pseudoaleatorias tradicionales"
  14. ^ Martínez LH, Khursheed S, Reddy SM. Generación LFSR para una alta cobertura de prueba y una baja sobrecarga de hardware. IET Computadoras y Técnicas Digitales. 2019 ago 21 repositorio UoL
  15. ^ Sección 9.5 de la Especificación SATA, revisión 2.6
  16. ^ Hetzel, P. (16 de marzo de 1988). Difusión de tiempo a través del transmisor LF DCF77 utilizando una codificación de desplazamiento de fase pseudoaleatoria de la portadora (PDF) . II Foro Europeo de Frecuencia y Tiempo. Neuchâtel. págs. 351–364 . Consultado el 11 de octubre de 2011 .

  • http://www.xilinx.com/support/documentation/application_notes/xapp052.pdf
  • https://web.archive.org/web/20161007061934/http://courses.cse.tamu.edu/csce680/walker/lfsr_table.pdf

  • Registros de cambio de retroalimentación lineal en Wayback Machine (archivado el 1 de octubre de 2018): teoría e implementación de LFSR, secuencias de longitud máxima y tablas de retroalimentación integrales para longitudes de 7 a 16.777.215 (3 a 24 etapas) y tablas parciales para longitudes de hasta 4.294.967.295 (25 a 32 etapas).
  • Recomendación O.151 de la Unión Internacional de Telecomunicaciones (agosto de 1992)
  • Mesa LFSR de longitud máxima con longitud de 2 a 67.
  • Rutina de generación de números pseudoaleatorios para el microprocesador MAX765x
  • http://www.ece.ualberta.ca/~elliott/ee552/studentAppNotes/1999f/Drivers_Ed/lfsr.html
  • http://www.quadibloc.com/crypto/co040801.htm
  • Explicación simple de LFSR para ingenieros
  • Términos de retroalimentación
  • Teoría general de LFSR
  • Una implementación de LFSR en VHDL.
  • Codificación VHDL simple para Galois y Fibonacci LFSR.
  • mlpolygen: un generador de polinomios de longitud máxima
  • LSFR y generación intrínseca de aleatoriedad: notas de NKS