Académique Documents
Professionnel Documents
Culture Documents
DIAGRAMA RTL
EJEMPLO 2
entity Ejemplo is
port(
a,b: in std_logic_vector(3 downto 0);
y: out std_logic_vector(3 downto 0)
);
end Ejemplo;
begin
y<=a+b;
end process proceso_1;
end aEjemplo;
CONCLUSIONES:
En este caso podemos ver que Quartus II debido a su versin tiene problemas al ejecutar este tipo de programas
secuenciales pues la condicin primaria para que dichos programas se ejecuten es que alguna de las variables sensitivas
cambie, sin embargo, el software no lo ejecuta correctamente.
Adems, el sumador presenta el defecto de que, si los vectores son de 4 elementos, lo que nos permitira sumar
un mximo de 15 + 15 lo que nos dara 30, sin embargo, la salida no podra mostrar dicho resultado pues necesitara 5
elementos de vector.
Esto pone en evidencia que la compilacin de Quartus II nos permite encontrar errores de sintaxis, mas no de
semntica.
SENTENCIA IF
MULTIPLEXOR CON IF
library ieee;
use ieee.std_logic_1164.all;
entity Ejemplo is
port(
a,b,c,d: in std_logic;
s: in std_logic_vector(1 downto 0);
y: out std_logic
);
end Ejemplo;
DIAGRAMA RTL
CDIGO DEL PROGRAMA MODIFICADO SIN ELSE
library ieee;
use ieee.std_logic_1164.all;
entity Ejemplo is
port(
a,b,c,d: in std_logic;
s: in std_logic_vector(1 downto 0);
y: out std_logic
);
end Ejemplo;
DIAGRAMA RTL
CONCLUSIONES:
Se recomienda mucho que siempre se termine la instruccin if con la palabra reservada else, ya que caso contrario
como se vio entre los RTL del ejemplo 1 y 2 de la sentencia IF el hardware utilizado tambin vara como la evidencia la
aparicin de un flip-flop al final del segundo.
COMPARADOR
library ieee;
use ieee.std_logic_1164.all;
entity Ejemplo is
port(
a,b: in std_logic_vector(3 downto 0);
y: out std_logic
);
end Ejemplo;
DIAGRAMA RTL
IF INCOMPLETO SIN CERRAR CON ELSE (MISMO PROGRAMA)
library ieee;
use ieee.std_logic_1164.all;
entity Ejemplo is
port(
a,b: in std_logic_vector(3 downto 0);
y: out std_logic
);
end Ejemplo;
DIAGRAMA RTL
COMPARADOR CON TRES SALIDAS (SIN ELSE)
library ieee;
use ieee.std_logic_1164.all;
entity Ejemplo is
port(
a,b: in std_logic_vector(3 downto 0);
menor, igual, mayor: out std_logic
);
end Ejemplo;
DIAGRAMA RTL
COMPARADOR CON TRES SALIDAS (SIN ELSE MEJOR DECLARADO)
library ieee;
use ieee.std_logic_1164.all;
entity Ejemplo is
port(
a,b: in std_logic_vector(3 downto 0);
menor, igual, mayor: out std_logic
);
end Ejemplo;
DIAGRAMA RTL
CONCLUSIN
Siempre es recomendable nunca olvidarse de dar el valor a las dems variables del programa, no se puede asumir que el
programa de por s asignar un valor de, 0 en este caso, a las variables que no se usan.
COMPARADOR CON TRES SALIDAS CON ELSE
entity Ejemplo is
port(
a,b: in std_logic_vector(3 downto 0);
menor, igual, mayor: out std_logic
);
end Ejemplo;
DIAGRAMA RTL
CONCLUSIN
Como podemos ver la diferencia entre los circuitos mostrados por los diagramas RTL es clara, notndose el gran impacto
que tiene el poner o no poner el else al final de la sentencia if y del correcto uso de las variables al momento de la
declaracin de las sentencias secuenciales del process.