Está en la página 1de 14

Benemrita Universidad Autnoma De Puebla

FACULTAD DE CIENCIAS DE LA ELECTRNICA


REPORTE DE LA PRCTICA No. 2 Registr De Corrimiento En VHDL De 4 Bits De Funcin Ampliada

Nombre de la Asignatura: SISTEMAS DIGITALES SECUENCIALES Profesora:


M.C. Ana Ma. Rodrguez Domnguez

Integrantes del Equipo:


Michelle Chaires Villalba Silvia Rosales Hernndez Javier Ruiz Hernndez Magali Valdivieso Morales Marzo 2013

Prctica Numero 2 Registr De Corrimiento En VHDL De 4 Bits De Funcin Ampliada


Un registro es un grupo de flip-flops donde cada flip-flop puede almacenar informacin binaria de un bit. Por lo tanto se dice que un registro de n bits consiste en un grupo de flip-flops que almacenaran n bits de informacin binaria. Adems de los flip- flops, un registro puede tener compuertas combi nacionales que realizan una tarea de procesamiento de datos. En trminos generales un registro es un conjunto de flip-flops y compuertas que efectan su transicin. Los flip-flops contiene la informacin binaria y las compuertas determinan cmo esa informacin se transfiere al registro. Los registros tienen las siguientes funciones y caractersticas. 1.- registra datos en los flancos activos del reloj 2.- Borra el contenido ante el nivel activo del reset. Puede tener seales de habilitacin y Clear sncronos. Un registro de 4 bits como anteriormente se menciono debe de tener un FlipFlop por cada dato almacenado por lo que nuestro flip flop de 4 bits se muestra as:

Como se puede ver los cuatro flip-flops van interconectados a una seal de reloj, una entrada y una salida. A est configuracin de registro se le denomina PIPO ( parallel in/ parallel out ).

A este tipo de registro se le denomina registro de corrimiento. Un registro de corrimiento es un registro que almacena y desplaza informacin, registra los datos en los flancos activos del reloj y borra el contenido ante el nivel alto del reset. Existen varios tipos de registros de corrimiento como el registro denominado SISO.

El REGISTRO SISO Cuya entrada y salida son en serie, por ello sus siglas (SERIAL IN -SERIAL OUT), la lectura de los datos tarda 4 ciclos de reloj al igual que cargarlo esto se debe a la que debe de esperar a que los cuatro flip-flops del registro carguen su dato y al terminar el load general el dato guardado puede ser ledo. DIAGRAMA DEL REGISTRO SISO

EL REGISTRO SIPO Cuya entrada esta definida por entrar en serie y salir en paralelo por lo que sus siglas son (SERIAL IN-PARELL OUT). Este registro tiene las siguientes caractersticas. 1.- el bit de entrada e reproduce cuatro veces a su salida por lo que la relacin queda, 1 bit de entrada 4 de salida. 2.- Carga en serie y desplaza lo bits. 3.- al igual que el registro pasado carga el dato a los cuatro ciclos de reloj 4.-tarda un ciclo de reloj al leer un dato.

REGISTRO PISO Un registro de corrimiento PISO es un registro cuya entrada esta definida en paralelo y la salida en serie, de manera analgica al registro SIPO solo que inverso a el ya que las entradas entran en paralelo y la salida en serie, lo que significa que entran 4 bits de informacin y solo sale un bit de informacin, las caractersticas del registro PISO son: 1.- Cuatro bits de entrada. Un bit de salida. 2.- Carga paralelo-salida serie. 3.- Ciclo de reloj para almacenar el dato. 4.- Ciclos de reloj para leer el dato. Por ultimo existe un registro de corrimiento que el cual tiene la cualidad de que si sus datos introducidos en paralelo se pueden sacar en serie recorriendo los datos almacenados en el registro. A este registro se le llama registro de corrimiento universal.

Registro de corrimiento universal Si las salidas de un Flip-Flop de un registro de corrimiento estn accesibles, la informacin que se introduce en serie por corrimiento se puede sacar en paralelo de las salidas de los flp-flops, si se aade la capacidad de carga en paralelo a un registro de corrimiento lo datos introducidos en paralelo se podrn sacar en serie desplazando los datos almacenados en el registro. TABLA DE FUNCIONES DE UN REGISTRO DE CORRIMIENTO UNIVERSAL DE 4 BITS CONTROL DE MODO 0 0 1 1 0 1 0 1 Operacin de registro Sin cambio Corrimiento hacia la derecha Corrimiento hacia la izquierda Carga en paralelo

Un registro de corrimiento lo podemos emplear para cambiar los datos de formato serie a formato paralelo, o viceversa. Los registros de desplazamiento se pueden considerar como cambiadores de formato de datos. Existen otras

