Está en la página 1de 8

Lenguaje VHDL, Diseo digital, Profesor Jhon Jairo Ramrez Mateus

Lenguaje VHDL
Diego Andrs Escalante Pineda1, Carlos David Morales Pea2 Estacin de trabajo 3.

Resumen Para programar se necesita velocidad, mayor tiempo de respuesta por parte del programa y el menor cdigo posible para que el procesamiento sea mucho ms rpido. El lenguaje VHDL ofrece estos parmetros. En comparacin con el lenguaje ESQUEMATICO visto anteriormente, el lenguaje VHDL supera en velocidad, tiempo de respuesta y fcil integracin con el circuito. En el presente informe, aplicaremos este tipo de lenguaje y navegaremos dentro de sus tres estilos de funcionamiento, para ello, se har un ejemplo de cada uno de estos y se ilustrar su diagrama de tiempos para corroborar los resultados.

para su posterior configuracin y conexin en lo que constituye el circuito digital. Investigar acerca de la programacin de VHDL mediante el estilo estructural, clave en la programacin digital. Simular e implementar en la Nexys 2, los diversos diagramas lgicos presentes en la actividad, mediante el lenguaje VHDL.

IV. MARCO TERICO [1] I. INTRODUCCIN En el siguiente informe se har uso del lenguaje VHDL. En el aprenderemos sus tres estilos bsicos: Estructural, funcional y flujo de datos. Se hablara de su correcto uso, y se explicaran ejemplos aplicados en este tipo de lenguaje en los cuales se mostrar su cdigo, su descripcin y diagrama de tiempos (Simulacin en ISE WEBPACK). Palabras clave: ISE WEBPACK Compuertas lgicas VHDL Estructural Funcional Flujo de datos II. OBJETIVO GENERAL Reconocer y aplicar los diversos estilos de programacin estructural para la descripcin y el anlisis del comportamiento de un sistema electrnico digital. III. OBJETIVOS ESPECFICOS Reconocer y aplicar la estructura o sintaxis de los estilos programticos bsicos del lenguaje VHDL, a circuitos con sistemas lgicos. Identificar los elementos bsicos de cada estilo, asociados a mdulos almacenados en una librera, Los lenguajes de descripcin hardware (HDLs, Hardware Description Languages) vienen utilizndose desde los aos 70 en los ciclos de diseo de sistemas digitales asistidos por herramientas de CAD electrnico. Al principio surgieron una serie de lenguajes que no llegaron a alcanzar un xito que permitiera su consolidacin en el campo industrial o acadmico. En los aos 80 aparecen los lenguajes Verilog y VHDL que, aprovechando la disponibilidad de herramientas hardware y software cada vez ms potentes y asequibles y los adelantos en las tecnologas de fabricacin de circuitos integrados, logran imponerse como herramientas imprescindibles en el desarrollo de nuevos sistemas. En la actualidad ambos lenguajes estn normalizados y comparten una posicin hegemnica que est arrinconando y terminar, probablemente, en poco tiempo eliminando del mercado al resto de lenguajes que de un modo u otro todava son soportados por algunas herramientas de CAD. Lenguaje VHDL Los estudios para la creacin del lenguaje VHDL (VHSIC HDL) comenzaron en el ao 1981, bajo la cobertura de un programa para el desarrollo de Circuitos Integrados de Muy Alta Velocidad (VHSIC), del Departamento de Defensa de los Estados Unidos. En 1983 las compaas Intermetrics, IBM y Texas Instruments obtuvieron la concesin de un proyecto para la realizacin del lenguaje y de un conjunto de herramientas auxiliares para su aplicacin. Finalmente, en el ao 1987, el lenguaje VHDL se convierte en la norma IEEE1076 como todas las normas IEEE, se somete a revisin peridica, por lo que en 1993 sufri algunas leves modificaciones.

Cod. 1160668, e-mail: diamante-93@hotmai.com Cod. 1160666, e-mail: davids_94_08@hotmail.com

Lenguaje VHDL, Diseo digital, Profesor Jhon Jairo Ramrez Mateus

