Anda di halaman 1dari 7

Trabajo de VHDL

Previo al Curso de VHDL Avanzado


PROBLEMA # 1 A continuacin se muestra la implementacin de un circuito digital diseado con componentes MSI y puertas adicionales.

a) Escriba el cdigo VHDL de cada subcircuito mostrado. b) Escriba un programa en VHDL para implementar completamente el circuito mostrado en diseo Estructural. PROBLEMA # 2 Disear e implementar un circuito secuencial sincrnico generador de secuencias. El circuito recibe la seal de arranque (START.H) y paro (STOP.H) y tiene cuatro salidas (Q3, Q2, Q1, Q0).

START.H STOP.H CLK.H

CIRCUITO DIGITAL 1

Q0 Q1 Q2 Q3
1

La entrada START.H tiene mayor prioridad que la seal STOP.H. Si el circuito recibe un pulso en la seal START (START= 1), entonces en las salidas Q3, Q2, Q1 y Q0, se genera el primer valor de la secuencia de la Tabla # 1 (1110). Si START sigue siendo 1, este valor debe seguirse mostrando. Si START = 0, el circuito depende de STOP. Si STOP = 0, se genera con cada pulso de CLK, los elementos de la secuencia de la tabla # 1. Si STOP= 1, entonces las salidas Q3, Q2, Q1, Q0 se mantienen en su estado actual.

Presentar: 1. Particin Funcional del Sistema Digital. 2. Diagrama ASM del circuito Controlador del Sistema Digital, indicando claramente todas las salidas que deben ser generadas. 3. Programa del circuito en VHDL utilizando descripcin por Comportamiento. 4. Simulacin del Circuito. PROBLEMA # 3 Disee un pequeo Sistema Digital que detecte si varios nmeros son divisibles para 6. Inicialmente el sistema espera por la seal Start, luego de lo cual pasa a un estado de activacin. Desde este estado espera a que se ingrese un nmero de dos dgitos mediante un teclado decimal, recibiendo primero el dgito de las decenas y luego las unidades. Ahora el sistema debe detectar si el nmero ingresado es mltiplo de seis, de ser as el nmero debe ser acumulado internamente. La acumulacin finaliza si se recibe la seal Terminar o si se han detectado hasta diez nmeros divisibles para seis, de ser as el sistema pasa a otro estado de finalizacin donde se activa la salida Fin y se muestra en tres displays la suma acumulada de todos los nmeros ingresados que fueron divisibles para 6. Esto se sigue mostrando mientras Start sigue siendo verdadera, luego regresa al estado inicial Si la acumulacin no ha terminado, el sistema regresa al estado de activacin donde espera por otro nmero Ayuda: Un nmero es divisible para seis si es divisible para 3 y para 2. Un nmero es divisible para 2 si su ltimo dgito es par o cero. Un nmero es divisible para 3 si la suma de sus dgitos es divisible para 3.

Presentar: 1. Particin Funcional del Sistema Digital. 2. Diagrama ASM del circuito Controlador del Sistema Digital, indicando claramente todas las salidas que deben ser generadas. 3. Programa del circuito en VHDL utilizando descripcin por Comportamiento. 4. Simulacin del Circuito. PROBLEMA # 4 Disee un pequeo Sistema Digital Clasificador de datos de encuestas personales. Inicialmente se espera por la seal Inicio que al ser verdadera enva al sistema a un estado de activacin. Desde este estado el sistema espera a que la seal Cargar se active y luego se desactive. Mientras esto ocurre, el valor presente en la entrada Data debe almacenarse internamente. Despus el sistema comienza la clasificacin. La informacin del Dato se descompone de la siguiente manera:

Ahora el sistema preguntar si se activ la seal Fin que significa que se ha ingresado el ltimo dato, de no ser as preguntar si se activ nuevamente Cargar y por ende repetir el proceso para un nuevo dato. Cuando el proceso ha finalizado, el sistema deber ahora mostrar en perodos consecutivos de reloj, en la salida Clase, el total de personas ingresadas que cumplieron las categoras 1, 2 y 3 (una por una) respectivamente. Finalmente se debe activar la salida Terminado que permanecer encendida mientras Inicio contine activado, luego el sistema debe volver al estado inicial del sistema (desactivacin). Cuenta mxima: 63 personas

