reporte practica #2

19

Click here to load reader

Upload: sylvia-rosales-hernnandez

Post on 27-Nov-2015

193 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Reporte Practica #2

Benemérita UniversidadAutónoma De Puebla

FACULTAD DE CIENCIAS DE LA ELECTRÓNICA

REPORTE DE LA PRÁCTICA No. 2

Registró De Corrimiento En VHDL De 4 Bits De Función Ampliada

Nombre de la Asignatura:

SISTEMAS DIGITALES SECUENCIALES

Profesora:

M.C. Ana Ma. Rodríguez Domínguez

Integrantes del Equipo:Michelle Chaires Villalba

Silvia Rosales Hernández

Javier Ruiz Hernández

Magali Valdivieso Morales

Marzo 2013

Page 2: Reporte Practica #2

Práctica Numero 2

Registró De Corrimiento En VHDL De 4 Bits De Función Ampliada

Un registro es un grupo de flip-flops donde cada flip-flop puede almacenar información 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 información binaria.

Además de los flip- flops, un registro puede tener compuertas combi nacionales que realizan una tarea de procesamiento de datos.

En términos generales un registro es un conjunto de flip-flops y compuertas que efectúan su transición. Los flip-flops contiene la información binaria y las compuertas determinan cómo esa información se transfiere al registro.

Los registros tienen las siguientes funciones y características.

1.- registra datos en los flancos activos del reloj

2.- Borra el contenido ante el nivel activo del reset.

Puede tener señales de habilitación y Clear síncronos.

Un registro de 4 bits como anteriormente se menciono debe de tener un Flip- Flop 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 señal de reloj, una entrada y una salida. A está configuración de registro se le denomina PIPO ( parallel in/ parallel out ).

Page 3: Reporte Practica #2

A este tipo de registro se le denomina registro de corrimiento.

Un registro de corrimiento es un registro que almacena y desplaza información, 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 leído.

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 características.

1.- el bit de entrada e reproduce cuatro veces a su salida por lo que la relación 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.

Page 4: Reporte Practica #2

REGISTRO PISO

Un registro de corrimiento PISO es un registro cuya entrada esta definida en paralelo y la salida en serie, de manera analógica 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 información y solo sale un bit de información, las características 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 están accesibles, la información que se introduce en serie por corrimiento se puede sacar en paralelo de las salidas de los flp-flops, si se añade la capacidad de carga en paralelo a un registro de corrimiento lo datos introducidos en paralelo se podrán 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

S1 S0 Operación de registro 0 0 Sin cambio 0 1 Corrimiento hacia la

derecha 1 0 Corrimiento hacia la

izquierda 1 1 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

Page 5: Reporte Practica #2

muchas aplicaciones de los registros de desplazamiento como son: operaciones aritméticas, operaciones lógicas y contadores entre otras más.

La aplicación que explicaremos es la del contador utilizando los registros de corrimiento tal es el caso del contador asíncrono.

Un contador asíncrono

Cuando se utiliza la salida de un Flip-Flop como entrada de reloj para el flip-flop siguiente, se dice que el contador e asíncrono. 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 través de los flip-flops como una ondulación en el agua. A causa de esto, el tiempo de retardo de propagación total es la suma de los retardos individuales.

Cada vez que haya una transición negativa del reloj, el flip-flop A cambiara de estado. Así, en el punto a de una línea 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 síncrono

Contador asíncrono es el más sencillo en su construcción, pero su funcionamiento tiene un límite determinado por la frecuencia de su función, 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 síncrono o paralelo. Aquí la principal diferencia es que cada flip flop es disparado en el sincronismo con el reloj.

La descripción 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 simulación termina. Los puntos se declaran dentro de los módulos 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 señal a la que se asigna un valor en una instrucción 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 señal predefinidos de VHDL la

Page 6: Reporte Practica #2

