Sei sulla pagina 1di 15

CONCEPTOS BASICOS DE VHDL

Ingeniero Dagoberto Rodrguez Cedeo


Concepto.
VHDL viene VHSIC Hardware Description Languaje (Lenguaje de
Descripcin de Hardware VHSIC). A su vez VHSIC quiere decir Very
High Speed Integrated Circuit (Circuito Integrado de Muy Alta
Velocidad), lo que fue un programa del Departamento de Defensa de
Estados Unidos para estimular la investigacin sobre tecnologa de CI
de alto rendimiento.

Estructura de programa en VHDL.

ELEMENTOS DE DESCRIPCION DE VHDL.


 Bibliotecas (Library): Almacenan los elementos de diseo:
tipo de datos, operadores, componentes, objetos, funciones,...
Esos elementos de diseo se organizan en Paquetes.
 Packages: Son unidades de almacenamiento de elementos y
tienen que hacerse visibles para poder ser utilizados.
Ingeniero Dagoberto Rodrguez Cedeo

Pgina 1

Hay 2 bibliotecas que siempre son visibles por defecto: std (la
standard) y work (la de trabajo) y que no es necesario declarar.
 Entidades (Entity): Es el modelo de interfaz de un circuito con
el exterior mediante unos terminales de entrada y de salida. Es
la caja negra que define las entradas y salidas.
 Arquitectura (Architecture): Describe el funcionamiento del
circuito.

SINTAXIS DECLARACION DE ENTIDAD:

Ingeniero Dagoberto Rodrguez Cedeo

Pgina 2

Caja negra:

Puertos de una entidad (Modo de la direccin de la


seal):
Modo
Descripcin
En este modo las seales solo entran en la entidad
IN
Las seales salen de la entidad
OUT
Este modo se utiliza para las seales que adems de salir de la entidad

BUFFER pueden usarse como entradas realimentadas


INOUT

Este modo se utiliza para seales 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 comprensin del
programa.

Ingeniero Dagoberto Rodrguez Cedeo

Pgina 3

SINTAXIS DECLARACION DE ARQUITECTURA:

Libreras:
Una librera es una coleccin de piezas de cdigo usualmente
empleadas. Esto permite poder reusar esas piezas compartirlas con
otros diseos.
Sintxis:
LIBRARY <nombre de la librera>;
USE <nombre de un package>;
Ejemplos:
LIBRARY ieee;
USE ieee.std_logic_1164;
El cdigo es escrito en forma de Funciones (Functions), Procesos
(Process), Procedimientos (Procedures) Componentes
(Components) y luego ubicados dentro de Paquetes (Packages) para
ser compilados dentro de la Librera destino.

Ingeniero Dagoberto Rodrguez Cedeo

Pgina 4

Libreras ms comunes del paquete VHDL actualizado


en 1993:
LIBRARY ieee;
USE
USE
USE
USE

ieee.std_logic_1164.all;
ieee.std_logic_arith.all;
ieee.std_logic_signed.all;
ieee.std_logic_unsigned.all;

LIBRARY std;
Librera que no requiere ser declarada en un diseo.
Contiene declaraciones de tipos de datos y funciones de entradasalida de texto entre otros.
USE std.standard.all;
USE std.texto.all;
Standard: donde se definen los tipos lgicos y numricos bsicos.
TEXTO: Define tipos para la creacin de texto y procedimientos para
el ingreso e impresin de textos.
LIBRARY work;
USE work.all;
Librera que no requiere ser declarada en un diseo.
Es donde se salvan todos los archivos relacionados con el diseo en
curso (creados por el compilador, simulador, etc.).
USE ieee.std_logic_1164:
Especifica el STD_LOGIC (8 niveles) y el STD_ULOGIC (9 niveles)
para sistemas lgicos multinivel.
De todos estos niveles slo 3 son sintetizables sin restricciones; el
resto sirven para simulacin.
USE ieee.std_logic_arith:
Especifica tipos de datos con y sin signo, operaciones aritmticas y de
comparacin numrica y funciones para conversin de datos.

Ingeniero Dagoberto Rodrguez Cedeo

Pgina 5

USE ieee.std_logic_signed:
Permite operaciones con signo con datos tipo STD_LOGIC_VECTOR.
USE ieee.std_logic_unsigned:
Permite operaciones sin signo con datos tipo STD_LOGIC_VECTOR.

Sintaxis definicin de paquete.


PACKAGE nombre_paquete IS
Declaracin de tipos
Declaracin de seales.
Declaracin de constantes
Declaracin de componentes
Definicin de funciones
Definicin de procedimientos
END nombre_paquete
PACKAGE BODY nombre_paquete IS
Declaracin de tipos
Declaracin de constantes
Definicin de funciones
Definicin de procedimientos
END nombre_paquete