Presentar: 1. Particin Funcional del Sistema Digital. 2. Diagrama ASM del circuito Controlador del Sistema Digital, indicando claramente todas las salidas que deben ser generadas. 3. Programa del circuito en VHDL utilizando descripcin por Comportamiento. 4. Simulacin del Circuito. PROBLEMA # 5 Dada la siguiente descripcin en VHDL del funcionamiento de un Sistema Digital: Presentar: 1. Particin Funcional del Sistema Digital. 2. Diagrama ASM del circuito Controlador del Sistema Digital, indicando claramente todas las salidas que deben ser generadas por Controlador. 3. Diagramas de Tiempo del circuito Controlador asumiendo las condiciones de entrada dadas. 4. Indique claramente los nombres y la duracin de cada estado (y). library ieee; use ieee.std_logic_1164.all; entity problema2 is port( Resetn,Clock,Start,Load,Ingresar,Fin DataR,DataA Datos Acertados Err end problema2; architecture mixta of problema2 is component registro_i_d port( Resetn, Clock En, Ld, R Entpar Q end component; component registro_sost port( Resetn,Clock,En EntPar Q end component; component registro_sost5 port( Resetn,Clock,En

: in std_logic; : in std_logic_vector(6 downto 0); : out std_logic_vector(6 downto 0); : out std_logic_vector(4 downto 0); : out std_logic);

: in std_logic; : in std_logic; : in std_logic_vector (6 downto 0); : buffer std_logic_vector (6 downto 0));

: in std_logic; : in std_logic_vector (6 downto 0); : out std_logic_vector (6 downto 0));

: in std_logic;

EntPar : in std_logic_vector (4 downto 0); Q : out std_logic_vector (4 downto 0)); end component; component contador_up port( Resetn,Clock,En,Ld : in std_logic; Ent : in std_logic_vector (4 downto 0); Q : out std_logic_vector (4 downto 0)); end component; component contador_down port( Resetn,Clock,En,Ld : in std_logic; Ent : in std_logic_vector(4 downto 0); Q : out std_logic_vector(4 downto 0)); end component; component memRAM port( data : in std_logic_vector(6 downto 0); we : in std_logic; address : in std_logic_vector(4 downto 0); q : out std_logic_vector(6 downto 0)); end component; type estado is (Ta,Tb,Tc,Td,Te,Tf,Tg,Th); signal y : estado; signal EnC,LdC,EnP,LdP,EnR,LdR,EnA,EnT : std_logic; signal mostrar1,mostrar2,Rmen100,Amen100,AmayR : std_logic; signal write,Cig0,PigT,dt : std_logic; signal R,A,mem,const100 : std_logic_vector (6 downto 0); signal P,T,cntd,zeros,unos : std_logic_vector (4 downto 0); begin -- Controlador MSS_transiciones: process(Resetn,Clock) begin if Resetn ='0' then y <=Ta; elsif Clock'event and Clock ='1' then case y is when Ta=> if Start ='0' then y <=Ta; else y <=Tb; end if; when Tb=> if Rmen100 ='0' then y <=Tb; else y <=Tc; end if; when Tc=> if Ingresar ='0' then y <=Tc; else y <=Td; end if; when Td=> if Amen100 ='0' then y <=Tc; else y <=Te; end if; when Te=> y <=Tf; when Tf=> if Fin ='1' then y <=Tg; elsif Cig0 ='1' then y <=Tg; else y <=Tb; end if; when Tg=> y <=Th; when Th=> if PigT ='0' then y <=Th; else y <=Ta; end if; end case; end if; end process; MSS_salidas: process(y,Load,Rmen100,Ingresar,Amen100,AmayR,Cig0,Fin,PigT) begin EnC <='0'; LdC <='0'; EnP <='0'; LdP <='0'; EnR <='0'; LdR <='0'; EnA <='0'; EnT <='0'; Err <='0'; write <='0'; mostrar1 <='0'; mostrar2 <='0'; case y is when Ta=> EnC <='1'; LdC <='1'; EnP <='1'; LdP <='1'; if Start ='0' and Load ='1' then EnR <='1'; LdR <='1'; end if; when Tb=> if Rmen100 ='0' then EnR <='1'; end if; when Tc=> if Ingresar ='1' then EnA <='1'; end if;