palabra clave EVENT. Si “SIG” es el nombre de señal, 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 instrucción IF, “CLK´EVENT” 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 descripción 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; señales Q internas END Vreg16;

Architecture Vreg16 of Vreg16 isSignal CLR, OE: STD_LOGIC ; --Versiones de señales en estado activo alto Signal IQ: STD_LOGIC_VECTOR(1 to 16): señales 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 = `1´then IQ <=IQ; Else Q <= (others => `z´) ; end if;End process;End Vreg16;

Los registros más grandes pueden moldearse, naturalmente, mediante la definición de las entradas y salidas de datos como vectores, y también pueden incluirse funciones adicionales la descripción anterior modela un registro de 16 bits con salidas de tres estados y entradas de habilitación de reloj, habilitación de salida del flip flop, y se define y habilitan salidas de tres estados.

Page 7: Reporte Practica #2

En la descripción anterior la primera instrucción ELSIF teóricamente podría haber incluido todas las condiciones necesarias para asignar D a IQ. Es decir, podría haber leído “elsif ( CLK´event ) and (CLK= `1´) then En lugar de emplear una instrucción if anidad para verificar CLKEN.

OBJETIVO DEL PROBLEMADescribe en VHDL, realice la simulación, la síntesis y compruebe el comportamiento de n registro de corrimiento de 4 bits de función 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 aritmético a la derecha (mediante signo) y corrimiento aritmético a la izquierda(entrada 0).

PLANTEAMIENTO DEL PROBLEMA Diagrama esquemático del sistema, Descripción del circuito y su funcionamiento Verbalizar el sistema y representarlo en un algoritmo de alto nivel para expresarlo de forma comportamental en VHDL Compilación y la simulación considerando lo casos que ilustren el funcionamiento completo de cada sistema.El código de nuestro registro de corrimiento de 4 bits de función extendida cuyas funciones son:

HOLD carga en paralelo. Corrimiento a la derecha con entrada serial Left.Corrimiento circular a la derecha (mediante signo). Corrimiento aritmético a la izquierda cuando la entra es 0.

Page 8: Reporte Practica #2

Registro ya ensamblado, en la imagen se puede ver la señal 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 función 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 señal de reloj este conductor es el cable de color blanco con franja azul transversal a la imagen.

Cuyo código 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

Page 9: Reporte Practica #2

library IEEE;use IEEE.STD_LOGIC_1164.all;

entity practicadossec isport (CLK, CLR, RIN, LIN: in STD_LOGIC;S: in Std_logic_vector (2 downto 0); -- selección de la funciónD: in Std_logic_vector (3 downto 0); -- entrada de datosQ: out std_logic_vector (3 downto 0) -- salida de datos );

end practicadossec;

architecture practicadossec_arch of practicadossec issignal IQ: Std_logic_vector (3 downto 0);beginprocess (CLK, CLR, IQ)begin

if (CLR='1') then IQ <= (others=>'0'); -- borradoelsif (CLK'event and CLK='1') then

case S iswhen "000" => null – Retencion

when "001" => IQ <= D; -- Cargawhen "010" => IQ <= RIN & IQ(3 downto 1); -- Corrimiento a la derechawhen "011" => IQ <= IQ(2 downto 0)& LIN; -- Corrimiento a la izquierdawhen "100" => IQ <=IQ(0) & IQ(3 downto1); -- Corrimiento circular a la derechawhen "101" => IQ <= IQ(2 downto 0) & IQ(3);-- Corrimiento circular a la izquierdawhen "110" => IQ <=IQ(3) & IQ(3 downto 1); -- Corrimiento aritmético a la derechawhen "111" => IQ <= IQ(2 downto 0) & '0';-- Corrimiento aritmético a la izquierda

when others => null;end case;

end if;Q <= IQ;end process;

end practicadossec_arch;

Page 10: Reporte Practica #2

En la imagen se muestra el esquema de la configuración con la cual la GAL empleada que es una GAL numero C22V10 en la cual se quemo el código VHDL para realizar el circuito físicamente.

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

En la imagen se muestra la simulación del registro de corrimiento de 4 bits En cual se da una señal 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 simulación determino las salidas, lo que hicimos en la simulación fue

Page 11: Reporte Practica #2

observar cada una de los posibles casos que ya se han mencionado en la descripción del código.

entity practicadossec isport (CLK, CLR, RIN, LIN: in STD_LOGIC;S: in Std_logic_vector (2 downto 0); -- selección de la funciónD: in Std_logic_vector (3 downto 0); -- entrada de datosQ: out std_logic_vector (3 downto 0) -- salida de datos);

end practicadossec;

nuestros puertos estarán determinados por CLK,CLR,RIN(que es la entrada de corrimiento hacia la derecha nuestro Shift Right) y análogamente LIN será nuestro Shift Left).La selección de función 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 función 2 downto 0 que determina la selección de función, D esta bajo la función 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 issignal IQ: Std_logic_vector (3 downto 0);beginprocess (CLK, CLR, IQ)begin

if (CLR='1') then IQ <= (others=>'0'); -- borradoelsif (CLK'event and CLK='1') then

case S is

Page 12: Reporte Practica #2

when "000" => null – Retencionwhen "001" => IQ <= D; -- Cargawhen "010" => IQ <= RIN & IQ(3 downto 1); -- Corrimiento a la derechawhen "011" => IQ <= IQ(2 downto 0)& LIN; -- Corrimiento a la izquierdawhen "100" => IQ <=IQ(0) & IQ(3 downto1); -- Corrimiento circular a la derechawhen "101" => IQ <= IQ(2 downto 0) & IQ(3);-- Corrimiento circular a la izquierdawhen "110" => IQ <=IQ(3) & IQ(3 downto 1); -- Corrimiento aritmético a la derechawhen "111" => IQ <= IQ(2 downto 0) & '0';-- Corrimiento aritmético 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 señalando la señal de reloj ya que al ser un registro síncrono y ya que utilizamos flip flops debemos contemplar la señal de reloj en nuestras señales de entrada, así como especificar una señal interna que servirá para no confundir las señales 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 número 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 estarán 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 lógico y cuando regrese a un nivel bajo representara un 0 lógico, 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 estén 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, análogamente 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, análogamente cuando el dato entrante sea “101” el corrimiento será circularmente hacia la izquierda, cuando el dato entrante “110” acciona realizar será el corrimiento aritmético a la derecha, análogamente cuando el dato sea “111” el corrimiento aritmético será hacia la izquierda, y finalizamos el caso y la arquitectura, verbalizando el algoritmo es casi como describirlo.

Page 13: Reporte Practica #2

Conclusión

La practica realizada que consistía en creara un registro de corrimiento de 4 bits de función extendida, se pudo simular y sintetizar bajo el código 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, Diseño Digital: Principios y Prácticas Tercera Edición, Editorial Prentice Hall Pearson Educación, 2001, México

Page 14: Reporte Practica #2

Apéndice AParticipación y rol de los integrantes del equipo

Para nuestro código en VHDL utilizamos un dispositivo programable que en

este caso fue una GAL (Generic Array Logic).Con la GAL se proporciona una herramienta versátil en la solución de sistemas lógicos combinatorios o secuenciales.A continuación se muestra la estructura típica de una GAL y la macrocelda de salida del GAL22V10.

A continuación se muestran la estructura típica de un GAL y la macro celda de salida del GA L22V10.

Estructura típica de un GAL

Macrocelda de un GAL22V10

Responsable Actividad CumplimientoMagali Valdivieso Morales simulación de los casos

del registro ☺Javier Ruiz Hernández del código VHDL para el

registro de corrimiento de 4 bits

☺Silvia Rosales Hernández ensamblaje del circuito de

corrimiento ☺Michelle Chaires Villalba recopilador de información ☺