Sintaxis de una declaracin de componente.


COMPONENT nombre_componente
PORT (Nombre de seal: modo tipo de seal;
...
Nombre de seal: modo tipo de seal);
END COMPONENT;

Tipo de seal:
TIPO
BIT
Booleana

Caractersticas
En este tipo las seales solo toman los valores de "1" y "0"
En este tipo las seales solo toman los valores de True y False

Std_logic

En este tipo las seales toman 9 valores, entre ellos tenemos:


"1", "0", "Z" (para el 3er estado), "-" (para los opcionales).

Integer

En este tipo las seales toman valores enteros. Los 1 y los 0


se escriben sin

Ingeniero Dagoberto Rodrguez Cedeo

Pgina 6

Bit_Vector

En este tipo los valores de las seales son una cadena de unos
y ceros. Ejemplo: 1000
En este tipo los valores de las seales son una cadena de los

Std_Logic_Vector 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.

Literales:
Enteros.
Punto flotante.
Literales fsicos (ejemplo ns).
Bases (ejemplo 2#1011#, 8#17#, 16#9FD#).
Caracteres ASCII (ejemplo `M, `5).
Cadena de caracteres (ejemplo: esto es un string).
Otros.

Constantes, variables y seales:


Constantes (ejemplo: CONSTANT retardo: tiem:=3ns;)
Variables: Locales en un proceso. No salen del entorno de
declaracin en procesos subprogramas. Son ejecutadas
secuencialmente.
Seales: Se modifican mediante sentencias de asignacin pero no se
hace efectivo hasta que todos losprocesos terminan. Son de uso
global.

Operadores:
Lgicos: AND, OR, NAND, NOR, XOR, XNOR, NOT para tipos BIT,
BOOLEAN y arrays de ellos.
Relacionales: =, /=, <, <=, >, >= donde los operandos deben ser
del mismo tipo y el resultado es BOOLEAN.
Shift: SLL, SRL, SLA, SRA, ROL, ROR donde el operando izquierdo
debe ser BIT BOOLEAN y el derecho INTEGER.

Ingeniero Dagoberto Rodrguez Cedeo

Pgina 7

Suma y resta: + y -.
MULT y DIV: *, /, MOD y REM.
Miscelneos: exponenciacin (**) y valor absoluto (ABS).Los
comentarios comienzan con doble lnea --.
Las sentencias terminan con ;.

Identificadores:
No hay longitud mxima.
No hay diferencia entre maysculas y minsculas.
Deben empezar con carcter alfabtico.
No pueden terminar con underline.

Tipos de descripciones en VHDL:


En HDL se describen en general sucesos inherentemente
concurrentes pues en la arquitectura de una entidad (entre
BEGIN y END) se definen sentencias concurrentes.
Sin embargo en VHDL aparece la nocin de PROCESOS (Process),
que si bien describen eventos que se producen como cualquier
sentencia concurrente, son analizados internamente en forma
secuencial para su sntesis y/o simulacin.
Es por eso que se encuentran sentencias de asignacin propias de
acciones concurrentes y otras exclusivas para procesos secuenciales.
Ejemplos:
Concurrentes: Declaracin de seales. Sentencias: WHEN..ELSE,
PROCESS, etc.
Secuenciales: Declaracin de variables. Sentencias: IF..THEN..ELSE,
CASE, DOWHILE, WHILE, FOR, etc.
Ambas: Asignacin a seales, declaracin de tipos y constantes,
sentencia ASSERT, retardos (AFTER), etc.

Ingeniero Dagoberto Rodrguez Cedeo

Pgina 8

TIPOS DE DISEO EN VHDL ESTRUCTURAL:


En forma similar a las herramientas de diseo que trabajan con
lenguajes de NETLIST, VHDL puede ser utilizado para disear
simular un sistema digital, especificando por un lado sus
componentes y por el otro sus interconexiones.

POR COMPORTAMIENTO ( FUNCIONAL):


VHDL puede ser usado para disear un sistema digital, describiendo
el comportamiento del mismo a travs de dos formas diferentes:
algortmica y por flujo de datos.
Esta modalidad es muy utilizada en procesos de simulacin ya
que permite simular un sistema sin necesidad de conocer su
estructura interna.

DISEO ESTRUCTURAL
Es una forma de disear instanciando subcomponentes que realizan
operaciones mas pequeas del modelo completo.
Ejemplo:
Diseo del mismo mux 4:1 pero con una descripcin estructural
de la arquitectura que ahora denominaremos netlist.
La misma est formada por compuertas de tres tipos diferentes
(andgate, inverter y orgate) interconectadas convenientemente.
Cada tipo de compuerta est especificado como un COMPONENTE
diferente.
andgate es de 3 puertos de entrada y uno de salida.
orgate es de 4 puertos de entrada y uno de salida.
inverter es de un puerto de entrada y uno de salida.
La forma de describir que hace cada compuertas est en la seccin:
BEGIN ..... END de la estructura netlist;

Ingeniero Dagoberto Rodrguez Cedeo

Pgina 9

ARCHITECTURE netlist OF mux IS


COMPONENT andgate
PORT(a, b, c, : IN BIT; c : OUT BIT);
END COMPONENT;
COMPONENT inverter
PORT(in1 : IN BIT; x : OUT BIT);
END COMPONENT;
COMPONENT orgate
PORT(a, b, c, d : IN BIT; x : OUT BIT);
END COMPONENT;
SIGNAL s0_inv, s1_inv, x1, x2, x3, x4 : BIT;
BEGIN
U1 : inverter (s0, s0_inv);
U2 : inverter (s1, s1_inv);
U3 : andgate(a, s0_inv, s1_inv, x1);
U4 : andgate(b, s0, s1_inv, x2);
U5 : andgate(c, s0_inv, s1_inv, x3);
U6 : andgate(d, s0_inv, s1_inv, x4);
U7 : orgate(x2 => b, x1 => a, x4 => d, x3 => c, x => z);
END netlist;

DISEO ALGORTMICO
Otra forma de describir la funcionalidad de un dispositivo es la de
hacerlo algortmicamente dentro de una sentencia PROCESS.
La sentencia PROCESS consta de una serie de partes:
La primera es la lista de sensibilidad.
La segunda la declarativa
La tercera es la de statement. Comienza en BEGIN.... .

Ingeniero Dagoberto Rodrguez Cedeo

Pgina 10

Ejemplo:
Diseo del mismo multiplexor mux2 en una arquitectura ahora
denominada secuencial donde la misma contiene slo una sentencia
PROCESS....END PROCESS.
(a, b, c, d, s0, s1) es la lista de sensibilidad.
sel es una variable local que se declara (similar a NODE en AHDL).
La ejecucin de la sentencia PROCESS comienza en BEGIN y
termina en END PROCESS.
En esta seccin se han utilizado las funciones IF y CASE para
describir el comportamiento del multiplexor.

Ingeniero Dagoberto Rodrguez Cedeo

Pgina 11

DISEO POR FLUJO DE DATOS


Ejemplo de compuerta AND de 2 entradas

Declaracin de arreglo y matrices:


Arreglos:
type word is array(31 downto 0) of bit;
Word (2) es el dato que se encuentre en las posicin con ndice 2
Matrices:
type memoria is array (0 to 7, 0 to 63) of bit;

Ingeniero Dagoberto Rodrguez Cedeo

Pgina 12

Sintaxis: If, Case, For, While, DoWhile


If:
if (<constant_expression>)
begin : <if_block_name>
// Generate Items
end

// If-Else
if(<constant_expression>)
begin : <if_block_name>
// Generate Items
end
else
begin : <else_block_name>
// Generate Items
end

Case:
case <expression> is
when <constant_expression> =>
-- Sequential Statement(s)
when <constant_expression> =>
-- Sequential Statement(s)
when others =>
-- Sequential Statement(s)
end case;
Ingeniero Dagoberto Rodrguez Cedeo

Pgina 13

For:
For (<genvar_id> = <constant_expr>; <constant_expr>;
<genvar_id> = <constant_expr>)
begin : <required_block_name>
// Generate Items
End

While:
while(<expression>)
begin
// Statements
end

DoWhile:
do
begin
// Statements
end
while(<expression>);

Herramientas:

Warp
Altera
Xilinx
ActiveVHDL
GHDL (GNU)
Max+Plus II
Quartus II
ModelSim/ISE
Otros programas estn incluyendo en sus ltimas versiones la
capacidad de programar FPGA usando sus propios lenguajes,
pero tambin incluyen mdulos en VHDL, por ejemplo Protel
DXP, Labview o Matlab.

Ingeniero Dagoberto Rodrguez Cedeo

Pgina 14

BIBLIOGRAFIA:
1. Roth, Charles H. Fundamentos de Diseo Lgico. Ed. Thomson.
2. John F. Wakerly, Diseo digital, principios y prcticas
3. www.altera.com
4. Uyemura, John P. Introduccin al Diseo de Sistemas Digitales. Ed.
Thomson.

Ingeniero Dagoberto Rodrguez Cedeo

Pgina 15

Potrebbero piacerti anche