You are on page 1of 53

Registros de Desplazamiento Contadores Binarios Otros Tipos de Contadores Descripcion VHDL

Ing. Ronald Ponguillo Intriago ESPOL FIEC rponguil@espol.edu.ec

Aplicaciones de los Flip - Flop


Registros.- Dispositivo multibits que sirven para almacenar, manipular y utilizar informacin. Los registros se clasifican por el tipo de entrada que tienen. Registro Paralelo (de Sostenimiento)

Cada Flip Flop procesa a la salida un bit. El Registro paralelo sera capz de procesar n bits de informacin. En el instante del flanco positivo de Reloj, el valor de la entrada A se almacenar en la salida R.
Incluye una seal de CLEAR (Reset) asincrnica.

Aplicaciones de los Flip - Flop

A manera de ejemplo, se presenta la construccin de un registro paralelo de 4 bits.

Para cada bit se tiene un Flip Flop tipo D, de manera que las entradas pasen a las salidas, en el momento de los flancos positivos de reloj.

Aplicaciones de los Flip - Flop


Acumulador Es un circuito secuencial construido en base a sumadores y registros paralelo. Su propsito es que en el registro se contabilice el valor acumulado del mismo registro ms algn dato.

En cada flanco de reloj, el resultado de la suma se carga a la salida del registro, permitiendo que al siguiente flanco el nuevo valor a cargar sea el valor acumulado de la suma anterior mas el Dato. Se puede utilizar en conteos de datos en circuitos, como personas, precios, etc.

Aplicaciones de los Flip - Flop


Registro de Desplazamiento ( serie )

En un registro serie, el valor de un bit deber desplazarse a los otros bits. Esto se logra haciendo que la salida de un FF alimente a la entrada D del siguiente:
0000 1000 0100 0010 0001

Aplicaciones de los Flip - Flop


Contadores.- Dispositivos multibits que cuentan pulsos de reloj recibidos.

Los contadores se clasifican por el tipo de cdigo de conteo que emplean, el nmero de bits que tienen, el mdulo (cantidad de elementos de conteo), y el tipo de Clear/Reset que emplean (sincrnico o asincrnico).
Contadores binarios 000 001 010 DOWN 011 UP 100 101 110 111 Cuentan con una secuencia binaria simple. Pueden hacerlo en dos direcciones: Hacia arriba o conteo normal (UP) o hacia abajo (DOWN).

Aplicaciones de los Flip - Flop


Contadores Anillo 0000 1000 0100 0010 0001 0000 0001 0010 0100 1000

Nmero de bits : n Mdulo : n+1

Contadores Anillo Torcido 000 100 110 111 011 001 000 001 011 111 110 100

Nmero de bits : n Mdulo : 2n

Aplicaciones de los Flip - Flop


Registro Universal Resume en un solo circuito integrado, los modos de operacin de los registros (paralelo y serie) anteriormente presentados. EL 74194 maneja 4 bits y el 74198 maneja 8 bits.

U1
3 4 5 6 2 7 11 9 10 1 D0 D1 D2 D3 SR SL CLK S0 S1 MR 74194 Q0 Q1 Q2 Q3 15 14 13 12

Las entradas de modo definen la manera como va a funcionar el Universal :


S1 0 0 1 1 S0 Modo 0 Hold 1 Desp. a la derecha (SR) 0 Desp. a la izquierda (SL) 1 Carga Paralela (Load)

Aplicaciones de los Flip - Flop


Tabla Funcional

Aplicaciones de los Flip - Flop


Ejemplo: Disear un contador de anillo de 4 bits usando 74194 (Registro Universal de 4 bits) y puertas adicionales.

A 0 1 0 0 0

B 0 0 1 0 0

C 0 0 0 1 0

D 0 0 0 0 1

Notamos que en la mayora de los casos hay un desplazamiento a la derecha y el ingreso del valor 0 en el lugar libre.
Slo cuando la secuencia pasa de 0000 a 1000 se desplaza a la derecha, ingresando un 1. El circuito entonces siempre realizar desplazamiento a la derecha (01), pero el valor a ingresar solo ser 1 cuando el estado presente sea 0000.

Aplicaciones de los Flip - Flop

Aplicaciones de los Flip - Flop


De esta manera se desarroll de forma intuitiva el circuito secuencial del contador. Para el desarrollo formal de un circuito secuencial, el procedimiento es similar al Diseo y conversin de FFs, slo que para varios bits. Para este fin, se necesita construir una TABLA DE ESTADOS PRESENTES Y SIGUIENTES. Un estado ahora es el valor combinado de todas las salidas Q del registro Universal o de los diferentes FFs. PROCEDIMIENTO: 1. Construya la tabla de estados presentes y siguientes, detallando para cada estado presente cual seria el cdigo de estado siguiente. 2. Agregue una columna para cada entrada del UNIVERSAL. 3. Llene las columnas anteriores usando la funcin de excitacin del registro Universal. 4. Minimice e implemente las funciones anteriores.

