Documentos de Académico
Documentos de Profesional
Documentos de Cultura
DISEO DIGITAL
LABORATORIO No1 - 2
1. Unidades de diseo.
Entidad: La entidad, nos sirve para relacionar nuestro diseo con el mundo
exterior, es decir, analizamos lo que tratamos de crear como una "caja negra",
de la que slo conocemos sus entradas, salidas y la disposicin de las mismas.
Sintaxis:
entity identificador is
[genricos]
[puertos]
end [identificador];
Slo para fines de simulacin todo puerto puede tener un valor por defecto que
determina el valor inicial de la seal, los puertos de entrada pueden dejarse
desconectados si tienen un valor por defecto.
Sintaxis:
architecture nombre of entidad is
- - Zona de declaracin
begin
sentencias concurrentes;
sentencias concurrentes;
sentencias concurrentes;
end nombre;
Para describir una arquitectura podemos utilizar tres estilos, teniendo cada uno
su propio nivel de abstraccin:
- Estilo algortmico (behavioral)
- Estilo flujo de datos (dataflow)
- Estilo estructural (structure)
- Las seales a ambos lados del operador de asignacin (<=) deben ser
del mismo tipo.
- Si hay varias asignaciones a la misma seal en un mismo proceso,
prevalece el valor de la ltima asignacin.
- Las asignaciones a seales pueden aparecer en sentencias concurrentes
(estilo flujo de datos) o sentencias secuenciales (estilo algortmico).
El retardo de tipo inercial filtra los cambios de la seal a la entrada del circuito
siempre que duren un tiempo menor al retardo de propagacin de la
compuerta y despus retraza la seal. El retardo de tipo transporte no filtra
slo retraza la seal.
Indica que el tipo bit slo puede tomar los valores: '0' y '1'. Este es un tipo
bsico y con el ya podemos crear puertos y nodos internos para interconectar
El tipo de dato utilizado por lo general std_logic (que es un sub-tipo del tipo
std_ulogic) por las ventajas que hemos mencionado en el prrafo anterior. Para
poder utilizar este tipo de dato en el programa VHDL debemos declarar
previamente en que paquete se encuentra y a que biblioteca pertenece el
paquete, para esto utilizamos las siguientes sentencias:
........
expresinN when condicinN else expresinM ;
Hay que aclarar que siempre se termina evaluando una expresin y asignando
la respuesta a la seal as no se cumpla ninguna condicin.
Esta sentencia requiere que se especifique todos los posibles valores que
puede tomar la expresin a evaluar, por lo que generalmente la sentencia se
escribe de la siguiente manera:
Con la palabra others se est cubriendo el resto de valores que no han sido
especificados en la sentencia. Veamos algunos ejemplos:
- compuerta AND:
Si es que indica algn tipo de error debe corregirlos antes de pasar al siguiente punto. A
continuacin vamos a simular el circuito diseado.
Pulse el botn List y los nodos disponibles seleccinelos pulsando el botn: => Pulse OK.
Debe tener la siguiente forma de seales de entrada y salida:
Como puede notar todas las entrada se les asigna por defecto el valor 0 y las salidas
tienen un valor indeterminado. Debemos asignar los valores que deseamos que tomen las
entradas en funcin del tiempo. Para esto contamos con los siguientes botones:
Invierte la seal.
Seal de reloj.
Asigna un valor de cuenta a un nodo o grupo tomando como referencia el tamao del paso.
Para asignar un valor en un determinado tiempo para un nodo, slo debemos de arrastrar el
ratn pulsando el botn izquierdo por todo el intervalo de tiempo que deseamos fijar y
posteriormente pulsar uno de los botones descritos anteriormente.
Pulse este botn para ajustar todo el tiempo de simulacin (por defecto es de 0ns
a 1us).
Con esta opcin separa el grupo e en bits de manera individual mostrndose la siguiente
ventana:
Para saber cual es el menor tiempo que podemos asignar un valor seleccionamos del
men Options el comando: Grid Size mostrndose la siguiente ventana:
Vamos a asignarles valores de seales peridicas. Para eso seleccione el nodo e0 y pulse
el botn:
Para lograr los valores que toma el nodo sel se utiliz el botn
Pulse Aceptar y luego en la ventana del Simulador pulse el botn Open SCF Mostrdose
el resultado de la simulacin:
Como puede apreciar la seal z de salida toma el valor de la seal e0 cuando el valor de
la seal sel toma el valor de 00. Lo mismo pasa para las otras seales.
entity DEC3A8_ENA is
Port ( A : in std_logic;
B : in std_logic;
C : in std_logic;
ENA : in std_logic;
Y : out std_logic_vector(7 downto 0));
end DEC3A8_ENA;
end Behavioral;
2. ALU de 8 bits.
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity ALU_8BITS is
Port ( A,B : in std_logic_vector(7 downto 0);
OPER : in std_logic_vector(2 downto 0);
Z : out std_logic_vector(7 downto 0));
end ALU_8BITS;
entity LOAD_SHIFT is
Port ( DATA : in std_logic_vector(7 downto 0);
SEL : in std_logic_vector(1 downto 0);
Q : buffer std_logic_vector(7 downto 0));
end LOAD_SHIFT;
end Behavioral;
entity binario_bcd is
Port ( DATA : in std_logic_vector(3 downto 0);
BCD0 : out std_logic_vector(3 downto 0);
BCD1 : out std_logic);
end binario_bcd;
end Behavioral;
entity DEC7SEG is
Port ( DATA : in std_logic_vector(3 downto 0);
DISPLAY : out std_logic_vector(6 downto 0));
end DEC7SEG;
entity DET_IMPAR is
Port ( DATA : in std_logic_vector(7 downto 0);
Z : out std_logic);
end DET_IMPAR;
end Behavioral;
7. Comparador de 4 bits
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity comparador is
Port ( A : in std_logic_vector(3 downto 0);
B : in std_logic_vector(3 downto 0);
IGU : out std_logic;
MAY : out std_logic;
MEN : out std_logic);
end comparador;
end Behavioral