Circuito Integrado para la Generación de Números...

5
1 Fig. 2. LFSR de 4 bits. Resumen—Este trabajo es la descripción de un circuito integrado generador de números pseudo aleatorios de 8 bits, implementado en una tecnología CMOS estándar de 1,5μm. La implementación se basa en un registro desplazamiento lineal realimentado (Linear Feedback Shift Register, LFSR). Tiene un gran número de aplicaciones como encriptación/desencriptación, testeo de circuitos, chequeo de integridad de datos (checksum), entre otras. AbstractThis paper describes an integrated circuit for the generation of pseudo random 8-bit numbers, implemented in a standard 1,5μm CMOS technology. The architecture is based on a Linear Feedback Shift Register (LFSR). An LFSR has a variety of applications like encryption/decryption, testing, checksum, etc. I. INTRODUCCIÓN n este trabajo se presenta un circuito integrado diseñado en la UNS (Universidad Nacional del Sur), para la materia Análisis y diseño de circuitos digitales. Consiste en un generador de números aleatorios, diseñado a partir de un registro de desplazamiento linear realimentado, o LFSR (Linear Feedback Shift Register), de 8 bits. Un registro de desplazamiento consiste en elementos de memoria, conectados de manera tal, que al producirse una señal común a ellos, transfiere su contenido al siguiente elemento [1]. Se puede implementar mediante flip flop D, como se muestra en la Fig. 1 [2]. La señal común que produce la transferencia, está sincronizada con la señal de reloj (CLK) del circuito. Al realizar una combinación de la salida de dos registros, mediante alguna función, y otorgándola a la entrada de otro registro, se obtiene un LFSR. Esta realimentación puede realizarse utilizando compuertas XOR, como se muestra en la Fig. 2. Se obtiene, entonces, una suma módulo 2, que está representada por Docentes. P. Julián está afiliado con CONICET; P. S. Mandolesi está afiliado con CIC, Pcia. Bs. As. G(X) = g m X m + g m-1 X m-1 + … + g 1 X + g 0 . (1) El término g m X m , corresponde a la salida del último registro, donde g m siempre valdrá 1. El resto de los términos g i X i , corresponde a la entrada de cada registro, donde g i tomará el valor 1, si la entrada al registro i corresponde a una función entre el lazo de realimentación y la etapa anterior; y tomará el valor 0, si la entrada corresponde únicamente a la salida de la etapa anterior. El valor de g 0 es siempre 1. Para el ejemplo de la Fig. 2, se tiene un polinomio de orden 5, dado por G(X) = X 4 + X + 1. (2) Esta implementación permite obtener un generador de números pseudos aleatorios, debido a que la secuencia de estados que se obtienen, se repite periódicamente. Además, cada estado tiene un único estado anterior, y un único estado posterior. Se define como período de un LFSR a la longitud de la secuencia numérica que puede generar, sin repetir estados. La mayoría de las aplicaciones requieren que la longitud del período sea máxima, y para esto es necesario determinar con exactitud qué registros tomarán su entrada a partir de una XOR entre la etapa anterior y la realimentación. Estos puntos son denominados taps, y coinciden con los coeficientes g i no nulos, sin tener en cuenta g 0 . Para el ejemplo de la Fig. 2, la secuencia de taps es [4, 1]. La elección de una secuencia de taps determinará la cantidad de espacios de estados que se pueden obtener. Un espacio de estados, consiste en un conjunto de estados que se repiten periódicamente, y está determinado tanto por la secuencia de taps, como por el valor inicial de los registros. Para obtener el máximo período, se debe tener la mínima cantidad de espacios de estados, que corresponde a 2; Circuito Integrado para la Generación de Números Pseudo Aleatorios J. Allievi, R. Giraudo, M. Di Federico , P. Julián , P. S. Mandolesi Dto. Ing. Eléctrica y Computadoras, Universidad Nacional del Sur, Av. Alem 1253, Bahía Blanca. Email: [email protected] E Fig. 1. Registro de desplazamiento de 3 bits. Revista Argentina de Trabajos Estudiantiles TRATE05-005 Vol. I - Nº 1 - Febrero 2006 22

Transcript of Circuito Integrado para la Generación de Números...

1

Fig. 2. LFSR de 4 bits.

Resumen—Este trabajo es la descripción de un circuito

