Está en la página 1de 32

INTRODUCCIÓN A LOS HDLs

Fernando Iván Arévalo Ramírez

Ingeniería Electrónica
Departamento de Automática y Electrónica
¿QUÉ ES UN HDL?

Poder crear diseños de sistemas complejos requiere de


herramientas de descripción de circuitos mucho más
poderosas que los tradicionales esquemas eléctricos
(schematics). Una opción son los Lenguajes de
Descripción de Hardware (HDLs) que han surgido como
solución natural a este problema, dado que facilitan:

➢ El diseño parametrizado de sistemas.


➢ El reuso de diseños.
➢ La auto documentación.
➢ El mantenimiento de un proyecto durante su vida útil.

Sistemas Digitales Programables AREVALO 2019


¿QUÉ ES UN HDL?

Es un lenguaje para descripción de hardware (HDL:


Hardware Description Language). Se considera una
herramienta formal para describir el comportamiento y la
estructura de sistemas usando un esquema textual.

Usando HDL el diseñador puede:

➢ Describir QUÉ es lo que el sistema debe hacer


(comportamiento).
➢ Describir CÓMO hacerlo (algorítmico).
➢ Detallar CON QUÉ hacerlo (flujo de datos y estructural).
Sistemas Digitales Programables AREVALO 2019
¿QUÉ ES UN HDL?

Los HDLs se pueden considerar como:

➢Herramienta de especificación.
➢Herramienta de diseño.
➢Herramienta de simulación.

Sistemas Digitales Programables AREVALO 2019


TIPOS DE HDL

De bajo nivel: Permiten definir un circuito a nivel de arquitectura


(FlipFlops, compuertas lógicas básicas, ecuaciones lógicas)
– PALASM (1980), CUPL(1962), ABEL
De nivel medio: Súper conjunto de los HDLs anteriores. Permiten
definir un circuito en modo jerárquico, así como la generación
condicional/iterativa de hardware. Algunos permiten el uso de
descripciones de comportamiento (funciones aritméticas, máquinas de
estado).
– AHDL (ALTERA Hardware Description Language)
De alto nivel: Súper conjunto de los HDLs anteriores. No sólo
posibilitan mayor nivel de abstracción, sino que también son usados
para la simulación, para la síntesis del generador de estímulos y el
monitor de salidas.
– VHDL, VERILOG HDL
Sistemas Digitales Programables AREVALO 2019
COMPARACIÓN ENTRE LOS HDLs
Y LENGUAJES DE SOFTWARE

➢ Un lenguaje de software, como C o Java, define una secuencia de


acciones elementales (denominadas instrucciones) que son
ejecutadas de a una por vez, en un orden que surge de cómo
están escritas en el programa.

➢ Un lenguaje de hardware, como AHDL, VHDL o Verilog, define


un conjunto de procesos que son resueltos en forma simultánea
(concurrentemente) por lo que no importa el orden con que están
descritos en el programa. Esta definición de HDL puede
comprenderse más fácilmente si se piensa que cada sentencia de
HDL define un circuito individual (un proceso), y que un diseño
escrito con un HDL sólo define un conjunto de circuitos
individuales y sus conexiones.

Sistemas Digitales Programables AREVALO 2019


UN HDL ESTÁNDAR: VHDL

VHDL???

➢ VHSIC (Very High Speed Integrated Circuit) Hardware Description


Language. Es un lenguaje de descripción y modelado diseñado para
describir (en una forma que los humanos y las máquinas puedan leer y
entender) la funcionalidad y la organización de sistemas hardware
digitales, placas de circuitos, y componentes.

➢ Estandarizado por el IEEE (IEEE standard 1076-1987), y creado por


iniciativa del Departamento de Defensa de USA desde los inicios de la
década del 80, como medio de documentación de sus desarrollos de
ASICs.

➢ VHDL fue desarrollado como un lenguaje para el modelado y simulación


lógica, dirigida por eventos, de sistemas digitales, y actualmente se lo
utiliza también para la síntesis automática de circuitos.

Sistemas Digitales Programables AREVALO 2019


UN HDL ESTÁNDAR: VHDL (II)
VENTAJAS DE USAR VHDL PARA LA DESCRIPCIÓN HARDWARE

