Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
PRACTICAS DE
LABORATORIO DE
VHDL
MEMORIA DE RESIDENCIA
PROFESIONAL
INGENIERIA ELECTRONICA
PRESENTA:
ASESOR:
Pgina
INSTITUTO TECNOLOGICO DE MINATITLAN
INDICE
INTRODUCCION.----------------------------------------------------------------6
JUSTIFICACION.-----------------------------------------------------------------8
OBJETIVO GENERAL.---------------------------------------------------------9
CAPITULO I
ASPECTOS GENERALES DE LA EMPRESA
1.1 ANTECEDENTES---------------------------------------------------------12
1.2 UBICACION DE LA EMPRESA----------------------------------------22
1.3 ORGANIGRAMA-----------------------------------------------------------23
1.4 UBICACION GENERAL Y ESPECIFICA DE LA EMPRESA---24
1.5 GIRO DE LA EMPRESA-------------------------------------------------26
1.6 MISION Y VISION---------------------------------------------------------26
1.7 CARACTERIZACIN DEL REA EN QUE PARTICIP Y
SOBRE LA QUE REALIZ SU INVESTIGACIN---------------------27
Pgina
INSTITUTO TECNOLOGICO DE MINATITLAN
CAPITULO II
PRINCIPIOS FUNDAMENTALES
2.10 OBJETOS------------------------------------------------------------------74
2.11 IDENTIFICADORES-----------------------------------------------------75
2.12 PALABRAS RESERVADAS------------------------------------------76
2.13 SIMBOLOS ESPECIALES--------------------------------------------77
2.14 TIPOS DE DATOS-------------------------------------------------------77
2.15 EXPRESIONES Y OPERADORES----------------------------------80
2.16 ATRIBUTOS DE LOS VECTORES----------------------------------82
2.17 SENTENCIAS SECUENCIALES-------------------------------------83
2.18 ASIGNACION A UNA SEAL----------------------------------------83
2.19 ASIGNACION A UNA VARIABLE-----------------------------------84
2.20 SENTENCIA IF-----------------------------------------------------------85
2.21 SENTENCIA CASE------------------------------------------------------87
2.22 SENTENCIA LOOP------------------------------------------------------89
Pgina
INSTITUTO TECNOLOGICO DE MINATITLAN
CAPITULO III
Pgina
INSTITUTO TECNOLOGICO DE MINATITLAN
PRACTICAS DE LABORATORIO
PRACTICA N1 COMPUERTAS.-----------------------------------------108
PRACTICA N2 CIRCUITOS COMBINACIONALES A TRAVES DE
DIAGRAMAS EN XILINX.-----------------------------------------------125
PRACTICA N3 MULTIPLEXOR.-----------------------------------------146
PRACTICA N 4 DEMULTIPLEXOR.------------------------------------152
PRACTICA N5 CODIFICADOR 4 a 2.----------------------------------157
PRACTICA N6 DECODIFICADOR.-------------------------------------161
PRACTICA N7 COMPARADOR-----------------------------------------165
PRACTICA N8 SUMADOR DE 4 BITS.--------------------------------169
PRACTICA N 9 SUMADOR-RESTADOR.-----------------------------173
PRACTICA N10 CONTADOR.--------------------------------------------177
PRACTICA N11 FLIP-FLOP RS.----------------------------------------183
PRACTICA N12 ALU.-------------------------------------------------------187
CONCLUSIONES.------------------------------------------------------------191
RECOMENDACIONES.-----------------------------------------------------192
ANEXOS.------------------------------------------------------------------------193
REFERENCIAS BIBLIOGRAFICAS.------------------------------------193
INTRODUCCION
Una vez conocidas las especificaciones del diseo se procede a modelar en
VHDL el sistema en cuestin. Para escribir este cdigo fuente se puede utilizar
cualquier editor de texto que genere cdigo ASCII. Sin embargo las distintas
Pgina
INSTITUTO TECNOLOGICO DE MINATITLAN
En nuestro caso el formato de la netlist ser EDIF, ya que ste es admitido por
las herramientas de implementacin de Xilinx (entorno ISE). La herramienta
utilizada para la sntesis ser ISE de Xilinx.
Pgina
INSTITUTO TECNOLOGICO DE MINATITLAN
JUSTIFICACION
Pgina
INSTITUTO TECNOLOGICO DE MINATITLAN
OBJETIVO GENERAL
CAPITULO I
Pgina
INSTITUTO TECNOLOGICO DE MINATITLAN
ASPECTOS
GENERALES
DE
LA EMPRESA
Pgina
INSTITUTO TECNOLOGICO DE MINATITLAN
Este clima favoreci que una ponencia representada por el profesor Carlos
Florentino Moreno Gonzlez, una peticin del Dr. Esteban Hernndez, Director
de una Escuela Agropecuaria amenazaba con desaparecer, y una solicitud para
la creacin de un Instituto de educacin superior tecnolgica en la zona,
provocaran que en la Reunin Nacional par ale estudio de la Industria
Petroqumica efectuada en esta ciudad del 1 de febrero de 1970, los
Pgina
INSTITUTO TECNOLOGICO DE MINATITLAN
Antes de haber sido colocada la primera piedra hubo planes para edificar el
Tecnolgico en terrenos ajenos y lejanos a Minatitln.
Pgina
INSTITUTO TECNOLOGICO DE MINATITLAN
reales sobre los requerimientos ms importantes del pas, entre ellos; los de
materia educativa.
Este clima favoreci que, una ponencia presentada por el profesor Carlos
Florentino Moreno Gonzlez, una peticin del Dr. Esteban Hernndez, Director
de una Escuela Agropecuaria amenazada con desaparecer, y una solicitud
para la creacin de un instituto de educacin superior tecnolgica en la zona,
provocaran que en la Reunin Nacional para el estudio de la Industria
Petroqumica efectuada en esta ciudad del I de febrero de 1970, los
industriales de esta rama reconocieran y manifestaran la carencia de
profesionales capacitados para emplearse.
Pgina
INSTITUTO TECNOLOGICO DE MINATITLAN
Antes de haber sido colocada la primera piedra, hubo planes para edificar el
Tecnolgico en terrenos ajenos y lejanos a Minatitln. Ante esta situacin;
jvenes estudiantes de la Escuela Secundaria y de Bachilleres Oficial de
Minatitln, y otros estudiantes de Xalapa viajaron a la Ciudad de Mxico para
hacer del conocimiento del Lic. Echeverra lvarez, ya entonces primer
mandatario de la Repblica, la intencin de construir el Tecnolgico en otro
lugar
Pgina
INSTITUTO TECNOLOGICO DE MINATITLAN
APERTURA Y DESARROLLO
La dcada de los 70s, represent una etapa de transicin en el sistema
poltico, econmico, social y educativo del pas. Despus del movimiento
estudiantil de 1968 con los resultados trgicos de la matanza de estudiantes. El
gobierno federal tena la enorme tarea de reivindicarse con la poblacin
estudiantil, lo que dio como resultado un gran apoyo para la apertura de las
instituciones educativas tal y como ocurri con los institutos tecnolgicos
escolar inicial del Tecnolgico fue de 275 alumnos mismos que conformaron la
primera generacin de egresados de la institucin, generacin pionera de esta
casa de estudios atendida por 49 trabajadores.
Pgina
INSTITUTO TECNOLOGICO DE MINATITLAN
Pgina
INSTITUTO TECNOLOGICO DE MINATITLAN
Lic. en Administracin
Ing. Electrnica
Ing. Electromecnica
Ing. Qumica
Pgina
INSTITUTO TECNOLOGICO DE MINATITLAN
Ing. Ambiental
FIGURA 1.1.7 Alumnos
de ing.electronica
Posgrados:
Para cumplir con el que hacer institucional se cuenta con una planta docente
de 223 profesores, 115 administrativos haciendo un total de 338 trabajadores
entre los que se encuentran 25 directivos.
1.2 UBICACIN
FIGURA DE LA
1.1.8 Instalaciones del EMPRESA
instituto tecnolgico de
Minatitln
El Instituto Tecnolgico de Minatitln se localiza en el extremo Sureste del
Estado de Veracruz, en la Cuenca Salina del Istmo de Tehuantepec, a 32
Kilmetros de la desembocadura del Ro Coatzacoalcos en el Golfo de Mxico,
su ubicacin se encuentra en la ciudad de Minatitln.
Pgina
INSTITUTO TECNOLOGICO DE MINATITLAN
1.3 ORGANIGRAMA
Pgina
INSTITUTO TECNOLOGICO DE MINATITLAN
Pgina
INSTITUTO TECNOLOGICO DE MINATITLAN
Pgina
INSTITUTO TECNOLOGICO DE MINATITLAN
MISIN
VISIN
Pgina
INSTITUTO TECNOLOGICO DE MINATITLAN
CAPITULO II
PRINCIPIOS
FUNDAMENTALES
sistemas complejos.
Ejemplos:
VHDL:
Objetivos:
Pgina
INSTITUTO TECNOLOGICO DE MINATITLAN
FIGURA 2.2.1
Los HDLs son usados para modelar la arquitectura y
comportamiento de sistemas electrnicos discretos.
SNTESIS
Sencillez
comprender qu funcin
realiza el diseo a partir de una descripcin HDL que a partir
de un esquemtico de interconexin de puertas
begin
Y <= (A and B) or C;
end and;
Ahorro de tiempo
Pgina
INSTITUTO TECNOLOGICO DE MINATITLAN
funcional.
Adems, se estn convirtiendo en los lenguajes de
simulacin ms utilizados por los distintos vendedores.
Pgina
INSTITUTO TECNOLOGICO DE MINATITLAN
Simuladores
Entidad y Arquitectura:
Pgina
INSTITUTO TECNOLOGICO DE MINATITLAN
Niveles de Abstraccin
Transistor
Gate
RTL (register transfer)
Procesador (memoria,
Pgina
INSTITUTO TECNOLOGICO DE MINATITLAN
Bloques bsicos
Representacin de las seales
Representacin del tiempo
Representacion del comportamiento
Representacin fsica
Libreras
Una librera se define como una coleccin de unidades de librera.
Dependiendo de la herramienta y el sistema operativo de la computadora que
se utilice una librera puede ser una carpeta directorio o una base de datos que
contenga los nombres de las entidades y arquitecturas que le pertenecen. Esto
significa que una librera es solo una manera de agrupar diferentes unidades
para organizarlas, darles una jerarqua y poder reutilizarlas de una manera
Pgina
INSTITUTO TECNOLOGICO DE MINATITLAN
ordenada. VHDL reserva el nombre de librera work para la librera del diseo
actual.
-- library CompuertasBasicas;
begin
-- la librera CompuertasBasicas
Para usar las compuertas bsicas se debe agregar la librera que las contiene.
Pgina
INSTITUTO TECNOLOGICO DE MINATITLAN
Paquetes (Packages)
-- Declaracin de un paquete
package NombrePaquete is
-- Declaraciones de constantes
constant ... ;
-- Declaraciones de tipos
type ... ;
subtype ... ;
-- Declaraciones de seales
signal ...
-- Declaraciones de subprogramas
...
-- ----------------------------------------------------- --
function F1(...) is
Pgina
INSTITUTO TECNOLOGICO DE MINATITLAN
...
function F2(...) is
...
Pgina
INSTITUTO TECNOLOGICO DE MINATITLAN
Para utilizar la lgica 1164 del IEEE o los paquetes numricos estndar con las
operaciones aritmticas sobre la lgica estndar se debe agregar el use de los
paquetes adecuados.
library ieee;
use ieee.std_logic_1164.all; -- Lgica estndar
use ieee.numeric_std.all; -- Operaciones aritmticas
Pgina
INSTITUTO TECNOLOGICO DE MINATITLAN
Los valores dbiles y forzados se incluyen para poder modelar hardware que
tiene diferentes capacidades de controlar una seal. Por ejemplo, si una seal
tiene un buffer de tres estados que la maneja (posibles valores 0, 1 y Z) y
adems una resistencia de pull-up a la tensin de alimentacin con un valor
alto (valor H).
Si la salida del buffer es alta impedancia (Z) el valor de la seal estar dado
por la resistencia, pero si el buffer tiene una salida lgica, esta forzar el valor
de la seal mas all de la resistencia de pull-up.
Estos tipos se nos permite modelar seales y buses de diferentes anchos. Los
tipos std_logic y std_logic_vector son los recomendados para su uso y son
los que se usarn en los ejemplos de este texto.
entity Contador is
port(
Clock_IN : IN std_logic;
Reset_IN : IN std_logic;
Cuenta_OUT : OUT std_logic_vector (31 downto 0)
);
Pgina
INSTITUTO TECNOLOGICO DE MINATITLAN
Pgina
INSTITUTO TECNOLOGICO DE MINATITLAN
library ieee;
use std_logic_1164.all;
library ieee;
use std_logic_1164.all;
use std_logic_arith.all;
use std_logic_signed.all;
library ieee;
use std_logic_1164.all;
use std_logic_arith.all;
use std_logic_unsigned.all;
trabajo y tener en cuenta factores muy diversos para que el diseo pueda
terminarse a tiempo y funcione correctamente. A medida que los diseos se
hacen ms complejos, la necesidad de seguir un mtodo ordenado para lograr
buenos resultados se hace ms importante. Los lenguajes de descripcin de
hardware, si se utilizan correctamente, pueden utilizarse en varios pasos del
proceso de desarrollo, no solo para disear sino tambin para especificar y
documentar el sistema que se quiere desarrollar.
Pgina
INSTITUTO TECNOLOGICO DE MINATITLAN
corregirlos.
Pgina
INSTITUTO TECNOLOGICO DE MINATITLAN
Pgina
INSTITUTO TECNOLOGICO DE MINATITLAN
Pgina
INSTITUTO TECNOLOGICO DE MINATITLAN
Pgina
INSTITUTO TECNOLOGICO DE MINATITLAN
En este paso, cada componente del diseo sintetizado se ubica dentro del
PLD especfico. Tambin se interconectan los componentes entre s y con los
pines de entrada-salida.
Pgina
INSTITUTO TECNOLOGICO DE MINATITLAN
Pgina
INSTITUTO TECNOLOGICO DE MINATITLAN
Pgina
INSTITUTO TECNOLOGICO DE MINATITLAN
VHDL soporta con este motivo, tres tpos de objetos, las variables, las
constantes y las seales . Como las variables y las seales pueden variar su
valor mientras ejecutamos un programa, sern stas las encargadas de
almacenar dichos datos, asimismo sern los portadores de la informacin.
Pgina
INSTITUTO TECNOLOGICO DE MINATITLAN
De ejecucin secuencial, las variables evaluan su valor dentro del cuerpo del
proceso de forma inmediata, sin consumir tiempo de ejecucin, pero como
estn dentro de un process, que es una estructura concurrente, este valor no
ser asumido, sino hasta el final de la ejecucin de dicho process.
w<= not a;
x <= a and b;
y <= c and w;
z <= x or y
Como hemos dicho, cada seal en una declaracin de entidad est referida a
un puerto (o grupo de seales), el cual es anlogo a un(os) pin(es) del smbolo
esquemtico. Un puerto es un objeto de informacin, el cual, puede ser usado
en expresiones y al cual se le pueden asignar valores. A cada puerto se le debe
asignar un nombre vlido.
Pgina
INSTITUTO TECNOLOGICO DE MINATITLAN
Como se puede deducir del ejemplo anterior, seguido del nombre del puerto y
separado de ste por dos puntos, se debe indicar el tipo de puerto. El modo
describe la direccin en la cual la informacin es transmitida a travs del
puerto: in, out, buffer e inout.
Modo buffer: Es usado para una realimentacin interna ,es decir, para
usar este puerto como un driver dentro de la entidad. Este modo es
similar al modo out, pero adems, permite la realimentacin y no es
bidireccional, y solo puede ser conectado directamente a una seal
interna, o a un puerto de modo buffer de otra entidad. Una aplicacin
muy comn de este modo es la de salida de un contador, ya que
debemos saber la salida en el momento actual para determinar a salida
en el momento siguiente.
Pgina
INSTITUTO TECNOLOGICO DE MINATITLAN
Tipo integer: Para manejar nmeros enteros. Hay que advertir que el
uso de enteros consume muchos recursos del dipositivo de lgica
programable, siempre y cuando sea sintetizable, debido a que est
prcticamente creado para la simulacin.
Pgina
INSTITUTO TECNOLOGICO DE MINATITLAN
Pero ante la necesidad de ampliar la operatividad del tipo bit, la norma IEEE
1164, defini un nuevo tipo llamado std_logic, std_ulogic, y sus derivados
tales como std_logic_vector y std_ulogic_vector. Como su nombre pretende
indicar, es el tipo de tipo lgico estndar, que es el ms usado en la actualidad,
as como en la mayora de ejemplos de este libro.
enable: in bit;
selec es otro bit de entrada, que
selec: in bit;
selecciona la entrada in1 o in2,
in1: in bit_vector(3 downto 0);
ambas de 4 bits
in2: in bit_vector(3 downto 0);
out1:out bit_vector(3 downto 0)
out1 es de salida, que lgicamente,
debe ser de la misma longitud que in1
e in2
Pgina
INSTITUTO TECNOLOGICO DE MINATITLAN
Estos dos detalles a tener en cuenta surgieron del comit que cre este
lenguaje, por lo que no se debe considerar como un fallo de nuestra
herramienta, sino como una caracterstica ms del lenguaje.
Para describir una arquitectura podremos usar cuatro estilos, teniendo cada
uno, su propio nivel de abstraccin. Los estilos son:
Pgina
INSTITUTO TECNOLOGICO DE MINATITLAN
igual<='1' when (a=b) else '0'; informacin pasar a la salida sin usar
end dataflow1; sentencias secuenciales
Pgina
INSTITUTO TECNOLOGICO DE MINATITLAN
-- declaracin de procedures
-- declaracin de funciones
-- declaracin de tipos, etc... VHDL.
end nombre_del_package;
-- definicin de procedures
Esta parte se corresponde con una
-- definicin de funciones
arquitectura.
-- definicin de tipos, etc.
end nombre_del_package;
Todo esto hace posible que una vez declarados los subprogramas dentro de un
package, podamos utilizarlos haciendo nicamente uso de una llamada al
proceso, asignndole un nombre y la lista de parmetros necesarios.
Pgina
INSTITUTO TECNOLOGICO DE MINATITLAN
library ieee;
use ieee.std_logic_1164.all;
use work.std_arith.all;
--Empieza la declaracin del package "UNO"
package uno is
component
count port (
clk,reset:in bit;
conta :buffer std_logic_vector(1 downto 0));
end component;
component
decoder port (
seleccion :in std_logic_vector(1 downto 0);
enable1,enable2:in bit;
salida :out std_logic_vector(3 downto 0));
end component;
end package;
Pgina
INSTITUTO TECNOLOGICO DE MINATITLAN
library ieee;
use ieee.std_logic_1164.all;
use work.std_arith.all;
use work.uno.all;
entity count is port (
clk,reset:in bit;
conta:buffer std_logic_vector(1 downto 0));
end count;
decodificador:process(seleccion,enable1,enable2)
begin
if enable2='1' then salida<=(others=>'0');
elsif enable2='0' and enable1='0' then salida<=(others => '0');
elsif(enable1='1') then
case seleccion is
when "00" => salida <= "0001";
when "01" => salida <= "0010";
when "10" => salida <= "0100";
when "11" => salida <= "1000";
when others => salida <="1111";
end case;
end if;
end process decodificador;
end archidecoder;
Pgina
INSTITUTO TECNOLOGICO DE MINATITLAN
use work.uno.all;
La LPM fue propuesto en 1990 como una extensin del estndar Electronic
Design Interface Format (EDIF) para permitir al diseador crear un circuito
completo con independencia de la arquitectura, separando las partes fsicas y
lgicas del diseo
Pgina
INSTITUTO TECNOLOGICO DE MINATITLAN
Mdulo de
MADD_SUB
sumadores/restadores
MCOMPARE Mdulo de comparadores
use work.lpmpkg.all;
library ieee;
use ieee.std_logic_1164.all;
use work.lpmpkg.all; Llamamos a lpmpkg
entity multi_lpm is port(
a,b: in std_logic_vector(3 downto 0); Vamos a multiplicar a y b
s: in std_logic_vector(7 downto 0); Y vamos a sumar s
p: out std_logic_vector(7 downto 0) El resultado es p
);
end multi_lpm;
En este ejemplo hemos hecho uso del mdulo mmult, el cual nos exige no slo
introducirle las seales con las cuales operar (con la sentencia port map) sino
tambin su dimensin (sentencia generic map).
Pgina
INSTITUTO TECNOLOGICO DE MINATITLAN
2.10 OBJETOS
Pgina
INSTITUTO TECNOLOGICO DE MINATITLAN
2.11 IDENTIFICADORES
Pgina
INSTITUTO TECNOLOGICO DE MINATITLAN
Pgina
INSTITUTO TECNOLOGICO DE MINATITLAN
valores que forman el tipo de datos. Para ello usamos la palabra reservada
type. La declaracin puede tener varios formatos como por ejemplo:
Una vez declarado el nuevo tipo podremos usarlo para declarar objetos de este
tipo, como por ejemplo:
Cada tipo es diferente e incompatible con los dems, aunque estn declarados
de la misma forma, por lo cual no podemos asignar a una seal de un tipo otra
de otro tipo distinto, a menos que definamos una funcin de transformacin.
Los tipos pueden ser clasificados segn las caractersticas de lo que van a
determinar:
Pgina
INSTITUTO TECNOLOGICO DE MINATITLAN
Pgina
INSTITUTO TECNOLOGICO DE MINATITLAN
Los operadores lgicos, pueden ser empleados con los tipos predefinidos, BIT
y BOOLEAN, dndonos como resultado un valor booleano del mismo tipo que
los operadores.
Pgina
INSTITUTO TECNOLOGICO DE MINATITLAN
" /= ".
aux:=('0' & a)
Los elementos a concadenar deben de ser del mismo tipo. Este tipo de
operador es muy empleado a la hora de trabajar con buses o registros. El
resultado que nos devuelve este operador es un array de los elementos de los
operandos concatenados. En nuestro ejemplo, si "a" es un array de cuatro bits,
la variable "aux", pasara a tener en su primera poscicion el valor "0" y a
continuacion tendra el valor de los elementos de "a", de forma que "aux" pasa a
tener dimension cinco.
Pgina
INSTITUTO TECNOLOGICO DE MINATITLAN
Podremos asignar un cierto valor a una seal siempre que sta haya sido
declarada en la entidad en el apartado de declaracin de puertos, o bien
porque la hayamos creado especficamente dentro de un process.
Pgina
INSTITUTO TECNOLOGICO DE MINATITLAN
process
begin La seal a tendr el valor b
a <= b; La seal b tendr el valor a
b <= a;
wait on a,b; Se acualizan los cambios AQU
end process;
En este ejemplo, las dos seales intercambian sus valores, ya que cuando
se ejecuta la segunda (b<=a), el valor de la seal a no ha cambiado todava
aunque est la sentencia a<=b, ya que ninguna seal cambia de valor hasta
que se hayan evaluado todas las rdenes de un proceso, y es en ese momento
cuando a y b toman el valor que se les ha indicado tomar.
a := b; a toma el valor b
b := a; b toma el NUEVO valor de a (el de b)
Pgina
INSTITUTO TECNOLOGICO DE MINATITLAN
Para conseguir que se intercambien las variables, deberemos usar una variable
temporal de la siguiente forma:
2.20 SENTENCIA IF
if (condicin) then
haz una cosa;
else
haz otra cosa diferente;
end if;
if (condicin) then
haz una cosa;
elsif (otra condicin) then
haz otra cosa diferente;
else
haz otra totalmente diferente;
end if;
Pgina
INSTITUTO TECNOLOGICO DE MINATITLAN
Pgina
INSTITUTO TECNOLOGICO DE MINATITLAN
Esto hace que se recomiende siempre el especificar con else que debe pasar
con las seales si no se cumpla la condicin indicada con el if.
En el caso que la seal a evaluar (situada despus del case) tenga el "valor 1",
entonces se ejecuta "una cosa", si tiene el "valor 2", se ejecuta "otra cosa", ... y
si tiene el "ltimo valor", se ejecuta "tal cosa".
Pgina
INSTITUTO TECNOLOGICO DE MINATITLAN
algunos tipos soportan ms valores aparte del nivel uno y cero lgico, como el
estado Z o de alta impedancia.
case control is
when "000" => d <= a;
when "001" => d <= a;
case control is
when "010" => d <= a;
when "000" to "010" => d <= a;
when "011" => d <= b;
when "011" to "110" => d <= b;
when "100" => d <= b;
when "111" => d <= c;
when "101" => d <= b;
when others => d <= null;
when "110" => d <= b;
end case;
when "111" => d <= c;
when others => d <= null;
end case;
process (a)
begin
ciclo1: for i in 7 downto 0 loop Cabecera del ciclo
entrada(i) <= ( others => '0' ) Instrucciones a ejecutar 8 veces
end loop; Finalizacin del ciclo
end process;
Este fragmento de cdigo hace que uno por uno los 8 ltimos bits de la seal
entrada tengan el valor lgico cero. Que se indique que deben hacerse cero 8
bits, no quiere decir que la seal entrada est formada por ms de ocho. El
Pgina
INSTITUTO TECNOLOGICO DE MINATITLAN
process (a)
variable i: integer := 0;
begin
ciclo2: while i < 7 loop Mientras i sea menor que 7 => ciclo
entrada(i) <= (others => '0');
i := i + 1;
end loop; Finaliza el ciclo
end process;
En esta ocasin se usa la sentencia while, para lograr el mismo resultado que
en el ejemplo anterior, es decir, inicializar los 8 ltimos bits del vector entrada a
cero. Esta vez, se ejecutan las lneas entre loop y end loop mientras la
variable i sea menor que siete.
Es lgico que esta variable cambie dentro del ciclo, ya que de no ser as, se
ejecutara para siempre. De forma distinta al ejemplo anterior, la variable del
ciclo while debe ser declarada (como integer), inicializada e incrementada por
nosotros, por lo que requiere ms trabajo.
Usada siempre dentro de un loop, la sentencia exit nos permite salir del mismo
si se alcanza una condicin fijada por nosotros. Su verdadera utilidad la
encontramos si diseamos controladores de memoria. A continuacin
analizamos un ejemplo:
process (a)
begin
ciclo1: for i in 7 downto 0 loop
if a'length < i then exit ciclo1;
entrada(i) <= ( others => '0' );
end loop;
end process;
Pgina
INSTITUTO TECNOLOGICO DE MINATITLAN
La sentencia next tambin debe estar dentro de un ciclo loop, y nos sirve
para saltarnos una o ms de las ejecuciones programadas.
process (a)
begin
ciclo1: for i in 7 downto 0 loop Cabecera del ciclo
if i=4 then next; Si i vale 4, se salta el ciclo
else Si no vale 4,...
entrada(i) <= ( others => '0' ); ... se inicializa entrada
end if;
end loop; Finaliza el ciclo
end process;
process
process (a,b,c)
begin
begin
x <= a and b and c;
x <= a and b and c;
wait on a,b,c;
end process;
end process;
Pgina
INSTITUTO TECNOLOGICO DE MINATITLAN
c <= a and b;
s <= a xor b;
Pgina
INSTITUTO TECNOLOGICO DE MINATITLAN
no valdr "0001" hasta entonces, por lo que c no valdr '1', que no era lo que
desebamos.
Pgina
INSTITUTO TECNOLOGICO DE MINATITLAN
process(control,entrada1,entrada2)
begin
if control='1' then
salida <= entrada1 when control='1' salida<=entrada1;
else entrada2; else
salida<=entrada2;
end if;
end process;
process(a, b, operacion)
begin
with operacion select case operacin is
resul <= a and b when "00", when "00" => resul <= a and b;
a or b when "01", when "01" => resul <= a or b;
a xor b when "10", when "10" => resul <= a xor b;
not (a and b) "11"; when "11" => resul <= not(a and b);
end case;
end process;
Pgina
INSTITUTO TECNOLOGICO DE MINATITLAN
Pgina
INSTITUTO TECNOLOGICO DE MINATITLAN
a,b : in bit;
q : out bit
);
end and2;
architecture archand2 of and2 is
begin
q <= (a and b);
end archand2;
use work.cypress.all;
entity inv is Empezamos la entidad inv
port (
a : in bit;
qn : out bit
);
end inv;
architecture archinv of inv is
begin
qn <= not (a);
end archinv;
2.35 SUBPROGRAMAS
Los subprogramas se usan para describir algoritmos de cualquier tipo que son
ms tarde usados tantas veces como se desee. Un subprograma consta de
una parte declarativa en la cual se definen los datos de entrada y de salida al
mismo, y una parte de sentencias en la cual se indica que operaciones se
realizan sobre los datos.
Pgina
INSTITUTO TECNOLOGICO DE MINATITLAN
2.36 FUNCIONES
Las funciones estn destinadas a realizar clculos, siendo una nueva forma de
definir nuevos operadores que pueden aparecer en una expresin. A las
funciones se le pueden introducir todos los valores que se necesiten, pero slo
devuelven un nico valor, siendo las variables internas a ella imposibles de
recuperar para otras operaciones.
Como ejemplo crearemos una funcin que realiza una operacin tan sencilla
como asignar a la salida de la funcin, suma, la suma de dos nmeros, a y b.
Pgina
INSTITUTO TECNOLOGICO DE MINATITLAN
process
variable numero1, numero2: std_logic_vector(3 downto 0);
variable salida: std_logic_vector(3 downto 0);
begin
...
salida := sumar (numero1,numero2);
...
end process;
Pgina
INSTITUTO TECNOLOGICO DE MINATITLAN
Sea cual sea la forma en la cual asignemos las seales a la entrada del
subprograma, stas deben coincidir en el tipo, es decir, en el ejemplo no
podamos haber introducido en la funcin numero1 y numero2 si stos
hubieran sido del tipo entero o bit. De la misma forma la variable o la seal a la
cual asignamos el valor de la funcin debe coincidir con el tipo del objeto que
hemos especificado para la salida en la funcin. Es decir, no podemos asignar
a salida el valor de la funcin que hemos creado si es del tipo integer (por
ejemplo), ya que la salida de la funcin es suma que es del tipo
std_logic_vector.
2.37 PROCEDIMIENTOS
Pgina
INSTITUTO TECNOLOGICO DE MINATITLAN
process
variable numero1, numero2: std_logic_vector(3 downto 0);
variable salida: std_logic_vector(3 downto 0);
begin
...
sumar (numero1,numero2,salida);
...
end process;
Pgina
INSTITUTO TECNOLOGICO DE MINATITLAN
Al igual que en una funcin, los tipos de los objetos de entrada y salida a una
funcin deben coincidir con los declarados en el procedimiento. Es importante
notar que una llamada a una procedure es una sentencia, no como una
llamada a una funcin.En este caso hemos hecho la asignacin por posicin,
ya que al no indicar nada, el compilador supone que queremos asignar el
primer objeto que hemos introducido en la funcin al primer objeto que
habamos declarado cuando creamos el procedimiento. Esto es numero1 se
corresponde a a, numero2 se corresponde con b, y as sucesivamente. Si
queremos asignarlos por nombre deberemos hacerlo como se describe a
continuacin:
En un principo VHDL, al igual que los dems HDL'S, nacieron con el proposito
de facilitar la labor de los diseadores de circuitos electrnicos, agilizando su
diseo y haciendo ms flexible su posterior depuracin y mantenimiento. Por
este motivo se dot a VHDL con abundantes instrucciones ms orientadas a la
simulacin que a la implementacin fsica del diseo. Ello trajo consigo la
diferenciacion del VHDL sintetizable del simulable, siendo este ltimo el ms
extendido y el que cuenta con ms herramientas en los programas. Si
trabajamos con VHDL sintetizable, slo podremos hacer uso de un conjunto de
instrucciones vlidas.
CAPITULO III
PRACTICAS
DE
Pgina
INSTITUTO TECNOLOGICO DE MINATITLAN
LABORATORIO
PRACTICA N 1
Pgina
INSTITUTO TECNOLOGICO DE MINATITLAN
COMPUERTAS
LOGICAS
PRACTICA N 1 COMPUERTAS
INTRODUCCION
Compuerta AND:
Pgina
INSTITUTO TECNOLOGICO DE MINATITLAN
Compuerta OR:
La compuerta OR produce la
funcin sumadora, esto es, la salida es 1 si la
entrada A o la entrada B o ambas entradas son 1; de
otra manera, la salida es 0.
El smbolo algebraico de la funcin OR (+), es igual
a la operacin de aritmtica de suma.
Compuerta NOT:
OBJETIVO
Realizar el cdigo VHDL de las compuertas bsicas para comprobar sus tablas
lgicas y entender el procedimiento de compilacin y simulacin del programa
XILINX y MODELSIM...
Pgina
INSTITUTO TECNOLOGICO DE MINATITLAN
DESARROLLO
Pgina
INSTITUTO TECNOLOGICO DE MINATITLAN
Pgina
INSTITUTO TECNOLOGICO DE MINATITLAN
5.- Seleccionar VHDL Package para crear el archivo que contendr el cdigo
VHDL y darle un nombre al archivo VHDL de preferencia dejar en la misma
direccin C:\Xilinx\Nombre del proyecto y dar Click en Next
Pgina
INSTITUTO TECNOLOGICO DE MINATITLAN
Pgina
INSTITUTO TECNOLOGICO DE MINATITLAN
CODIGO VHDL
-- RESIDENCIAS 2009 ALI PEREZ GOMEZ
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
-- Declaracin de la entidad
entity compuerta_and is
port(
b : in std_logic;
);
end compuerta_and;
Pgina
INSTITUTO TECNOLOGICO DE MINATITLAN
-- Arquitectura, aqu se define el comportamiento
begin
-- c es el resultado de la operacin
-- AND entre a y b.
c <= a and b;
end Behavioral;
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
-- Declaracin de la entidad
entity compuerta_or is
port(
b : in std_logic;
);
end compuerta_or;
Pgina
INSTITUTO TECNOLOGICO DE MINATITLAN
-- de la entidad (su funcionamiento).
begin
-- a y b.
c <= a or b;
end Behavioral;
9.-Despues de que hayas hecho el cdigo VHDL les das en el botn save para
despus proceder a compilar el programa
Pgina
INSTITUTO TECNOLOGICO DE MINATITLAN
Pgina
INSTITUTO TECNOLOGICO DE MINATITLAN
Pgina
INSTITUTO TECNOLOGICO DE MINATITLAN
15.-Tambien puede reiniciar todos los valores que desee desde la barra de
herramientas de simulacin, indicndose a continuacin en el cursor el botn
de reinicio general
Pgina
INSTITUTO TECNOLOGICO DE MINATITLAN
Pgina
INSTITUTO TECNOLOGICO DE MINATITLAN
19.-Para cambiar los valores de las entradas (In) Dar click derecho sobre el
Objeto y en seleccionar del men contextual Force
Pgina
INSTITUTO TECNOLOGICO DE MINATITLAN
Pgina
INSTITUTO TECNOLOGICO DE MINATITLAN
Pgina
INSTITUTO TECNOLOGICO DE MINATITLAN
PRACTICA 2
CIRCUITOS
COMBINACIONALES
Pgina
INSTITUTO TECNOLOGICO DE MINATITLAN
TRAVES DE
DIAGRAMAS EN
XILINX
PRACTICA 2
INTRODUCCION
Pgina
INSTITUTO TECNOLOGICO DE MINATITLAN
Lgicos
Generador/Detector de paridad
Multiplexor y Demultiplexor
Codificador y Decodificador
Conversor de cdigo
Comparador
Aritmticos
Sumador
Aritmticos y lgicos
OBJETIVO
DESARROLLO
Pgina
INSTITUTO TECNOLOGICO DE MINATITLAN
3.- Poner el nombre del proyecto por ejemplo funcin como se muestra en la
figura 2 y dar click en next
Pgina
INSTITUTO TECNOLOGICO DE MINATITLAN
Pgina
INSTITUTO TECNOLOGICO DE MINATITLAN
Pgina
INSTITUTO TECNOLOGICO DE MINATITLAN
Pgina
INSTITUTO TECNOLOGICO DE MINATITLAN
12 .- Del cuadro sources dar doble click en la palabra circuito.sch para que te
habr la zona de diseo esquemtico.
Pgina
INSTITUTO TECNOLOGICO DE MINATITLAN
14.- Para poner los simbolos estn en la zona de trabajo Source en la pestaa
de simbolos como muestra la figura
Pgina
INSTITUTO TECNOLOGICO DE MINATITLAN
16.- menu tools opcion check schematics para checar si el circuito no tiene
ningun punto sin conectar
Pgina
INSTITUTO TECNOLOGICO DE MINATITLAN
17.- En la siguiente figura podremos ver el cursor indicando que no hay ningn
error en el esquema
Pgina
INSTITUTO TECNOLOGICO DE MINATITLAN
Pgina
INSTITUTO TECNOLOGICO DE MINATITLAN
Pgina
INSTITUTO TECNOLOGICO DE MINATITLAN
Pgina
INSTITUTO TECNOLOGICO DE MINATITLAN
Pgina
INSTITUTO TECNOLOGICO DE MINATITLAN
Pgina
INSTITUTO TECNOLOGICO DE MINATITLAN
31.-. Ahora le cambiamos la escala de tiempo a 1700 dndole doble click donde
se encuentra el cursor nos saldr una ventana donde le pondremos 17 tiempos
o los que se necesiten
Pgina
INSTITUTO TECNOLOGICO DE MINATITLAN
32.- Ahora le asignaremos las entradas A,B,C,D dndole click a lo verde para
un 1 y a lo blanco para un 0.
Pgina
INSTITUTO TECNOLOGICO DE MINATITLAN
35.- Aqu veremos la asignacin de pines del Package Pins For Xc2s 15-
6cs144
Pgina
INSTITUTO TECNOLOGICO DE MINATITLAN
Pgina
INSTITUTO TECNOLOGICO DE MINATITLAN
PRACTICA N3
MULTIPLEXOR
PRACTICA N3 MULTIPLEXOR
INTRODUCCION
1. Selector de entradas.
OBJETIVO
CODIGO VHDL
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
Pgina
INSTITUTO TECNOLOGICO DE MINATITLAN
enable : in bit;
);
end multiplexor;
begin
begin
case control is
end case;
end if;
end process;
end archimultiplexor;
1.- Aqu vemos que introducimos el cdigo VHDL y veremos las entradas y
salidas en bloque para eso le daremos en la zona de trabajo Sourcess le
daremos la opcin synteshys Ahora le daremos en la zona de trabajo
Processes desplegamos el men Syntesize-XST le damos en la opcin View
RTL Schematic
Pgina
INSTITUTO TECNOLOGICO DE MINATITLAN
Pgina
INSTITUTO TECNOLOGICO DE MINATITLAN
4.- Ahora Veremos el diagrama del dispositivo desde el ModelSim para eso
damos clcik derecho sobre el nombre multiplexor le damos en Add y luego en
la opcin Add to Wave
Pgina
INSTITUTO TECNOLOGICO DE MINATITLAN
PRACTICA N4
Pgina
INSTITUTO TECNOLOGICO DE MINATITLAN
DEMULTIPLEXOR
INTRODUCCION
La seal compleja puede ser tanto analgica como digital y estar multiplexada
en cualquiera de las distintas formas posibles para cada una de ellas.
OBJETIVO
Pgina
INSTITUTO TECNOLOGICO DE MINATITLAN
PRACTICA N4 DEMULTIPLEXOR
library IEEE;
begin
use IEEE.STD_LOGIC_1164.ALL;
process (entra, control, enable)
entity demulti is port(
begin
entra: in bit_vector(7 downto
0); if enable='1' then
a<="11111111";
control: in bit_vector(1 downto
0); b<="11111111";
Pgina
INSTITUTO TECNOLOGICO DE MINATITLAN
when "01" => b <= entra; end if;
end case;
Pgina
INSTITUTO TECNOLOGICO DE MINATITLAN
PRACTICA N5
CODIFICADOR 4 a 2
Pgina
INSTITUTO TECNOLOGICO DE MINATITLAN
INTRODUCCION
OBJETIVO
Pgina
INSTITUTO TECNOLOGICO DE MINATITLAN
DESARROLLO
PRACTICA N5 CODIFICADOR 4 a 2
CODIGO VHDL
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
);
end coder;
begin
process (dentro)
begin
case dentro is
end case;
end process;
end archicoder;
Pgina
INSTITUTO TECNOLOGICO DE MINATITLAN
PRACTICA N6
Pgina
INSTITUTO TECNOLOGICO DE MINATITLAN
DECODIFICADOR
INTRODUCCION
OBJETIVO
Pgina
INSTITUTO TECNOLOGICO DE MINATITLAN
DESARROLLO
PRACTICA N6 DECODIFICADOR
case bcd is
Pgina
INSTITUTO TECNOLOGICO DE MINATITLAN
when "1000" => LED <= end case;
"1111111";
end process conv;
when "1001" => LED <=
"1110111"; end archiconv;
PRACTICA N7
COMPARADOR
Pgina
INSTITUTO TECNOLOGICO DE MINATITLAN
INTRODUCCION
OBJETIVO
Pgina
INSTITUTO TECNOLOGICO DE MINATITLAN
PRACTICA N7 COMPARADOR
end archicompara;
architecture archicompara of
compara is
Pgina
INSTITUTO TECNOLOGICO DE MINATITLAN
Pgina
INSTITUTO TECNOLOGICO DE MINATITLAN
PRACTICA N8
SUMADOR
DE
Pgina
INSTITUTO TECNOLOGICO DE MINATITLAN
4 BITS
INTRODUCCION
OBJETIVO
Pgina
INSTITUTO TECNOLOGICO DE MINATITLAN
DESARROLLO
CODIGO VHDL
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
use ieee.std_logic_arith.all;
use work.all;
cin: in std_logic;
);
end sumador;
begin
Pgina
INSTITUTO TECNOLOGICO DE MINATITLAN
process (a,b,cin)
begin
sum<=aux;
end process;
end archisumador;
Pgina
INSTITUTO TECNOLOGICO DE MINATITLAN
PRACTICA N 9
SUMADOR-RESTADOR
Pgina
INSTITUTO TECNOLOGICO DE MINATITLAN
INTRODUCCION
OBJETIVO
Pgina
INSTITUTO TECNOLOGICO DE MINATITLAN
DESARROLLO
PRACTICA N 9 SUMADOR-RESTADOR
CODIGO VHDL
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
use work.all;
sr: in std_logic;
end resta;
begin
Pgina
INSTITUTO TECNOLOGICO DE MINATITLAN
process (a,b,sr,aux)
begin
end if;
end process;
c<=a+aux+("000"&sr);
end archiresta;
Pgina
INSTITUTO TECNOLOGICO DE MINATITLAN
PRACTICA N10
CONTADOR
Pgina
INSTITUTO TECNOLOGICO DE MINATITLAN
INTRODUCCION
Pgina
INSTITUTO TECNOLOGICO DE MINATITLAN
Tipos de contadores
Existen diversos tipos de contadores:
Contadores de rizado.
Contadores paralelos.
OBJETIVO
Pgina
INSTITUTO TECNOLOGICO DE MINATITLAN
DESARROLLO
use ieee.std_logic_1164.all;
begin
entity contador is port(
if reset = '1' then
clk, load, reset,arriba:in std_logic;
conta <= "0000";
data: in std_logic_vector(3
downto 0); elsif (clk'event and clk= '1') then
end if;
1.- Para esta practica vamos a necesitar un reloj, en el cdigo hat una parte
(clk'event and clk= '1') clk=1 es activar el reloj y clkvent es el reloj de
ModelSim para eso en el Objeto clk le damos click derecho nos saldr la
siguiente ventana donde podremos asignar el periodo lo dejaremos al
100,daremos OK
Pgina
INSTITUTO TECNOLOGICO DE MINATITLAN
3.- Ahora activaremos las cada una de las entradas escogiendo arriba o abajo
si quiere que cuente ascendente o ascendente
Pgina
INSTITUTO TECNOLOGICO DE MINATITLAN
PRACTICA N11
Pgina
INSTITUTO TECNOLOGICO DE MINATITLAN
FLIP-FLOP RS
INTRODUCCION
La entrada de sincronismo puede ser activada por nivel (alto o bajo) o por
flanco (de subida o de bajada). Dentro de los biestables sncronos activados
Pgina
INSTITUTO TECNOLOGICO DE MINATITLAN
por nivel estn los tipos RS y D, y dentro de los activos por flancos los tipos JK,
T y D.
OBJETIVO
DESARROLLO
CODIGO VHDL
library ieee;
use ieee.std_logic_1164.all;
r,s,clk: in std_logic;
q: buffer std_logic;
);
end flipfloRS;
begin
Pgina
INSTITUTO TECNOLOGICO DE MINATITLAN
process (clk)
begin
end if;
end if;
end process;
end archiflipfloRS;
Pgina
INSTITUTO TECNOLOGICO DE MINATITLAN
PRACTICA N12
ALU 4 BITS
Pgina
INSTITUTO TECNOLOGICO DE MINATITLAN
INTRODUCCION
Por mucho, los ms complejos circuitos electrnicos son los que estn
construidos dentro de los chips de microprocesadores modernos como el Intel
Core Duo. Por lo tanto, estos procesadores tienen dentro de ellos un ALU muy
complejo y poderoso. De hecho, un microprocesador moderno (y los
mainframes) pueden tener mltiples ncleos, cada ncleo con mltiples
unidades de ejecucin, cada una de ellas con mltiples ALU.
Muchos otros circuitos pueden contener en el interior ALU: GPU como los que
estn en las tarjetas grficas NVIDIA y ATI, FPU como el viejo coprocesador
numrico 80387, y procesadores digitales de seales como los que se
Pgina
INSTITUTO TECNOLOGICO DE MINATITLAN
OBJETIVO
DESARROLLO
Pgina
INSTITUTO TECNOLOGICO DE MINATITLAN
CONCLUSIONES
VHDL se muestra especialmente til en las primeras etapas del diseo, a la
hora de elegir arquitecturas, particiones del circuito, tipos de lgica, etc y para
la realizacin de simulaciones a nivel funcional. Aunque es de hacer notar que
las descripciones apropiadas para simulacin no siempre son aptas para la
sntesis.
Pgina
INSTITUTO TECNOLOGICO DE MINATITLAN
RECOMENDACIONES
En los Anexo podremos ver algunas imagines tomadas del manual del Spartan
3 Starter Kit donde podremos encontrar en este KIT todas las especificaciones
de la tarjeta y como esta formada cada parte de ella.
Pgina
INSTITUTO TECNOLOGICO DE MINATITLAN
ANEXOS
Pgina
INSTITUTO TECNOLOGICO DE MINATITLAN
Pgina
INSTITUTO TECNOLOGICO DE MINATITLAN
Pgina
INSTITUTO TECNOLOGICO DE MINATITLAN
REFERENCIAS BIBLIOGRAFICAS
Pgina
INSTITUTO TECNOLOGICO DE MINATITLAN
VHDL
Programming by Example
Douglas L.Perry
Mc Graw Hill
VHDL
Editorial CECSA
www.xilinx.com
Pgina