El lenguaje VHDL fue creado con el propsito de especificar y documentar circuitos y sistemas digitales utilizando un lenguaje formal. En la prctica se ha convertido, en un gran nmero de entornos de CAD, en el HDL de referencia para realizar modelos sintetizables automticamente. Las principales caractersticas del lenguaje VHDL se explican en los siguientes puntos: Descripcin textual normalizada: El lenguaje VHDL es un lenguaje de descripcin que especifica los circuitos electrnicos en un formato adecuado para ser interpretado tanto por mquinas como por personas. Se trata adems de un lenguaje formal, es decir, no resulta ambiguo a la hora de expresar el comportamiento o representar la estructura de un circuito. Amplio rango de capacidad descriptiva: El lenguaje VHDL posibilita la descripcin del hardware con distintos niveles de abstraccin, pudiendo adaptarse a distintos propsitos y utilizarse en las sucesivas fases que se dan en el desarrollo de los diseos. Otras ventajas: Adems de las ventajas ya reseadas tambin es destacable la capacidad del lenguaje para el manejo de proyectos de grandes dimensiones, las garantas que comporta su uso cuando, durante el ciclo de mantenimiento del proyecto, hay que sustituir componentes o realizar modificaciones en los circuitos, y el hecho de que, para muchas organizaciones contratantes, sea parte indispensable de la documentacin de los sistemas.

END PROCESS <Nombre proceso> Estilo flujo de datos En este estilo se describe tambin el comportamiento del circuito detallando de manera concurrente las transferencias de datos entre los puertos y las seales auxiliares intermedias. Para ello se usan sentencias de asignacin de datos, e instrucciones de control que permiten condicionar dichas asignaciones a un determinado evento, o seleccionar el dato a signar entre un conjunto de posibilidades. Por esto se le conoce como RTL (Lgica De Transferencia De Registros), o tambin como flujo de datos (Data Flow Description) porque especifican la transferencia de informacin. En este tipo de descripcin se pueden utilizar dos formatos: when-else (cuando-si no) por medio de ecuaciones booleanas. Estilo estructural En el estilo estructural, como su nombre lo sugiere, se detalla la estructura del circuito utilizando componentes predefinidos (compuertas, sumadores, contadores, etc). El bloque de arquitectura se limita a declarar su uso y a detallar sus conexiones. En la prctica esta forma de trabajo debe apoyarse en la utilizacin de libreras de componentes. Aunque naturalmente se puede partir de cero, comenzando por la definicin de los elementos ms bsicos, las puertas lgicas, hasta la construccin de otros elementos ms complejos para ubicarlos en nuestra librera de trabajo work. El programador puede disear estas estructuras y guardarlas para su uso posterior o tomarlas de los paquetes contenidos en las libreras de diseo del software que se est utilizando. Sin embargo este estilo de programacin no resulta muy aconsejable para circuitos medianamente complejos ya que el tiempo de edicin es mayor al de los otros estilos. V. ANLISIS Gua 4 Elabore el cdigo VHDL para cada compuerta. AND, OR, INV, XOR, XNOR Compuerta AND library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; ---- Uncomment the following library declaration if instantiating ---- any Xilinx primitives in this code. --library UNISIM; --use UNISIM.VComponents.all;

Estilo Funcional Tambin denominada de comportamiento (Behavioral modeling), o llamado por otros como algortmico, consiste en describir el funcionamiento del sistema digital en lugar de detallar los elementos que lo conforman y su interconexin. Las descripciones en este estilo de programacin consideran la relacin que hay entre las entradas y las salidas del sistema, sin importar cmo est organizado en su interior: tablas de verdad, tablas de funcionamiento, diagramas de estado. Para definir el circuito se construye un algoritmo expresado en forma de una secuencia de instrucciones del lenguaje, a la que denominaremos: Proceso, PROCESS. Los procesos son conjuntos de sentencias que se ejecutan como flujo de datos para el nivel superior (concurrente), y secuencialmente (algortmico) dentro de la arquitectura. Formato <Nombre proceso:(no es necesario)>PROCESS (<lista de sensibilidad>) <Declaraciones de objetos legales> BEGIN <Sentencias>

Lenguaje VHDL, Diseo digital, Profesor Jhon Jairo Ramrez Mateus

entity labAND is Port ( A : in STD_LOGIC; B : in STD_LOGIC; X : out STD_LOGIC); end labAND; architecture Behavioral of labAND is begin X<= A AND B;

end Behavioral;

end Behavioral;

Fig. 2. Comportamiento de la compuerta OR. Compuerta NOT library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; ---- Uncomment the following library declaration if instantiating ---- any Xilinx primitives in this code. --library UNISIM; --use UNISIM.VComponents.all; entity nor_1 is Port ( a : in STD_LOGIC; x : out STD_LOGIC); end nor_1; architecture Behavioral of nor_1 is begin x<= not a;

Fig. 1. Comportamiento de la compuerta AND