➢ VHDL permite diseñar, modelar, y comprobar un sistema desde un alto nivel de


abstracción bajando hasta el nivel de definición estructural de compuertas.
➢ Circuitos descritos utilizando VHDL, siguiendo unas guías para síntesis, pueden ser
utilizados por herramientas de síntesis para crear implementaciones de diseños a
nivel de compuertas.
➢ Al estar basado en un estándar (IEEE Std 1076-1987) los ingenieros de toda la
industria de diseño pueden usar este lenguaje para minimizar errores de
comunicación y problemas de compatibilidad.
➢ VHDL permite diseño Top-Down, esto es, permite describir (modelado) el
comportamiento de los bloques de alto nivel, analizándolos (simulación), y refinar
la funcionalidad de alto nivel requerida antes de llegar a niveles más bajos de
abstracción de la implementación del diseño.
➢ Modularidad: VHDL permite dividir o descomponer un diseño hardware y su
descripción VHDL en unidades más pequeñas.

Sistemas Digitales Programables AREVALO 2019


UN HDL ESTÁNDAR: VHDL (III)

ESTRUCTURA GENERAL DE UN DISEÑO USANDO VHDL:

En cualquier diseño con VHDL suelen diferenciarse dos componentes:

➢ Cómo es visto y usado el diseño desde afuera?

➢ Cómo es resuelto el diseño internamente?

Sistemas Digitales Programables AREVALO 2019


UN HDL ESTÁNDAR: VHDL (IV)

DISEÑO VISTO DESDE FUERA

id_instr:
ENTITY nombre IS
GENERIC(lista de propiedades);
PORT(lista de puertos);
END nombre;

Sistemas Digitales Programables AREVALO 2019


UN HDL ESTÁNDAR: VHDL (V)
TIPOS DE PORTS

Modo IN: La señal puede ser leída


en la entidad pero no escrita.

Modo OUT: La señal no puede ser


leída en la entidad.

Modo INOUT: La señal puede ser


leída y escrita en la entidad.

Sistemas Digitales Programables AREVALO 2019


UN HDL ESTÁNDAR: VHDL (V)
TIPOS DE PORTS

Modo IN: La señal puede ser leída en


la entidad pero no escrita.

Modo OUT: La señal no puede ser


leída en la entidad.

Modo INOUT: La señal puede ser


leída y escrita en la entidad.

Sistemas Digitales Programables AREVALO 2019


UN HDL ESTÁNDAR: VHDL (VI)
Ejemplos de ENTIDAD

ENTITY rom IS
GENERIC (tamaño, ancho: bit_vector(1 DOWNTO 0));
PORT (enable : IN bit;
address : IN bit_vector(tamaño-1 DOWNTO 0);
data: OUT bit_vector(ancho-1 DOWNTO 0));
END rom;

ENTITY procesador IS
GENERIC (max_freq: frequency := 30 MHz);
-- No es útil para SINTESIS de HW.
PORT (clk: IN bit;
address: OUT integer;
data: INOUT word_32;
control: OUT proc_control;
ready: IN bit);
END procesador;

Sistemas Digitales Programables AREVALO 2019


UN HDL ESTÁNDAR: VHDL (VII)

DISEÑO VISTO DESDE DENTRO


➢Definición del funcionamiento del módulo definido en la
entidad.

id_instr:
ARCHITECTURE nombre_arq OF nombre_entidad IS
declaraciones;
BEGIN
instrucciones;
END nombre_arq;

Sistemas Digitales Programables AREVALO 2019


UN HDL ESTÁNDAR: VHDL (VIII)

DISEÑO VISTO DESDE DENTRO


➢Ejemplo de Arquitectura.

ARCHITECTURE ej_arch OF ej_en IS


SIGNAL a,b,x,y: integer;
BEGIN
p1: PROCESS(a,b)
VARIABLE c: integer;
BEGIN
c:=a; -- Inmediato
x<=c+2;
c:=b; -- Inmediato
y<=c+2;
END PROCESS p1;
END ej_arch;

Sistemas Digitales Programables AREVALO 2019


UN HDL ESTÁNDAR: VHDL (IX)

ESTILOS DE DISEÑO

