ejercicios vhdl

12
· 1 · UNIVERSIDAD POLITÉCNICA DE CARTAGENA DPTO. DE TECNOLOGÍA ELECTRÓNICA DISEÑO DE SISTEMAS ELECTRÓNICOS (DB4) SOLUCIÓN CONVOCATORIA ORDINARIA DE JUNIO DE 2003 Ejercicio 1 ( 1,5 puntos) Implementar la función lógica F(A,B,C,D) siguiente: C B A ) D A D C ( B C A F = a) Mediante un dispositivo PAL, esquematizando de forma simplificada las estructura de las matrices internas y las conexiones que habría que realizar para obtener dicha función a la salida. b) Mediante una descripción en código VHDL. Solución apartado A Como se ha visto en teoría, las PAL permiten implementar funciones lógicas en forma de suma de productos. Por consiguiente, previamente hay que desarrollar la expresión lógica de F hasta dejarla de esta forma: C B A D A B D C B C A C B A ) D A D C ( B C A F = = La estructura de una PAL presenta una matriz de puertas AND de entradas programable y una matriz de puertas OR fija. Las puertas AND se utilizan para implementar los términos producto y las puertas OR para efectuar las sumas. En consecuencia, dado que la estructura de OR ha de ser fija, la PAL buscada debe presentar, al menos, 4 conexiones fijas en la matriz OR a fin de generar la suma de productos en la patilla de salida. De forma simplificada, debería presentar la siguiente estructura: MATRIZ AND PROGRAMABLE MATRIZ OR FIJA

Upload: gustavogomez4505

Post on 28-Mar-2015

488 views

Category:

Documents


7 download

TRANSCRIPT

Page 1: Ejercicios VHDL

· 1 ·

UNIVERSIDAD POLITÉCNICA DE CARTAGENA DPTO. DE TECNOLOGÍA ELECTRÓNICA

DISEÑO DE SISTEMAS ELECTRÓNICOS (DB4) SOLUCIÓN CONVOCATORIA ORDINARIA DE JUNIO DE 2003

Ejercicio 1 ( 1,5 puntos) Implementar la función lógica F(A,B,C,D) siguiente:

CBA)DADC(BCAF ⋅⋅+⋅+⋅⋅+⋅= a) Mediante un dispositivo PAL, esquematizando de forma simplificada las estructura de las

matrices internas y las conexiones que habría que realizar para obtener dicha función a la salida.

b) Mediante una descripción en código VHDL. Solución apartado A

Como se ha visto en teoría, las PAL permiten implementar funciones lógicas en forma de suma de productos. Por consiguiente, previamente hay que desarrollar la expresión lógica de F hasta dejarla de esta forma:

CBADABDCBCACBA)DADC(BCAF ⋅⋅+⋅⋅+⋅⋅+⋅=⋅⋅+⋅+⋅⋅+⋅= La estructura de una PAL presenta una matriz de puertas AND de entradas programable

y una matriz de puertas OR fija. Las puertas AND se utilizan para implementar los términos producto y las puertas OR para efectuar las sumas. En consecuencia, dado que la estructura de OR ha de ser fija, la PAL buscada debe presentar, al menos, 4 conexiones fijas en la matriz OR a fin de generar la suma de productos en la patilla de salida. De forma simplificada, debería presentar la siguiente estructura:

MATRIZ AND PROGRAMABLE

MATRIZ OR FIJA

Page 2: Ejercicios VHDL

· 2 ·

Solución apartado B ---------------------------------------------------- -- Solución Ejercicio 1b de la convocatoria -- de Junio de 2003. -- Descripción VHDL del circuito que implementa -- la función lógica: -- F= A·C'+B·(C'·D+A·D)+A'·B'·C -- Universidad Politécnica de Cartagena. -- Dpto de Tecnología Electrónica. -- [email protected] -- [email protected] -- [email protected] ---------------------------------------------------- LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ---------------------------------------------------- --Descripción de la Interfaz. ---------------------------------------------------- ENTITY FuncionF IS PORT ( sA, sB, sC, sD: IN std_logic; sF: OUT std_logic); END FuncionF; ---------------------------------------------------- --Descripción del funcionamiento. ---------------------------------------------------- ARCHITECTURE FuncionFArch OF FuncionF IS BEGIN sF <= (sA and (not sC)) or (sB and (((not sC) and sD) or (sA and sD))) or ((not sA) and (not sB) and sC); END FuncionFArch;

