Documentos de Académico
Documentos de Profesional
Documentos de Cultura
2a-Introduccion A VHDL
2a-Introduccion A VHDL
Ingeniería Electrónica
Departamento de Automática y Electrónica
¿QUÉ ES UN HDL?
➢Herramienta de especificación.
➢Herramienta de diseño.
➢Herramienta de simulación.
VHDL???
id_instr:
ENTITY nombre IS
GENERIC(lista de propiedades);
PORT(lista de puertos);
END nombre;
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;
id_instr:
ARCHITECTURE nombre_arq OF nombre_entidad IS
declaraciones;
BEGIN
instrucciones;
END nombre_arq;
ESTILOS DE DISEÑO
ESTILOS DE DISEÑO
Descripción Comportamental
ENTITY ejemplo IS
PORT (a,b,c : IN bit;
Resultado : OUT bit);
END ejemplo;
COMPONENT XOR2
PORT (i1,i2: IN STD_LOGIC;
y: OUT STD_LOGIC);
END COMPONENT;
➢ 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.
• 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.
• 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;
• 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.
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;
➢ 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 “ ' “.
➢ Atributos:
Para tipos “t”, “x” miembro de este tipo, y N un entero, se pueden
utilizar los siguientes atributos:
➢ 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:
➢ Atributos:
Suponiendo que “s” es una señal, se pueden utilizar los siguientes
atributos (se han tomado los más interesantes):