Está en la página 1de 80

6/09/13

dc302.4shared.com/doc/Dh3wwxDZ/preview.html

+VCC

Diseo lgico secuencial con VHDL


Introduccin
Los circuitos digitales que hemos manejado con anterioridad han sido de tipo combinacional; es decir, son circuitos que dependen por completo de los valores que se encuentran en sus entradas, en determinado tiempo. Si bien un sistema secuencial puede tener tambin uno o ms elementos combina-cionales, la mayora de los sistemas que se encuentran en la prctica incluy en elementos de memoria, los cuales requieren que el sistema se-describa en . trminos de lgica secuencial. En este captulo se describen algunos de los circuitos secuenciales ms utilizados en la prctica, como.flip-flops, contadores, registros, etc., adems se desarrollan ejercicios para aprender la programacin de circuitos secuen ciales en los que se integran los conceptos adquiridos en los captulos ante riores.

4.1 Diseo lgico secuencial


Un sistema secuencial est formado por un circuito combinacional y un eler ment de memoria encargado de almacenar de forma temporal la historia del sistema. En esencia, la salida de un sistema secuencial no slo depende del valor pre sente de las entradas, sino tambin de la historia del sistema, segn se observa en la figura 4-1.

dc302.4shared.com/doc/Dh3wwxDZ/preview.html

1/80

6/09/13

dc302.4shared.com/doc/Dh3wwxDZ/preview.html

94
VHDL: El arte de programar sistemas digitales

Figura 4.1 Estructura de un sistema secuencial.

Bsicamente hay dos tipos de sistemas secuenciales: sncronos y asin cronos; el comportamiento de los primeros se encuentra sincronizado me diante el pulso de reloj del sistema, mientras que el funcionamiento de los sistemas asincronos depende del orden y momento en el cual se aplican sus seales de entrada, por lo que no requieren un pulso de reloj para sincro nizar sus acciones.

4.2 Flip-flops
El elemento de memoria utilizado indistintamente en el diseo, de los siste-. mas sncronos o asincronos se conoce como flip-flop o celda binaria. La caracterstica principal de un flip-flop es mantener o almacenar un bit de manera indefinida hasta que a travs de un pulso o una seal cambie de es tado. Los flip-flops ms conocidos son los tipos SR, JK, T y D. En la figura 4-2 se presenta cada uno de estos elementos y la tabla de verdad que describe su comportamiento.

dc302.4shared.com/doc/Dh3wwxDZ/preview.html

2/80

6/09/13

dc302.4shared.com/doc/Dh3wwxDZ/preview.html

b)

Figura 4.2 Flip-flops y tablas de verdad caractersticas.

dc302.4shared.com/doc/Dh3wwxDZ/preview.html

3/80

6/09/13

dc302.4shared.com/doc/Dh3wwxDZ/preview.html

Diseo lgico secuencial con VHDL 95

Es importante recordar el significado de la notacin Q y Q(t+i): Q = estado presente o actual Qt+i = estado futuro o siguiente Por ejemplo, consideremos la tabla de verdad que describe el funciona miento del flip-flop tipo D, mostrado en la figura 4.2c) y que se muestra de nuevo en la figura 4.3a). <

Figura 4.3 a) Diagrama y tabla de verdad del flip-flop D, b) Flujo de informacin en el dispositivo.

Cuando el valor de la entrada D es igual a 1, figura 4.3b), la salida Qc+i adopta el valor de 1: Qt+t = 1 siempre y cuando se genere un pulso de re loj. Es importante resaltar que el valor actual en la entrada D es transferido a la salida Qt+i sin importar cul sea el valor previo que haya tenido la sali da Q en el estado presente. En el diseo secuencial con VHDL las declaraciones If-then-else son las ms utilizadas; por ejemplo, el programa del listado 4.1 usa estas decla raciones. La ejecucin del proceso es sensible a los cambios en clk (pulso de reloj); esto es, cuando clk cambia de valor de una transicin de 0 a 1 (clk = 1), el valor de D se asigna a Q y se conserva hasta que se genera un nuevo pulso. A la inversa, si clk no presenta dicha transicin, el valor de Q se mantiene igual. Esto puede observarse con claridad en la simulacin del circuito, fig. 4.4.

dc302.4shared.com/doc/Dh3wwxDZ/preview.html

4/80

6/09/13

dc302.4shared.com/doc/Dh3wwxDZ/preview.html

96 VHDL: El arte de programar sistemas digitales

