Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Clase 3 Lenguaje VHDL
Clase 3 Lenguaje VHDL
– Library ieee;
– Use ieee.std_logic_1164.all;
architecture b of XNOR2 is
signal X, Y: std_logic; -- declara señales internas X, Y
begin
X <= A and B;
Y <= (not A) and (not B);
Z <= X or Y;
end b;
2. Declarando un package
component NOT1
port ( in1: in std_logic;
out1: out std_logic);
end component;
• Posicional
• Explicita
package OPERACIONES_LOGICAS is
component AND2
port (in1, in2: in std_logic;
out1: out std_logic);
end component;
component OR2
port (in1, in2: in std_logic; ojo
out1: out std_logic);
end component;
component NOT1
port (in1: in std_logic;
out1: out std_logic);
end component;
end OPERACIONES_LOGICAS; MSc. Ing. Raúl Hinojosa Sánchez 30
Ejemplo de uso de paquete 2
LIBRARY ieee ;
USE ieee.std_logic_1164.all;
LIBRARY work ; ojo
USE work.OPERACIONES_LOGICAS.all;
entity ALARMA is
port (
PUERTA, ENCENDIDO, CINTO: in std_logic;
SEÑAL: out std_logic);
end ALARMA;
• Lógica multivaluada.
9 valores=('U', 'X', '0', '1', 'Z', 'W', 'L', 'H', '-')
• 'U'=desconocido (simulación); 'X'=cortocircuito (simulación);
• 'Z'=HiZ ; '-'=don´t care, se sintetiza en '0' o '1'.
• Asignación de valor
– Elemento:
B(3) <= '0'; -- comilla simple
– Segmento:
B(3 downto 0)<="0101"; -- comillas dobles
– Vector:
B<=(others=>’0’); --asigna 0 a todo el vector
B<=(7=>´1´, others=>’0’);
MSc. Ing. Raúl Hinojosa Sánchez 41
PARA IR RECONECTÁNDONOS CON EL
HARDWARE
ARCHITECTURE B OF mux2a1 IS
BEGIN
f <= w0 WHEN s = '0' ELSE w1;
END;
entidad
arquitectura
ENTITY mux4a1 IS
PORT ( w : IN STD_LOGIC_VECTOR(3 DOWNTO 0);
s : IN STD_LOGIC_VECTOR(1 DOWNTO 0);
f : OUT STD_LOGIC );
END;
ARCHITECTURE Behavior OF mux4a1 IS
BEGIN
WITH s SELECT
f <= w(0) WHEN "00",
w(1) WHEN "01",
w(2) WHEN "10",
w(3) WHEN OTHERS;
END ; MSc. Ing. Raúl Hinojosa Sánchez 48
Decodificador binario 2 a 4
ENTITY dec2a4 IS
PORT ( w : IN STD_LOGIC_VECTOR(1 DOWNTO 0);
En : IN STD_LOGIC;
y : OUT STD_LOGIC_VECTOR(0 TO 3));
END ;
ARCHITECTURE B OF dec2to4 IS
SIGNAL Enw : STD_LOGIC_VECTOR (2 DOWNTO 0);
BEGIN
Enw <= En & w; -- ‘&’ es el operador de concatenacion VHDL
WITH Enw SELECT
y <= "1000" WHEN "100",
"0100" WHEN "101",
"0010" WHEN "110",
"0001" WHEN "111",
"0000" WHEN OTHERS;
END ;
ARCHITECTURE B OF prior IS
BEGIN
y <= "11" WHEN w(3) = '1' ELSE
"10" WHEN w(2) = '1' ELSE
"01" WHEN w(1) = '1' ELSE "00";
z <= '0’ WHEN w = "0000" ELSE '1';
END ;
ARCHITECTURE B OF mux2a1 IS
BEGIN
PROCESS ( w0, w1, s ) Lista de sensibilidad,
BEGIN siempre que cambie el
IF s = '0' THEN valor de la entrada de
f <= w0 ; una lista, el proceso se
ELSE reevalúa (activado)
f <= w1 ; Instrucción IF-THEN-ELSE
END IF ; para implementar la función
MUX
END PROCESS ;
END ;
MSc. Ing. Raúl Hinojosa Sánchez 56
ejemplos
Circuitos combinacionales
Proceso
• Multiplexor
Algoritmo
Process (val )
Begin
if (val = SECUENCIA)
then z <= '1';
else z <= '0';
end if;
end process;
end;
X/Z
X
S1 X
rst
z S2 X
X X z
S0 X
X S3
z X
z
Begin
Process (clock, rst)
Begin
if rst = '1' then
prsnt <= S_R;
Elsif (clock'event and clock = '1') then