when Td=> if Amen100 ='0' then Err <='1'; end if; when Te=> if AmayR ='1' then write <='1'; EnP <='1'; end if; when Tf=> if Fin ='1' then EnT <='1'; elsif Cig0 ='1' then EnT <='1'; else EnC <='1'; EnR <='1'; end if; when Tg=> EnP <='1'; LdP <='1'; mostrar1 <='1'; when Th=> mostrar2 <='1'; if PigT ='0' then EnP <='1'; end if; end case; end process; -- Procesador de Datos zeros <="00000"; unos <="11111"; const100 <="1100100"; reg1: registro_i_d port map(Resetn,Clock,EnR,LdR,dt,DataR,R); reg2: registro_sost port map(Resetn,Clock,EnA,DataA,A); reg3: registro_sost5 port map(Resetn,Clock,EnT,P,T); memoria: memRAM port map(R,write,P,mem); cnt1: contador_up port map(Resetn,Clock,EnP,LdP,zeros,P); cnt2: contador_down port map(Resetn,Clock,EnC,LdC,unos,cntd);dt <= R(0) xor R(4); Cig0 <='1' when cntd ="00000" else '0'; Rmen100 <='1' when R < const100 else '0'; Amen100 <='1' when A < const100 else '0'; AmayR <='1' when A > R else '0'; PigT <='1' when P = T else '0'; Acertados <= T when mostrar1 ='1' else "ZZZZZ"; Datos <= mem when mostrar2 ='1' else "ZZZZZZZ"; end mixta;

PROBLEMA # 6 Disee un Pequeo Sistema Digital Adivinador de nmeros en un mximo de 5 intentos. Inicialmente el sistema espera que se active la seal Start, luego de lo cual debe automticamente generar y almacenar, uno por uno, tres nmeros aleatorios entre 0 y 7 (Para este fin use la seal de reloj clock2, de alta frecuencia que no est sincronizada con el reloj principal del sistema. Los nmeros si pueden ser repetidos). Los nmeros deben ser almacenados internamente y no sern mostrados. Luego el sistema debe activar la salida Ingresar, y quedar a la espera de que el jugador ingrese por el teclado decimal, uno por uno los tres nmeros que cree son los generados (Ingresar se vuelve a activar antes de recibir cada nmero). Luego que el jugador haya terminado de ingresar sus tres nmeros, el sistema debe computar lo siguiente: 1. Cantidad de nmeros correctos en la posicin correcta 2. Cantidad de nmeros correctos en posicin correcta o incorrecta. Ahora el sistema debe mostrar en dos displays de siete segmentos los resultados de sus cmputos. Ejemplo: Si los nmeros generados son 5 7 3 Si se ingresan: 5 3 2 los displays muestran 1 y 2 Si se ingresan: 3 5 7 los displays muestran 0 y 3 Si se ingresan: 0 5 7 los displays muestran 0 y 2

Estos resultados se mantienen en los displays hasta que se active la seal Continuar. Ahora el sistema debe preguntar si el jugador gan o si se agotaron los 5 intentos: Si gan (o se acabaron los 5 intentos), debe activar la salida triunfo (si no gano no activa ninguna salida), y seguir as mientras Start siga siendo verdadera luego de lo cual regresa al estado inicial para otro juego. Si no gan y an no se acaban los 5 intentos debe ingresar tres nuevos nmeros y probar nuevamente.

Presente: 1. Diagrama ASM del circuito Controlador debidamente documentada. (indicar todos las entradas y salidas) 2. Particin Funcional 3. Programa del circuito en VHDL utilizando descripcin por Comportamiento. 4. Simulacin del Circuito.