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

Anuncio
Revista Argentina de Trabajos Estudiantiles
1
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]
G(X) = gmXm + gm-1Xm-1 + … + g1X + g0.
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
E
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
(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;
Fig. 1. Registro de desplazamiento de 3 bits.
Fig. 2. LFSR de 4 bits.
†
Docentes. P. Julián está afiliado con CONICET; P. S. Mandolesi está
afiliado con CIC, Pcia. Bs. As.
TRATE05-005
Vol. I - Nº 1 - Febrero 2006
22
Revista Argentina de Trabajos Estudiantiles
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
2
TABLA I
Evolución de estados, inicio.
b0
1
0
0
0
0
0
0
0
1
1
0
1
b1
0
1
0
0
0
0
0
0
1
0
1
1
b2
0
0
1
0
0
0
0
0
0
1
0
1
b3
0
0
0
1
0
0
0
0
0
0
1
0
b4
0
0
0
0
1
0
0
0
0
0
0
1
b5
0
0
0
0
0
1
0
0
0
0
0
0
b6
0
0
0
0
0
0
1
0
1
1
0
1
b7
0
0
0
0
0
0
0
1
1
0
1
1
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.
Fig. 3. LFSR de 8 bits, con secuencia de taps [8, 7, 6, 1].
TRATE05-005
Vol. I - Nº 1 - Febrero 2006
23
Revista Argentina de Trabajos Estudiantiles
3
TABLA 2
Evolución de estados, final y reinicio.
b0
1
0
1
0
0
1
1
1
1
1
1
0
b1
1
1
1
1
0
1
0
0
0
0
0
1
b2
0
1
1
1
1
0
1
0
0
0
0
0
b3
1
0
1
1
1
1
0
1
0
0
0
0
b4
1
1
0
1
1
1
1
0
1
0
0
0
b5
1
1
1
0
1
1
1
1
0
1
0
0
b6
1
1
0
1
0
0
0
0
0
1
0
0
b7
0
1
0
0
1
1
1
1
1
1
0
0
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.
Fig. 4. Bloque “LFSR 1bit”.
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.
SO = 1
S1 = 0
S2 = 0
CLR = 1
PROG = 1
INIT = 1
SO = 0
S1 = 1
S2 = 0
SO = 0
S1 = 0
S2 = 1
PROG = 1
INIT = 0
Fig. 5. Programación.
TRATE05-005
Vol. I - Nº 1 - Febrero 2006
24
Revista Argentina de Trabajos Estudiantiles
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.
4
VDD
XOR
CLR
MUX
VSS
D
ENABLE
CLK
CLR
VDD
FLIP FLOP D
VSS
Fig. 7. Flip flop con multiplexor y XOR
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
VDD
FLIP FLOP D
VSS
D
ENABLE
CLK
CLR
VDD
MUX
CLR
VSS
Fig. 6. Flip flop con multiplexor
TRATE05-005
Fig. 8. Fotografía del integrado
Vol. I - Nº 1 - Febrero 2006
25
Revista Argentina de Trabajos Estudiantiles
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 multiplepolynomial 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.
TRATE05-005
Vol. I - Nº 1 - Febrero 2006
26
Descargar