l i b r a r yi e e e ; u s ei e e e . s t d _ l o g i c _ 1 1 6 4 . a l l ; e n t i t yf f di sp o r t (D , c l k :i n s t d j o g i c ;Q :o u ts t d _ l o g i c );e n d f f d ; a r c h i t e c t u r ea r q _ f f do ff f di s b e g i n p r o c e s s( c l k )b e g i n i f( c l k ' e v e n ta n dc l k = ' l ' )t h e n Q< =D ;e n di f ;e n d p r o c e s s ;e n da r q _ f f d ;

Listado 4.1 Descripcin de un flip-flop disparado por flanco positivo.

Figura 4.4 Simulacin del flip-flop D.

Notemos que la salida Q toma el valor de la entrada.D slo cuando la 5 transicin del pulso de reloj es de 0 a 1 y se mantiene hasta que se ejecuta de-nuevo el cambio de valor de la entrada clk. Atributo 'event En el lenguaje VHDL los atributos sirven para definir caractersticas que seI pueden asociar con cualquier tipo de datos, objeto o entidades. El atributo 'event1 (evento) se utiliza para describir un hecho u ocurrencia de una seal en particular. En el cdigo del listado 4.1 podemos observar que la condicin if . clk 'event es cierta slo cuando ocurre un cambio de valor; es decir, un suc-so (event) de la seal clk. Como se puede apreciar, la declaracin (if-then) no maneja la condicin else, debido a que el compilador mantiene el valorm de Q hasta que no exista un cambio de valor en la seal clk.

El apstrofo' indica que se trata de un atributo.

dc302.4shared.com/doc/Dh3wwxDZ/preview.html

5/80

6/09/13

dc302.4shared.com/doc/Dh3wwxDZ/preview.html

Diseo lgico secuencial con VHDL

97 Para mayor informacin de los atributos predefinidos en VHDL consul te el apndice C. Ejemplo 4.1 Escriba un programa que describa el funcionamiento de un flip-flop SR con base en la siguiente tabla de verdad.

Figura E4.1 Tabla de funcionamiento.

Solucin La tabla de verdad del flip-flop SR muestra que cuando la entrada S es igual a 1 y la entrada R es igual a 0, la salida Qt+i toma valores lgicos de 1. Por otro lado, cuando S = 0 y R=l,.la salida Qt+i = 0; en el caso de que S y R sean ambas igual a 1 lgico, la salida Qt+i queda indetermi nada; es decir, no es posible precisar su valor y ste puede' adoptar el 0 o 1 lgico. Por ltimo, cuando no existe cambio en las entradas S y R es decir, son igual a 0, el valor de Qt+| mantiene su estado actual Q. Con base en el anlisis anterior, el programa en VHDL puede realizarse utilizando instrucciones condicionales y un nuevo tipo de datos: valores no importa ('-'), los cuales permiten adoptar un valor de 0 o 1 lgico de mane ra indistinta (Listado 4.2).

dc302.4shared.com/doc/Dh3wwxDZ/preview.html

6/80

6/09/13

dc302.4shared.com/doc/Dh3wwxDZ/preview.html

98 VHDL: El arte de programar sistemas digitales

1. 2. 3.

l i b r a r yi e e e ; u s ei e e e .s t d _ _ l o g i c _ 1 1 6 4.a l l ; e n t i t yf f s ri sp o r t(

4. 5.

S , R , c l k :i ns t d _ l o g i c ; Q ,Q n :i n o u ts t d _ l o g i c );

6. 7.

e n df f s r ; a r c h i t e c t u r ea _ f f s ro ff f s ri s

8. begin 9. process (clk, S, R) 11 begin


1 0 1 1 1 2 1 3 1 4 1 5 1 6 1 7 1 8 1 9 2 0 2 1 2 2 2 3 i f( c l k ' e v e n ta n d c l k=' 1 ' )t h e n

i f( S=' O ' a n dR =' 1 ' )t h e n Q< =' 0 ' ; Q n< =' 1 ' ; e l s i f( S=' 1 a n dR='0' )t h e n

Q< =' 1 ' ; Q n< =' 0 ' e l s i f( S=' 0 Q< =Q ; Q n< =Q n ; e ls e Q< =' ' ; Q n< =' ' e n di f ; e n di f ; a n dR='0' )t h e n

2 4

dc302.4shared.com/doc/Dh3wwxDZ/preview.html

7/80

6/09/13

dc302.4shared.com/doc/Dh3wwxDZ/preview.html

2 5

e n dp r o c e s s ;

2 6 e n da _ f f s r ; Listado 4.2 Cdigo VHDL de un registro de 8 bits.

4.3 Registros
Figura 4.5 Registro paralelo de 8 bits.

En la figura 4.5 se presenta la estructura de un registro de 8 bits con entrada y salida de datos en paralelo. El diseo es muy similar al flip-flop anterior, la diferencia radica en la utilizacin de vectores de bits en lugar de un solo bit, como se observa en el listado 4.2.

dc302.4shared.com/doc/Dh3wwxDZ/preview.html

8/80

6/09/13

dc302.4shared.com/doc/Dh3wwxDZ/preview.html

Diseo lgico secuencial con VHDL 99

l i b r a r yi e e e ; u s ei e e e . s t d _ l o g i c _ 1 1 6 4.a l l ;e n t i t y r e gi sp o r t (D :i ns t d _ l o g i c _ v e c t o r ( 0t o 7 ) ;c l k :i ns t d _ l o g i c ; Q :o u ts t d _ l o g i c _ v e c t o r ( 0t o7 ) ) ;e n d r e g ; a r c h i t e c t u r ea r q r e go fr e gi s b e g i n p r o c e s s( c l k )b e g i n i f( c l k ' e v e n ta n dc l k = ' l ' )t h e n Q< =D ;e n di f ; e n dp r o c e s s ;e n d a r q r e g ; Listado 4.2 Cdigo VHDL de un registro de 8 bits.

Eje.mplo 4.2 Escriba un programa d un registro de 4 bits, como el que se muestra en la figura E4-2. Realice el diseo utilizando instrucciones if-then-else y procesos.

Solucin Como puede observarse en la tabla que describe el comportamiento del cir cuito, si CLR = 0, las salidas Q adoptan el valor de 0; pero si CLR = 1, to man el valor de las entradas DO, DI, D2 y D3. 100 VHDL: El arte de programar sistemas digitales
dc302.4shared.com/doc/Dh3wwxDZ/preview.html 9/80

6/09/13

dc302.4shared.com/doc/Dh3wwxDZ/preview.html

El cdigo del programa se observa en el siguiente listado.

Las variables sensitivas que determinan el comportamiento del circuito se encuentran dentro del proces (CLR y CLK). Para transferir los datos de entrada hacia la salida es necesario, segn se expuso, generar un pulso de reloj a travs del atributo event (CLK'revent and CLK = '1')

dc302.4shared.com/doc/Dh3wwxDZ/preview.html

10/80

6/09/13

dc302.4shared.com/doc/Dh3wwxDZ/preview.html

Diseo lgico secuencial con VHDL 101

4.4 Contadores
Los contadores son entidades muy utilizadas en el diseo lgico. La forma usual para describirlos en VHDL es mediante operaciones de incremento, decremento de datos o ambas. Como ejemplo veamos la figura 4.6 que representa un contador ascen dente de 4 bits, as como el diagrama de tiempos que muestra su funciona miento.

Figura 4.6 Contador binario de cuatro bits.

Gabe mencionar que la presentacin del diagrama de tiempos de este cir cuito tiene la finalidad de ilustrar el procedimiento que se sigue en la progra macin, ya que puede observarse con claridad el incremento que presentan las salidas cuando se.aplica un pulso de reloj a la entrada (listado 4.3).

l i b r a r yi e e e ; u s ei e e e .s t d _ l o g i c _ 1 1 6 4 . a l l ; u s ew o r k .s t d _ _ a r i t h .a l l; e n t i t yc o n t 4i sp o r t (c l k :i n s t d _ l o g i c ; Q :i n o u ts t d _ l o g i c _ v e c t o r ( 3d o w n t o0 ) ) ;e n d c o n t 4 ; a r c h i t e c t u r ea r q c o n to fc o n t 4i sb e g i n p r o c e s s( c l k ) b e g i n I f( c l k ' e v e n ta n dc l k=' 1 ' )t h e n Q< =Q+1 ;e n di f ;e n d p r o c e s s ;e n da r q c o n t ; Listado 4.3 Cdigo que describe un contador de 4 bits.

dc302.4shared.com/doc/Dh3wwxDZ/preview.html

11/80

6/09/13

dc302.4shared.com/doc/Dh3wwxDZ/preview.html

102 VHDL: El arte de programar sistemas digitales

Cuando requerimos la retroalimentacin de una seal (Q < = Q+l)l ya sea dentro o fuera de la entidad, utilizamos el modo inout (Vea seccin de Modos en Captulo 2). En nuestro caso el puerto correspondiente a Q'f se maneja como tal, debido a que la seal se retroalimenta en cada pulso de reloj. Notemos tambin el uso del paquete std_arith que, como ya se mencion, permite usar el operador + con el tipo std_logic_vector. El funcionamiento del contador se define bsicamente en un proceso, en el cual se llevan a cabo los eventos que determinan el comportamiento del circuito. Al igual que en los otros programas, una transicin de 0 a 1 fec tuada por el pulso de reloj provoca que se ejecute el proceso, lo cual incre menta en 1 el valor asignado a la variable Q. Cuando esta salida tiene el valor de 15 ("1111") y si el pulso de reloj se sigue aplicando, el programa ern-1 pieza a contar nuevamente de 0. Ejemplo 4.3 Elabore un programa que describa el funcionamiento de un contador de 4 bits- Realice en el diseo una seal de control (Up/Down) que determine el sentido del conteo: ascendente o descendente (Fig. E4-3).

Figura E4.3 Contador binario de cuatro bits.

Solucin La seal de control Up/Down permite definir si el conteo se realiza en senti do ascendente o descendente. En nuestro caso, un cero aplicado a esta seal determina una cuenta ascendente: del 0 al 15. De esta forma, el funciona miento del circuito queda determinado por dos seales: el pulso de reloj (clk) y la seal Up/Down, como se ve en el siguiente programa.

dc302.4shared.com/doc/Dh3wwxDZ/preview.html

12/80

6/09/13

dc302.4shared.com/doc/Dh3wwxDZ/preview.html

Diseo lgico secuencial con VHDL 10

l i b r a r yi e e e ; u s ei e e e .s t d _ _ l o g i c _ _ 1 1 6 4. a l l ;u s ew o r k . st d _ a r it h .a l l ; e n t i t yc o n t a d o ri sp o r t(c l k :i ns t d _ l o g i c ;U P : i ns t d _ l o g i c ; Q :i n o u ts t d _ l o g i c _ v e c t o r ( 3d o w n t o0 ) ) ;e n dc o n t a d o r ; a r c h i t e c t u r ea _ c o n t a d o ro fc o n t a d o ri sb e g i np r o c e s s( U P , c l k )b e g i n i f( c l k ' e v e n t a n dc l k=' l ' ) t h e ni f( U P=' 0 ')t h e n Q .< =Q + l ;e l s e Q <= Q-l; end if; end if; end process ; end

a__contador;
Listado E4.3.

Contador con reset y carga en paralelo (load) La entidad de diseo que aparece en la figura 4.7a) es un ejemplo de un cir cuito contador sncrono de 4 bits. Este contador tiene varias caracterstica adicionales respecto al anterior. Su funcionamiento se encuentra predetermi nado por los valores que se hallan en la tabla de la figura 4.7b). Como se pue de observar, este contador posee las entradas de control Enp y Load y segu el valor lgico que tengan en sus terminales realizarn cualesquiera de la operaciones reseadas en la tabla. Note que la seal de Reset se activa en ni vel alto de forma asincrona; por ltimo, el circuito tiene cuatro entradas ei paralelo declaradas como P3, P2, Pl y P0.

b)
Figura 4.7 a) Contador binario de cuatro bits, b) Tabla de funcionamiento.

dc302.4shared.com/doc/Dh3wwxDZ/preview.html

13/80

6/09/13

dc302.4shared.com/doc/Dh3wwxDZ/preview.html

104 VHDL: El arte de programar sistemas digitales

El propsito de describir este ejemplo radica en subrayar el uso de varias condiciones, de tal manera que no sea posible evaluar una instruccin si la(s) condicin(es) predeterminada(s) no se cumple(n). Por ejemplo, observemos el listado 4-4, donde la lnea 11 presenta la lista sensitiva de las variables que intervienen en el proceso (clk, ENP, LOAD, RESET). Ntese que no impor ta el orden en que se declaran. En la lnea 12 se indica que si RESET = 1, las salidas Q toman el valor de 0; si no es igual a 1, se pueden evaluar las si guientes condiciones (es importante resaltar que la primera condicin debe ser RESET). En la lnea 15 se observa el proceso de habilitar una carga en paralelo, por lo que si LOAD = 0 y ENP es una condicin de no importa ('-') que puede tomar el valor de 0 o 1 (segn la tabla 4.7b), las salidas Q adoptarn el valor que se halle en las entradas P (P3, P2, Pl, P0). Este ejemp lo muestra de forma didctica el uso de la declaracin elsif (si no-si).

1. 2. 3. 4.

l i b r a r yi e e e ; u s ei e e ' e . s t d _ l o g i c _ 1 1 6 4.a l l ; u s ew o r k . s t d _ a r i t h . a l l ; e n t i t yc o n . ti sp o r t( 5P :i ns t d _ l o g i c _ v e c t o r( 3d o w n t o0 ); " 6c l k ,L O A D ,E N P ,R E S E T :i ns t d _ l o g i c ; 7Q :i n o u ts t d _ l o g i c _ v e c t o ' r( 3d o w n t o0 ) ) ; 8e n dc o n t ;

9. 10.

architecture arq_cont of cont is begin 11 process (clk, RESET,LOAD, ENP) begin 12 if -(REST'= 'l'j' then- 13 Q <= "0000"; 1 4e l s i f( c l k ' e v e n ta n dc l k=' 1 ' )t h e n 1 5i f( L O A D=' 0 'a n dE N P=' ' )t h e n 1 6Q< =P ; 17 elsif (LOAD = '1' and ENP = '0') then 18 Q <= Q;

dc302.4shared.com/doc/Dh3wwxDZ/preview.html

14/80

6/09/13

dc302.4shared.com/doc/Dh3wwxDZ/preview.html

1 9e l s i f( L O A D=' 1 'a n dE N P= " ' 1 ' )t h e n 2 0Q< =Q+1 ;. ' 2 1 n di f ; 2 2e n di f ; 23 end process; 24 end arq_cont;

Listado 4.4 Contador con reset, enable y carga en paralelo.

dc302.4shared.com/doc/Dh3wwxDZ/preview.html

15/80

6/09/13

dc302.4shared.com/doc/Dh3wwxDZ/preview.html

Diseo lgico secuencial con VHDL IQ

4,5 Diseo de sistemas secuenciales sncronos


Como ya se mencion, la estructura de los sistemas secuenciales sncrono: basa su funcionamiento en los elementos de memoria conocidos come flip-flops. La palabra sincrona se refiere a que cada uno de estos elemen tos de memoria que interactan en un sistema se encuentran conectado: a la misma seal de reloj, de forma tal que slo se producir un cambio d( estado en el sistema cuando ocurra un flanco de disparo o un pulso en 1; seal de reloj. Existe una divisin en el diseo de los sistemas secuenciales que se refie re al momento en que se producir la salida del sistema. En la estructura de Mealy (Fig. 4.8) las seales de salida dependen tantc del estado en que se encuentra el sistema, como de la entrada que se apli ca en determinado momento. En la estructura de Moore (Fig. 4-9) la seal de salida slo depende de estado en que se encuentra.

Salidas

Figura 4.8 Arquitectura secuencial de M ealy.

dc302.4shared.com/doc/Dh3wwxDZ/preview.html

16/80

6/09/13

dc302.4shared.com/doc/Dh3wwxDZ/preview.html

106 VHDL: El arte de programar sistemas digitales

Salidas

Figura 4.9 Arquitectura secuencial de M oore.

Un sistema secuencial se desarrolla a travs de una serie de pasos generali zados que comprenden el enunciado del problema, diagrama de estados, tabla de estados, asignacin de estados, ecuaciones de entrada a los elementos de me moria y diagrama electrnico del circuito.

Figura 4.10 Detector de secuencia.

Como ejemplo consideremos el diseo del siguiente sistema secuencial (Fig, 4-10), en el cual se emite un pulso de salida Z (Z=l) cuando en la l nea de entrada (X) se reciben cuatro unos en forma consecutiva; en Caso ff contrario, la salida Z es igual a cero.

dc302.4shared.com/doc/Dh3wwxDZ/preview.html

17/80

6/09/13

dc302.4shared.com/doc/Dh3wwxDZ/preview.html

Diseo lgico secuencial con VHDL 107

Diagramas de estado El uso de diagramas de estados en la lgica programable facilita de manera significativa la descripcin de un diseo secuencial, ya que no es necesario seguir la metodologa tradicional de diseo. En VHDL se puede utilizar un modelo funcional en que slo se indica la transicin que siguen los estados y las condiciones que controlarn el proceso. De acuerdo con nuestro ejemplo (Fig. 4-12), vemos que el sistema se cuencial se puede representar por medio del diagrama de estados de la figu ra 4.12a): arquitectura Mealy. En este diagrama se advierte que el sistema cuenta con una seal de entrada denominada X y una seal de salida Z.. En la figura 4.12b) se muestra la tabla de estados que describe el comportamien to del circuito. Cuando se est en el estado dO y la seal de entrada X es igual a uno, se avanza al estado di y la salida Z durante esta transicin es igual a cero; en caso contrario, cuando la entrada X es igual a cero, el circuito se mantiene en el estado dO y la salida tambin es cero (Fig. 4.11).

Figura 4.11 Transicin de un estado a otro.

Con un poco de lgica se puede intuir el comportamiento del diagrama de estados. Observ como slo la secuencia de cuatro unos consecutivos pro-. voca que la salida Z = 1.

dc302.4shared.com/doc/Dh3wwxDZ/preview.html

18/80

6/09/13

dc302.4shared.com/doc/Dh3wwxDZ/preview.html

b)
Figura 4.12 a) Diagrama de Estados, b) Tabla de estados.

dc302.4shared.com/doc/Dh3wwxDZ/preview.html

19/80

6/09/13

dc302.4shared.com/doc/Dh3wwxDZ/preview.html

108 VHDL El arte de programar sistemas digitales Este diagrama se puede codificar con facilidad mediante una descripcin de alto nivel en VHDL. Esta descripcin supone el uso de declaraciones case'when las cuales determinan, en un caso particular, el valor que tomar el siguiente estado. Por otro lado, la transicin entre estados se realiza por medio de declaraciones if-then-else, de tal forma que stas se encargan de establecer la lgica que seguir el programa para realizar la asignacin del estado. Como primer paso en nuestro diseo, consideremos los estados dO, di, d2 y d3. Para poder representarlos en cdigo VHDL, hay que definirlos dentro de un tipo de datos enumerado2 (apndice C) mediante la declaracin type. Observemos la forma en que se listan los identificadores de los estados, as como las seales utilizadas para el estado actual (edo_presente) y siguiente (edo_futuro): type estados is (dO, di, d2,d3) ,- : signal edo_presente; edo_futuro : estados,' El siguiente paso consiste en la declaracin del proceso que definir el comportamiento del sistema. En ste debe considerarse que el edo_futuro depende del valor del edo_presente y de la -entrada X. De esta manera la lista sensitiva del proceso quedara de la siguiente forma: procesol: procesa (edo_presente, X) Dentro del proceso se describe la transicin del edo^presente al edo_futuro. Primero se inicia con la declaracin case que especifica el primer estado que se va a evaluar en nuestro caso consideremos que el anlisis cominza e el estado dO (when dO), donde la salida Z siempre es cero sin' importar el valor de X. Si la entrada X es igual a 1 el estado futuro es di; en caso contrario, es dO. De este modo, la declaracin del proceso quedara de la siguiente manera: procesol: process (edo_presente, X) begin case edo_presente is
dc302.4shared.com/doc/Dh3wwxDZ/preview.html 20/80

6/09/13

dc302.4shared.com/doc/Dh3wwxDZ/preview.html

when dO => Z<= '0'; if X = '!' then


e d o _ f u t u r o< =d i ; e l s e e d o _ f u t u r o< =d O ; e n di f ;

Se llaman tipos enumerados porque en ellos se agrupan o enumeran elementos que pertenecen a un mismo gnero.

dc302.4shared.com/doc/Dh3wwxDZ/preview.html

21/80

6/09/13

dc302.4shared.com/doc/Dh3wwxDZ/preview.html

Diseo lgico secuencial con VHDL 109

Ntese que en cada estado debe indicarse el valor de la salida (Z < = 0) despus de la condicin when, siempre y cuando la variable Z no cambie de valor. En el listado 4.5 se muestra la definicin completa del cdigo explicado. Como podemos observar, en el programa se utilizan dos procesos. En el pri mero, procesol (lnea 11) se describe la transicin que sufren los estados y las condiciones necesarias que determinan dicha transicin. En el segundo, proceso2 (lnea 42) se lleva a cabo de manera sncrona la asignacin del es tado futuro al estado presente, de suerte que cuando se aplica un pulso de reloj, el proceso se ejecuta. En la lnea 31 se describe la forma de programar la salida Z en el estado d3 cuando sta obtiene el valor de 0 o 1, segn el valor de la entrada X.

1. 2. 3.
4 5

l i b r a r yi e e e ; u s ei e e e . s t d _ l o g i c _ 1 1 6 4 . a l l ; e n t i t yd i a g r a m ai sp o r t ( c l k , x :i ns t d _ l o g i c ; z :o u ts t d _ l o g i c );

6e n dd i a g r a m a ;'. 7a r c h i t e c t u r ea r g _ d i a g r a m ao fd i a g r a m ai s 8 9 1 0 ' 1 1 1 2 1 3 1 4 ' 1 5 1 6 1 7 1 8 1 9 2 0


dc302.4shared.com/doc/Dh3wwxDZ/preview.html 22/80

t y p ee s t a d o si s( d O ,; d l ,d . 2 ,d 3 ) ;. s i g n a le d o _ p r e s e n t e ,e d o _ f u t u r o :e s t a d o s ; b e g i n p r o c e s o l :p t o c e s s( e d o _ p r e s e n t e ,x )b e g i n c a s ee d o _ p r e s e n t ei s. w h e nd O= >z< =' 0 ' ; i fx= '1 't h e n e d o _ f u t u r o< = d l ;

e l s e e d o _ f u t u r o< =d O ;. . e n di f; w h e nd i= >z< = ' 0 ' ;

6/09/13

dc302.4shared.com/doc/Dh3wwxDZ/preview.html

i fx = '1 't h e n 2 1 2 2 2 3 2 4 2 5 2 6 2 7 2 8 2 9 3 0 e d o _ f u t u r o< =d 2 ; e l s e e d o _ _ f u t u r o< =d i ; e n di f ;. w h e nd 2= >z< = ' 0 ' ; i fx = '1 't h e n e d o _ f u t u . r o< =d 3; e l s e e d o _ f u t u r o< =d O ; e n di f ; Contina

dc302.4shared.com/doc/Dh3wwxDZ/preview.html

23/80

6/09/13

dc302.4shared.com/doc/Dh3wwxDZ/preview.html

110 VHDL: El arte de programar sistemas digitales 3 1w h e nd 3= > 3 2i fx = ' l 't h e n 3 3e d o _ _ f u t u r o< =d O ; 3 4 z <='!'; 3 5e l s e 3 6e d o _ f u t u r o< =d 3 ; 3 7z< =' 0 ' ; 3 8e n di f ; 3 9e n dc a s e ; 4 0e n dp r o c e s sp r o c e s o l ; 4 1 4 2p r o c e s o 2 :p r o c e s s ( c l k )b e g i n 4 3i f( c l k ' e v e n ta n dc l k = ' l ' )t h e n 4 4e d o _ p r e s e n t e< =e d o _ f u t u r o ; .4 5e n di f ; 4 6e n dp r o c e s sp r o c e s o 2 ; 4 7e n da r q _ d i a g r a m a ; Listado 4.5 Diseo de un diagrama de estados.

Ejemplo 4.4 Se. requiere programar el diagrama de estados de la figura E4.4-

Figura E4.4 Diagrama de estados.

dc302.4shared.com/doc/Dh3wwxDZ/preview.html

24/80

6/09/13

dc302.4shared.com/doc/Dh3wwxDZ/preview.html

Solucin Por ejemplo, en la figura E4.4 notamos que el circuito pasa al estado ql con el primer 1 de entrada y al estado q2 con el segundo. Las salidas asociadas con es tas dos entradas son 0, segn se seala. La tercera entrada consecutiva de 1 ge nera un 1 en la salida y hace que el circuito pase al estado q3. Una vez que se encuentra en q3, el circuito permanecer en este estado, emitiendo salidas 0.

dc302.4shared.com/doc/Dh3wwxDZ/preview.html

25/80

6/09/13

dc302.4shared.com/doc/Dh3wwxDZ/preview.html

Diseo lgico secuencial con VHDL 11]

En lo que respecta a la programacin en VHDL, este ejemplo sigue \i misma metodologa que el ejercicio anterior (Fig. 4.12), la cual consiste er usar estructuras case - when y tipo de datos enumerado, que en este case contiene los cinco estados (qO, ql, q2, q3 y q4) que componen el diagrama El listado correspondiente al programa se encuentra a continuacin lis tado E4.4.

library ieee; use ieee. std_logic__l 164 . all ; entity diag is port( clk,x: in std_logic; z: out std_logic); end diag; architecture arq_diag of diag is type estados is (q0,ql,q2,q3 ,q4) ; signal edo_pres, edo_fut: estados; begin procesol: process (edo_pres,x) begin case edo_pres is when qO => z <= '0'; if x = ' 0 " then . edo_fut <= q4; else edo_fut <= ql; end if; when ql => z <= '0'; if x = ' 0 ' then edo_fut <= q4; else . edo_fut <= q2 ; end if; when q2 => if x = '0' then edo_fut <= q4; z <= '0'; else edo_fut <= q3 ; z <= '1'; end if; when q3 => z <= '0'; if x = '0' then
Contina

dc302.4shared.com/doc/Dh3wwxDZ/preview.html

26/80

6/09/13

dc302.4shared.com/doc/Dh3wwxDZ/preview.html

112
VHDL: El arte de programar sistemas digitales edo_fut <= q3; else e d o _ _ f u t< =q 3 ;e n di f ;w h e nq 4= >z< ='0 ' ;i f x=' 0 't h e ne d o _ f u t< =q 4 ;e l s e e d o _ f u t<=q l ;e n di f ;e n dc a s e ;e n dp r o c e s s p r o c e s o l ;p r o c e s o 2 :p r o c e s s( c l k )b e g i n i f( c l k ' e v e n ta n dc l k = ' 1 ' ) t h e n e d o _ p r e s< =e d o _ f u t ;e n di f ;e n dp r o c e s sp r o c e s o 2 ; e n da r q _ d i a g ;

L i s t a d oE 4 . 4 .

dc302.4shared.com/doc/Dh3wwxDZ/preview.html

27/80

6/09/13

dc302.4shared.com/doc/Dh3wwxDZ/preview.html

Diseo lgico secuencial con VHDL

Ejercicios
Flip-Flop
4-1 Realice un programa en VHDL que describa el funcionamiento del flip-flop tipo JK. Auxliese para su descripcin con la tabla caracterstica del Flip-Flop.

Tabla caracterstica del Flip-Flop JK .

4.2. Realice un programa en VHDL que describa el funcionamiento del flip-flop tipo T. Auxliese para su descripcin con la tabla caracterstica del Flip-Flop.

Tabla caracterstica del Flip-Flop T

Registros 4.3. Disee un registro de 4 bits como el mostrado en la siguiente figura y cuyo funcionamiento se encuentra regulado por las seales de control SO y SI, tal y como se muestra en la siguiente tabla:

dc302.4shared.com/doc/Dh3wwxDZ/preview.html

28/80

6/09/13

dc302.4shared.com/doc/Dh3wwxDZ/preview.html

114 VHDL: El arte de programar sistemas digitales SO SI ACCIN 0 0 Hold (Reten)

0. 1.

1 Desplazamiento Izquierda SL 0 Load (Carga) 1 1 Desplazamiento Derecha SR

Seal de control

Seal de cdrit Salidas

CLK= Reloj SO, S1 = Seales de control DO...D3= Entradas de datos RST= Reset, Q0...Q3= Salida de datos L= Entrada serie desplazamiento a la izquierda R= Entrada serie desplazamiento a la derecha. 4.4 En la figura siguiente se muestra el esquema lgico de un registro de des plazamiento con entrada serie/ paralelo y salida serie. Realice un progra ma en VHDL que realice la misma funcin.

dc302.4shared.com/doc/Dh3wwxDZ/preview.html

29/80

6/09/13

dc302.4shared.com/doc/Dh3wwxDZ/preview.html

Sauda d e datos en ser

dc302.4shared.com/doc/Dh3wwxDZ/preview.html

30/80

6/09/13

dc302.4shared.com/doc/Dh3wwxDZ/preview.html

Diseo lgico secuencial con VHDL 115

4-5 En la figura siguiente se muestra el esquema lgico de un registro de desplazamiento con salida en paralelo. La tabla de funcionamiento co rrespondiente se muestra a continuacin. Realice un programa en VHDL que realice la funcin del circuito.

Contadores 4-6 Disee y programe un contador que realice la secuencia 0,1,3, 5 y repi ta el ciclo. El circuito debe contar con una seal de reset activo en ba jo, que coloca las salidas Q en estado bajo.

4.7 Disee y programe un contador que realice la secuencia 0,1,2,3,4,5,6,7 y repita el ciclo. El circuito debe contar con una seal de reset activo en bajo, que coloca las salidas Q en estado bajo.

dc302.4shared.com/doc/Dh3wwxDZ/preview.html

31/80

6/09/13

dc302.4shared.com/doc/Dh3wwxDZ/preview.html

116 VHDL: El arte de programar sistemas digitales

8. Programe un circuito contador ascendente / descendente del 0 al 3 mediante una seal de


control X. Si X=0, el contador cuenta aseen- 1 dente, si X= 1, el contador cuenta descendente.

9. Programe un circuito contador ascendente / descendente del 0 al 15 mediante una seal de

control X. Si X =0, el contador cuenta ascen dente; si X= 1, el contador cuenta descendente. Existen dos seales de salida denominadas Zl y Z2 que se activan de la siguiente forma: Zl = 1 Cuando el contador se encuentra en los estados pares, en caso contrario Z1=0. Z2 = 1 Cuando el contador se encuentra en los estados impares, en ca so contrario Z2=0 4.10 En la siguiente figura se muestra el cronmetro digital configurado para contar del 0 al 99 mediante dos contadores SN 7493 conectados en cascada. Realice un programa en VHDL que cuente del 0 al 99.

4.11 Realice un programa para un cronmetro que debe contar del 0 al 245 y repita el ciclo.

dc302.4shared.com/doc/Dh3wwxDZ/preview.html

32/80

6/09/13

dc302.4shared.com/doc/Dh3wwxDZ/preview.html

Diseo lgico secuencial con VHDL \ 17

Sistemas secuenciales
4.12 Realice un programa que resuelva el siguiente diagrama de estados:

4-13 Realice un programa que resuelva el siguiente diagrama de estados:


1^^.1

dc302.4shared.com/doc/Dh3wwxDZ/preview.html

33/80

6/09/13

dc302.4shared.com/doc/Dh3wwxDZ/preview.html

4-14 En la figura se muestra el crucero de una avenida controlada a travs de un semforo.

dc302.4shared.com/doc/Dh3wwxDZ/preview.html

34/80

6/09/13

dc302.4shared.com/doc/Dh3wwxDZ/preview.html

118 VHDL: El arte de programar sistemas digitales

Los automviles pueden circular en la direccin NS o EO mediante la si guiente secuencia:

Los tiempos de duracin de las luces del semforo son: rojo 20 segundos, verde 20 segundos, mbar 5 segundos. Proponga el diagrama de estados correspondiente y realice el programa del sistema secuencial. 4.15 El semforo mostrado en la figura del ejercicio de la pgina 117 ha sido modificado tal y como se muestra en la siguiente figura.

Se requiere agilizar la entrada y salida de vehculos por medio de senso res (S) que detectan "la entrada o salida de ellos. Generalmente el semforo EO siempre se encuentra en verde y en contraparte el semforo NS est en
dc302.4shared.com/doc/Dh3wwxDZ/preview.html 35/80

6/09/13

dc302.4shared.com/doc/Dh3wwxDZ/preview.html

Diseo lgico secuencia! con VHDL 119

rojo; cuando alguno de los sensores detecta la entrada o salida del vehculo enva una seal al sistema que gobierna el semforo para que ste realice la secuencia siguiente:

Nuevamente la duracin de encendido de los focos del semforo son: roja 20 segundos, verde 20 segundos, mbar 5. segundos. Proponga el diagrama de estados correspondiente y realice el programa del sistema secuencial. 4-16 Programe un detector de secuencia que produce una salida Z=l slo cuando en la seal de entrada X se produce la siguiente secuencia X = 110011. ..-.'': 4.17 Programe un detector de secuencia cuya salida Z= 11011111 cuando aplicamos a la entrada la secuencia X= 01101010.

Considere la siguiente asignacin de estados:


A 000 B001 C010 D011 E100

4-18 Realice el programa correspondiente al sistema secuencial especificado en la siguiente tabla.


120 VHDL: El arte de programar sistemas digitales

4.19 Realice el programa de un contador ascendente /descendente de n meros seudo aleatorios de 3 bits. El circuito tiene una entrada del control X .Cuando X = 0 , el contador cuenta ascendente , si X= 1 e[ contador genera nmeros seudo aleatorios, tal y como se muestra en 11 la tabla.
dc302.4shared.com/doc/Dh3wwxDZ/preview.html 36/80

6/09/13

dc302.4shared.com/doc/Dh3wwxDZ/preview.html

4.20 Programe el sistema secuencial correspondiente a una mquina despa chadora de refrescos, el valor del refresco es de $ 5.00 pesos y la mqui na acepta monedas de $5.00, $10.00 y $ 20.00. Cuando se introduce una moneda de diez o veinte pesos, la mquina debe dar cambio en monedas de $5.00 pesos hasta completar el cambio correspondiente. Para realizar este programa no considere el sistema detector de mone das ni el sistema de servicio encargado de dar el refresco. Programe exclusivamente el sistema secuencial encargado de con trolar la secuencia descrita anteriormente.

dc302.4shared.com/doc/Dh3wwxDZ/preview.html

37/80

6/09/13

dc302.4shared.com/doc/Dh3wwxDZ/preview.html

Diseo lgico secuencial con VHDL 121

Bibliografa
T.L. Floyd: Fundamentos de sistemas digitales. Prentice Hall, 1998. Ll. Teres; Y. Torroja; S. Olcoz; E. Villar: VHDL Lenguaje estndar de diseo electrnico. McGraw-Hill, 1998. David G. Maxinez, Jessica Alcal: Diseo de Sistemas Embebidos a travs del Lenguaje de Descripcin en Hardware VHDL. XIX Congreso, Internacio nal Acadmico de Ingeniera Electrnica. Mxico, 1997. C. Kloos, E. Cerny: Hardware Description Language and their Aplications. Specification, modelling, verification and synthesis of microelectronic systems. Chapman&Hall, 1997. IEEE: The IEEE standard VHDL Language Reference Manual. IEEE-Std-10761987, 1988. Zainalabedin Navabi: Analysis and Modeling of Digital Systems. McGraw-Hill, 1988. E J. Ashenden: The Designer's guide to VHDL. Morgan Kauffman Publishers, Inc., 1995. R. Lipsett, C. Schaefer: VHDL Hardware Description and Design. Kluwer Academic Publishers, 1989. S. Mazor, E Langstraat: A guide to VHDL. Kluwer Academic Publishers, 1993. '..- J.R. Armstrong y F. Gail Gray: Structured Design with VHDL. Prentice Hall, 1997. K. Skahill: VHDLfor Programmable Logic. Addison Wesley, 1996. J. A. Bhasker: A VHDL Primer. Prentice Hall, 1992. H. Randolph: Applications of VHDL to Circuit Design. Kluwer Academic Publisher.

dc302.4shared.com/doc/Dh3wwxDZ/preview.html

38/80

6/09/13

dc302.4shared.com/doc/Dh3wwxDZ/preview.html

Integracin de entidades en VHDL


Introduccin
Hasta este momento hemos utilizado la programacin en VHDL para dise ar entidades individuales (bloques lgicos mnimos), con el nico objeto de familiarizarlo con los diversos estilos de diseo y programacin o ambos, as: como con el uso y aplicacin de las palabras reservadas en VHDL. Sin embargo, es obvio que esta herramienta de diseo no fue creada pars este fin. Como vimos en el captulo 1, existen varias razones para su utiliza cin; pero quiz su verdadera fortaleza radica en que permite integrar "siste mas digitales" que contienen una gran cantidad de subsistemas electrnico; con el fin de minimizar el tamao de la aplicacin. En primera instancia, er un solo circuito integrado y si el problema es muy complejo, a travs de une serie sucesiva de circuitosprogramables, sea que se .llamen CPLD (dispositivc lgico programable complejo) o FPGA (arreglos de'compuertas programables en campo).

5.1 Esquema bsico de integracin de entidades


La integracin de entidades puede realizarse mediante el diseo individual de cada bloque lgico a travs de varios procesos internos que posteriormen te pueden unirse mediante un programa comn. Otra posibilidad es observa y analizar de manera global todo el sistema evaluando su comportamiento sl o a travs de sus entradas y salidas. En ambos casos el resultado es satisfacto rio; ms bien, nuestra tarea consiste en analizar las ventajas y desventajas que existen en ambas alternativas de solucin. En el primer caso, el inconvenien te principal es el nmero excesivo de terminales utilizadas en el dispositivo, debido a que al disear entidades individuales, se tendran que declarar las terminales de entrada-salida de cada entidad (Fig 5.1a).

dc302.4shared.com/doc/Dh3wwxDZ/preview.html

39/80

6/09/13

dc302.4shared.com/doc/Dh3wwxDZ/preview.html

124 VHDL: El arte de programar sistemas digitales

En el segundo caso, cuando observamos el sistema como un todo (Fig-5.1b) el nmero de terminales de entrada y salida disminuye, por lo que nuestro trabajo es desarrollar no slo un algoritmo interno capaz de mterpre-tar el funcionamiento de cada bloque, sino tambin cmo conectar cada uno. de ellos.

Figura 5.1 a) Diseo mediante entidades individuales, b) Diseo mediante, la relacin de entradas/salidas.

5.1.1 Programacin de entidades individuales Para ejemplificar las posibles diferencias, consideremos la programacin del contador y decodificador de la figura 5.1a), mediante la programacin de en tidades individales, listado 5.1. .
P r o g r a m a c i nd ee n t i d a d e s ,i n d i v i d u a l e s

1. 2. 3. 4. 5. 6.

l i b r a x yi e e e ;j u s ei e e e . s t d _ l o g i c _ 1 1 6 4 . a l l ;, u s ew o r k . s t d _ a r i t h . a l l ; e n t i t yd i s p l a yi sp o r t( c l k , r e s e t :i ns t d _ l o g i c ; d :i n o u ts t d _ l o g i c _ v e c t o r ( 6d o w n t o0 ) ; s a l i d a sd e ld e c o d i f i c a d o r

7.

q :i n o u ts t d _ l o g i c _ v e c t o r ( 3d o w n t o0 ) )

dc302.4shared.com/doc/Dh3wwxDZ/preview.html

40/80

6/09/13

dc302.4shared.com/doc/Dh3wwxDZ/preview.html

8. 9.

e n dd i s p l a y ;

architecture arqdisplay of display is

1 0b e g i n 1 1p r o c e s s( c l k , r e s e t )

12 begin 13 If (clk'event and clk = '1') 14 q <= q + 1;

salidas del contador

then
Contina

dc302.4shared.com/doc/Dh3wwxDZ/preview.html

41/80

6/09/13

dc302.4shared.com/doc/Dh3wwxDZ/preview.html

Integracin de entidades en VHDL 125

Listado 5.1 Integracin de un contador y un decodificador en el mismo programa.

Como podemos observar, en la declaracin de la entidad (entity) se han asignado las terminales de entrada y salida correspondientes a cada bloque l gico de manera individual; as por ejemplo, el contador tiene las salidas.q[q3, q2, ql, qO] y el decodificador las salidas d(da, db, de, dd, de, df, dg). Note que la programacin requiere dos procesos: el primero (lneas 11 a 19) describe el "funcionamiento del contador; el segundo (lneas 21a 35), el funcionamiento del decodificador.

5.1.2 Programacin mediante relacin entradas/salidas Por otro lado, en el listado 5.2 se programa el sistema de la figura 5.1b. Observemos cmo nuevamente el programa supone dos procesos: el pri mero (lneas lia 19) programa el contador y el segundo (lneas 20 a 34) des cribe el decodificador.
dc302.4shared.com/doc/Dh3wwxDZ/preview.html 42/80

6/09/13

dc302.4shared.com/doc/Dh3wwxDZ/preview.html

126 VHDL: El arte de programar sistemas digitales

'1 ')t h e n

dc302.4shared.com/doc/Dh3wwxDZ/preview.html

43/80

6/09/13

dc302.4shared.com/doc/Dh3wwxDZ/preview.html

" 1 0 0 1 " )t h e n o rq 3 5e n da _ d i s p l ;

