Está en la página 1de 23

Electrónica Digital II Act.

6
Tema III. Memorias semiconductoras, dispositivos lógicos
programables y VHDL

Ejemplos de circuitos descritos en VHDL


1. Descripción de CLC en VHDL
2. Descripción de flip-flops y registros en VHDL
3. VHDL • Tipo de dato std_logic_vector
• Sentencias concurrentes
when..else , with.. select
• Sentencias secuenciales
process, if.. then.. else
Electrónica Digital II Act. 22, Conferencia 12
Tema III. Memorias semiconductoras, dispositivos lógicos
programables y VHDL

Ejemplos de circuitos descritos en VHDL


Bibliografía
• Wakerly, J.F., Digital Design Principles and Practices,
3ra y 4ta Eds. 2006 (L.T.).

• Brown S., Rose J. “Architecture of FPGAs and CPLDs: A


Tutorial”, University of Toronto, 1996.

• Chu, P. “RTL Hardware Design. Coding for Efficiency,


Portability and Scalability” John Wiley & Sons, Inc,
2006.
VHDL

ENTITY
(declaración de las
entradas y salidas)

ARCHITECTURE
(definición funcional)
Ejercicio:
Los siguientes programas en VHDL describen
circuitos lógicos combinatorios. Para cada uno
de ellos:

a) Escriba la tabla de la verdad o la tabla


funcional del circuito.
b) Identifique la función que realiza el circuito.
-------- Ejercicio 1 --------------

Library IEEE;
USE IEEE.std_logic_1164.all;

Entity Ej1 IS
PORT (
A, B, C, D: IN STD_LOGIC;
S: IN STD_LOGIC_VECTOR (1 DOWNTO 0);
M: OUT STD_LOGIC);
END Ej1;
-------- Ejercicio 1 --------------

ARCHITECTURE Ej1_Arq OF Ej1 IS


BEGIN
M <= A WHEN S="00" ELSE
B WHEN S="01" ELSE
C WHEN S="10" ELSE
D;
END Ej1_Arq;
-------- Ejercicio 2 --------------

Library IEEE;
USE IEEE.std_logic_1164.all;

Entity Ej2 IS
PORT (
A, B, C, D: IN STD_LOGIC;
S: IN STD_LOGIC_VECTOR (1 DOWNTO 0);
M: OUT STD_LOGIC);
END Ej2;
-------- Ejercicio 2 --------------

ARCHITECTURE Ej2_Arq OF Ej2 IS


BEGIN
With S Select
M <= A WHEN "00",
B WHEN "01",
C WHEN "10",
D WHEN OTHERS;
END Ej2_Arq
Estructura WHEN…ELSE de
VHDL

 Buscar su sintaxis en el L.T.

 En el índice de materia pueden


encontrarlo como “when keyword”.
Estructura WITH… SELECT de
VHDL

 Buscar su sintaxis en el L.T.

 En el índice de materia pueden


encontrarlo como “Select
statement”.
if.. then.. else
• Sentencia secuencial.

• Se escribe dentro de una estructura


denominada Process.

• El compilador la analiza secuencialmente a


partir de la activación de una lista de
sensibilidad.

• Permite describir lógica combinatoria y


secuencial.
-------- Ejercicio 3 --------------

Library IEEE;
USE IEEE.std_logic_1164.all;

Entity Ej3 IS
PORT (
A, B, C, D: IN STD_LOGIC;
S: IN STD_LOGIC_VECTOR (1 DOWNTO 0);
M: OUT STD_LOGIC);
END Ej3;
ARCHITECTURE EjArc OF Ej3 IS
BEGIN
PROCESS (A, B, C, D, S)
begin
IF S="00" then M <= A;
elsif S="01" then M <= B;
elsif S="10" then M <= C;
else M <= D;
End IF;
End PROCESS; Se describe un
End EjArc; multiplexor de 4
canales de 1 bit
cada uno.
Descripción de flip-flops
y registros en VHDL
Ejercicio 4
Describa en VHDL un flip flop tipo D cuya tabla
funcional es la siguiente:

CLR CLK Q*
0 X 0
1 0 Q
1 1 Q
1 ↑ D
--- Ej4. Flip-flop D con CLR asincrónico ---

Library IEEE;
use IEEE.std_logic_1164.all;

ENTITY FF_D is
PORT ( D, CLK : in std_logic;
CLR : in std_logic;
Q : out std_logic);
END FF_D;
--- Ej4. Flip-flop D con CLR asincrónico ---

ARCHITECTURE Arq_FF_D of FF_D is


Begin
PROCESS (CLK, CLR)
begin
IF CLR = '0' THEN Q <= '0' ;
ELSIF CLK'event and CLK = '1' THEN Q <= D;
End IF;
End Process;
END Arq_FF_D;
--- Ej4. Flip-flop D con CLR asincrónico ---

ARCHITECTURE Arq_FF_D of FF_D is


Begin
PROCESS (CLK, CLR)
begin
IF CLR = '0' THEN Q <= '0' ;
ELSIF CLK'event and CLK = '1' THEN Q <= D;
End IF;
End Process;
END Arq_FF_D;
--- Ej4. Flip-flop D con CLR asincrónico ---

ARCHITECTURE Arq_FF_D of FF_D is


Begin
PROCESS (CLK, CLR)
begin
IF CLR = '0' THEN Q <= '0' ;
ELSIF Rising_Edge (CLK) THEN Q <= D;
End IF;
End Process;
END Arq_FF_D;
Ejercicio 5:
Describa en VHDL un registro
de 4 bits, disparado por el
frente negativo de CLK y con
CLR asincrónico activo en 0.
-- Ej. 5 Registro de 4 bits con CLR asinc ---

Library IEEE;
use IEEE.std_logic_1164.all;

ENTITY Registro is
PORT ( CLR, CLK : in std_logic;
D : in std_logic_vector (3 downto 0);
Q : out std_logic_vector (3 downto 0));
END Registro;
-- Ej. 5 Registro de 4 bits con CLR asinc ---

ARCHITECTURE Arq_Reg of Registro is


Begin
PROCESS (CLK, CLR)
begin
IF CLR = '0' THEN Q <= (OTHERS => '0');
ELSIF CLK'event and CLK = '0' THEN Q <= D;
End IF;
End Process;
END Arq_Reg;
 VHDL es para describir y diseñar hardware.
 Hay asignaciones concurrentes y secuenciales.
 Las sentencias concurrentes se ejecutan a la vez (en paralelo).
 Las sentencias when ..else y with..select son concurrentes.
 La sentencia if.. then.. else es secuencial. Se escribe dentro de
Process, cuya ejecución se activa a partir de un cambio en las
señales de una lista de sensibilidad.
 En un Process el orden de aparición de las sentencias es
determinante.
 Los Process son concurrentes entre sí.
 Las sentencias secuenciales pueden emplearse para describir
lógica secuencial y lógica combinacional.

También podría gustarte