Page 3: Ejercicios VHDL

· 3 ·

Ejercicio 2 ( 2 puntos) Realice una descripción VHDL del circuito de la figura adjunta, aplicando la metodología de instanciación de componentes. Solución

Se toman las señales de entrada, auxiliares y de salida indicadas en la figura adjunta: ------------------------------------------------------------ -- Solución Ejercicio 2 de la convocatoria -- de Junio de 2003. -- Descripción VHDL estructural de un esquemático -- Dpto de Tecnología Electrónica. -- [email protected] -- [email protected] -- [email protected] ------------------------------------------------------------ -- DESCRIPCIÓN DE LOS COMPONENTES ------------------------------------------------------------ -- BIESTABLE T ACTIVO EN FLANCO DE SUBIDA ------------------------------------------------------------ LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ---------------------------------------------------- --Descripción de la Interfaz. ---------------------------------------------------- ENTITY FlipFlopT IS PORT ( sT, CLK: IN std_logic; sQ: INOUT std_logic); END FlipFlopT; ---------------------------------------------------- --Descripción del funcionamiento. ---------------------------------------------------- ARCHITECTURE FlipFlopTArch OF FlipFlopT IS PROCESS (CLK) BEGIN IF (rising_edge (CLK)) THEN IF (sT=’1’) THEN sQ<= not sQ; ELSE NULL; END IF; END IF; END PROCESS; END FlipFlopTArch;

T Q1 /Q1

J Q2 K /Q2

NOR “1” R Q3 S /Q3

“RELOJ”

XOR “1”

sA sInput

sOutput sB

sC

sD

Page 4: Ejercicios VHDL

· 4 ·

------------------------------------------------------------ -- BIESTABLE JK ACTIVO EN FLANCO DE BAJADA ------------------------------------------------------------ LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ---------------------------------------------------- --Descripción de la Interfaz. ---------------------------------------------------- ENTITY FlipFlopJK IS PORT ( sJ, sK, CLK: IN std_logic; sQ: INOUT std_logic); END FlipFlopJK; ---------------------------------------------------- --Descripción del funcionamiento. ---------------------------------------------------- ARCHITECTURE FlipFlopJKArch OF FlipFlopJK IS PROCESS (CLK) BEGIN IF (falling_edge (CLK)) THEN IF (sJ=’0’ and sK = ‘1’) THEN sQ<= ‘0’; ELSIF (sJ=’1’ and sK = ‘0’) THEN sQ<= ‘1’; ELSIF (sJ=’1’ and sK = ‘1’) THEN sQ<= not sQ; ELSE NULL; END IF; END IF; END PROCESS; END FlipFlopJKArch; ------------------------------------------------------------ -- BIESTABLE SR ACTIVO EN FLANCO DE SUBIDA ------------------------------------------------------------ LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ---------------------------------------------------- --Descripción de la Interfaz. ---------------------------------------------------- ENTITY FlipFlopSR IS PORT ( sS, sR, CLK: IN std_logic; sQ: INOUT std_logic); END FlipFlopSR; ---------------------------------------------------- --Descripción del funcionamiento. ---------------------------------------------------- ARCHITECTURE FlipFlopSRArch OF FlipFlopSR IS PROCESS (CLK) BEGIN IF (rising_edge (CLK)) THEN IF (sS=’0’ and sR = ‘1’) THEN sQ<= ‘0’; ELSIF (sS=’1’ and sR = ‘0’) THEN sQ<= ‘1’; ELSE NULL; END IF; END IF; END PROCESS; END FlipFlopSRArch;

Page 5: Ejercicios VHDL

· 5 ·