Listado 5.2 Integracin de las entidades utilizando seales.

dc302.4shared.com/doc/Dh3wwxDZ/preview.html

44/80

6/09/13

dc302.4shared.com/doc/Dh3wwxDZ/preview.html

Integracin de entidades en VHDL 127

Sin embargo, a diferencia del programa anterior en ste slo se asignan las terminales de salida correspondientes al decodificador (lnea 6), el enlace inter no entre el contador y este ltimo se realiza mediante seales (signal) lnea 9. De nuevo, es importante mencionar que los dos programas son correctos y que la disponibilidad de terminales y capacidad de integracin del disposi tivo empleado determinan la utilizacin de uno u otro. Por ejemplo, con el circuito CPLD CY372i de Cypress (apndice D), el primer programa (Listado 5.1) utiliza el 9% de los recursos del dispositivo, mientras que el se gundo (Listado 5.2) slo utiliza 8. por ciento. Note la importancia del ahorro de recursos, que si bien en este caso no es significativo, al momento de rea lizar grandes diseos es importante, ya que permite ahorrar al mximo el es pacio disponible dentro de los circuitos. A continuacin se presenta la informacin que reporta el porcentaje uti lizado por los listados 5.1 y 5.2 compilados en el circuito CPLD CY372i de Cypress Semiconductor.
Information: Macrocell Utilizatiori. Description Used ' Max