integrado generador de números pseudo aleatorios de 8 bits, implementado en una tecnología CMOS estándar de 1,5μm.

La implementación se basa en un registro desplazamiento lineal realimentado (Linear Feedback Shift Register, LFSR). Tiene un gran número de aplicaciones como encriptación/desencriptación, testeo de circuitos, chequeo de integridad de datos (checksum), entre otras.

Abstract—This paper describes an integrated circuit for the generation of pseudo random 8-bit numbers, implemented in a standard 1,5μm CMOS technology. The architecture is based on a Linear Feedback Shift Register (LFSR). An LFSR has a variety of applications like encryption/decryption, testing, checksum, etc.

I. INTRODUCCIÓN n este trabajo se presenta un circuito integrado diseñado en la UNS (Universidad Nacional del Sur), para la materia

Análisis y diseño de circuitos digitales. Consiste en un generador de números aleatorios, diseñado a partir de un registro de desplazamiento linear realimentado, o LFSR (Linear Feedback Shift Register), de 8 bits. Un registro de desplazamiento consiste en elementos de memoria, conectados de manera tal, que al producirse una señal común a ellos, transfiere su contenido al siguiente elemento [1]. Se puede implementar mediante flip flop D, como se muestra en la Fig. 1 [2]. La señal común que produce la transferencia, está sincronizada con la señal de reloj (CLK) del circuito. Al realizar una combinación de la salida de dos registros, mediante alguna función, y otorgándola a la entrada de otro registro, se obtiene un LFSR. Esta realimentación puede realizarse utilizando compuertas XOR, como se muestra en la Fig. 2. Se obtiene, entonces, una suma módulo 2, que está representada por

† Docentes. P. Julián está afiliado con CONICET; P. S. Mandolesi está

afiliado con CIC, Pcia. Bs. As.

G(X) = gmXm + gm-1Xm-1 + … + g1X + g0. (1)

El término gmXm, corresponde a la salida del último registro, donde gm siempre valdrá 1. El resto de los términos giXi, corresponde a la entrada de cada registro, donde gi tomará el valor 1, si la entrada al registro i corresponde a una función entre el lazo de realimentación y la etapa anterior; y tomará el valor 0, si la entrada corresponde únicamente a la salida de la etapa anterior. El valor de g0 es siempre 1. Para el ejemplo de la Fig. 2, se tiene un polinomio de orden 5, dado por G(X) = X4 + X + 1. (2)

Esta implementación permite obtener un generador de

números pseudos aleatorios, debido a que la secuencia de estados que se obtienen, se repite periódicamente. Además, cada estado tiene un único estado anterior, y un único estado posterior.

Se define como período de un LFSR a la longitud de la secuencia numérica que puede generar, sin repetir estados. La mayoría de las aplicaciones requieren que la longitud del período sea máxima, y para esto es necesario determinar con exactitud qué registros tomarán su entrada a partir de una XOR entre la etapa anterior y la realimentación. Estos puntos son denominados taps, y coinciden con los coeficientes gi no nulos, sin tener en cuenta g0. Para el ejemplo de la Fig. 2, la secuencia de taps es [4, 1]. La elección de una secuencia de taps determinará la cantidad de espacios de estados que se pueden obtener. Un espacio de estados, consiste en un conjunto de estados que se repiten periódicamente, y está determinado tanto por la secuencia de taps, como por el valor inicial de los registros. Para obtener el máximo período, se debe tener la mínima cantidad de espacios de estados, que corresponde a 2;

Circuito Integrado para la Generación de Números Pseudo Aleatorios

J. Allievi, R. Giraudo, M. Di Federico†, P. Julián†, P. S. Mandolesi†

Dto. Ing. Eléctrica y Computadoras, Universidad Nacional del Sur, Av. Alem 1253, Bahía Blanca. Email: [email protected]

E

Fig. 1. Registro de desplazamiento de 3 bits.

Revista Argentina de Trabajos Estudiantiles

TRATE05-005 Vol. I - Nº 1 - Febrero 2006 22

Eduardo
Rectangle

2

Fig. 3. LFSR de 8 bits, con secuencia de taps [8, 7, 6, 1].

