Tutorial de Vhdl 892

download Tutorial de Vhdl 892

of 27

Transcript of Tutorial de Vhdl 892

15

TUTORIAL DEL LENGUAJE VHDL

Ing. Daniel Francisco Gmez Prado [email protected]

Profesor de la Facultad de Ingeniera Electrnica, Universidad Nacional Mayor de San Marcos Lima Per

RESUMEN: El presente artculo pretende difundir los conocimientos bsicos del lenguaje VHDL (Very High Speed Integrated Circuit Hardware Description Language) diseado para la descripcin y sntesis de sistemas digitales para su implementacin en PLD. Se reduce los circuitos lgicos complejos, mquinas de estados e incluso diagrama de flujos a un cdigo sencillo y legible que puede tambin ser compilado y utilizado como librera para cualquier otro proyecto. ABSTRACT: This paper tries to diffuse the basic knowledge of the language VHDL (Very High Speed Integrated Circuit Hardware Description Language) designed for the description and synthesis of digital systems. It decreases the complex logical circuits, machines of states and diagram of flows to a simple and readable code that can also be compiled and used as bookstore for any other project. Palabras Claves: VHDL, sntesis digital, PLD.

Paquete. Las tres primeras son bsicas para la realizacin del diseo y las dos ltimas son utilizadas cuando se desean generar libreras. El diseo con VHDL, se define en dos partes: la unidad Entidad donde se define la interface exterior del diseo a manera de encapsulado y la unidad de Arquitectura donde se describe el funcionamiento interno de dicho diseo. Adems, VHDL permite definir mltiples Arquitecturas asociadas a una nica Entidad y el modelo a simular se especifica en la unidad de Configuracin indicando que dicha Arquitectura se utiliza para implementar una Entidad. Las unidades de Paquete se utilizan cuando uno de nuestros diseos es parte de otros, para ello lo empaquetamos como un solo objeto para que otros programas puedan utilizarlo directamente. 1.2 Entidad En la declaracin de Entidad se define el diseo como si fuera un producto encapsulado, indicando el nmero de pines, los puertos de entrada y salida. La Entidad puede definir bien las entradas y salidas de un circuito integrado por disear o puede definir la interface de un mdulo que ser utilizado en un diseo ms grande.

I. ESTRUCTURA DEL LENGUAJE VHDL 1.1 Unidades de Diseo en VHDL El lenguaje VHDL est estructurado en las siguientes unidades: Entidad, Arquitectura de una Entidad, Configuracin, Declaracin de Paquete y Cuerpo del

ELECTRNICA UNMSM

N.11, Agosto del 2003

16

La Entidad es la estructura que declara la interface del sistema y permite ver el diseo como una caja negra, con la cual se puede realizar diseos jerrquicos en VHDL y formar una coleccin de mdulos interconectados entre s. En VHDL estos mdulos se definen mediante la palabra clave ENTITY cuya forma general es:ENTITY nombre IS [GENERIC (lista de parmetros)]; [PORT (lista de puertos)]; [declaraciones] [BEGIN sentencias] END [ENTITY] [nombre];

Los comentarios en VHDL se indican con un doble guin . El lenguaje VHDL no distingue las letras maysculas de las minsculas, por lo que un puerto llamado data ser equivalente a otro llamado DATA Data. Por convencin todas las palabras reservadas de VHDL se escriben en letras maysculas. El primer carcter de un puerto slo puede ser una letra, nunca un nmero. As mismo su nombre no puede contener caracteres especiales tales como $, %, ^, @, ... ni dos caracteres de subrayado seguidos.

La instruccin GENERIC, sirve para definir y declarar propiedades constantes generales tales como los tiempos de retardo. La instruccin PORT, define los puertos del mdulo que esta siendo definido en un lista que consiste en un nombre seguido por el modo del puerto (IN, OUT, etc.) y el tipo de datos de la lnea (std_logic,bit, etc). Si no se especifica el modo del puerto, el compilador de VHDL supone que se trata del modo IN por defecto

1.2.1 Tipos de Puertos Los puertos en VHDL son anlogos a los pines de conexin de un smbolo esquemtico y toda seal declarada en la Entidad debe tener algn tipo de puerto asignado. De esta manera un puerto es un objeto de informacin utilizado entre el diseo y otros circuitos digitales como referencia a los pines de nuestro encapsulado. Los diferentes tipos de puertos describen la direccin por donde la informacin es transmitida y slo existen los siguientes tipos: IN: Las seales en este tipo de puerto solamente pueden entrar a la Entidad, se les puede leer pero no se le puede asignar ningn valor, es decir, no se puede cambiar su valor en el programa.

Figura 1 - Contador mdulo 4.LIBRARY ieee; USE ieee.std_logic_1164.ALL; ENTITY Ejemplo IS GENERIC ( retardo: time:= 15 ns; max_freq: frecuency:= 50 MHz ); PORT ( clk, reset: IN std_logic; load: IN std_logic_vector(0 DOWNTO 0); data: IN std_logic_vector(0 TO 3); salida: OUT std_logic_vector(3 DOWNTO 0); carry_out: OUT std_logic); END Ejemplo;

OUT: En este tipo de puerto la seales solamente pueden salir de la Entidad. La seal de salida puede cambiar y se le puede asignar valores, pero no se puede leer. Esto es, no se permite que su valor sea usado internamente en el diseo por que el estado lgico en el que se encuentra no se puede leer. INOUT: Este tipo de puerto es usado para implementar seales bidireccionales, es decir, para permitir que por un mismo puerto la informacin fluya tanto hacia dentro como hacia afuera de la entidad.

Observar que:

ELECTRNICA UNMSM

N.11, Agosto del 2003

17

BUFFER: Es equivalente a un puerto OUT al que se le a aadido un registro, pudiendo ser ledo y usado como una realimentacin interna. Este modo de puerto slo puede ser conectado directamente a una seal interna a un puerto a modo de buffer de otra entidad. LINKAGE: Este ltimo tipo es como el INOUT, pero slo puede ser usado con elementos de tipo LINKAGE. En general se utiliza como interfase para enlazar el modelo diseado con otros mdulos tambin diseados con herramientas distintas al VHDL.

notar que este tipo fue creado para la simulacin y no siempre resultar sintetizable en un circuito digital. Enumerated: Con este tipo el usuario puede definir nuevos tipos de valores, resultando til para la codificacin de los estados en una mquina de Mealy Moore.TYPE estado IS (Inicio, Lento, Rpido, Fin);

Si en la declaracin de un puerto no se especifica ningn tipo de puerto, se asume que es del tipo IN. 1.2.2 Tipos de Datos Asociados Aunque VHDL slo admite los cinco tipos de puertos mencionados, el tipo de dato asociado a un puerto puede ser tan variado como se desee, por que uno mismo lo puede definir. VHDL incorpora algunos tipos de datos bsicos definidos en la norma IEEE 1076/93, como son: Bolean: Puede tomar los valores de verdadero falso. Bit: Puede tomar los valores de 0 1. Bit_vector: Es un grupo de bits, donde cada uno puede tomar el valor de 0 1. El orden del bit ms significativo que integra el vector, se define segn el uso, en este caso se utiliza la palabra reservada DOWNTO TO, as por ejemplo:SIGNAL a: bit_vector(0 TO 3); SIGNAL b: bit_vector(3 DOWNTO 0); a Nor2: NotOr PORT MAP ( a => b => c => q