22 / 225 = 9% Reporte de Listado 5.1

I n f o r m a t i o n :M a c r o c e l lU t i l i z a t i o n .

D e s c r i p t i o nU s e dM a x Reporte de Listado 5.2

dc302.4shared.com/doc/Dh3wwxDZ/preview.html

45/80

6/09/13

dc302.4shared.com/doc/Dh3wwxDZ/preview.html

128 VHDL: El arte de programar sistemas digitales

5.2 Integracin de entidades bsicas


Con base en la descripcin del apartado anterior y siguiendo con la filosofa de este libro, en relacin con la integracin de entidades no utilizaremos tc nica alguna de programacin especfica; por el contrario, propondremos va rias opciones de solucin "no necesariamente la mejor" con objeto de que usted conozca ms estrategias de programacin y ms palabras reservadas por VHDL. Esperamos que la experiencia adquirida le permita en el futuro desa rrollar soluciones novedosas e ingeniosas.

5.2.1 Programacin de tres entidades individuales En la figura 5.2 se muestra un circuito lgico formado por los siguientes sub sistemas: teclado, codificador, registro, decodificador de siete segmentos ac tivo en bajo y un display de siete segmentos.. La finalidad de este sistema elec trnico es observar en el display el nmero decimal equivalente al de la tecla presionada.

