Lenguaje VHDL PDF

Title Lenguaje VHDL
Course Programación II
Institution Universidad Nacional de Ingeniería Nicaragua
Pages 28
File Size 1.5 MB
File Type PDF
Total Downloads 72
Total Views 136

Summary

Download Lenguaje VHDL PDF


Description

1. Origen del lenguaje VHDL VHDL significa HDL Hardware Description Language, y a su vez VHSIC significa Very High Speed Integrated Circuit. Se trata de un lenguaje de descripción de hardware, esto significa que mediante él se puede describir la forma de comportarse de un circuito electrónico. El comportamiento puede ser llevado a algún dispositivo que dispondrá de sus propios componentes con los que lograr ese comportamiento deseado. La forma de comportarse es independiente del hardware donde se implementará. Originalmente, el lenguaje VHDL fue desarrollado por el departamento de defensa de los Estados Unidos a inicios de los años 80 basado en el lenguaje de programación ADA con el

fin de

simular circuitos

eléctricos digitales.

Posteriormente se desarrollaron herramientas de síntesis e implementación en hardware a partir de los archivos VHD. Otros métodos para diseñar circuitos son la captura de esquemas (con herramientas CAD) y los diagramas de bloques, pero estos no son prácticos en diseños complejos. Otros lenguajes para el mismo propósito, pero con un nivel de abstracción superior son Verilog y ABEL. 2. Compiladores para microcontroladores. 

ActiveVHDL (Aldec)



Leapfrog (Cadence)



Leonardo (Mentor Graphics)



Max Plus II (Altera)



Project Manager y Modelsim (Xilinx)



SYNOPSYS



VeryBest

3. Estructura de un programa. VHDL fue diseñado con base a los principios de la programación estructurada. La idea es definir la interfaz de un módulo de hardware mientras deja invisible sus detalles internos. La entidad (ENTITY) en VHDL es simplemente la declaración de las

entradas

y

salidas

de

un

módulo

mientras

que

la

arquitectura

(ARCHITECTURE) es la descripción detallada de la estructura interna del módulo o de su comportamiento. En la siguiente figura se ilustra el concepto anterior. Muchos diseñadores conciben la Entity como una funda de la arquitectura dejando invisible los detalles de lo que hay dentro (architecture). Esto forma la base de un sistema de diseño jerárquico, la arquitectura de la entidad de más nivel (top level) puede usar otras entidades, dejando invisible los detalles de la arquitectura de la identidad de menos nivel. En la figura las entidades B, E y F no utilizan otras entidades. Mientras que la entidad A utiliza todas las demás. A la pareja entidadarquitectura se la llama modelo. En un fichero texto VHDL la entidad y la arquitectura se escriben separadas, por ejemplo a continuación se muestra un programa muy simple en VHDL de una compuerta de 2 entradas. Como otros programas, VHDL ignora los espacios y saltos de líneas. Los comentarios se escriben con 2 guiones (--) y terminan al final de la línea. En la figura siguiente se muestra la estructura de un modelo en VHDL. Sintaxis para la declaración de la entidad VHDL define muchos caracteres especiales llamados “palabras reservadas”. Aunque las palabras reservadas no son sensibles a las mayúsculas o minúsculas, en el ejemplo que sigue las utilizaremos en mayúsculas y negrita para identificarlas. ENTITY Nombre_entidad IS PORT ( Nombre de señal: modo tipo de señal; ... Nombre de señal: modo tipo de señal ) ; END nombre_entidad ;

Además de darle nombre a la entidad el propósito de la declaración es definir sus señales (o ports) de interfaz externa en su declaración de ports. Además de las palabras reservadas o claves ENTITY, IS, PORT and END, una ENTITY tiene los siguientes elementos. Nombre_entidad; es un identificador seleccionado por el usuario para



seleccionar la entidad. Nombre de señal; es una lista de uno o más identificadores separados por una



coma y seleccionados por el usuario para identificar las señales externas de la interfaz. MODO es una de las 4 siguientes palabras reservadas para indicar la dirección



de la señal:

Modo

Descripción

IN

En este modo las señales solo entran en la entidad

OUT

Las señales salen de la entidad

BUFFER

Este modo se utiliza para las señales que además de salir de la entidad pueden usarse como entradas realimentadas

INOUT

Este modo se utiliza para señales bidireccionales. Se emplea en salida con tres estados. Se puede asignar como sustituto de los tres modos anteriores, pero no se aconseja pues dificulta la comprensión del programa.

Cuando se omite el modo de una señal en la declaración de la entidad se sobreentiende que es de entrada. 