El objetivo de VHDL es el diseño de sistemas para síntesis RTL


(Register Transfer Level), esto significa que la implementación del
sistema se realiza como si la lógica combinacional estuviera entre
registros.

Sistemas Digitales Programables AREVALO 2019


UN HDL ESTÁNDAR: VHDL (X)

ESTILOS DE DISEÑO

➢ Por su comportamiento (behavior): Por ejemplo una máquina de estados,


donde se definen los estados y las transiciones sin indicar cuántos flipflops
ni qué lógica usar.

➢ A nivel de registros (RTL): Describiendo dónde insertar los elementos de


memoria (registros o flipflop) y la lógica de su interconexión.

➢ A nivel de compuertas: Describiendo cada compuerta y cada conexión, tal


como sucede al usar diagramas esquemáticos.

Sistemas Digitales Programables AREVALO 2019


UN HDL ESTÁNDAR: VHDL (XI)

ESTILOS DE DISEÑO: Ejemplo

Sistemas Digitales Programables AREVALO 2019


UN HDL ESTÁNDAR: VHDL (XII)

ESTILOS DE DISEÑO: Ejemplo

Descripción a Nivel de Registros


ENTITY ejemplo IS
PORT (a,b,c : IN bit;
Resultado : OUT bit);
END ejemplo;

ARCHITECTURE rtl OF ejemplo IS


SIGNAL aux : STD_LOGIC;
BEGIN
aux <= a XOR b;
resultado <= aux XOR c;
END rtl;

Sistemas Digitales Programables AREVALO 2019


UN HDL ESTÁNDAR: VHDL (XIII)
ESTILOS DE DISEÑO: Ejemplo

Descripción Comportamental
ENTITY ejemplo IS
PORT (a,b,c : IN bit;
Resultado : OUT bit);
END ejemplo;

ARCHITECTURE comportamental OF ejemplo IS


BEGIN
PROCESS (a, b, c)
BEGIN
IF ((a XOR b XOR c)='1') THEN
Resultado <= '1';
ELSE
Resultado <= '0';
END IF;
END PROCESS;
END comportamental;

Sistemas Digitales Programables AREVALO 2019


UN HDL ESTÁNDAR: VHDL (XIV)

ESTILOS DE DISEÑO: Ejemplo

Descripción a Nivel de Compuertas o Estructural


ARCHITECTURE estructural OF ejemplo IS

COMPONENT XOR2
PORT (i1,i2: IN STD_LOGIC;
y: OUT STD_LOGIC);
END COMPONENT;

SIGNAL aux : STD_LOGIC;


BEGIN
u1: XOR2 PORT MAP (i1 => a,
i2 => b,
y => aux);
u2: XOR2 PORT MAP (i1 => aux,
i2 => c,
y => Resultado);
END estructural;

Sistemas Digitales Programables AREVALO 2019


TRABAJO EN CLASE
Describir la ENTIDAD para cada uno de los siguientes circuitos:
➢ Compuerta AND de 6 Entradas.
➢ Compuerta OR de 4 Entradas.
➢ Compuerta XOR.
➢ Compuerta NOT.
➢ Multiplexor de 8 a 1.
➢ Flip Flop tipo JK con Preset y Clear.

Sistemas Digitales Programables AREVALO 2019


UN HDL ESTÁNDAR: VHDL (XV)
ELEMENTOS SINTÁCTICOS DEL VHDL