------------------------------------------------------------ -- PUERTA NOR DE 2 ENTRADAS ------------------------------------------------------------ LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ---------------------------------------------------- --Descripción de la Interfaz. ---------------------------------------------------- ENTITY NOR2Gate IS PORT ( sInputA, sInputB: IN std_logic; sOut: OUT std_logic); END NOR2Gate; ---------------------------------------------------- --Descripción del funcionamiento. ---------------------------------------------------- ARCHITECTURE NOR2GateArch OF NOR2Gate IS sOut <= sInputA nor sInputB; END NOR2GateArch; ------------------------------------------------------------ -- PUERTA XOR DE 2 ENTRADAS ------------------------------------------------------------ LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ---------------------------------------------------- --Descripción de la Interfaz. ---------------------------------------------------- ENTITY XOR2Gate IS PORT ( sInputA, sInputB: IN std_logic; sOut: OUT std_logic); END XOR2Gate; ---------------------------------------------------- --Descripción del funcionamiento. ---------------------------------------------------- ARCHITECTURE XOR2GateArch OF XOR2Gate IS sOut <= sInputA xor sInputB; END XOR2GateArch; ------------------------------------------------------------ -- DESCRIPCIÓN ESTRUCTURAL DEL CIRCUITO ------------------------------------------------------------ LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ---------------------------------------------------- --Descripción de la Interfaz. ---------------------------------------------------- ENTITY Circuito IS PORT ( sInput, sReloj: IN std_logic; sOutput: OUT std_logic); END Circuito;

Page 6: Ejercicios VHDL

· 6 ·

---------------------------------------------------- --Descripción del funcionamiento. ---------------------------------------------------- ARCHITECTURE CircuitoArch OF Circuito IS --Se declaran los componentes. ------------------------------------------------------------ -- BIESTABLE T ACTIVO EN FLANCO DE SUBIDA ------------------------------------------------------------ COMPONENT FlipFlopT PORT ( sT, CLK: IN std_logic; sQ: INOUT std_logic); END COMPONENT; ------------------------------------------------------------ -- BIESTABLE JK ACTIVO EN FLANCO DE BAJADA ------------------------------------------------------------ COMPONENT FlipFlopJK PORT ( sJ, sK, CLK: IN std_logic; sQ: INOUT std_logic); END COMPONENT; ------------------------------------------------------------ -- BIESTABLE SR ACTIVO EN FLANCO DE SUBIDA ------------------------------------------------------------ COMPONENT FlipFlopSR PORT ( sS, sR, CLK: IN std_logic; sQ: INOUT std_logic); END COMPONENT; ------------------------------------------------------------ -- PUERTA NOR DE 2 ENTRADAS ------------------------------------------------------------ COMPONENT NOR2Gate PORT ( sInputA, sInputB: IN std_logic; sOut: OUT std_logic); END COMPONENT; ------------------------------------------------------------ -- PUERTA XOR DE 2 ENTRADAS ------------------------------------------------------------ COMPONENT XOR2Gate PORT ( sInputA, sInputB: IN std_logic; sOut: OUT std_logic); END COMPONENT; ------------------------------------------------------------ -- VARIABLES AUXILIARES DE TRABAJO. ------------------------------------------------------------ SIGNAL sA, sB, sC, sD: std_logic; BEGIN -- Instanciación de los componentes. FF1: FlipFlopT PORT MAP ( sT <= ‘1’, CLK <= sReloj, sQ <= sC); FF2: FlipFlopJK PORT MAP ( sJ <= sInput, sK <= sC, CLK <= sReloj, sQ <= sB); G1: NOR2Gate PORT MAP (sInputA <= sB, sInputB <= sReloj, sOut <= sA); G2: XOR2Gate PORT MAP (sInputA <= sA, sInputB <= ‘1’, sOut <= sD); FF3: FlipFlopSR PORT MAP ( sS <= sD, sR <= sA, CLK <= sReloj, sQ <= sOutput); END CircuitoArch;

Page 7: Ejercicios VHDL

· 7 ·

Ejercicio 3 ( 2,5 puntos) Se pretende diseñar un circuito que ponga en su salida un valor de ‘1’ lógico durante un ciclo de reloj, cuando detecte la secuencia “111010” en una entrada por la que llegan datos sincronizados con un reloj activo en flanco de subida. Se pide:

a) Diagrama de estados del circuito en su versión Moore. b) Descripción VHDL del diagrama de estados obtenido anteriormente.

Solución apartado A Se considera una máquina de estados que presenta las siguientes entradas y salidas:

• Entradas: o Señal de reloj (CLK). o Señal de entrada de datos (sInputData). o Señal de inicialización asíncrona, activa a nivel bajo (sResetL).

• Salidas: o Señal indicadora de secuencia detectada (sDetect).

El diagrama de estados de la versión Moore solicitada presenta entonces el siguiente aspecto:

Page 8: Ejercicios VHDL

· 8 ·

Solución apartado B Se considera una máquina de estados que presenta las siguientes entradas y salidas: ---------------------------------------------------- -- Solución Ejercicio 3b de la convocatoria -- de Junio de 2003. -- Descripción VHDL de la máquina de estados -- que implementa el detector de la secuencia -- “111010” en su versión Moore. -- Universidad Politécnica de Cartagena. -- Dpto de Tecnología Electrónica. -- [email protected] -- [email protected] -- [email protected] ---------------------------------------------------- LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ---------------------------------------------------- --Descripción de la Interfaz. ---------------------------------------------------- ENTITY DetectorSecuencia IS PORT ( -- Entradas -- Señal de reloj. CLK: IN STD_LOGIC; -- Señal de inicialización asíncrona -- activa a nivel bajo. sResetL: IN STD_LOGIC; -- Señal de entrada de datos serie. sInputData: IN STD_LOGIC; -- Salidas. -- Indicador de secuencia detectada. sDetect: OUT STD_LOGIC); END DetectorSecuencia ; ---------------------------------------------------- --Descripción del funcionamiento. ---------------------------------------------------- ARCHITECTURE DetectorSecuenciaArch OF DetectorSecuencia IS -- Declaración del tipo asociado a los Estados. TYPE TipoEstados IS (E0, E1, E11, E111, E1110, E11101, E111010); -- Señales auxiliares para la codificación del estado actual y siguiente. SIGNAL tEstadoActual, tEstadoSiguiente: TipoEstados; BEGIN --Proceso dedicado a la lógica de estados. ---------------------------------------------------- LOGICA_ESTADO: PROCESS (tEstadoActual, sInputData ) BEGIN CASE tEstadoActual IS WHEN E0 => IF (sInputData ='1') THEN tEstadoSiguiente <= E1; ELSIF (sInputData ='0') THEN tEstadoSiguiente <= E0; END IF; WHEN E1 => IF (sInputData ='1') THEN tEstadoSiguiente <= E11; ELSIF (sInputData ='0') THEN tEstadoSiguiente <= E0; END IF; WHEN E11 =>

Page 9: Ejercicios VHDL

· 9 ·

IF (sInputData ='0') THEN tEstadoSiguiente <= E0; ELSIF (sInputData ='1') THEN tEstadoSiguiente <= E111; END IF; WHEN E111 => IF (sInputData ='0') THEN tEstadoSiguiente <= E1110; ELSIF (sInputData ='1') THEN tEstadoSiguiente <= E111; END IF; WHEN E1110 => IF (sInputData ='1') THEN tEstadoSiguiente <= E11101; ELSIF (sInputData ='0') THEN tEstadoSiguiente <= E0; END IF; WHEN E11101 => IF (sInputData ='1') THEN tEstadoSiguiente <= E11; ELSIF (sInputData ='0') THEN tEstadoSiguiente <= E111010; END IF; WHEN E111010 => IF (sInputData ='1') THEN tEstadoSiguiente <= E1; ELSIF (sInputData ='0') THEN tEstadoSiguiente <= E0; END IF; WHEN OTHERS => NULL; END CASE; END PROCESS LOGICA_ESTADO; --Proceso dedicado a la Memoria de estados. ---------------------------------------------------- MEMORIA_ESTADO: PROCESS (CLK, sResetL) BEGIN --Inicialización con ResetL. IF (sResetL = ‘0’) THEN tEstadoActual <= E0; ELSIF (falling_edge(CLK)) THEN tEstadoActual <= tEstadoSiguiente ; END IF; END PROCESS MEMORIA_ESTADO; -- Generación de la lógica de salida. -- Maquina Moore=>Salida=f(estado). ---------------------------------------------------- sDetect <= '1' WHEN (tEstadoActual = E111010) ELSE '0' ; END DetectorSecuenciaArch;

Page 10: Ejercicios VHDL