muchas aplicaciones de los registros de desplazamiento como son: operaciones aritmticas, operaciones lgicas y contadores entre otras ms. La aplicacin que explicaremos es la del contador utilizando los registros de corrimiento tal es el caso del contador asncrono. Un contador asncrono Cuando se utiliza la salida de un Flip-Flop como entrada de reloj para el flip-flop siguiente, se dice que el contador e asncrono. Un flip-flop llamemos le A debe cambiar de estado antes de que pueda disparar el flip-flop B y el flip- flop B tiene que cambiar de estado antes de que pueda disparar el flip-flop C. Los disparos se prolongan a travs de los flip-flops como una ondulacin en el agua. A causa de esto, el tiempo de retardo de propagacin total es la suma de los retardos individuales. Cada vez que haya una transicin negativa del reloj, el flip-flop A cambiara de estado. As, en el punto a de una lnea de tipo, A pasa al estado alto, en el punto b pasa a estado bajo y en c vuelve al estado alto, y as sucesivamente.

Contador sncrono Contador asncrono es el ms sencillo en su construccin, pero su funcionamiento tiene un lmite determinado por la frecuencia de su funcin, cada flip flop tiene un tiempo de retardo aunado a que puede existir un glitch en las salidas que es un error, estos problemas se pueden solucionar con un contador sncrono o paralelo. Aqu la principal diferencia es que cada flip flop es disparado en el sincronismo con el reloj. La descripcin de un circuito secuencial en VHDL Hay dos tipos de enunciados de comportamiento en VHDL: inicial y siempre. El inicial se ejecuta una vez en el tiempo = 0. El comportamiento que es el siempre se ejecuta una y otra vez hasta que la simulacin termina. Los puntos se declaran dentro de los mdulos con las palabras clave INITIAL o ALWAYS seguidas de un enunciado o bloque de enunciado por la las palabras clave BEGIN y END. Por ejemplo para expresar un registro en VHDL debemos entender que el compilador de VHDL infiere o deduce una latch para una seal a la que se asigna un valor en una instruccin if o case si no se incorpora si no se incorpora todas las combinaciones de entrada. Para describir el comportamiento disparado por flanco de los flip flops, necesitamos emplear uno de los atributos de seal predefinidos de VHDL la

palabra clave EVENT. Si SIG es el nombre de seal, entonces SIG EVENT regresa el valor TRUE en cualquier tiempo en que SIG cambia un valor a otro y FALSE en el caso contrario. Utilizando la palabra calve EVENT podemos describir un u flip flop disparado por flanco positivo. En la instruccin IF, CLKEVENT regresa a un flanco ascendente, la lista de sensibilidad del proceso incluye solamente a CLK, los cambios en otras entradas no son relevantes en el modelo funcional. Ejemplo de descripcin en VHDL de un registro de 16 BITS. Library IEEE; Use IEEE.std_logic_1164.all;