➢ Comentarios: Cualquier línea que empieza por dos guiones “--” es un comentario.
➢ Identificadores: Son cualquier cosa que sirve para identificar variables, señales,
nombres de rutina, etc. Puede ser cualquier nombre compuesto por letras incluyendo
el símbolo de subrayado “_”. Las mayúsculas y minúsculas son consideradas
iguales, así que JOSE y jose representan el mismo elemento. No puede haber
ningún identificador que coincida con alguna de las palabras reservadas del
VHDL.
➢ Números: Cualquier número se considera que se encuentra en base 10. Se admite la
notación científica convencional para números en coma flotante. Es posible poner
números en otras bases utilizando el símbolo del sostenido “#”.
Ejemplo:
2#11000100# y 16#C4# representan el entero 196.
➢ Caracteres: Es cualquier letra o carácter entre comillas simples: 'l','3','t'.
➢ Cadenas de caracteres: Son un conjunto de caracteres englobados por comillas
dobles. Ejemplo: "Esto es una cadena" o " 01010111 ".
Sistemas Digitales Programables AREVALO 2019
UN HDL ESTÁNDAR: VHDL (XVI)
ELEMENTOS SINTÁCTICOS DEL VHDL
➢ Cadenas de bits: Los tipos bit (std_logic) y bit_vector (std_logic_vector) son en
realidad de tipo carácter y matriz de caracteres respectivamente. En VHDL se tiene
una forma de definir números con estos tipos y es mediante la cadena de bits.
Dependiendo de la base en que se especifique el número se puede poner un prefijo B
(binario), O (octal), o X (hexadecimal).
Ejemplo:
B"11101001", O"126", X"FE".
➢ Operadores y expresiones:
• “&” (concatenación). punto<=x&y
• Operadores aritméticos:
– “+” (suma y signo positivo). “-” (resta y signo negativo).
– “**” (exponencial). Sirve para elevar un número a una potencia: 4**2 es 42.
– “ABS()” (valor absoluto).
– “*” (multiplicación).
– “/” (división).
– “MOD” (módulo). Calcula el módulo de dos números. Los operandos sólo pueden
ser enteros. El resultado toma el signo de b.
– “REM” (resto). Calcula el resto de la división entera. Los operandos sólo pueden
ser enteros. El resultado toma el signo del dividendo.

Sistemas Digitales Programables AREVALO 2019


UN HDL ESTÁNDAR: VHDL (XVII)
ELEMENTOS SINTÁCTICOS DEL VHDL
➢ Operadores y expresiones:
• Operadores de desplazamiento:
– “SLL, SRL” (desplazamiento lógico a izquierda y a derecha). Por ejemplo, dato SLL
2 desplaza a izquierda el vector dato, es decir, lo multiplica por 4.
– “SLA, SRA” (desplazamiento aritmético a izquierda y derecha).
– “ROL, ROR” (rotación a izquierda y a derecha) Es como el de desplazamiento pero
los huecos son ocupados por los bits que van quedando fuera.

• Operadores relacionales: Devuelven siempre un valor de tipo booleano (TRUE


o FALSE). Los tipos con los que pueden operar dependen de la operación:
– “=, /=” (igualdad).
– “<, <=, >, >=” (menor o mayor).

• Operadores lógicos:
Son NOT, AND, NAND, OR, NOR y XOR. El funcionamiento es el habitual
para este tipo de operadores. Actúan sobre los tipos bit (std_logic), bit vector
(std_logic_vector) y boolean. En el caso de realizarse estas operaciones sobre
un vector, la operación se realiza bit a bit, incluyendo la operación NOT.

Sistemas Digitales Programables AREVALO 2019


UN HDL ESTÁNDAR: VHDL (XVIII)
ELEMENTOS SINTÁCTICOS DEL VHDL
➢ Tipos de datos:
• Tipos escalares:
• Enteros:
Ejemplos:
TYPE byte IS RANGE 0 TO 255;
TYPE index IS RANGE 7 DOWNTO 1;
TYPE integer IS -2147483647 TO 2147483647; --
Predefinido en el lenguaje

• Físicos:
Ejemplo:
TYPE longitud IS RANGE 0 TO 1.0e9
UNITS
um;
mm=1000 um;
m=1000 mm;
in=25.4 mm;
END UNITS;

Sistemas Digitales Programables AREVALO 2019


UN HDL ESTÁNDAR: VHDL (XIX)
ELEMENTOS SINTÁCTICOS DEL VHDL
➢ Tipos de datos:
• Reales:
Ejemplos:
TYPE nivel IS RANGE 0.0 TO 5.0;
TYPE real IS RANGE -1e38 TO 1e38; -- Predefinido en el
lenguaje

• Enumerados: Son datos que pueden tomar cualquier valor especificado en un conjunto
finito o lista.
Ejemplos:
– TYPE nivel_logico IS (nose,alto,bajo,Z);
– TYPE bit IS ('0','1'); -- Predefinido en el lenguaje