Figura 5.2 Sistema visualizador de un nmero en un display.

Para comenzar, el usuario presiona la tecla decimal correspondiente al i nmero que se desea que aparezca en el display. El codificador convierte en cdigo BCD el equivalente al nmero decimal presionado; por ejemplo, si se j presiona la tecla correspondiente al nmero 8, el codificador entregar el va lor BCD 1000, valor que
dc302.4shared.com/doc/Dh3wwxDZ/preview.html 46/80

6/09/13

dc302.4shared.com/doc/Dh3wwxDZ/preview.html

luego se transfiere va el registro hacia el decodifi cador de siete segmentos para observar en el display el valor del nmero | decimal seleccionado.

dc302.4shared.com/doc/Dh3wwxDZ/preview.html

47/80

6/09/13

dc302.4shared.com/doc/Dh3wwxDZ/preview.html

Integracin de entidades en VHDL 129

dc302.4shared.com/doc/Dh3wwxDZ/preview.html

48/80

6/09/13

dc302.4shared.com/doc/Dh3wwxDZ/preview.html

Listado 5.3 Programacin del sistema visualizador de un La programacin de estos mdulos se muestra en el listado 5.3. Como po d emos observar, se ha hecho de manera nmero.

individual para cada bloque, por lo cual se han asignado terminales para cada uno de ellos (lneas 6, 7, 8 y 9). El bloque del codificador se encuentra programado de las lneas 14 a la 22, mientras que la programacin del registro se muestra en las lneas 24 a la 28; por ltimo, la parte del decodificador va de la lnea 29 a la 40.

dc302.4shared.com/doc/Dh3wwxDZ/preview.html

49/80

6/09/13

dc302.4shared.com/doc/Dh3wwxDZ/preview.html

130 VHDL: El arte de programar sistemas digitales

El porcentaje total de recursos utilizados en el CPLD CY372i cuando M compila el programa es de 21%, segn se observa en la informacin de l figura 5.3. 1
I n f o r m a t i o n :M a c r o c e l lU t i l i z a t i o n . D e s c r i p t i o n