Compuerta OR library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; ---- Uncomment the following library declaration if instantiating ---- any Xilinx primitives in this code. --library UNISIM; --use UNISIM.VComponents.all; entity or_2 is Port ( A : in STD_LOGIC; B : in STD_LOGIC; X : out STD_LOGIC); end or_2; architecture Behavioral of or_2 is begin X<= A OR B;

end Behavioral;

Lenguaje VHDL, Diseo digital, Profesor Jhon Jairo Ramrez Mateus

use IEEE.STD_LOGIC_UNSIGNED.ALL; ---- Uncomment the following library declaration if instantiating ---- any Xilinx primitives in this code. --library UNISIM; --use UNISIM.VComponents.all; entity xnor1 is Port ( a : in STD_LOGIC; b : in STD_LOGIC; x : out STD_LOGIC); end xnor1; architecture Behavioral of xnor1 is begin x<= a XNOR b;

Fig. 3. Comportamiento de la compuerta NOT Compuerta XOR library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; ---- Uncomment the following library declaration if instantiating ---- any Xilinx primitives in this code. --library UNISIM; --use UNISIM.VComponents.all; entity xor1 is Port ( a : in STD_LOGIC; b : in STD_LOGIC; x : out STD_LOGIC); end xor1; architecture Behavioral of xor1 is begin x<= a XOR b;

end Behavioral;

end Behavioral; Fig. 5. Comportamiento de la compuerta XNOR.

Fig. 4. Comportamiento de la compuerta XOR. Compuerta XNOR library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL;

Lenguaje VHDL, Diseo digital, Profesor Jhon Jairo Ramrez Mateus

Construya el cdigo VHDL para el siguiente diagrama lgico

Fig. 7. Comportamiento. Gua 5 Teniendo en cuenta las descripciones anteriores: Fig. 6. library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; ---- Uncomment the following library instantiating ---- any Xilinx primitives in this code. --library UNISIM; --use UNISIM.VComponents.all; entity gua_1 is Port ( a1 : in STD_LOGIC; a0 : in STD_LOGIC; s0 : out STD_LOGIC; s1 : out STD_LOGIC; s2 : out STD_LOGIC; s3 : out STD_LOGIC); end gua_1; architecture Behavioral of gua_1 is begin s0<= not a1 and not a0; s1<= not a1 and a0; s2<= a1 and not a0; s3<= a1 and a0; end Behavioral; declaration if

Fig. 8. Smbolo esquemtico. Encuentre las expresiones booleanas que describen el circuito de la figura. Del diagrama lgico encuentre la tabla de verdad que describe el comportamiento del circuito. Disee un programa en lenguaje VHDL por los dos mtodos vistos en clase y compruebe su funcionamiento. Realice el diagrama de tiempos.

Lenguaje VHDL, Diseo digital, Profesor Jhon Jairo Ramrez Mateus

A 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1

Entradas Salidas B C D F 0 0 0 0 0 0 1 0 0 1 0 0 0 1 1 0 1 0 0 1 1 0 1 1 1 1 0 1 1 1 1 1 0 0 0 0 0 0 1 0 0 1 0 1 0 1 1 1 1 0 0 1 1 0 1 1 1 1 0 1 1 1 1 1 Tabla 1. Tabla de verdad para el circuito lgico.

G 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0

g<='0'; end if; end process; end Behavioral;

Mtodo funcional library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; ---- Uncomment the following library instantiating ---- any Xilinx primitives in this code. --library UNISIM; --use UNISIM.VComponents.all; entity funfi is Port ( a : in STD_LOGIC; b : in STD_LOGIC; c : in STD_LOGIC; d : in STD_LOGIC; f : out STD_LOGIC; g : out STD_LOGIC); end funfi; architecture Behavioral of funfi is begin process(a,b,c,d) begin if((a='1' and c='1') or (a='0' and b='1' and c='1') or (b='1' and c='0')) then f<='1'; else f<='0'; end if; if(a='0' and b='1' and c='1' and d='0') then g<='1'; else declaration if

Fig. 9. Comportamiento por estilo funcional. Flujo de datos por ecuaciones booleanas library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; ---- Uncomment the following library instantiating ---- any Xilinx primitives in this code. --library UNISIM; --use UNISIM.VComponents.all; entity digalo is Port ( a,b,c,d : in STD_LOGIC; f : out STD_LOGIC; g : out STD_LOGIC); end digalo; architecture Behavioral of digalo is begin f<=(((not c) and b)or(a and c)or((not a) and b and c)); g<=((not a) and (b) and (c) and (not d)); end Behavioral; declaration if

Lenguaje VHDL, Diseo digital, Profesor Jhon Jairo Ramrez Mateus