Hay varios tipos enumerados que se encuentran predefinidos en VHDL. Estos tipos son:
severity level, boolean, bit y character.

Sistemas Digitales Programables AREVALO 2019


UN HDL ESTÁNDAR: VHDL (XX)
ELEMENTOS SINTÁCTICOS DEL VHDL
➢ Tipos de datos:
• Tipos compuestos
Son tipos de datos que están compuestos por los tipos de datos escalares vistos
anteriormente.

Matrices: Son una colección de elementos del mismo tipo a los que se accede mediante un
índice. Los hay monodimensionales (un índice o vector) o multidimensionales (varios
índices). Ejemplos:
TYPE word IS ARRAY(31 DOWNTO 0) OF bit;
TYPE transformada IS ARRAY(1 TO 4, 1 TO 4) OF real;
TYPE positivo IS ARRAY(byte RANGE 0 TO 127) OF integer;
TYPE string IS ARRAY(positive RANGE <>) OF character; -- Predefinido en VHDL
TYPE bit_vector IS ARRAY(natural RANGE <>) OF bit; -- Predefinido en VHDL
TYPE vector IS ARRAY(integer RANGE <>) OF real;

Sistemas Digitales Programables AREVALO 2019


UN HDL ESTÁNDAR: VHDL (XXI)
ELEMENTOS SINTÁCTICOS DEL VHDL

➢ Atributos:
Los elementos en VHDL, como señales, variables, etc, pueden tener información
adicional llamada atributos.
Estos atributos están asociados a estos elementos del lenguaje y se manejan en
VHDL mediante la comilla simple “ ' “.

Hay algunos de estos atributos que están predefinidos en el lenguaje, a


continuación se muestran los más interesantes.
Suponiendo que “t” es un tipo escalar, tenemos los siguientes atributos:

•t'LEFT Límite izquierdo del tipo t.


•t'RIGHT Límite derecho del tipo t.
•t'LOW Límite inferior del tipo t.
•t'HIGH Límite superior del tipo t.

Sistemas Digitales Programables AREVALO 2019


UN HDL ESTÁNDAR: VHDL (XXII)
ELEMENTOS SINTÁCTICOS DEL VHDL

➢ Atributos:
Para tipos “t”, “x” miembro de este tipo, y N un entero, se pueden
utilizar los siguientes atributos:

•t'POS(x) Posición de x dentro del tipo t.


•t'VAL(N) Elemento N del tipo t.
•t'LEFTOF(x) Elemento que está a la izquierda de x en t.
•t'RIGHTOF(x) Elemento que está a la derecha de x en t.
•t'PRED(x) Elemento que está delante de x en t.
•t'SUCC(x) Elemento que está detrás de x en t.

Sistemas Digitales Programables AREVALO 2019


UN HDL ESTÁNDAR: VHDL (XXIII)
ELEMENTOS SINTÁCTICOS DEL VHDL

➢ Atributos:
Para “a” siendo un tipo u elemento de tipo matriz, y N un entero de 1 al
número de dimensiones de la matriz, se pueden usar los siguientes
atributos:

•a'LEFT(N) Límite izquierdo del rango de dimensión N de a.


•a'RIGHT(N) Límite derecho del rango de dimensión N de a.
•a'LOW(N) Límite inferior del rango de dimensión N de a.
•a'HIGH(N) Límite superior del rango de dimensión N de a.
•a'RANGE(N) Rango del índice de dimensión N de a.
•a'LENGTH(N) Longitud del índice de dimensión N de a.

Sistemas Digitales Programables AREVALO 2019


UN HDL ESTÁNDAR: VHDL (XXIV)
ELEMENTOS SINTÁCTICOS DEL VHDL

➢ Atributos:
Suponiendo que “s” es una señal, se pueden utilizar los siguientes
atributos (se han tomado los más interesantes):

•s'EVENT Indica si se ha producido un cambio en la señal.


•s'STABLE(t) Indica si la señal estuvo estable durante el último periodo
t.

El atributo 'EVENT es especialmente útil en la definición de circuitos


secuenciales para detectar el flanco de subida o bajada de la señal de
reloj. Es por esto que es probablemente el atributo más utilizado en
VHDL.

Sistemas Digitales Programables AREVALO 2019

También podría gustarte