Used

M ax

/ 225

21 Figura 5.3 Porcentaje utilizado en el CPLD C y 372i

Las terminales utilizadas dentro del circuito se muestran en el siguiente; reporte de asignacin de

terminales proporcionadas por el programa Warp R4 de Cypress Semiconductor encargado de la compilacin del dis positivo (Fig. 5.4).

dc302.4shared.com/doc/Dh3wwxDZ/preview.html

50/80

6/09/13

dc302.4shared.com/doc/Dh3wwxDZ/preview.html

Figura 5.4 Reporte de asignacin de terminales del programa Warp R4.

Device: c372i Package: CY7C372I-66JC

dc302.4shared.com/doc/Dh3wwxDZ/preview.html

51/80

6/09/13

dc302.4shared.com/doc/Dh3wwxDZ/preview.html

Integracin de entidades en VHDL 131

5 2.2 Programacin de entidades individuales mediante asignacin de seales Desde otro ngulo, imaginemos que los bloques de la figura 5.2. se pueden ver como un solo mdulo (Fig. 5.5). En esta ltima figura se aprecia que las salidas de una entidad funcionan como las entradas de otra entidad. Esta for ma de programacin es posible siempre y cuando los bloques individuales se relacionen mediante seales internas.

Figura 5.5 Sistema visualizador de un nmero utilizando seales internas.

Otro aspecto importante radica en que el circuito nada ms recibe como entradas las lneas provenientes del teclado y cmo salidas las siete termina les del decodificador. Esta asignacin es necesaria debido a que el dispositivo debe conectarse a elementos perifricos externos, tal es el caso del teclado y del display. En el listado 5.4 se muestra la programacin correspondiente a la inte gracin de los submdulos del circuito de la figura 5.5.

dc302.4shared.com/doc/Dh3wwxDZ/preview.html

52/80

6/09/13

dc302.4shared.com/doc/Dh3wwxDZ/preview.html

132 VHDL: El arte de programar sistemas digitales

Listado 5.4 Cdigo VHDL del sistema visualizador utilizando seales internas.

dc302.4shared.com/doc/Dh3wwxDZ/preview.html

53/80

6/09/13

dc302.4shared.com/doc/Dh3wwxDZ/preview.html

Integracin de entidades en VHDL 133

Observe cmo en el programa (listado 5.4) se integraron las entidades del codificador, registro y decodificador de BCD a siete segmentos en una entidad llamada display (lnea 3 a la 7). Note que nicamente se han declarado las entradas del teclado (tecla) y las salidas que se conectan al display de siete seg mentos (seg). La descripcin general del programa se basa en el cambio de asignacin de variables que ilustra la figura 5.5, donde se puede ver que los bloques se interconectan por medio de sus seales internas (C y Q), lneas 9 y 10. En la lnea 14 se asigna a Q el valor de la seal C (Q < = C), cuando sucede el hecho clk'event and clk = '1', que no es sino la habilitacin del re gistro. En la lnea 35 se observa que para un valor determinado de Q se acti va un bit del vector de salida denominado seg, que presenta la informacin en el display de siete segmentos. Al igual que en el caso anterior, el ahorro de terminales es significativo; adems, la utilizacin del circuito se reduce de manera significativa de 21 a 9 por ciento, segn se puede observar en el archivo de reporte generado por el compilador WARP R4 (Fig. 5.6).
Information: M acrocell Utltzation. Description Used M ax

22 / 225 = 9 ' %

Figura 5.6 Archivo de reporte del compilador WARP R4.

"i^mplo 5.1 Realice la programacin en VHDL para integrar los diferentes bloques lgicos mostrados en la figura E5.1. Descripcin. El circuito de la figura E5.1 se utiliza para automatizar el pro ceso de empaquetamiento de muecas de porcelana. Considere que las muecas se pueden empaquetar en forma individual o con un mximo de nueve unidades por paquete. En un inicio el operador selecciona mediante el teclado decimal la can tidad de piezas que va a empaquetar. Como sabemos, este nmero decimal se convierte a cdigo BCD a travs del circuito codificador y luego pasa mediante el registro hacia el decodificador de siete segmentos para mostrar

dc302.4shared.com/doc/Dh3wwxDZ/preview.html

54/80

6/09/13

dc302.4shared.com/doc/Dh3wwxDZ/preview.html

134 VHDL: El arte de programar sistemas digitales

en el display el valor del nmero seleccionado. Observe que este valor bi nario es a su vez la entrada A (Ai, A2, Ai y AO) del circuito comparador^ de cuatro bits.

Figura E5.1 Automatizacin del sistema empaquetador de muecas.

Despus de seleccionar la cantidad de muecas por empaquetar, el ope rador presiona el botn de inicio, que desencadena una serie de acciones i controladas por el bloque denominado controlador. Comienza con una seal de salida llamada Reset, que coloca al contador binario en el estado de cero; . enseguida enva la seal de arranque (Encendido) al motor que controla el avance de la banda transportadora. Ahora bien, cada vez que una de las muecas colocadas sobre la banda transportadora pasa por el "sensor" (Fig. E5.2), se origina un impulso elctri-1 co (pulso) que hace que el contador aumente en uno su conteo. Este proce dimiento contina incrementando al contador en una unidad, hasta el I momento en que la cifra actual del contador (nmero B) es igual al "nmero A" dentro del comparador (A = B), con lo cual este ltimo enva una I seal al bloque controlador que detiene la banda transportadora (Apagado) y marca el fin del proceso.

dc302.4shared.com/doc/Dh3wwxDZ/preview.html

55/80

6/09/13

dc302.4shared.com/doc/Dh3wwxDZ/preview.html

Integracin de entidades en VHDL J3

Figura E5.2 Sistema de sensado de muecas.

En la figura E5.3 se observa el intercambio de seales que se realiza en tre el controlador y cada uno de los bloques lgicos del sistema.

Figura E5.3 Interaccin de las seales del controlador.

Solucin La programacin correspondiente a esta integracin se muestra en el listad* E5.1.

dc302.4shared.com/doc/Dh3wwxDZ/preview.html

56/80

6/09/13

dc302.4shared.com/doc/Dh3wwxDZ/preview.html

136 VHDL: El arte de programar sistemas digitales

dc302.4shared.com/doc/Dh3wwxDZ/preview.html

57/80

6/09/13

dc302.4shared.com/doc/Dh3wwxDZ/preview.html

Contina

dc302.4shared.com/doc/Dh3wwxDZ/preview.html

58/80

6/09/13

dc302.4shared.com/doc/Dh3wwxDZ/preview.html

Integracin de entidades en VHDL 137

Listado E5.1 Programacin del sistema visualizador de un nmero.

0 -y Observe que la integracin de las entidades que forman el sistema slo precis dos procesos: el primero (lnea 14), para describir el conteo de las muecas mediante la variable de entrada sensor; el segundo (lnea 23), para integrar el codificador, registro y decbdificador de siete segmentos. Vea tam bin que en la lnea 60 se asigna a la variable compara el valor de uno cuan do el valor binario de los vectores Q y R son iguales. Esto con objeto de detener la banda transportadora. Bjerapo 5.2 Consideremos ahora el caso en que el nmero mximo de muecas que se

Figura E5.4 Sistema visualizador del 0 al puede empaquetar 99.

pas de 9 a 99 (Fig. E5.4).

dc302.4shared.com/doc/Dh3wwxDZ/preview.html

59/80

6/09/13

dc302.4shared.com/doc/Dh3wwxDZ/preview.html

138 VHDL: El arte de programar sistemas digitales

Al igual que en el ejemplo anterior, el operador selecciona mediante "M teclado decimal la cantidad de muecas por empaquetar Como sabemos, es-1 te nmero decimal se convierte en cdigo BCD mediante el circuito codifica-dor y luego pasa va el registro hacia los decodificadores de siete segmentla para observar en el display el valor del nmero seleccionado. Sin embargo y J diferencia del circuito anterior, el operario ahora puede elegir un nmero de dos dgitos; como ejemplo, supongamos que teclea el nmero decimal 72 mea diante la pulsacin del 7 y luego del 2. Estos nmeros codificados en BCD proporcionan el siguiente cdigo: BCD (7) =0111

BCD (2) =0010 Como puede observar, el vector de entrada es de 8 bits (0111 0010). Es te valor pasa va el registro a los decodificadores de siete segmentos para-visualizar en el display las cifras correspondientes a este valor. Note que el n-| mero BCD (72) es introducido en un nuevo bloque denominado converti dor de cdigo que tiene como funcin convertir cdigo BCD en cdigo binario (Fig. E5.5).

Figura E5.5 Convertidor de cdigo.

Cdigo BCD (72) 0111,0010 = 1001000 (binario) Esta conversin es necesaria, ya que el contador incrementa su valor en forma binaria cada vez que sensa una mueca. Con esto se intuye que la fun cin del comparador es relacionar el valor binario proveniente del teclado y el valor que proporciona el contador; cuando estos nmeros son iguales (A = B) se enva un pulso al controlador para detener la banda transportadora. La conversin de cdigo BCD en cdigo binario puede realizarse a tra vs de circuitos sumadores. Bsicamente, para obtener un nmero binario a partir de un nmero BCD hay que sumar los nmeros binarios que represen tan los pesos de los bits del nmero BCD.
dc302.4shared.com/doc/Dh3wwxDZ/preview.html 60/80

6/09/13

dc302.4shared.com/doc/Dh3wwxDZ/preview.html

