Está en la página 1de 23

INSTITUTO TECNOLGICO DE

MINATITLN
Materia:
DISEO DIGITAL CON VHDL
Catedrtico:
Dionisio Ted Echeverria
Integrantes de equipo:
Galmich Limon Leonel
Tiburcio Padua Maricela

DISEO DIGITAL
CON VHDL

UNIDAD #1

QU SIGNIFICA VHDL?
Es un lenguaje de descripcin de circuitos electrnicos digitales que
utiliza distintos niveles de abstraccin.
El significado de las siglas VHDL es VHSIC (Very High Speed
Integrated Circuits) Hardware Description Language. Esto significa
que VHDL permite acelerar el proceso de diseo.
VHDL no es un lenguaje de programacin, por ello conocer su
sintaxis no implica necesariamente saber disear con l.

1.- PROGRAMACIN DE VHDL


Es un estndar de IEEE
Ampliamente usado, principalmente en Europa
Gran mbito de aplicacin
Lenguaje muy amplio que se adapta bien a las necesidades del diseo de
circuitos digitales desde el nivel de sistema hasta el nivel lgico
Modelado y simulacin de circuitos digitales en mltiples niveles de abstraccin
Sntesis lgica, RT y de alto nivel
En particular VHDL permite tanto una descripcin de la estructura del circuito
(descripcin a partir de sub circuitos ms sencillos), como la especificacin de la
funcionalidad de un circuito utilizando formas familiares a los lenguajes de
programacin

1.2 ELEMENTOS DEL


LENGUAJE VHDL
Daremos unas breves definiciones de los elementos que se usan en VHDL
Comentarios : empiezan por dos guiones "--" seguidos, hasta el final de lnea.
Smbolos especiales: de un slo carcter + - / * ( ) . , : ; & ' " < > | = # de
dos caracteres ** => := /= >= <= <> - Identificadores : Se usan para dar nombre a los diferentes objetos del lenguaje.
Pueden ser cualquier nombre compuesto por letras y nmeros, incluyendo el smbolo
de subrayado "_". Nunca puede contener uno de los smbolos especiales, no puede
empezar por un nmero ni contener dos subrayados seguidos. Las maysculas y
minsculas se consideran iguales. Tampoco puede coincidir con una de las palabras
reservadas del lenguaje (que tienen un significado predefinido).

Nmeros : Se considera que estn en base 10. Se admite la notacin cientfica


para nmeros en coma flotante.
Es posible escribir nmeros en otras bases utilizando el smbolo #. As, 2
#11000100# es un nmero en base 2, 16#c4# en hexadecimal.
No obstante, los nmeros son
mucho menos utilizados en VHDL que en otros lenguajes de programacin,
puesto que es un lenguaje orientado a diseos digitales, donde los valores
que se manejan son bits o cadenas de bits.
Caracteres : Cualquier letra o nmero entre comillas simples: '2', 't'.
Cadenas : Conjunto de caracteres en comillas dobles: "hola.
Cadenas de bits : los bits son en realidad caracteres, y es posible formar con
ellos cadenas y representar nmeros. "1110100", O"126", X"FE"; el primero es
binario, el segundo octal, indicado por la O delante de la cadena, el ltimo es
hexadecimal, indicado por la X delante de la cadena. Palabras reservadas .
Son aquellas que tienen un significado especial en VHDL Operadores .

SLL, SRL Desplaza un vector de bits un nmero de bits a la izquierda o a


la derecha, rellenando con ceros los huecos libres
SLA, SRA Como el anterior pero el desplazamiento conserva el signo, el
valor del bit ms significativo.
ROL, ROR rotacin a izquierda o a derecha. Como un desplazamiento,
pero los huecos que se forman son ocupados por los bits que van
saliendo.
= , /= igualdad o desigualdad
< , <=, >, >= menor, menor o igual, mayor, mayor o igual Not, and,
nand, or, nor, xor, xnor.

Objetos: Elementos para almacenar informacin


Constantes (no cambian en toda la descripcin) pueden cambiar )
Seales (representan conexiones o terminales )
Atributos: Caractersticas de elementos
EVENT, LEFT, RIGHT, HIGH, LOW, ...