un espacio de estados con 2n-1 estados posibles, y otro espacio de estados, donde todos los registros están en cero [3]. Esto debe resultar evidente debido a que un estado donde todos los registros están en cero no tiene forma de evolucionar, y por lo tanto comprende un espacio de estados. La determinación de una secuencia de taps que permita obtener un período máximo no es trivial, por lo que se encuentran tabuladas. Para el caso particular de nuestro LFSR de 8 bits, la secuencia utilizada es [8, 7, 6, 1]. Cabe destacar que una secuencia de taps dada por [A, B, C, D], es equivalente a [n, n-C, n-B, n-A].

II. TECNOLOGÍA El Circuito Integrado (CI) se integró en un proceso n-well

CMOS estándar de 1,5μm (λ=0,8 μm), con 2 capas de metal, 2 capas de poly, opción a transistores NPN y condensadores Pip (poly sobre poly) de 600 af/μm² [4]. Todos los transistores implementados son de tamaño mínimo, siendo los PMOS de 8 μm x 1,6μm (W=10 λ, L= 2 λ) y los NMOS de 4,8 μm x1,6 μm (W =6 λ, L=2 λ).

III. DESCRIPCIÓN El LFSR diseñado se muestra en la Fig. 3. La secuencia de

taps corresponde a [8, 7, 6, 1]. Para entender el funcionamiento del LFSR, se debe tomar

una secuencia de arranque inicial para luego ir analizando la evolución de los estados. Tomando distintas secuencias de arranque se podrá comprobar que cada estado tiene un único estado anterior, y un único estado posterior. Finalmente se podrá ver que la secuencia se repite luego de recorrer todos los estados posibles, que para el caso de la secuencia de taps elegidos, corresponde a 255 estados.

Para el testeo del LFSR se diseñó una planilla que será útil para este análisis preliminar. Cuando se refiere a un valor en un bit determinado, significa que ese registro está guardando ese valor, y que en el próximo evento de CLK, tomará el valor que tiene en la entrada.

En la Tabla I, vemos la evolución de estados para un estado inicial dado por (1, 0, 0, 0, 0, 0, 0, 0). Los b0 a b7, corresponden a los 8 registros, vistos de izquierda a derecha en la Fig. 3. Los estados sucesivos se muestran en la fila inmediata inferior, es decir que el estado posterior al inicial es (0, 1, 0, 0, 0, 0, 0, 0), generado por un evento de CLK. Se ve que para los primeros 8 estados, el LFSR funciona como un simple registro de desplazamiento, debido a que el valor en el lazo de realimentación, dado en b7, es siempre nulo. Pero a partir del próximo estado, los registros que obtienen su entrada

a partir de la realimentación, tendrán valor 1. De esta manera irá evolucionando para generar la totalidad de los estados.

En la Tabla 2, se muestran los últimos estados de este espacio de estados, y se ve que se repite la secuencia.

IV. ARQUITECTURA Como se puede ver en la Fig. 3, el LFSR de 8 bits está

constituido por un multiplexor, ocho bloques denominados “LFSR 1bit”, y las tres compuertas XOR requeridas para la secuencia de taps [8, 7, 6, 1]. El multiplexor a la entrada del LFSR, que se ve a la izquierda en la Fig. 3, permite determinar si la entrada al primer registro estará dada por la realimentación, o por una entrada externa al circuito. Esto nos permite inicializar el LFSR en un estado determinado.

En la Fig. 4, se muestra el interior del bloque denominado “LFSR 1bit”. Consiste de un multiplexor y un flip flop D con clear (CLR), activo con flanco ascendente. Mientras que el flip flop, actúa como el registro propiamente dicho, el multiplexor es requerido para retener el valor en este, permitiendo una lectura de su contenido, sin tener que actuar sobre la señal de CLK, ya que el multiplexor realimenta el valor retenido por el flip flop. Por lo tanto, la señal de habilitación del multiplexor que conmuta entre la salida del flip flop, y la salida de la etapa anterior, será la señal a activar cuando se desee conocer el contenido del registro. Esta señal es la misma para todos los registros, por lo que todos se podrán leer simultáneamente.

TABLA I Evolución de estados, inicio.

b0 b1 b2 b3 b4 b5 b6 b7 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 1 1 1 0 1 0 0 0 1 0 0 1 0 1 0 0 0 1 1 1 1 0 1 0 1 1

Revista Argentina de Trabajos Estudiantiles

TRATE05-005 Vol. I - Nº 1 - Febrero 2006 23

Eduardo
Rectangle

3

Fig. 4. Bloque “LFSR 1bit”.

