Académique Documents
Professionnel Documents
Culture Documents
ESPECIALIDAD TELEMTICA.
Problema 1.
Concurrencia.
Construya el listado VHDL que describa el circuito Cero de la figura adjunta,
sabiendo que presenta el comportamiento descrito en la tabla de verdad que la
acompaa.
x
0
0
0
0
1
1
1
1
x
0
0
x
y
CERO
y
0
0
1
1
0
0
1
1
y
0
0
z
0
1
0
1
0
1
0
1
z
0
1
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY Cero IS
PORT ( sX, sY, sZ: IN std_logic;
sH: OUT std_logic);
END Cero;
ENTITY Cero IS
PORT ( sX, sY, sZ: IN std_logic;
sH: OUT std_logic);
END Cero;
END CeroArch;
H
0
0
0
0
0
1
1
0
H
0
0
Problema 2
Operador Concatenacin.
Considere dos vectores A(a 3a2a1a0) y B(b3b2b1b0), los cuales van a ser las entradas
de un sistema digital. Se desea modelar en VHDL este sistema, sabiendo que
presenta una salida (S) definida por el siguiente comportamiento:
S = 1 si:
a3 = b 3 a2 = b2 a1 = b 1 a0 = b0
S=0
en cualquier otro caso.
LIBRARY IEEE;
USE ieee.std_logic_1164.all;
USE ieee.std_logic_arith.all;
USE ieee.std_logic_unsigned.all;
LIBRARY IEEE;
USE ieee.std_logic_1164.all;
USE ieee.std_logic_arith.all;
USE ieee.std_logic_unsigned.all;
ENTITY Comparador IS
PORT ( svA, s vB: IN std_logic _vector(3
DOWNTO 0);
sS: OUT std_logic);
END Comparador;
ENTITY Comparador IS
PORT ( svA, s vB: IN std_logic _vector(3
DOWNTO 0);
sS: OUT std_logic);
END Comparador;
ARCHITECTURE ComparadorArch OF
Comparador IS
BEGIN
PROCESS (svA, svB)
SIGNAL svAux: std_logic _vector(3 DOWNTO 0);
BEGIN
svAux <= svB(3)&(not svB(2))&svB(1)&(not
svB(0));
ARCHITECTURE ComparadorArch OF
Comparador IS
BEGIN
PROCESS (svA, svB)
BEGIN
IF (svA(3) /= svB(3)) THEN sS<=0;
ELSIF (svA(2) /= not svB(2)) THEN sS<=0;
ELSIF (svA(1) /= svB(1)) THEN sS<=0;
ELSIF (svA(0) /= not svB(0)) THEN sS<=0;
ELSE sS<=1;
END IF;
END PROCESS;
END ComparadorArch;
-- Solucin 2: CONCATENACIN
Problema 3
Uso de configuraciones.
Escriba la descripcin VHDL estructural (metodologa de instanciacin) del circuito
de la figura adjunta:
LIBRARY IEEE;
USE ieee.std_logic_1164.all;
USE ieee.std_logic_arith.all;
USE ieee.std_logic_unsigned.all;
LIBRARY IEEE;
USE ieee.std_logic_1164.all;
USE ieee.std_logic_arith.all;
USE ieee.std_logic_unsigned.all;
ENTITY Circuito IS
PORT (sA, sB: IN std_logic;
sU, sV: IN std_logic;
3
--Declaracin de configuraciones .
FOR G1: Puerta2 USE ENTITY
Puerta2(XNOR2Arch);
FOR G2: Puerta2 USE ENTITY
Puerta2(AND2Arch);
FOR G3: Puerta2 USE ENTITY
Puerta2(XOR2Arch);
FOR G4: Puerta2 USE ENTITY
Puerta2(OR2Arch);
FOR G5: Puerta2 USE ENTITY
Puerta2(AND2Arch);
FOR G6: Puerta2 USE ENTITY
Puerta2(NAND2Arch);
BEGIN
G1: Puerta2 PORT MAP(sIn1=>sA,
sIn2=>sB,
sOut=>sX1
);
Problema 4
BEGIN
sOut <= sIn1 or sIn2;
END OR2Arch;
LIBRARY IEEE;
USE ieee.std_logic_1164.all;
USE ieee.std_logic_arith.all;
USE ieee.std_logic_unsigned.all;
LIBRARY IEEE;
USE ieee.std_logic_1164.all;
USE ieee.std_logic_arith.all;
USE ieee.std_logic_unsigned.all;
--Declaracin de configuraciones .
FOR G1: Puerta2 USE ENTITY
Puerta2(OR2Arch);
FOR G2: Puerta2 USE ENTITY
Puerta2(NOR2Arch);
FOR G3: Puerta2 USE ENTITY
Puerta2(XOR2Arch);
LIBRARY IEEE;
USE ieee.std_logic_1164.all;
USE ieee.std_logic_arith.all;
USE ieee.std_logic_unsigned.all;
ENTITY Circuito IS
PORT (sU, sV: IN std_logic;
CLK_C: IN std_logic;
sS: OUT std_logic
);
END Circuito;
BEGIN
G1: Puerta2 PORT MAP(sIn1=>sU,
sIn2=>sV,
sOut=>sX1
);
COMPONENT FlipFlopD IS
PORT (sD, CLK: IN std_logic;
sQ: OUT std_logic
);
END COMPONENT;
Problema 5.
Control de vagoneta.
Se pretende disear un circuito de control de la vagoneta esquematizada en la
figura adjunta; el cual se debe comportar de la siguiente manera:
Mientras no se pulse el pulsador (P), la vagoneta se encontrar parada en
el punto A.
Al activar el pulsador (P), independientemente de que se vuelva a pulsar P,
la vagoneta se dirigir hacia el punto B y, una vez que haya llegado,
automticamente regresar al punto A.
De nuevo en el punto A, si pulsamos P se repetir el ciclo y si no se pulsa la
vagoneta se para.
Se sabe adems que:
La deteccin de la posicin de la vagoneta se lleva a cabo mediante dos
sensores (SA y SB) colocados en los puntos A y B respectivamente, los
cuales toman el valor lgico 1 al detectar la presencia de la vagoneta y el
de 0 en caso contrario.
El sentido del movimiento de la vagoneta se controla mediante la
combinacin de dos seales digitales (I, D) atendiendo a las siguientes
combinaciones:
I
0
0
1
1
D
0
1
0
1
Accin
Motor parado
Mover Derecha
Mover Izquierda
No Valido
SB
SA
A
a) Descripcin de la interfaz:
Entradas: Tres entradas asociadas a los sensores de deteccin (SA y SB) y
al pulsador (P) ms una seal de reloj (CLK) y otra de
inicializacin (ResetH), asociadas a la parte secuencial.
Salidas: Dos (I y D), encargadas de controlar el sentido del movimiento.
SA
SB
MQUINA
DE
ESTADOS
P
CLK
ResetH
P SA SB / I D
E
Notacin Mealy
Equivalentes
P SA SB / I D
E
Notacin Mealy
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY ControlVagoneta IS
PORT ( sA, sB, sP: IN std_logic; --Seal de
entrada.
CLK: IN std_logic;
--Seal de reloj.
sResetH: IN std_logic; --Seal de
inicializacin
s I, sD: OUT std_logic); --Salida
END ControlVagoneta ;
ARCHITECTURE ControlVagoneta Arch OF
ControlVagoneta IS
--Declaracin del tipo asociado a los estados.
TYPE TipoEstados IS (IZQUIERDA, DERECHA);
--Seales auxiliares para la codificacin del
--estado actual y siguiente.
SIGNAL tEstadoActual, tEstadoSiguiente:
TipoEstados;
BEGIN
-- Proceso dedicado a la lgica de estado:
LOGICA_ESTADO: PROCESS(tEstadoActual,
sEntrada)
BEGIN
CASE (tEstadoActual) IS
WHEN IZQUIERDA =>
IF (sP = 1 and sA = 1 and sB=0) THEN
tEstadoSiguiente <= DERECHA;
ELSE tEstadoSiguiente <= IZQUIERDA;
END IF;
WHEN DERECHA =>
Problema 6.
Detector de secuencia.
Se pide disear un circuito que acepte una entrada de datos serie y presente una
salida que se activar (tomar el valor lgico 1) cuando en los instantes de
muestreo aparezca la secuencia 1011.
a) Descripcin de la interfaz:
Entradas: Una entrada de datos (sDataIn ) ms una seal de reloj (CLK) y
otra de inicializacin (ResetH), asociadas a la parte secuencial.
Salidas: Una sDetect, encargada de activarse cuando se ha detectado la
secuencia.
sDataIn
MQUINA
DE
ESTADOS
CLK
sDetect
ResetH
b) Diagrama de estados versin MOORE
Data
E
S
10
Data
E
S
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY SecMoore IS
PORT ( sDataIn: IN std_logic; --Seal de
entrada.
CLK: IN std_logic;
--Seal de
reloj.
sResetH: IN std_logic; --Seal de
inicializacin
sDetect: OUT std_logic); --Salida
END SecMoore;
ARCHITECTURE SecMooreArch OF SecMoore IS
--Declaracin del tipo asociado a los estados.
TYPE TipoEstados IS (E0, E1, E10, E101,
E1011);
--Seales auxiliares para la codificacin del
--estado actual y siguiente.
SIGNAL tEstadoActu al, tEstadoSiguiente:
TipoEstados;
BEGIN
-- Proceso dedicado a la lgica de estado:
LOGICA_ESTADO: PROCESS(tEstadoActual,
sEntrada)
BEGIN
CASE (tEstadoActual) IS
WHEN E0 =>
IF (sDataIn = 0) THEN tEstadoSiguiente <= E0;
ELSE tEstadoSiguiente <= E1;
END IF;
WHEN E1 =>
IF (sDataIn = 0) THEN tEstadoSiguiente <=
E10;
ELSE tEstadoSiguiente <= E1;
END IF;
11
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY SecMealy IS
PORT ( sDataIn: IN std_logic; --Seal de
entrada.
CLK: IN std_logic;
--Seal de
reloj.
sResetH: IN std_logic; --Seal de
inicializacin
sDetect: OUT std_logic); --Salida
END SecMealy;
ARCHITECTURE SecMealyArch OF SecMealy IS
--Declaracin del tipo asociado a los estados.
TYPE TipoEstados IS (E0, E1, E10, E101);
--Seales auxiliares para la codificacin del
--estado actual y siguiente.
SIGNAL tEstadoActual, tEstadoSiguiente:
TipoEstados;
BEGIN
-- Proceso dedicado a la lgica de estado:
LOGICA_ESTADO: PROCESS(tEstadoActual,
sEntrada)
BEGIN
CASE (tEstadoActual) IS
WHEN E0 =>
IF (sDataIn = 0) THEN tEstadoSiguiente <=
E0;
ELSE tEstadoSiguiente <= E1;
END IF;
WHEN E1 =>
IF (sDataIn = 0) THEN tEstadoSiguiente <=
E10;
ELSE tEstadoSiguiente <= E1;
END IF;
WHEN E10 =>
IF (sDataIn = 0) THEN tEstadoSiguiente <=
E0;
ELSE tEstadoSiguiente <= E101;
END IF;
WHEN E101 =>
IF (sDataIn = 0) THEN tEstadoSiguiente <=
E10;
ELSE tEstadoSiguiente <= E1;
END IF;
END CASE;
END PROCESS LOGICA_ESTADO;
-- Proceso dedicado a la Memoria de Estado
MEM_ESTADO: PROCESS(CLK, sResetH,
tEstadoSiguiente)
BEGIN
--Inicializacin con RESET_H
IF (sResetH =1) THEN tEstadoActual<=E0
tEstadoSiguiente<= E0;
ELSIF(rising_edge(CLK)) THEN tEstadoActual
<= tEstadoSiguiente;
END IF;
END PROCESS MEM_ESTADO;
--Zona concurrente dedicada a modelar la
--lgica de salida.
sDetect <= 1 WHEN (tEstadoActual = E101 and
sDataIn = 1)
ELSE 0;
-- sSalida = f(Estado, Entrada) => Mquina de
MEALY.
END SecMealyArch;
12