trabajo de vhdl

7
  1 Trabajo de VHDL Previo al Curso de VHDL Avanzado PROBLEMA # 1  A continuación se muestra la implementación de un circuito digital diseñado con componentes MSI y puertas adicionales. a) Escriba el código VHDL de cada subcircuito mo strado. b) Escriba un programa en VHDL para implementar c ompletamente el circuito mostrado en diseño Estructural. PROBLEMA # 2 Diseñar e implementar un circuito secuencial sincrónico generador de secuencias. El circuito recibe la señal de arranque (START.H) y paro (STOP.H) y tiene cuatro salidas (Q3, Q2, Q1, Q0). 1  CIRCUITO DIGITAL Q0 Q1 Q2 Q3 START.H STOP.H CLK.H

Upload: alfonso-agama-chico

Post on 18-Jul-2015

134 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Trabajo de VHDL

5/16/2018 Trabajo de VHDL - slidepdf.com

http://slidepdf.com/reader/full/trabajo-de-vhdl 1/7

 

Trabajo de VHDLPrevio al Curso de VHDL Avanzado

PROBLEMA # 1

A continuación se muestra la implementación de un circuito digital diseñado con componenteMSI y puertas adicionales.

a) Escriba el código VHDL de cada subcircuito mostrado.b) Escriba un programa en VHDL para implementar completamente el circuito mostrado e

diseño Estructural.

PROBLEMA # 2