V. DESCRIPCIÓN DE ENTRADAS/SALIDAS Y TEMPORIZADO Las señales de entrada son: Init: acceso directo al primer registro del LFSR. Se utiliza

para cargar la secuencia inicial. Prog: permite determinar si la entrada el primer registro

estará dada por la realimentación o por la señal Init. Si Prog = 0, se toma como entrada la señal de realimentación; en cambio si Prog = 1, la entrada del primer registro pasa a ser Init.

Enable = 1, el LFSR funciona normalmente, tomando para su entrada la salida de la etapa anterior.

CLR: señal de clear, pone en 0, el contenido de los registros. Es activo por uno.

CLK: señal de clock del sistema. Utiliza un clock bifásico de fases no solapadas.

VDD y GND: señales de alimentación del CI. VDD_PAD: señal de alimentación de los pads. Las salidas S0 a S7, corresponden a cada uno de los

registros.

Para la utilización del CI, se recomienda primero realizar un par de períodos de CLR, para asegurar que estén todos los registros en cero. Luego es necesario ingresar una secuencia que contenga al menos un 1, para esto se debe tener Prog = 1, Enable = 1, e ingresar la secuencia serialmente por Init. Para finalizar, retornar Prog = 0. En la Fig. 5, se muestra este procedimiento, para una secuencia de entrada (1, 0, 0). En el gráfico superior se ven las salidas de los registros, en el central el CLK, y en el inferior se indican Init, Prog y CLR. En este, se ve que primero la señal CLR se mantiene activa por dos períodos de reloj. Luego para t = 0,6 useg., las líneas Init y Prog suben simultáneamente, pero esto no es adquirido por el primer registro, debido a que está implementado con un flip flop master slave; en el próximo flanco ascendente del CLK, el dato es copiado, como se ve en el gráfico superior. Luego Init baja, pero Prog se mantiene activo, por lo que se introducen dos 0.

Como se explicó anteriormente, se desarrolló una planilla para determinar la totalidad de los 255 estados que se producirían. Sabiendo en qué momento se produce el primer estado, en este caso t = 0,8, y conociendo el período del reloj, se puede determinar en qué momento se completa el período del LFSR, y comienza nuevamente la misma secuencia de estados.

VI. DISEÑO DE LAYOUT Para el layout del CI, se tuvo en cuenta su modularidad.

TABLA 2 Evolución de estados, final y reinicio.

b0 b1 b2 b3 b4 b5 b6 b7 1 1 0 1 1 1 1 0 0 1 1 0 1 1 1 1 1 1 1 1 0 1 0 0 0 1 1 1 1 0 1 0 0 0 1 1 1 1 0 1 1 1 0 1 1 1 0 1 1 0 1 0 1 1 0 1 1 0 0 1 0 1 0 1 1 0 0 0 1 0 0 1 1 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0

Fig. 5. Programación.

SO = 1 S1 = 0 S2 = 0

CLR = 1 PROG = 1 INIT = 1

PROG = 1 INIT = 0

SO = 0 S1 = 1 S2 = 0

SO = 0 S1 = 0 S2 = 1

Revista Argentina de Trabajos Estudiantiles

TRATE05-005 Vol. I - Nº 1 - Febrero 2006 24

Eduardo
Rectangle

4

Fig. 8. Fotografía del integrado

Primero se diseñó un flip flop con CLR, en forma de T, donde la parte del clear se encontraba debajo, esto permitió obtener un tamaño de 180 λ x 170 λ. Luego se le agregó el multiplexor que llevan todos los flip flop, quedando una forma de L girada, es decir┌, que se muestra en la Fig. 6; para luego diseñar otro bloque similar pero invertido, de manera que se acoplen sin desperdiciar espacio, logrando ubicar cuatro registros en 600 λ x 170 λ. Estos son los registros 3 a 6, de la Fig. 3.

Luego, se determinó que se podía diseñar otro bloque que incluyera una compuerta XOR en el mismo tamaño, implementando así a los registros 2, 7 y 8, quedando de 180 λ x 170 λ, como se muestra en la Fig. 7. Finalmente para el primer registro se utilizó la misma base, pero se agregó otro multiplexor en vez de una XOR, quedando del mismo tamaño.