Integracin de entidades en VHDL [39

Por ejemplo, considere que tenemos el nmero BCD (72). B3 B2 Bl BO A3 A2 Al AO 0 111 0 0 10


72

El grupo de 4 bits ms a la izquierda representa 70, y el grupo de 4 bits ms a la derecha, el nmero 2. Esto quiere decir que el grupo ms a la izquier da tiene un peso de 10 y el de la extrema derecha un peso de 1. En cada gru po, el peso binario de cada bit es el siguiente: Dgito de las decenas Dgito de las unidades Peso: 80 40 20 10 8 4 2 1 Designacin de bit: B3 B2 B^ Bq A3 A2 A^ Aq

Por otro lado, el equivalente binario de cada bit BCD es un nmero bi nario que representa el peso de cada bit dentro del nmero BCD completo.

dc302.4shared.com/doc/Dh3wwxDZ/preview.html

61/80

6/09/13

dc302.4shared.com/doc/Dh3wwxDZ/preview.html

. . . . .

; . . : . . . '

Tabla E5.1 Valores y pesos de los cdigos BCD y Por ejemplo, en la tabla E5.1 se muestra que el valor del bit BCD A0 tiene un peso de uno, por lo cual su valor binario.

binario representado por 7 bits es 0000001. De igual manera,.el bit BCD B3 tiene un peso de 80, por lo que el valor binario correspondiente representado en 7 bits es 1010000. Obser v e que este valor se obtiene mediante la suma de (64 + 16) en notacin binaria.

dc302.4shared.com/doc/Dh3wwxDZ/preview.html

62/80

6/09/13

dc302.4shared.com/doc/Dh3wwxDZ/preview.html

140 VHDL: El arte de programar sistemas digitales

Para reafirmar el procedimiento de conversin BCD en binario veamos I los siguientes ejercicios resueltos. Convertir en binario los nmeros

1. BCD 00100111 (27 decimal) 2. BCD 10011000 (98 decimal).


Solucin a) Primero se escribe el nmero BCD correspondiente y enseguida se suma | el peso de las unidades y decenas.

b)

1 2 4 20 nmero binario que representa al .decimal 27

dc302.4shared.com/doc/Dh3wwxDZ/preview.html

63/80

6/09/13

dc302.4shared.com/doc/Dh3wwxDZ/preview.html

nmero binario que representa el decimal

Despus de observar el procedimiento de conversin, podemos cons-1 truir un circuito lgico mediante sumadores que realicen la suma correspon diente a los unos necesarios para la transformacin de un nmero BCD en binario. En la tabla E5.1 se puede observar que la columna "1" (bit menos signi ficativo) de la representacin binaria tiene un solo 1 y no existe la posibili dad de entrada de acarreo, de forma que basta tener una conexin directa desde el bit A0 de la entrada BCD a la salida binaria menos significativa (Fig. E5.8). En la columna "2" de la representacin binaria debe realizarse la suma de los bits Al y B0 del nmero BCD. Esta suma puede efectuarse a travs de un circuito medio sumador como vimos anteriormente en el captulo 3 Fig. E5.6).

dc302.4shared.com/doc/Dh3wwxDZ/preview.html

64/80

6/09/13

dc302.4shared.com/doc/Dh3wwxDZ/preview.html

Integracin de entidades en VHDL J4J

Figura E5.6 M edio sumador en bloque y con compuertas.

En la columna "4" de la representacin binaria, la posible ocurrencia de dos unos ocurre sumando los bits A2 y Bl del nmero BCD y el acarreo de la su ma anterior. Con esto, la suma tiene lugar a travs de un sumador completo (Fig.E5.7).

Figura E5.7 Sumador complet en bloque y con compuertas.

Con esta lgica podemos intuir el comportamiento del circuito de la figura E5.4. En resumen, en la columna "8" en la representacin binaria aparecen tres unos, por lo que sumamos los bits A3, BO y B2 del nmero BCD. En la columna "16", sumamos los bits Bl y B3. En la columna 32 slo es posible un uno nico, por lo que se suma el bit B2 al acarreo de la columna "16". En la co-. lumna "64", slo puede aparecer un uno nico, de manera que el bit B3 se suma al acarreo de la columna "32".

dc302.4shared.com/doc/Dh3wwxDZ/preview.html

65/80

6/09/13

dc302.4shared.com/doc/Dh3wwxDZ/preview.html

142 VHDL: El arte de programar sistemas digitales

El sistema sumador que realiza esta conversin de BCD a binario m muestra en la figura E5.8.

Decenas Unidades RB RA

Cdigo BCD

RB3 RB2 RB1 RBO RA3 RA2 RA1 RAO

Figura E5.8 Circuito convertidor de cdigo BCD en binario.

Despus de analizar el proceso de conversin de BCD en binario, pode mos describir el programa VHDL que integra las entidades de la figura E5.4j (listado E5.2).

1. library ieee; 2. use ieee.std_logic_1164.all; 3. use work.stc_arith.all; 4


5e n t i t yc o n t r o l 9 9i sp o r t (

6.

r e s e t :i ns t d _ l o g i c ; s e a lp r o v e n i e n t ed e lc o n t r o l a d o r

dc302.4shared.com/doc/Dh3wwxDZ/preview.html

66/80

6/09/13

dc302.4shared.com/doc/Dh3wwxDZ/preview.html

7.

b o t n :i ns t d _ l o g i c _ v e c t o r( Ot o9 ) ; t e c l a d o

8s e n s o r :i ns t d _ l o g i c ; s e a lq u es e n s ae lp a s od eu n ar r t u e c a v i : 9d i s p a , d i s p b :o u ts t d _ l o g i c _ v e c t o r( Ot o6 ) ;d i s p l a yd o b l e( ayb ) 1 0c o m p a r a :o u ts t d _ l o g i c ) ; 1 1e n dc o n t r o l 9 9 ; 1 2 1 3a r c h i t e c t u r ea _ c o n t r o l 9 9o fc o n t r o l 9 9i s

Continua "i ;-

dc302.4shared.com/doc/Dh3wwxDZ/preview.html

67/80

6/09/13

dc302.4shared.com/doc/Dh3wwxDZ/preview.html

Integracin de entidades en VHDL 143


1 4

15. 16. 17. 18. 19.

s i g n a lC , R A , R B :s t d _ l o g i c _ v e c t o r( 3d o w n t o0 ); c o d .yr e g i s t r o s i g n a lQ , C O N V :s t d _ l o g i c _ v e c t o r( 6d o w n t o0 ) ; c o n t .yc o n v e r t i d o r s i g n a lt e c l a :s t d _ _ l o g i c _ _ v e c t o r( 1d o w n t o0 ) ; t e c l a sp r e s i o n a d a s s i g n a lc a r r y :s t d _ l o g i c _ v e c t o r( 0t o6 );b i td ea c a r r e od e lc o n v s i g n a lx :s t d _ l o g i c _ v e c t o r( 0t o1 ) ;s e a li n t e r n ad e lc o n v2 0

t e c l a d o :p r o c e s s( b o t n , C , T E C L A )v a r i a b l ei : s t d _ l o g i c _ v e c t o r( 1d o w n t o0 ) : =" 0 0 " ;b e g i n i f( b o t n=" 1 0 0 0 0 0 0 0 0 0 " )t h e n

e l s i fe l s i f e l s i f e l s i f e l s i f e l s i f e l s i fe l s i f e l s e