Entity Vreg16 is Port (CLK, CLKEN, OE_L, CLR_L: in STD_LOGIC; D: in STD_LOGIC_VECTOR (1 to 16); Q: out STD_LOGIC_VECTOR (1 to 16; seales Q internas END Vreg16; Architecture Vreg16 of Vreg16 is Signal CLR, OE: STD_LOGIC ; --Versiones de seales en estado activo alto Signal IQ: STD_LOGIC_VECTOR(1 to 16): seales Q internas begin process ( CLK, CLR_L, CLR,OE_L,OE,IQ) begin CLR<= not CLR_L; OE<= not OE_L; If (CLR = `1) Then IQ <= (Others => `0); Elsif (CLK event and CLK `1) then If ( CLKEN= `1) then IQ <= D; end if ; End if; If OE = `1then IQ <=IQ; Else Q <= (others => `z) ; end if; End process; End Vreg16;

Los registros ms grandes pueden moldearse, naturalmente, mediante la definicin de las entradas y salidas de datos como vectores, y tambin pueden incluirse funciones adicionales la descripcin anterior modela un registro de 16 bits con salidas de tres estados y entradas de habilitacin de reloj, habilitacin de salida del flip flop, y se define y habilitan salidas de tres estados.

En la descripcin anterior la primera instruccin ELSIF tericamente podra haber incluido todas las condiciones necesarias para asignar D a IQ. Es decir, podra haber ledo elsif ( CLKevent ) and (CLK= `1) then En lugar de emplear una instruccin if anidad para verificar CLKEN.

OBJETIVO DEL PROBLEMA Describe en VHDL, realice la simulacin, la sntesis y compruebe el comportamiento de n registro de corrimiento de 4 bits de funcin extendida cuyas funciones son: Hold, carga en paralelo del dato de entrada D de 4 bits, corrimiento a la derecha con entrada serial Left, corrimiento circular a la derecha, corrimiento circular a la derecha, corrimiento aritmtico a la derecha (mediante signo) y corrimiento aritmtico a la izquierda(entrada 0). PLANTEAMIENTO DEL PROBLEMA Diagrama esquemtico del sistema, Descripcin del circuito y su funcionamiento Verbalizar el sistema y representarlo en un algoritmo de alto nivel para expresarlo de forma comportamental en VHDL Compilacin y la simulacin considerando lo casos que ilustren el funcionamiento completo de cada sistema. El cdigo de nuestro registro de corrimiento de 4 bits de funcin extendida cuyas funciones son: HOLD carga en paralelo. Corrimiento a la derecha con entrada serial Left. Corrimiento circular a la derecha (mediante signo). Corrimiento aritmtico a la izquierda cuando la entra es 0.

Registro ya ensamblado, en la imagen se puede ver la seal de reloj constituida por un circuito astable con un LM 555 a una frecuancia de 5HZ en tiempo esto es 2 segundos, esto en el lado izquierdo de la imagen y del lado dercho una GAL ya quemada con el codigo VHDL para el registro de corriemiento.

En la imagen se muestra a la GAL en funcin en la cual se puede ver el dato 101 que indica corrimeinto circular a la izquierda. Tambien se puede observar el conductor que lleva la seal de reloj este conductor es el cable de color blanco con franja azul transversal a la imagen.

Cuyo cdigo ya compilado es: CODIGO VHDL PARA EL REGISTRO DE CORRIMIENTO DE 4 BITS DE FUNCION EXTENDIDA --- Title : practicadossec -- Design : practicadossec -- Author : JAVIER -- Company : Hewlett-Packard ---------------------------------------------------------------------------------- File : practicadossec.vhd -- Generated : Mon Feb 25 13:42:49 2013 -- From : interface description file -- By : Itf2Vhdl ver. 1.20

library IEEE; use IEEE.STD_LOGIC_1164.all; entity practicadossec is port ( CLK, CLR, RIN, LIN: in STD_LOGIC; S: in Std_logic_vector (2 downto 0); -- seleccin de la funcin D: in Std_logic_vector (3 downto 0); -- entrada de datos Q: out std_logic_vector (3 downto 0) -- salida de datos ); end practicadossec; architecture practicadossec_arch of practicadossec is signal IQ: Std_logic_vector (3 downto 0); begin process (CLK, CLR, IQ) begin if (CLR='1') then IQ <= (others=>'0'); -- borrado elsif (CLK'event and CLK='1') then case S is when "000" => null Retencion when "001" => IQ <= D; -- Carga when "010" => IQ <= RIN & IQ(3 downto 1); -- Corrimiento a la derecha when "011" => IQ <= IQ(2 downto 0)& LIN; -- Corrimiento a la izquierda when "100" => IQ <=IQ(0) & IQ(3 downto1); -- Corrimiento circular a la derecha when "101" => IQ <= IQ(2 downto 0) & IQ(3);-- Corrimiento circular a la izquierda when "110" => IQ <=IQ(3) & IQ(3 downto 1); -- Corrimiento aritmtico a la derecha when "111" => IQ <= IQ(2 downto 0) & '0';-- Corrimiento aritmtico a la izquierda when others => null; end case; end if; Q <= IQ; end process; end practicadossec_arch;

En la imagen se muestra el esquema de la configuracin con la cual la GAL empleada que es una GAL numero C22V10 en la cual se quemo el cdigo VHDL para realizar el circuito fsicamente.

Al simularlo obtenemos el comportamiento determinado por la descripcin VHDL verbalizando el funcionamiento de nuestro registro podemos decir que nuestra entidad queda definida de la siguiente manera:

En la imagen se muestra la simulacin del registro de corrimiento de 4 bits En cual se da una seal de de reloj mostrada en la parte superior de la imagen en forma cuadrada y los datos, anteriormente no mostrada en la imagen se determinaron las entradas tanto como las d_0, d_1, d_2, d_3, shift rigth y left y la simulacin determino las salidas, lo que hicimos en la simulacin fue observar cada una de los posibles casos que ya se han mencionado en la descripcin del cdigo.

entity practicadossec is port (CLK, CLR, RIN, LIN: in STD_LOGIC; S: in Std_logic_vector (2 downto 0); -- seleccin de la funcin D: in Std_logic_vector (3 downto 0); -- entrada de datos Q: out std_logic_vector (3 downto 0) -- salida de datos); end practicadossec; nuestros puertos estarn determinados por CLK,CLR,RIN(que es la entrada de corrimiento hacia la derecha nuestro Shift Right) y anlogamente LIN ser nuestro Shift Left). La seleccin de funcin esta denotado por un vector que en este caso es n dowto 0 donde n es el numero de la variable, en este caso S esta bajo la funcin 2 downto 0 que determina la seleccin de funcin, D esta bajo la funcin 3 downto 0 que determina la entrada de dato y Q 3 downto 0 que determina la entrada de datos. Y por ultimo finalizamos la entidad. Iniciamos la arquitectura architecture practicadossec_arch of practicadossec is signal IQ: Std_logic_vector (3 downto 0); begin process (CLK, CLR, IQ) begin if (CLR='1') then IQ <= (others=>'0'); -- borrado elsif (CLK'event and CLK='1') then case S is when "000" => null Retencion when "001" => IQ <= D; -- Carga

when "010" => IQ <= RIN & IQ(3 downto 1); -- Corrimiento a la derecha when "011" => IQ <= IQ(2 downto 0)& LIN; -- Corrimiento a la izquierda when "100" => IQ <=IQ(0) & IQ(3 downto1); -- Corrimiento circular a la derecha when "101" => IQ <= IQ(2 downto 0) & IQ(3);-- Corrimiento circular a la izquierda when "110" => IQ <=IQ(3) & IQ(3 downto 1); -- Corrimiento aritmtico a la derecha when "111" => IQ <= IQ(2 downto 0) & '0';-- Corrimiento aritmtico a la izquierda when others => null; end case; end if; Q <= IQ; end process; end practicadossec_arch; Iniciamos la arquitectura determinando el dispositivo a describir sealando la seal de reloj ya que al ser un registro sncrono y ya que utilizamos flip flops debemos contemplar la seal de reloj en nuestras seales de entrada, as como especificar una seal interna que servir para no confundir las seales de salida Q y la interna, entonces declaramos nuestras entradas utilizando la palabra reservada VECTOR, al ser tres entradas usamos 3 downto 0 expresando las entradas CLK, CLR, IQ. Posteriormente comenzamos el proceso y verbalizamos, si CLK es igual a 1 entonces IQ es igual a 0 y por lo tanto borra, usamos la palabra reservada elsif para delimitar el nmero de posibles casos y especificamos los caso de el flanco de reloj y los definimos con CLK event para expresar que los cambios de estado estarn definidos a partir de la cadencia del la frecuencia con la que el CLK actu, cambiara de estado cuando el CLK dispare un flanco representado un 1 lgico y cuando regrese a un nivel bajo representara un 0 lgico, lo siguiente es determinar qu caso tomaremos definir los posibles casos, en esta parte verbalizaremos el caso S. y empezamos definiendo que cuando las entradas estn en 000 retendr, cuando 001 IQ ser iguala las entradas por lo tanto IQ ser igual a la entrada D por lo que cargara el dato, cuando 010 el dato se ir hacia la Q interna e Q interna ser igual a la entrada SHIFT RIGHT por lo que el corrimiento ser hacia la derecha, anlogamente cuando el dato sea igual a 011 el corrimiento ser a la izquierda, cuando el dato entrante es igual a 100 el corrimiento ser circular a la derecha, anlogamente cuando el dato entrante sea 101 el corrimiento ser circularmente hacia la izquierda, cuando el dato entrante 110 acciona realizar ser el corrimiento aritmtico a la derecha, anlogamente cuando el dato sea 111 el corrimiento aritmtico ser hacia la izquierda, y finalizamos el caso y la arquitectura, verbalizando el algoritmo es casi como describirlo.

Conclusin La practica realizada que consista en creara un registro de corrimiento de 4 bits de funcin extendida, se pudo simular y sintetizar bajo el cdigo VHDL empleado, lo explicado y descrito anteriormente expresa el conocimiento obtenido en el tema de registro, definiendo y explicando los distintos tipos de registros de corrimiento empleados y sus ventajas y desventajas a la hora de sintetizarlo en un circuito que se adate a nuestras necesidad as como aplicar el conocimiento previo de circuitos digitales secuenciales, la practica cumpli con lo establecido en los objetivos iniciales.

Referencias John F. Wakerly, Diseo Digital: Principios y Prcticas Tercera Edicin, Editorial Prentice Hall Pearson Educacin, 2001, Mxico

Apndice A Participacin y rol de los integrantes del equipo Responsable Magali Valdivieso Morales Javier Ruiz Hernndez Actividad simulacin de los casos del registro del cdigo VHDL para el registro de corrimiento de 4 bits ensamblaje del circuito de corrimiento recopilador de informacin Cumplimiento

Silvia Rosales Hernndez Michelle Chaires Villalba

Para nuestro cdigo en VHDL utilizamos un dispositivo programable que en este caso fue una GAL (Generic Array Logic). Con la GAL se proporciona una herramienta verstil en la solucin de sistemas lgicos combinatorios o secuenciales. A continuacin se muestra la estructura tpica de una GAL y la macrocelda de salida del GAL22V10.

A continuacin se muestran la estructura tpica de un GAL y la macro celda de salida del GA L22V10. Estructura tpica de un GAL

Macrocelda de un GAL22V10