Los bloques fueron concebidos teniendo en cuenta su interconexión, de manera que las salidas de una etapa coincidieran con las entradas de la siguiente. Se ve claramente en la Fig. 6 que, se dispone de arriba hacia abajo, las líneas de VDD, GND, entrada D, Enable, CLK, CLR, y nuevamente alimentación para la parte inferior.

De esta manera, simplemente aproximando los bloques correspondientes entre si, se completa el LFSR. En la Fig. 8 se muestra una foto del CI, donde se observan las conexiones de los Pads al encapsulado.

VII. CONCLUSIONES Los registros de desplazamiento lineal realimentados se

utilizan para implementar secuencias de datos pseudos aleatorios. En este trabajo se han presentado los lineamientos básicos de los mismos, y se ha desarrollado un registro de 8 bits con un reloj bifásico no superpuesto. El circuito posee un modo de funcionamiento en el cual se puede introducir la secuencia de datos de entrada, para que el registro evolucione. El desarrollo particular fue realizado en tecnología CMOS de 1,5μm. De todas maneras, la realización se hizo utilizando reglas escalables CMOS, de manera que el diseño puede ser

FLIP FLOP D

MUXXOR CLR

VDD

VSS

D ENABLE

CLK CLR

VDD

VSS

Fig. 7. Flip flop con multiplexor y XOR

Fig. 6. Flip flop con multiplexor

CLRMUX

FLIP FLOP D

VDD

VSS

D ENABLE

CLK CLR

VDD

VSS

Revista Argentina de Trabajos Estudiantiles

TRATE05-005 Vol. I - Nº 1 - Febrero 2006 25

Eduardo
Rectangle

5

portado a diferentes tecnologías, y utilizado como un componente de librería; con una dimensión total de 1292 λ x 198 λ. Entre las aplicaciones en las cuales es de interés contar con un bloque para la realización de un registro de desplazamiento lineal, se encuentran técnicas de auto-ensayo [5], testeo [6], [7], y en circuitos para comunicaciones [8].

Este proyecto se desarrolló como parte del curso de pregrado Análisis y Diseño de Circuitos Digitales de la carrera de Ingeniería Eléctrica de la UNS, en el marco de un programa de desarrollo y formación de recursos humanos en Diseño de Circuitos Integrados.

REFERENCIAS [1] Jan M. Rabaey, Anantha Chandrakasan, Borivoje Nikolic, “Digital

Integrated Circuits”, Second Edition, ISBN: 0-13-090996-3, Prentice Hall (1996).

[2] Neil H. E. Weste and Kamran Eshraghian, “Principles of CMOS VLSI design”, Addison-Wesley EEUU. (1993).

[3] “What’s an LFSR?”. Texas Instruments Co. (1996). [4] Koyanagi, M. Kurino, H. Kang Wook, Lee Sakuma, K. Miyakawa, N.

Itani, H. Tohoku, Sendai, “Future system-on-silicon LSI chips” Micro, IEEE, Jul/Aug 1998 Volume: 18, Issue 4.

[5] Hellebrand, S.; Rajski, J.; Tarnick, S.; Venkataraman, S.; Courtois, B.; “Built-in test for circuits with scan based on reseeding of multiple-polynomial linear feedback shift registers”. Computers, IEEE Transactions on Volume 44, Issue 2, Feb. 1995 Page(s): 223 – 233.

[6] Damarla, T.; Sathaye, A.; “Applications of one-dimensional cellular automata and linear feedback shift registers for pseudo-exhaustive testing”, Computer-Aided Design of Integrated Circuits and Systems, IEEE Transactions on Volume 12, Issue 10, Oct. 1993 Page(s):1580 - 1591.

[7] Rajski, J.; Tyszer, J.; “On the diagnostic properties of linear feedback shift registers”, Computer-Aided Design of Integrated Circuits and Systems, IEEE Transactions on Volume 10, Issue 10, Oct. 1991 Page(s):1316 – 1322.

[8] Kitsos, P.; Sklavos, N.; Zervas, N.; Koufopavlou, O.; “A reconfigurable linear feedback shift register (LFSR) for the Bluetooth system”, Electronics, Circuits and Systems, 2001. ICECS 2001. The 8th IEEE International Conference on Volume 2, 2-5 Sept. 2001 Page(s):991 - 994 vol.2.

Revista Argentina de Trabajos Estudiantiles

TRATE05-005 Vol. I - Nº 1 - Febrero 2006 26

Eduardo
Rectangle