El documento presenta una introducción a los conceptos básicos de VHDL. Explica que VHDL es un lenguaje de descripción de hardware usado para modelar circuitos digitales. Describe los elementos clave de VHDL como bibliotecas, paquetes, entidades, arquitecturas, tipos de datos y operadores. También explica los diferentes tipos de diseño en VHDL como estructural, comportamental y por flujo de datos, así como herramientas de diseño asistido por ordenador para VHDL.
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
Conceptos basicos de_vhdl
1. Ingeniero Dagoberto Rodríguez Cedeño Página 1
CONCEPTOS BASICOS DE VHDL
Ingeniero Dagoberto Rodríguez Cedeño
Concepto.
“VHDL” viene “VHSIC Hardware Description Languaje” (Lenguaje de
Descripción 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 investigación sobre tecnología de CI
de alto rendimiento.
Estructura de programa en VHDL.
ELEMENTOS DE DESCRIPCION DE VHDL.
Bibliotecas (Library): Almacenan los elementos de diseño:
tipo de datos, operadores, componentes, objetos, funciones,...
Esos elementos de diseño se organizan en Paquetes.
Packages: Son unidades de almacenamiento de elementos y
tienen que hacerse “visibles” para poder ser utilizados.
2. Ingeniero Dagoberto Rodríguez Cedeño Página 2
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:
3. Ingeniero Dagoberto Rodríguez Cedeño Página 3
Caja negra:
Puertos de una entidad (Modo de 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.
4. Ingeniero Dagoberto Rodríguez Cedeño Página 4
SINTAXIS DECLARACION DE ARQUITECTURA:
Librerías:
Una librería es una colección de piezas de código usualmente
empleadas. Esto permite poder reusar esas piezas ó compartirlas con
otros diseños.
Sintáxis:
LIBRARY <nombre de la librería>;
USE <nombre de un package>;
Ejemplos:
LIBRARY ieee;
USE ieee.std_logic_1164;
El código 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 Librería destino.
5. Ingeniero Dagoberto Rodríguez Cedeño Página 5
Librerías más comunes del paquete VHDL actualizado
en 1993:
LIBRARY ieee;
USE ieee.std_logic_1164.all;
USE ieee.std_logic_arith.all;
USE ieee.std_logic_signed.all;
USE ieee.std_logic_unsigned.all;
LIBRARY std;
Librería que no requiere ser declarada en un diseño.
Contiene declaraciones de tipos de datos y funciones de entrada-
salida de texto entre otros.
USE std.standard.all;
USE std.texto.all;
Standard: donde se definen los tipos lógicos y numéricos básicos.
TEXTO: Define tipos para la creación de texto y procedimientos para
el ingreso e impresión de textos.
LIBRARY work;
USE work.all;
Librería que no requiere ser declarada en un diseño.
Es donde se salvan todos los archivos relacionados con el diseño 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 lógicos multinivel.
De todos estos niveles sólo 3 son sintetizables sin restricciones; el
resto sirven para simulación.
USE ieee.std_logic_arith:
Especifica tipos de datos con y sin signo, operaciones aritméticas y de
comparación numérica y funciones para conversión de datos.
6. Ingeniero Dagoberto Rodríguez Cedeño Página 6
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 definición de paquete.
PACKAGE nombre_paquete IS
Declaración de tipos
Declaración de señales.
Declaración de constantes
Declaración de componentes
Definición de funciones
Definición de procedimientos
END nombre_paquete
PACKAGE BODY nombre_paquete IS
Declaración de tipos
Declaración de constantes
Definición de funciones
Definición de procedimientos
END nombre_paquete
Sintaxis de una declaración de componente.
COMPONENT nombre_componente
PORT (Nombre de señal: modo tipo de señal;
...
Nombre de señal: modo tipo de señal);
END COMPONENT;
Tipo de señal:
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 3er estado), "-" (para los opcionales).
Integer
En este tipo las señales toman valores enteros. Los 1 y los 0
se escriben sin “
7. Ingeniero Dagoberto Rodríguez Cedeño Página 7
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.
Literales:
Enteros.
Punto flotante.
Literales físicos (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 señales:
Constantes (ejemplo: CONSTANT retardo: tiem:=3ns;)
Variables: Locales en un proceso. No salen del entorno de
declaración en procesos ó subprogramas. Son ejecutadas
secuencialmente.
Señales: Se modifican mediante sentencias de asignación pero no se
hace efectivo hasta que todos losprocesos terminan. Son de uso
global.
Operadores:
Lógicos: 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.
8. Ingeniero Dagoberto Rodríguez Cedeño Página 8
Suma y resta: + y -.
MULT y DIV: *, /, MOD y REM.
Misceláneos: exponenciación (**) y valor absoluto (ABS).Los
comentarios comienzan con doble línea “--”.
Las sentencias terminan con “;”.
Identificadores:
No hay longitud máxima.
No hay diferencia entre mayúsculas y minúsculas.
Deben empezar con carácter alfabético.
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 noción de PROCESOS (Process),
que si bien describen eventos que se producen como cualquier
sentencia concurrente, son analizados internamente en forma
secuencial para su síntesis y/o simulación.
Es por eso que se encuentran sentencias de asignación propias de
acciones concurrentes y otras exclusivas para procesos secuenciales.
Ejemplos:
Concurrentes: Declaración de señales. Sentencias: WHEN..ELSE,
PROCESS, etc.
Secuenciales: Declaración de variables. Sentencias: IF..THEN..ELSE,
CASE, DO…WHILE, WHILE, FOR, etc.
Ambas: Asignación a señales, declaración de tipos y constantes,
sentencia ASSERT, retardos (AFTER), etc.
9. Ingeniero Dagoberto Rodríguez Cedeño Página 9
TIPOS DE DISEÑO EN VHDL ESTRUCTURAL:
En forma similar a las herramientas de diseño que trabajan con
lenguajes de NETLIST, VHDL puede ser utilizado para diseñar ó
simular un sistema digital, especificando por un lado sus
componentes y por el otro sus interconexiones.
POR COMPORTAMIENTO (ó FUNCIONAL):
VHDL puede ser usado para diseñar un sistema digital, describiendo
el comportamiento del mismo a través de dos formas diferentes:
“algorítmica” y por “flujo de datos”.
Esta modalidad es muy utilizada en procesos de simulación ya
que permite simular un sistema sin necesidad de conocer su
estructura interna.
DISEÑO ESTRUCTURAL
Es una forma de diseñar instanciando subcomponentes que realizan
operaciones mas pequeñas del modelo completo.
Ejemplo:
Diseño del mismo mux 4:1 pero con una descripción “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 sección:
BEGIN ..... END de la estructura “netlist”;
10. Ingeniero Dagoberto Rodríguez Cedeño Página 10
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;
DISEÑO ALGORÍTMICO
Otra forma de describir la funcionalidad de un dispositivo es la de
hacerlo algorítmicamente 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”.... .
11. Ingeniero Dagoberto Rodríguez Cedeño Página 11
Ejemplo:
Diseño del mismo multiplexor “mux2” en una arquitectura ahora
denominada “secuencial” donde la misma contiene sólo 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 ejecución de la sentencia PROCESS comienza en “BEGIN” y
termina en “END PROCESS”.
En esta sección se han utilizado las funciones “IF” y “CASE” para
describir el comportamiento del multiplexor.
12. Ingeniero Dagoberto Rodríguez Cedeño Página 12
DISEÑO POR FLUJO DE DATOS
Ejemplo de compuerta AND de 2 entradas
Declaración de arreglo y matrices:
Arreglos:
type word is array(31 downto 0) of bit;
Word (2) es el dato que se encuentre en las posición con índice 2
Matrices:
type memoria is array (0 to 7, 0 to 63) of bit;
13. Ingeniero Dagoberto Rodríguez Cedeño Página 13
Sintaxis: If, Case, For, While, Do…While
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;
14. Ingeniero Dagoberto Rodríguez Cedeño Página 14
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
Do…While:
do
begin
// Statements
end
while(<expression>);
Herramientas:
• Warp
• Altera
• Xilinx
• ActiveVHDL
• GHDL (GNU)
• Max+Plus II
• Quartus II
• ModelSim/ISE
• Otros programas están incluyendo en sus últimas versiones la
capacidad de programar FPGA usando sus propios lenguajes,
pero también incluyen módulos en VHDL, por ejemplo Protel
DXP, Labview o Matlab.
15. Ingeniero Dagoberto Rodríguez Cedeño Página 15
BIBLIOGRAFIA:
1. Roth, Charles H. Fundamentos de Diseño Lógico. Ed. Thomson.
2. John F. Wakerly, Diseño digital, principios y prácticas
3. www.altera.com
4. Uyemura, John P. Introducción al Diseño de Sistemas Digitales. Ed.
Thomson.