Diseñar e implementar un circuito secuencial sincrónico generador de secuencias. El circuitrecibe la señal de arranque (START.H) y paro (STOP.H) y tiene cuatro salidas (Q3, Q2, Q1, Q0

1

CIRCUITO

DIGITAL

Q0

Q1

Q2

Q3

START.H

STOP.H

CLK.H

Page 2: Trabajo de VHDL

5/16/2018 Trabajo de VHDL - slidepdf.com

http://slidepdf.com/reader/full/trabajo-de-vhdl 2/7

 

La entrada START.H tiene mayor prioridad que la señal STOP.H.

Si el circuito recibe un pulso en la señal START (START= 1), entonces en las salidas Q3, Q2, Qy Q0, se genera el primer valor de la secuencia de la Tabla # 1 (1110). Si START sigue siendo 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. SSTOP= 1, entonces las salidas Q3, Q2, Q1, Q0 se mantienen en su estado actual.

Presentar:

1. Partición 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 descripción por Comportamiento.

4. Simulación del Circuito.

PROBLEMA # 3

Diseñe un pequeño Sistema Digital que detecte si varios números son divisibles para 6.Inicialmente el sistema espera por la señal Start, luego de lo cual pasa a un estado dactivación. Desde este estado espera a que se ingrese un número de dos dígitos mediante uteclado decimal, recibiendo primero el dígito de las decenas y luego las unidades.Ahora el sistema debe detectar si el número ingresado es múltiplo de seis, de ser así enúmero debe ser acumulado internamente.La acumulación finaliza si se recibe la señal Terminar o si se han detectado hasta dienúmeros divisibles para seis, de ser así el sistema pasa a otro estado de finalización donde s

activa la salida Fin y se muestra en tres displays la suma acumulada de todos los númeroingresados que fueron divisibles para 6. Esto se sigue mostrando mientras Start sigue siendverdadera, luego regresa al estado inicialSi la acumulación no ha terminado, el sistema regresa al estado de activación donde espera pootro númeroAyuda: Un número es divisible para seis si es divisible para 3 y para 2. Un número es divisiblpara 2 si su último dígito es par o cero. Un número es divisible para 3 si la suma de sus dígitos edivisible para 3.

Page 3: Trabajo de VHDL

5/16/2018 Trabajo de VHDL - slidepdf.com

http://slidepdf.com/reader/full/trabajo-de-vhdl 3/7

 

Presentar:

1. Partición 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 descripción por Comportamiento.4. Simulación del Circuito.

PROBLEMA # 4

Diseñe un pequeño Sistema Digital Clasificador de datos de encuestas personales.Inicialmente se espera por la señal Inicio que al ser verdadera envía al sistema a un estado dactivación. Desde este estado el sistema espera a que la señal Cargar se active y luego sdesactive. Mientras esto ocurre, el valor presente en la entrada Data debe almacenarsinternamente. Después el sistema comienza la clasificación. La información del Dato sdescompone de la siguiente manera:

Ahora el sistema preguntará si se activó la señal Fin que significa que se ha ingresadel último dato, de no ser así preguntará si se activó nuevamente Cargar y por ende repetir proceso para un nuevo dato.Cuando el proceso ha finalizado, el sistema deberá ahora mostrar en períodos consecutivos dreloj, en la salida Clase, el total de personas ingresadas que cumplieron las categorías 1, 2 y (una por una) respectivamente. Finalmente se debe activar la salida Terminado qupermanecerá encendida mientras Inicio continúe activado, luego el sistema debe volver estado inicial del sistema (desactivación). Cuenta máxima: 63 personas

Page 4: Trabajo de VHDL

5/16/2018 Trabajo de VHDL - slidepdf.com

http://slidepdf.com/reader/full/trabajo-de-vhdl 4/7

 

 Presentar:

1. Partición 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 descripción por Comportamiento.4. Simulación del Circuito.

PROBLEMA # 5

Dada la siguiente descripción en VHDL del funcionamiento de un Sistema Digital:

Presentar:

1. Partición Funcional del Sistema Digital.2. Diagrama ASM del circuito Controlador del Sistema Digital, indicando claramente toda

las salidas que deben ser generadas por Controlador.3. Diagramas de Tiempo del circuito Controlador asumiendo las condiciones de entrad

dadas.4. Indique claramente los nombres y la duración de cada estado (y).

library ieee;use ieee.std_logic_1164.all;entity problema2 is

port( Resetn,Clock,Start,Load,Ingresar,Fin : in std_logic;DataR,DataA : in std_logic_vector(6 downto 0);Datos : out std_logic_vector(6 downto 0);Acertados : out std_logic_vector(4 downto 0);Err : out std_logic);

end problema2;

architecture mixta of problema2 iscomponent registro_i_d

port( Resetn, Clock : in std_logic;En, Ld, R : in std_logic;

Entpar : in std_logic_vector (6 downto 0);Q : buffer std_logic_vector (6 downto 0));

end component;component registro_sost

port( Resetn,Clock,En : in std_logic;EntPar : in std_logic_vector (6 downto 0);Q : out std_logic_vector (6 downto 0));

end component;component registro_sost5

port( Resetn,Clock,En : in std_logic;

Page 5: Trabajo de VHDL

5/16/2018 Trabajo de VHDL - slidepdf.com

http://slidepdf.com/reader/full/trabajo-de-vhdl 5/7

 

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_downport( 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-- ControladorMSS_transiciones: process(Resetn,Clock)begin

if Resetn ='0' then y <=Ta;

elsif Clock'event and Clock ='1' thencase 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;

Page 6: Trabajo de VHDL

5/16/2018 Trabajo de VHDL - slidepdf.com

http://slidepdf.com/reader/full/trabajo-de-vhdl 6/7

 

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 Datoszeros <="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;

Page 7: Trabajo de VHDL

5/16/2018 Trabajo de VHDL - slidepdf.com

http://slidepdf.com/reader/full/trabajo-de-vhdl 7/7

 

PROBLEMA # 6

Diseñe un Pequeño Sistema Digital Adivinador de números en un máximo de 5 intentos.Inicialmente el sistema espera que se active la señal Start, luego de lo cual debautomáticamente generar y almacenar, uno por uno, tres números aleatorios entre 0 y 7 (Pareste fin use la señal de reloj clock2, de alta frecuencia que no está sincronizada con el reloprincipal del sistema. Los números si pueden ser repetidos). Los números deben sealmacenados internamente y no serán mostrados.

Luego el sistema debe activar la salida Ingresar, y quedar a la espera de que el jugadoingrese por el teclado decimal, uno por uno los tres números que cree son logenerados (Ingresar se vuelve a activar antes de recibir cada número). Luego que e jugador haya terminado de ingresar sus tres números, el sistema debe computar lo siguiente:

1. Cantidad de números correctos en la posición correcta2. Cantidad de números correctos en posición correcta o incorrecta.

Ahora el sistema debe mostrar en dos displays de siete segmentos los resultados de sucómputos. Ejemplo: Si los números 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 señal Continuar. Ahora esistema 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 ganno activa ninguna salida), y seguir así mientras Start siga siendo verdadera luegde lo cual regresa al estado inicial para otro juego.

Si no ganó y aún no se acaban los 5 intentos debe ingresar tres nuevos números probar nuevamente.

Presente:

1. Diagrama ASM del circuito Controlador debidamente documentada. (indicar todos laentradas y salidas)

2. Partición Funcional3. Programa del circuito en VHDL utilizando descripción por Comportamiento.4. Simulación del Circuito.