( t e c l a i C< =" 1 0 0 1 " ; t e c l a< = e n di f ;" t h e n f 0 0 " i ; = 2 1b e g i n2 22 32 42 52 62 72 8 R B C ; 2 93 0 3 13 23 33 43 53 63 7 3 8

3 94 0 '4 14 2.4 3 "4 44 54 64 7 e l s e R A< = C ; e n d i f ; : =i + 1 ; " 1 0 " ) e n di f ;

n dp r o c e s s ; t h e n: = e 4 95 05 15 25 35 45 55 6 " 0 0 " ; 5 75 85 9 Contina

dc302.4shared.com/doc/Dh3wwxDZ/preview.html

68/80

6/09/13

dc302.4shared.com/doc/Dh3wwxDZ/preview.html

144 VHDL: El arte de programar sistemas digitales

6 0 6 1 6 2 6 3 6 4 6 5 6 6 6 7 6 8 6 9 7 0 7 1 7 2 7 3 7 4 7 5 7 6 7 7 7 8 7 9 8 0 8 1 ' 8 2 8 3 8 4 8 5 8 6 8 7
dc302.4shared.com/doc/Dh3wwxDZ/preview.html 69/80

6/09/13

dc302.4shared.com/doc/Dh3wwxDZ/preview.html

d i s p l a y : p r o c e s a( R A , R B )b e g i n c a s eR Ai se n c i e n d ed i s p l a ym e n o ss i g n i f i c a t i v o w h e n " 0 0 0 0 " 0 0 0 0 0 0 1 " = >d i s p a< == >d i s p a< == >d i s p a< == >d i s p a w h e n " 0 0 0 1 " 1 0 0 1 1 1 1 " < = = > d i s p a < = = > d i s p a < = = > d i s p a < = = > w h e n " 0 0 1 0 " 0 0 1 0 0 1 0 " d i s p a< == >d i s p a< == >d i s p a< = w h e n " 0 0 1 1 " 0 0 0 0 1 1 0 " w h e n " 0 1 0 0 " 1 0 0 1 1 0 0 "w h e no t h e r se n dc a s e ; w h e n " 0 1 0 1 " 0 1 0 0 1 0 0 " w h e n w h e n " 0 1 1 0 " 0 1 0 0 0 0 0 " ' 0 0 0 0 " 0 0 0 0 0 0 1 ' c a s eR Bi s e n c i e n d ed i s p l a ym a ss i g n i f i c a t i v o w h e n w h e n " 0 1 1 1 " 0 0 0 1 1 1 1 " ' 0 0 0 1 " 1 0 0 1 1 1 1 ' = >d i s p b< = w h e n w h e n " 1 0 0 0 " 0 0 0 0 0 0 0 " ' 0 0 1 0 " 0 0 1 0 0 1 0 ' w h e n " 0 0 0 1 1 0 0 " 0 0 1 1 " 0 0 0 0 1 1 0 ' = >d i s p b< = w h e n ' 0 1 0 0 " 1 0 0 1 1 0 0 " = > d i s p b <w h e n ' 0 1 0 1 " 0 1 0 0 1 0 0 ' w h e n ' 0 1 1 0 " 0 1 0 0 0 0 0 ' = >d i s p b< = w h e n ' 0 1 1 1 " 0 0 0 1 1 1 1 ' w h e n ' 1 0 0 0 " 0 0 0 0 0 0 0 ' = >d i s p b< = " 0 0 0 1 1 0 0 ' = >d i s p b< = = >d i s p b <= = >d i s p b< = = >d i s p b< = = >d i s p b< = w h e no t h e r se n dc a s e ; e n dp r o c e s s ;

9 09 19 29 39 49 59 69 7

c o n v e r t i d o r :p r o c e s s(R A , R B , C A R R Y , X)v a r i a b l ez :s t d _ l o g i c: = ' 0 ' ;b e g i nC O N V ( 0 )< =R A ( 0 );C O N V ( l )< =R A ( 1 )x o rK B ( 0 ) ; C A R R Y ( O )< =R A ( 1 )a n dR B ( 1 );


and (RA(2) xor and (RA(3)

C O N V ( 2 )< =R A { 2 )x a rR B ( 1 )x o rC A R R Y ( O ); .C A R R Y ( 1 ) < = ( R A ( 2 )a n d R B ( D )o r( C A R R Y ( O )R B ( 1 ) ) ) ;< =R A ( 3 )x o rR B ( 0 )x o rC A R R Y ( l ) ;< =( R A O )a n dR B ( 0 ) )o r( C A R R Y ( l )

dc302.4shared.com/doc/Dh3wwxDZ/preview.html

70/80

6/09/13

dc302.4shared.com/doc/Dh3wwxDZ/preview.html

x o rR B ( 0 )));< =X ( 0 )x o rR B ( 2 );< =X ( 0 )a n d R B ( 2 );
<= CARRY(2) xor RB(1) xor CARRY(3); CARRY(4) <= (CARRY(2) and RB(l))or (CARRY(3) and (CARRY(2) xor RB(1))) ; Contina

dc302.4shared.com/doc/Dh3wwxDZ/preview.html

71/80

6/09/13

dc302.4shared.com/doc/Dh3wwxDZ/preview.html

Integracin de entidades en VHDL J45

107. 108. 109. 110.

CONV(4) <= X(l) xor RB(3); CARRY(5)<= X(l)and RB(3); C0NV(5) <= CARRY(4) xor RB(1) xor CARRY(5) ; CARRY(6)<= (CARRY(4) and RB(1)) or(CARRY(5) and (CARRY(4)

111 xor RB(1))); 112 CONV(6) <= ( z xor RB(3) xor CARRY(6)); 113
1 1 4e n dp r o c e s s , 1 1 5 1 1 6c o n t a d o r :p r o c e s s( s e n s o r , r e s e t , Q )b e g i n 1 1 7i f( s e n s o r 'e v e n ta n ds e n s o r=' 1 ' )t h e n 1 1 8'Q< =" 0 0 0 0 0 0 0 " ; 1 1 9Q< =Q+1 ; 1 2 0 1 2 1i f( r e s e t=' 1 'a rQ=" 1 1 0 0 0 1 1 " )t h e n r e s e te n9 9 1 2 2'' .Q < =" 0 0 0 0 0 0 0 " ; 1 2 3e n di f ; 1 2 4e n di f ; 1 2 5e n dp r o c e s s ; 1 2 6 1 2 7S A L I D AD E LC O M P A R A D O R( A=B ) 1 2 8'

129 corrpara <= ' 1' v*en Q = CONV else ' 0 ' ; 130 end architecture;

Listado E5.2 Programacin del sistema visualizador del 0 al 99.

Ahora analicemos el programa anterior. En las lneas 5 a 11 se declar la entidad de diseo denominada control 99. En sta se han declarado' los si guientes bloques lgicos: codificador, registro, convertidor, comparador, de-codificador y contador. En la lnea 15 se declararon las seales utilizadas en el diseo. El signific ado de cada una se explica en la tabla E5.2.
dc302.4shared.com/doc/Dh3wwxDZ/preview.html 72/80

6/09/13

dc302.4shared.com/doc/Dh3wwxDZ/preview.html

S eal Descripcin C RA,RB Q CONV CARRY X

Seales de salida del codificador y de entrada al registro Seales de salida del registro. RA representa los cuatro bits menos significativos y RB los ms significativos. Seal de salida del contador y de entrada al comparador Seal de salida del convertidor de cdigo y de entrada al comparador Seal interna del mdulo convertidor de cdigo. Funciona como acarreo interno. Seal interna auxiliar en el desarrollo del convertidor de cdigo Tabla E5.2 Significado de las seales utilizadas en el diseo.

dc302.4shared.com/doc/Dh3wwxDZ/preview.html

73/80

6/09/13

dc302.4shared.com/doc/Dh3wwxDZ/preview.html

146 VHDL: El arte de programar sistemas digitales

En lo que respecta a la arquitectura del programa, observe que se estruc tur utilizando cuatro procesos en los cuales se detalla cada mdulo del siste ma; por ejemplo para el codificador y el teclado tenemos un proceso llamado? teclado (lnea 22), que captura el dato proveniente del teclado, lo codifica y ; detecta si la tecla se presion por primera o segunda vez; luego, estos datos sel transfieren al registro. En el proceso llamado display (lnea 61) se decodifica hfi entrada proveniente del registro y se asigna la salida correspondiente al dgito seleccionado. De acuerdo con esta secuencia, el siguiente proceso convertidor (lnea 90) se realiza con la finalidad de desarrollar el mdulo que convierte-BCD en cdigo binario (Fig. E5.8). Por ltimo, el proceso contador (lnea 116) genera la cuenta del 0 al. 99.1 incrementndose en una unidad cada que el.sensor detecta un objeto. Ya fue ra del proceso, en la lnea 129 se compara el vector proveniente del converti dor (CONV) con la salida del contador (Q). Si son iguales, el .controlado^ enva un pulso para detener la banda transportadora.

dc302.4shared.com/doc/Dh3wwxDZ/preview.html

74/80

6/09/13

dc302.4shared.com/doc/Dh3wwxDZ/preview.html

Ejercicios

Integracin de entidades en VHDL 147

Integracin de entidades 5.1 Considere el diagrama mostrado en la siguiente figura que corresponde a una unidad aritmtica y lgica (ALU) de 4 bits. Como puede observarse los datos se transfieren a travs del registro de datos y el decodificador de instruccin activa la funcin que se realiza con estos datos.

1. Determine el cdigo de instruccin que se utiliza para activar las ope raciones de la ALU. 2. Programe el ALU mediante el uso de varios procesos para adherir en tidad tras entidad. 3. Considere el ALU como un sistema general y programe mediante la relacin de entradas y
salidas.

dc302.4shared.com/doc/Dh3wwxDZ/preview.html

75/80

6/09/13

dc302.4shared.com/doc/Dh3wwxDZ/preview.html

148 VHDL: El arte de programar sistemas digitales

5.2 En la siguiente figura se muestra el circuito electrnico de una unidad aritmtica y lgica. Considere la tabla de funcionamiento mostrada en ll ejercicio y programe utilizando la integracin de entidades mediante ]M relacin de seales de entrada - salida.

dc302.4shared.com/doc/Dh3wwxDZ/preview.html

76/80

6/09/13

dc302.4shared.com/doc/Dh3wwxDZ/preview.html

Integracin de entidades en VHDL \49

5.3 En la siguiente figura se muestra un circuito contador y un decodifica dor de binario a decimal .cdigo BCD , cuya funcin consiste en activar cada una de las salidas decimales del decodificador mediante el valor del binario correspondiente procedente del contador. As por ejemplo si el contador se encuentra en el estado cero (0000) la salida del decodificador que se activa es la SO. Observe cmo el decodificador tiene las salidas activas en bajo, por lo que para encender los led de la figura se requiere el uso de un inversor. Realice un programa en VHDL que sustituya al contador, decodificador e inversores.

1. Programe utilizando un proceso que describa cada entidad de diseo 2. Programe mediante un algoritmo general

dc302.4shared.com/doc/Dh3wwxDZ/preview.html

77/80

6/09/13

dc302.4shared.com/doc/Dh3wwxDZ/preview.html

5.4 En la siguiente figura se muestra un circuito contador y un decodificador de 7 segmentos, la funcin del circuito consiste en desplegar en el display el valor decimal correspondiente al valor binario originado en el contador. Realice un programa en VHDL que sustituya al circuito contador y de-codificador de 7 segmentos.

1. Programe utilizando un proceso que describa cada entidad de diseo 2. Programe mediante un algoritmo general

dc302.4shared.com/doc/Dh3wwxDZ/preview.html

78/80

6/09/13

dc302.4shared.com/doc/Dh3wwxDZ/preview.html

150 VHDL: El arte de programar sistemas digitales

5.5 En la siguiente figura se muestra un circuito sumador-restador de nme ros signados de 4 bits. Interprete el funcionamiento del sistema y:

1. Programe utilizando un proceso que describa cada entidad de diseo 2. Programe mediante un algoritmo general

dc302.4shared.com/doc/Dh3wwxDZ/preview.html

79/80

6/09/13

dc302.4shared.com/doc/Dh3wwxDZ/preview.html

Integracin de entidades en VHDL 151

Bibliografa
T.L. Floyd. Fundamentos de sistemas digitales. Prentice Hall, 1998. Ll. Teres. Y. Torroja. S. Olcoz; E. Villar. VHDL, lenguaje estndar de diseo electrnico. McGraw-Hill, 1998. David G. Maxinez, Jessica Alcal. Diseo de Sistemas Embebidos a travs del Lenguaje de Descripcin en Hardware VHDL. XIX Congreso Internacio nal Acadmico de Ingeniera Electrnica. Mxico, 1997. C. Kloos, E. Cerny. Hardware Description Language and their Aplications. Specification, Modelling, Verification and Synthesis of Microelectronic Systems. Chapman& Hall, 1997. IEEE: The IEEE standard VHDL Language Reference Manual. IEEE-Std-10761987, 1988. Zainalabedin Navabi. Analysis and Modeling of Digital Systems. McGraw-Hill 1988. E J. Ashenden. The Designer's guide to VHDL. Morgan Kauffman Publishers Inc., 1995. R. Lipsett, C. Schaefer. VHDL Hardware Description and Design. Kluwei Academic Publishers, 1989. S. Mazor, E Langstraat. A guide to VHDL. Kluwer Academic Publishers 1993. J.R. Armstrong y F. Gail Gray.- Structured Design with VHDL. Prentice Hall 1997. K. Skahill. VHDL for Programmable Logic. Addison Wesley, 1996. . J. A. Bhasker. A VHDL Primer; Prentice Hall, 1992. H. Randolph. Applications of VHDL to Circuit Design. Kluwer Academk Publisher.

www.ingenieromecatronica.blogspot.com | M. C. JAIME ALVARADO MUOZ

dc302.4shared.com/doc/Dh3wwxDZ/preview.html

80/80