Sie sind auf Seite 1von 12

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:


F = A ⋅ C + B ⋅ ( C ⋅ D + A ⋅ D) + A ⋅ B ⋅ C
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:
F = A ⋅ C + B ⋅ ( C ⋅ D + A ⋅ D) + A ⋅ B ⋅ C = A ⋅ C + B ⋅ C ⋅ D + B ⋅ A ⋅ D + A ⋅ B ⋅ C

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 OR FIJA

MATRIZ AND
PROGRAMABLE

·1·
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.
-- Andres.Iborra@upct.es
-- Juan.Suardiaz@upct.es
-- PedroJ.Navarro@upct.es
----------------------------------------------------
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;

·2·
Ejercicio 2 ( 2 puntos)

Realice una descripción VHDL del circuito de la figura adjunta, aplicando la metodología de
instanciación de componentes.
sInput sA
sB
sOutput
“1” T Q1 J Q2 NOR R Q3

K /Q2 S /Q3
/Q1 sC
“RELOJ”

XOR
“1” sD

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.
-- Andres.Iborra@upct.es
-- Juan.Suardiaz@upct.es
-- PedroJ.Navarro@upct.es
------------------------------------------------------------
-- 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;

·3·
------------------------------------------------------------
-- 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_lo gic);
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;

·4·
------------------------------------------------------------
-- 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;

·5·
----------------------------------------------------
--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_lo gic);
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;

·6·
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:

·7·
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.
-- Andres.Iborra@upct.es
-- Juan.Suardiaz@upct.es
-- PedroJ.Navarro@upct.es
----------------------------------------------------
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 =>

·8·
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;

·9·
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.
A B C D S
0 0 0 0 1
0 0 0 1 0 Una vez obtenida la tabla de verdad, aplicamos el criterio de
0 0 1 0 0 minimización de Karnaugh:
0 0 1 1 1
0 1 0 0 1
0 1 0 1 0 CD 00 01 11 10
0 1 1 0 0 AB
0 1 1 1 1 00 1 0 1 0
01 1 0 1 0
1 0 0 0 1
11 1 0 1 1
1 0 0 1 0
10 1 0 0 0
1 0 1 0 0
1 0 1 1 0
1 1 0 0 1
1 1 0 1 0
S = C ⋅D + A ⋅C ⋅D + A ⋅B ⋅C
1 1 1 0 1
1 1 1 1 1

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 00 01 11 10
AB
00 1 0 1 0
01 1 0 1 0
11 1 0 1 1
10 1 0 0 0

S = C ⋅D + A ⋅ C ⋅D + A ⋅B ⋅C + B ⋅C ⋅D + A ⋅ B ⋅D

· 10 ·
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.

C1

El retardo asociado a C1 vale: tC1 = tpNAND2 + tp OR2 + tp OR2 = 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á:

1 1 1 1000 6
FMAX = = = −9
= ⋅ 10 Hz = 400MHz
t C1 2,5ns 2,5 ⋅ 10 s 2,5

· 11 ·
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.
-- Andres.Iborra@upct.es
-- Juan.Suardiaz@upct.es
-- PedroJ.Navarro@upct.es
----------------------------------------------------
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;

· 12 ·

Das könnte Ihnen auch gefallen