Tipo de señal; en VHDL, hay varios tipos de señales predefinidas por el lenguaje, tales como:

TIPO

Características

BIT

En este tipo las señales solo toman los valores de "1" y "0"

Booleana

En este tipo las señales solo toman los valores de True y False

Std_logic

En este tipo las señales toman 9 valores, entre ellos tenemos: "1", "0", "Z" (para el 3.er estado), "-" (para los opcionales).

Integer

En este tipo las señales toman valores enteros. Los 1 y los 0 se escriben sin “

Bit_Vector

En este tipo los valores de las señales son una cadena de unos y ceros. Ejemplo: “1000”

Std_Logic_Vector

En este tipo los valores de las señales son una cadena de los nueve valores permisibles para el tipo std_logic.

Character

Contiene todos los caracteres ISO de 8 bits, donde los primeros 128 son los caracteres ASCII.

Operadore s

Tipo

Std_logic

U

Uninitialized (Sin inicializar)

X

Forcing Unknown (Forzar valor desconocido)

0

Forcing 0 (Forzar un cero)

1

Forcing 1 (Forzar un uno)

Z

High Impedance (Alta impedancia)

W

Weak Unknown (Valor débil desconocido)

L

Weak 0 (Cero débil)

H

Weak 1 (uno débil)

-

Don’t care (Cualquier valor)

Este tipo es parte del paquete IEEE 1164 Además el usuario puede definir otros tipos de señales, lo que resulta muy conveniente en algunos casos, como en el diseño de máquinas de estados. El lenguaje VHDL concede máxima importancia a los tipos de señales, no se admite realizar una asignación mezclando tipos diferentes. Un PORT de una entidad y sus modos y tipos pueden ser vistos por otros módulos que la utilicen. La operación

interna de la entidad está definida en la architecture cuya sintaxis general se muestra a continuación. Ejemplo, escriba la declaración de la entidad para un circuito digital con dos entradas a y b y una salida F según se muestra en la siguiente figura. ENTITY ejemplo1 IS PORT ( a, b : IN bit; F : OUT bit ); END ejemplo1 ; 4. Entorno de trabajo PRIMER ENTORNO DE TRABAJO: EL PROGRAMA BLUEPC: El primer entorno de trabajo que se va a introducir es el programa BluePc. Este programa est· disponible de forma gratuita en Internet, soporta las tres descripciones de VHDL (algorítmica, dataflow y estructural) y proporciona los siguientes elementos de trabajo: Compilador en un entorno grafico (figura 1): soporta un subconjunto aceptable de VHDL; en particular soporta las construcciones de tipo process. El compilador soporta las descripciones de paquetes

(package)

y

funciones.

BluePc

dispone

de

las

librerías:

ieee.std_logic_1164.all, ieee.std_logic_textio.all, std.textio. Simulador temporal de sistemas (figura 3): proporciona las formas de onda de respuesta del circuito sometido a unos estímulos de entrada. Desde el punto de vista didáctico este compilador tiene una gran ventaja respecto de los demás entornos: admite la programación de bancos de pruebas Test Bench para los circuitos deseados previamente utilizando el propio lenguaje VHDL. Los demás entornos realizan la generación de patrones de pruebas en entornos diferenciados (no descritos en VHDL). El programa proporciona las salidas como forma de onda y como fichero de texto. En las imágenes siguientes se muestran las descripciones de un multiplexor realizadas mediante el programa BluePc. Se comprueba que se admiten las tres

descripciones (algorítmica, dataflow, estructural). Además se programa el banco de pruebas a partir del cual se instancia el circuito que se pretende simular.

ux2a

mux is signal ctrl_n, n1, n2 : bit; component INV port (y : in bit; z : out bit); end component; component AND2 port (x : in bit; y : in bit; z : out bit); end component; component OR2 port (x : in bit; y : in bit; z : out bit); end component; begin U0: INV port map (ctrl, ctrl_n); U1: AND2 port map (ctrl_n, a,n1); U2: AND2 port map (ctrl, b, n2); U3: OR2 port map (n1, n2, zout); end estructura;

entity tb_mux2a is end tb_mux2a; architecture test of tb_mux2a is signal s_a: std_logic; signal s_b: std_logic; signal s_ctrl: std_logic; signal s_z: std_logic; component mux2a1 port(a: in std_logic; b: in std_logic; ctrl: in std_logic; z: out std_logic); end component; begin uut: mux2a1 port map (a => s_a, b=> s_b, ctrl => s_ctrl, z => s_z); process begin wait for 10 ns; s_a...


Similar Free PDFs