· 10 ·

Ejercicio 4 ( 2,5 puntos) Un circuito dispone de cuatro entradas (A, B, C, D) y una salida (S). Se sabe que la salida se pone a ‘1’ cuando:

• A=’1’, B=’1’ y C=’1’ • A=’0’, C=’1’ y D = ‘1’ • C=’0’ y D=’0’

Se pide:

a) Función lógica minimizada según Karnaugh. b) Indicar si la solución anterior presenta hazards y resolverlos en caso afirmativo.

Solución apartado A El primer paso consiste en obtener la tabla de verdad del circuito.

Una vez obtenida la tabla de verdad, aplicamos el criterio de minimización de Karnaugh:

Solución apartado B Debido a que hay grupos de 1’s adyacentes, la solución del apartado A SÍ presenta riesgo de hazards. Para evitarlos hay que introducir dos términos redundantes:

CD AB

00 01 11 10

00 1 0 1 0 01 1 0 1 0 11 1 0 1 1 10 1 0 0 0

CBADCADCS ⋅⋅+⋅⋅+⋅=

CD AB

00 01 11 10

00 1 0 1 0 01 1 0 1 0 11 1 0 1 1 10 1 0 0 0

DBADCBCBADCADCS ⋅⋅+⋅⋅+⋅⋅+⋅⋅+⋅=

A B C D S 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1 1 0 1 0 0 1 0 1 0 1 0 0 1 1 0 0 0 1 1 1 1 1 0 0 0 1 1 0 0 1 0 1 0 1 0 0 1 0 1 1 0 1 1 0 0 1 1 1 0 1 0 1 1 1 0 1 1 1 1 1 1

Page 11: Ejercicios VHDL

· 11 ·

Ejercicio 5 ( 1,5 puntos) Dado el circuito de la figura adjunta:

a) Determine cuál es la máxima frecuencia a la que pueden cambiar las entradas, de forma que el circuito funcione correctamente.

b) Describa el circuito con el menor número posible de líneas de código VHDL.

Datos: tp(not) = 0,5ns tp (nand)= 0,90ns tp(nor)=0,80ns

Solución apartado A En base a los datos de retardos suministrados en el enunciado, el camino crítico lo constituye el representado en C1.

El retardo asociado a C1 vale: tC1 = tpNAND2 + tpOR2 + tpOR2 = 0,90ns + 0,80ns + 0,80ns = 2,5ns En consecuencia, la máxima frecuencia a la que van a poder variar los datos de entrada será:

MHz400Hz105,2

1000s105,2

1ns5,2

1t1

F 69

1CMAX =⋅=

⋅===

C1

Page 12: Ejercicios VHDL

· 12 ·

Solución apartado B Dado que piden la descripción VHDL que emplee el menor número de código VHDL, la mejor forma de hacerlo es usando una descripción funcional: ---------------------------------------------------- -- Solución Ejercicio 5b de la convocatoria -- de Junio de 2003. -- Descripción VHDL del circuito que implementa -- las funciones lógicas: -- F1=((A·B)')' = A·B -- F2=((((A·B)')or C)')' = (((A·B)')or C) -- F3=(((((A·B)')or C)')or D)' -- Universidad Politécnica de Cartagena. -- Dpto de Tecnología Electrónica. -- [email protected] -- [email protected] -- [email protected] ---------------------------------------------------- LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ---------------------------------------------------- --Descripción de la Interfaz. ---------------------------------------------------- ENTITY Ejercicio5 IS PORT ( sA, sB, sC, sD: IN std_logic; sF1, sF2, sF3: OUT std_logic); END Ejercicio5; ---------------------------------------------------- --Descripción del funcionamiento. ---------------------------------------------------- ARCHITECTURE Ejercicio5Arch OF Ejercicio5 IS BEGIN sF1 <= not (sA nand sB); sF2 <= not (sC nor (sA nand sB)); sF3 <= sD nor (sC nor (sA nand sB)); -- Nota: -- Otra alternativa hubiera sido implementar -- las ecuaciones simplificadas: -- sF1 <= sA and sB; -- sF2 <= sC or (sA nand sB); -- sF3 <= sD nor (sC nor (sA nand sB)); END Ejercicio5Arch;