Aplicaciones de los Flip - Flop


Tabla de estados presentes y siguientes:

Aplicaciones de los Flip - Flop


Minimizar e implementar todas las entradas.

Se puede ver por inspeccin de la tabla que S1=0 y que S0 = 1. As mismo L y las entradas paralelo son iguales a 0.

Se puede ver que con ste mtodo obtenemos el mismo resultado inicial.

Descripcin VHDL por comportamiento (behavioral), funcional o algortmica


Define la funcionalidad del dispositivo mediante un algoritmo ejecutado secuencialmente, de forma muy parecida a como lo hace cualquier programa escrito en un lenguaje de programacin comn, como puede ser C o Pascal. El estilo de escritura de la arquitectura por comportamiento es, bsicamente, una aproximacin a la modelacin por una caja negra, donde no es necesario reflejar como el diseo es implementado

Sintaxis para la descripcin por comportamiento de una arquitectura


El mecanismo fundamental utilizado para describir una entidad es el proceso. Por tanto, la arquitectura de una entidad descrita a nivel de comportamiento incluye uno o varios procesos. Un proceso es en si una clusula concurrente, pero las sentencias incluidas en el son secuenciales.

Sintaxis para la descripcin de un proceso

Se da la opcin de colocar un nombre al proceso. lista de sensibilidades, es el grupo de seales que activan al proceso, siempre y cuando se active o cambie una de las seales contenidas en dicha lista. Despus del begin se construye el algoritmo que describe el comportamiento del diseo

Formato de declaracin de variable

En un proceso se declaran variables, no seales. Ellas son internas al proceso y no son visibles externamente. La declaracin de una variable es exactamente igual a una declaracin de seal interna con la diferencia de, que en lugar de signal, se utiliza la palabra clave en VHDL variable.

Declaraciones secuenciales
Las declaraciones secuenciales mas utilizadas son:

Declaracin if-then-else

La estructura if trabaja de la siguiente forma: Si la expresin booleana escrita a continuacin del if es cierta, entonces se ejecuta la declaracin incorporada despus de la palabra then.

En caso contrario, si no se utiliza else, la instruccin finaliza, pero si se usa else entonces se ejecuta la declaracin secuencial correspondiente a este else.

Ejercicio
Disee un comparador de igualdad de dos nmeros a y b, de 4 bits cada uno.

Declaracin if-then-elsif-else

Una clusula muy cmoda en la estructura de un if es elsif. Esta clusula realiza la misma funcin que un else-if y es conveniente usarla cuando es necesario usar varias estructuras if anidadas.

Observe que usando elsif, solo es necesario utilizar una sola vez end if; mientras que si se usaran varias estructuras if anidadas, se debera colocar tantas end if como el numero de if que tenga.

Declaracin case
La sentencia case evala la expresin colocada a continuacin de la palabra clave case, encuentra un valor que coincida con una de las alternativas colocadas despus de when y ejecuta las declaraciones de asignacin correspondientes. Si son varias alternativas, estas deben cubrir todos sus posibles valores. En caso que solo se enumeren algunas de las posibles, entonces deber usarse la palabra clave others para cubrir el resto de las alternativas que no han sido declaradas.

Sentencia wait

La sentencia wait detiene la ejecucin de un proceso hasta que se cumple determinada condicin. Wait on: produce el mismo efecto que la lista de sensibilidad; Todo proceso debe tener bligatoriamente una lista de sensibilidad o una o varias wait on, pero nunca las dos cosas a la vez.

Sentencia wait

En ambos casos del ejemplo el simulador ejecuta las sentencias contenidas en el cuerpo del proceso cuando se produce algn evento en cualquiera de las seales A o B.

Flip flop tipo D bsico

En VHDL existen atributos asociados a las seales y variables. Sintaxis : seal ATRIBUTO El atributo Event es booleano (True o False) y es verdadero cuando ha existido un cambio (evento) en la variable principal. ClkEVENT es verdadero si existe un cambio en la seal de reloj.

Flip flop tipo D bsico

La lista de sensibilidad contiene solo la variable CLK porque es la nica que puede causar un cambio en la salida Q.

La sintaxis clkEVENT es verdadera en el evento de un cambio en la seal clk. Junto con clk=1 se refiere a un cambio de 0 a 1, es decir a un flanco positivo.

Flip flop tipo D alternativo

En esta descripcin, utilizamos la instruccin WAIT para declarar la lista de sensibilidad de todo el proceso. En este caso no se debe declarar ninguna variable entre parntesis, luego de la palabra PROCESS.

Implementacin de otros Flip Flops


En el proceso solo se puede usar la declaracin WAIT UNTIL si es la primera oracin del proceso. As mismo solo se puede utilizar WAIT ON si es la ltima oracin. En el caso de implementar otros Flip Flops, la estructura es similar. Luego de verificar la presencia del flanco positivo de reloj, se debe desarrollar una estructura condicional acorde con la tabla caracterstica del Flip Flop deseado. Para desarrollar esa estructura condicional, se pueden utilizar lazos IF anidados (IF ELSIF ELSE END IF) o instrucciones como CASE. En casos de acciones HOLD en los FFs, no se debe declarar ninguna accin o se debe declarar la accin Q<=Q que es en realidad innecesaria.