Variables (valores que

1.3 DECLARACIN BSICA


DE OBJETOS
Tipos de datos.
La sintaxis de VHDL es estricta con respecto a los tipos. Cualquier objeto que se defina debe
tener un tipo. En VHDL no existen tipos propios del lenguaje, pero existen los mecanismos para
poder definir cualquier tipo. Las libreras que se declaran al principio del programa incluyen los
tipos ms habituales.
Tipos escalares: Son tipos simples. Tienen un orden que permite usar operadores relacionales con
ellos. Pueden ser enumerados, enteros, flotantes y fsicos.
Enteros: Se definen incluyendo el rango.
type index is range 7 downto 1; type integer is range 2147483648 to 2147483647; -- tipo
predefinido.
Reales (coma flotante): Se deben definir tambin en un rango, pero con lmites reales.
Fsicos: Datos que trabajan con magnitudes fsicas, es decir, con valor y unidades. Hay un tipo
predefinido en VHDL que es el tiempo, time.

Enumerados: Pueden tomar cualquier valor en una lista.


type bit is ('0','1'); --Predefinido type boolean is (FALSE, TRUE); -- Predefinido
El estandar IEEE 1164 define un tipo enumerado adicional, std_ulogic, y varios subtipos. El tipo
std_ulogic se define con una lista de 9 posibilidades:
type std_ulogic is

( 'U', -- Sin inicializar


'X', -- Fuerza a desconocido
'0', -- fuerza a 0
'1', -- fuerza a 1
'Z', -- Alta impedancia
'W', -- Desconocido dbil
'L', -- 0 dbil
'H', -- 1 dbil
'-', -- no importa
);

El subtipo std_logic proviene del std_ulogic y la lista de valores es la misma, pero este subtipo tiene
una funcin de resolucin (concepto en el que no entraremos). En la prctica, nosotros usaremos
muy a menudo el tipo std_logic para sntesis. Es ms amplio que el tipo bit, al incluir los estados de
alta impedancia y de no importa. Para usar el subtipo std_logic hay que incluir el paquete
std_logic_1164 de la librera ieee.

Tipos compuestos. Estn compuestos por tipos escalares. Matrices: Coleccin de


elementos a los que se accede mediante un ndice.
type word is array(31 downto 0) of bit; signal b: word;
A los elementos de una matriz se accede mediante los ndices. Si dato es una seal
de tipo word, dato(3) es el elemento 3 de dato, dato(29 downto 25) es una parte
del array.
Existen algunos tipos predefinidos.
type bit_vector is array (natural range <>) of bit; type std_logic_vector is array
(natural range <>) of std_logic; que nos permiten definir seales como: signal a:
std_logic_vector(3 downto 0);
Son tambin de gran importancia los tipos unsigned y signed. Representan
vectores de std_logic pero considerndolos con signo. El tipo unsigned representa
valores numricos positivos o cero. El tipo signed representa valores tanto
negativos como positivos en complemento a 2. Esto tiene una implicacin a la hora
de hacer comparaciones y otras operaciones. signal a: unsigned(3 downto 0);
Registros: Equivalente al tipo record de otros lenguajes.
Subtipos.
Es posible la definicin de subtipos como subconjuntos de tipos existentes.
subtype raro is integer range 4 to 7; subtype id is string(1 to 20);

Atributos .
Los elementos en VHDL pueden tener informacin adicional basada en atributos. Estos
atributos estn asociados a ciertos elementos del lenguaje y se manejan mediante la
comilla simple '.
Por ejemplo, si t es una seal de un tipo enumerado, entero, flotante o fsico, se tienen
los siguientes atributos:
t'left lmite izquierdo del tipo left t'right
t'low menor de los valores en t t'high t'length da el nmero de elementos de t.
Un atributo importante es 'event. Da un valor booleano verdadero si acaba de ocurrir
un cambio en la seal. Se usa especialmente con seales que sean de reloj: clk'event
Otro atributo que aparece con frecuencia es 'range. Da el rango de un objeto limitado.
Por ejemplo, si definimos signal word: std_logic_vector(15 downto 0); entonces
word'range es 15 downto 0
En ciertos programas informticos, hay tambin atributos que permiten agregar
informacin adicional a los objetos que se estn definiendo en VHDL. Estas
informaciones adicionales sirven para pasar informacin a las herramientas de diseo
que se estn utilizando en VHDL, por ejemplo si queremos que ciertas seales estn en
determinados pines de una PLD. En MaxPlusII se realiza de forma grfica.

Seales, constantes y variables .


Constantes.
Una constante es un elemento que se inicializa a un determinado valor que
no puede ser cambiado:
constant indice: integer:=5; constant max_size: integer;
En el segundo caso max_size no tiene ningn valor asociado. Esto se permite
siempre y cuando el valor sea declarado en algn otro sitio.
Variables.
Su valor puede ser alterado en cualquier instante. Es posible asignarle un
valor inicial:
variable contador: natural:=0; variable aux: bit_vector(31 downto 0);
Las variables slo tiene sentido en bloques donde la ejecucin es en serie:
subprogramas y procesos (process).

Seales.
La seal no es un objeto del lenguaje que guarda un valor, sino que lo que hace es guardar
un valor y hacerlo visible en el momento adecuado. Esto es, se puede decir que la seal tiene
dos partes, una donde ese escribe y que almacena el valor, y otra que se lee y que no tiene
por qu coincidir con lo que se acaba de escribir.
Entidades y arquitecturas .
La descripcin de un circuito en VHDL consta al menos de dos elementos: la entidad y la
arquitectura. En la entidad se definen las seales de entrada y salida. En la arquitectura, se
define lo que hace el circuito. Previamente a la definicin de ambas, se pueden incluir las
libreras y los paquetes necesarios en el programa. Veamos un ejemplo.
library ieee; use ieee.std_logic_1164.all;
entity MUX2to1_a is port(
A, B: in std_logic; Sel: in std_logic;
Y: out std_logic); end MUX2to1_a;
architecture behavior of MUX2to1_a is begin
Y<= ( B and Sel ) or ( A and not( Sel) ); end behavior;
Las dos primeras lneas del programa contienen las libreras (ieee) y los paquetes
(std_logic_1164.all) que sern utilizados en el programa. Los tipos ms habituales estn
declarados en esta librera, por lo que su uso es casi imprescindible. Como en el programa se
usa el tipo std_logic, es necesario incluir este paquete.

1.4- DECLARACIONES
CONCURRENTES
Se ejecutan a la vez
Se pueden poner en cualquier orden
El simulador detecta los cambios en los valores de los objetos y determina cuando
tiene que actualizarlos
Todas las sentencias dentro de una arquitectura son concurrentes

ARCHITECTURE estructural OF sumador_total IS


...
BEGIN
SS0: semisumador PORT MAP (x, y, s_parcial, c_parcial1); SS1: semisumador PORT MAP
(s_parcial, cin, s, c_parcial2); cout <= c_parcial1 OR c_parcial2;
END estructural;

DECLARACIONES
CONCURRENTES
Dos ejemplos
equivalentes

1.5 - EJEMPLO DE DECLARACIONES


SECUENCIALES
Se ejecutan una detrs de otra, como en los lenguajes de
software
Las sentencias secuenciales van siempre dentro de procesos o
subprogramas, que determinan la sincronizacin con el resto del
diseo.
Entre la ejecucin de una sentencia secuencial y la siguiente no
transcurre el tiempo.

PROCESOS
Sirve para describir el hardware mediante sentencias secuenciales
Contienen
Declaraciones
Sentencias secuenciales
El proceso debe de tener una lista de sensibilidad explcita o al
menos una sentencia WAIT
Los procesos se ejecutan cuando

EJEMPLO

1.5.- FUNCIONES Y SUS


PROGRAMAS
Son similares a las estructuras de otros lenguajes.

Son subprogramas a los que se les pasan unos parmetros.


Las diferencias entre funciones y procedimientos son:
Una funcin siempre devuelve un valor, mientras que un procedimiento
slo puede devolver valores a travs de los parmetros que se le pasen.
Los argumentos de una funcin son siempre de entrada (in) , por lo que
dentro de la funcin slo se pueden leer. No es necesario especificar el
modo.
En el procedimiento pueden ser de entrada, de salida o de entrada y salida,
por lo que pueden sufrir modificaciones.
Por defecto es in, pero out, buffer, e inout tambin son vlidos.

Una funcin no tiene efectos colaterales, pero un procedimiento s, es


decir, puede provocar cambios en objetos externos a l debido a que
pueden cambiar las seales aunque no se hubiera especificado en el
argumento. Es decir, en los procedimientos se permite realizar
asignaciones sobre seales declaradas en la arquitectura y, por tanto,
externas al procedimiento.

1.6 PROGRAMACION DE FPGA


Los FPGA son adecuados para la implementacin de circuitos de una gran
variedad de
tamaos, desde cerca de 1 000 hasta ms de un milln de compuertas
lgicas equivalentes. Adems
del tamao, el diseador ha de considerar otros criterios, como la
velocidad de operacin
necesaria del circuito, las restricciones de disipacin de potencia y el
costo de los chips. Cuando
los FPGA no satisfacen uno o ms de los requisitos, el usuario puede
optar por crear un chip.

También podría gustarte