Fig. 11. Fig. 10. Comportamiento por estilo flujo de datos con ecuaciones booleanas. Flujos de datos por when-else library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; ---- Uncomment the following library instantiating ---- any Xilinx primitives in this code. --library UNISIM; --use UNISIM.VComponents.all; entity when1 is Port ( a : in STD_LOGIC; b : in STD_LOGIC; c : in STD_LOGIC; d : in STD_LOGIC; f : out STD_LOGIC; g : out STD_LOGIC); end when1; architecture Behavioral of when1 is begin f <= '1' when ((a='1' and c='1')or(b='1' and c='0')or(a='0' and b='1' and c='1')) else '0'; g <= '1' when (a='0' and b='1' and c='1' and d='1') else '0'; declaration if A 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 Entradas Salidas B C D F 0 0 0 0 0 0 1 0 0 1 0 0 0 1 1 0 1 0 0 1 1 0 1 1 1 1 0 1 1 1 1 1 0 0 0 0 0 0 1 0 0 1 0 1 0 1 1 1 1 0 0 1 1 0 1 1 1 1 0 1 1 1 1 1 Tabla 2. Tabla de verdad para el circuito lgico.

G 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0

end Behavioral; Modo Estructural

library IEEE; library unisim; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; use unisim.vcomponents.all; ---- Uncomment the following library instantiating ---- any Xilinx primitives in this code. --library UNISIM; --use UNISIM.VComponents.all; entity actividad is Port ( a : in STD_LOGIC; b : in STD_LOGIC; c : in STD_LOGIC;

declaration

if

Lenguaje VHDL, Diseo digital, Profesor Jhon Jairo Ramrez Mateus

d : in STD_LOGIC; f : out STD_LOGIC; g : out STD_LOGIC); end actividad; architecture Behavioral of actividad is signal n1,n2,n3,n4,n5,n6: std_logic; component and_2 is Port ( x0 : in STD_LOGIC; y0 : in STD_LOGIC; z0 : out STD_LOGIC); end component; component inv_1 is Port ( x1 : in STD_LOGIC; y1 : out STD_LOGIC); end component; component or_3 is Port ( w2 : in STD_LOGIC; x2 : in STD_LOGIC; y2 : in STD_LOGIC; z2 : out STD_LOGIC); end component; component and_3 is Port ( w3 : in STD_LOGIC; x3 : in STD_LOGIC; y3 : in STD_LOGIC; z3 : out STD_LOGIC); end component; begin U0: and_2 port map (a,b,n1); U1: inv_1 port map (c,n2); U2: inv_1 port map (a,n3); U3: and_2 port map (b,n2,n5); U4: and_3 port map (n3,b,c,n6); U5: inv_1 port map (d,n4); U6: or_3 port map (n1,n5,n6,f); U7: and_2 port map (n6,n4,g); end Behavioral; Fig. 12. Comportamiento del circuito. VI. CONCLUSIONES Un diseo en VHDL consta mnimamente de una entidad y una arquitectura, las cuales deben ser declaradas dentro de la sintaxis que va a caracterizar el circuito lgico. La entidad es quien define las entradas y salidas de diseo, las cuales deben ser asignadas mediante la declaracin de un puerto especfico. La arquitectura se encarga de definir el diseo del circuito, para su posterior implementacin en la tarjeta Nexys 2. El lenguaje VHDL ofrece varios tipos de programacin al gusto del diseador, todos estos tipos de lenguajes cumplirn las mismas funciones especficas.

APNDICE [3] [4] [8] [7] A. Glosario: VHDL: acrnimo de Very High Speed Integrated Circuit. Es un lenguaje definido por el IEEE, usado por ingenieros para describir circuitos digitales. REFERENCIAS
[1] Laboratorio sobre Cdigo VHDL, Universidad Rey Juan Carlos, Cdigo VHDL, fecha no disponible, http://www.urjc.es/ [2] Recursos online, eweb.unex.es, Lenguaje VHDL, Miguel Angel Freire Rubio, Fecha no disponible,

http://www.eweb.unex.es/eweb/fisteor/antonio_astillero/e c/vhdl/Manual%20VHDL.pdf
[3] Laboratorio sobre los Fundamentos VHDL funcional, Jhon Jairo Ramrez Mateus, Introduccin al lenguaje VHDL, fecha no disponible, E-mal: jjrama1@hotmail.com [4] Laboratorio sobre los Fundamentos VHDL estructural, Jhon Jairo Ramrez Mateus, Estilo de programacin estructural conVHDL, fecha no disponible, E-mal: jjrama1@hotmail.com

También podría gustarte