Flip flop tipo JK

Se usa WAIT UNTIL para declarar la sensibilidad del proceso. Se usa la estructura IF ELSIF END IF para desarrollar la tabla caracterstica del Flip Flop. La condicin J=0 y K=0, no produce ninguna ejecucin.

Flip flop tipo JK

Flip flop D con reset asincrnico

La seal de RESET ( Clear) asincrnico es la de mayor prioridad dentro del circuito. Se acostumbra a usar la letra n luego del nombre para indicar que es lgica negativa.

Cualquier cambio en resetn (an cuando no haya cambio en CLK), altera la operacin del FF. Por tanto resetn debe entrar en la lista de sensibilidad del proceso.

Flip flop D con reset asincrnico


Dentro del programa se debe preguntar (en el primer IF) por resetn ya que es la ms relevante. Luego se debe preguntar por el flanco de reloj (con un ELSIF) y determinar la operacin normal del FF.

Registro paralelo de 8 bits con clear asincrnico

Registro de 8 bits con clear asincrnico


Su descripcin es bastante similar que el FFD. Ahora se toma en cuenta que un registro es un dispositivo MULTIBIT y por tanto las seales Q y D ahora son vectores.

Registro UNIVERSAL de 4 bits

Registro UNIVERSAL de 4 bits


La estructura general (CLOCK Y CLEAR/Reset) es similar a la del registro y los FFs anteriores. El modo se declara con un vector S y con las sentencias IF ELSIF END IF se declaran las acciones para cada posibilidad. En el caso de los desplazamientos tenemos : Q3 Q2 Q1 Q0 Originalmente Q2 Q1 Q0 L SL (Desp. Izq.) R Q3 Q2 Q1 SR (Desp. Der.) El orden de declaracin de las asignaciones, no es relevante en VHDL, por que se realiza un mapeo de datos. Es decir las asignaciones (usando <=) no se ejecutan en el mismo instante de la declaracin, mas bien que los nuevos valores se graban sobre un mapa temporal de datos. Luego de la ejecucin del programa en un ciclo de tiempo, los datos del mapa temporal, pasan a las variables.

Registro UNIVERSAL de 4 bits

Contador Binario de 4 bits hacia arriba con clear y enable

Contador Binario de 4 bits hacia arriba con clear y enable


Este contador, al ser Binario, simplemente suma uno a cada valor presente para determinar el valor siguiente. Se debe habilitar el paquete UNSIGNED para operaciones aritmticas del tipo STD_LOGIC. Adicionalmente se usa una seal intermedia count para leer y escribir datos temporales y as evitar que la salida Q sea del tipo buffer.

Contador anillo de 4 bits

Contador anillo de 4 bits

Contador anillo torcido de 4 bits

Contador anillo torcido de 4 bits

Contador con una secuencia diferente (sin desplazamientos)


Supongamos que se desea implementar en VHDL un contador con la secuencia :

000 010 111 110 011 Para realizar esta implementacin en VHDL, no es necesario basarse en la ejecucin de desplazamientos o cargas paralelas. La instruccin CASE IS WHEN es muy til en este caso. Solo es necesario declarar para cada estado ( o valor presente) de secuencia, cual es el estado siguiente

Contador con una secuencia diferente (sin desplazamientos)

Contador con una secuencia diferente (sin desplazamientos)

Paquetes

Un diseador de Hardware que utilice frecuentemente la misma tecnologa de diseo ha de hacerse, con el paso del tiempo, con una resea amplia de procedimientos, funciones, puertas y, en general, de componentes que emplear con frecuencia. Los paquetes permiten agrupar un conjunto de declaraciones para que puedan ser usadas en el diseo de diferentes circuitos sin ser repetidas en la declaracin de cada uno.

Sintxis para la definicin de un paquete


El Package body, relacionado con el cuerpo del paquete, puede o no existir y en el caso de existir las declaraciones y definiciones contenidas en la misma, son locales, visibles slo dentro del paquete

mientras que las declaraciones y definiciones contenidas en la primera parte Package, son visibles para todos los diseos que lo utilicen

Ejemplo: Declaracin de la entidad y el subcircuito


Para ilustrar el uso de paquetes, retomemos el ejemplo del sumador de 4 bits resuelto anteriormente con descripcin estructural simple. Primero creamos el subcircuito sumador completo de un bit:

Ejemplo: Declaracin del paquete


Para declarar el paquete, en otro archivo .vhd, escribimos la sintaxis respectiva y la asociamos con COMPONENT al subcircuito previamente creado:

Ejemplo: Uso del paquete

Lo que hacemos es llamar a la biblioteca interna de trabajo WORK.

Ahora procedemos a instanciar normalmente el circuito, sin tener que declarar nuevamente el subcircuito con COMPONENT.

You might also like