Está en la página 1de 9

Introduccin a VHDL

Laboratorio de Tecnologa de
Computadores

Pablo Huerta Pellitero

ndice

Elementos Sintcticos
Operadores y Expresiones
Tipos de Datos
Constantes, Variables y Seales
Estructuras Concurrentes de Flujo de
Datos
Estructuras de la Ejecucin Serie
Estructuras para descripcin Estructural
2

Elementos Sintcticos

Comentarios: cualquier lnea que empieza con dos guiones


-- Esto es un comentario
Smbolos especiales: + - / * ( ) . , : ; & < > = | # ** => := /= >= <=
<> -Identificadores: se usan para dar nombre a mdulos, seales,
variables . . . No son sensibles a maysculas/minsculas
Nmeros: por defecto se considera que estn en base 10, para
ponerlos en otras bases se utiliza el smbolo #
2#10100110#
16#A6#

Caracteres: cualquier letra o carcter entre comillas simples


a , 1, Z

Elementos Sintcticos

Cadenas: conjunto de caracteres englobados entre comillas dobles


Esto es una cadena

Cadenas de bits: se indica la base mediante un prefijo


B11101001
O126
XFE

Palabras reservadas: son palabras reservadas del lenguaje, que no


se pueden utilizar como identificadores
ABS, AFTER, AND, ARCHITECTURE, BEGIN, BLOCK, CASE, END,
ENTITY, IN, NAND, NEW, O, OUT, WHEN, WHILE,

Operadores y Expresiones

Operador de concatenacin
&: concatena arrays de forma que el array resultante tiene por
dimensin la suma de las dimensiones de los arrays sobre los que
opera
salida <= x & y

Operadores aritmticos
** : Exponencial. El operador de la izquierda puede ser entero o real, el
de la derecha solo puede ser entero
x ** y

ABS(): Valor absoluto.


*, /: Multiplicacin y divisin
REM: Resto de la divisin entera
5 REM 2 -> dara como resultado 1

+, -: Suma y resta si va entre dos operandos, signo si va al principio de


una expresin
5

Operadores y Expresiones

Operadores relacionales: devuelven siempre un valor booleano


(true, false)
=, /= : Igualdad/desigualdad. Devuelven true si los dos valores son
iguales/distintos y false en caso contrario.
<, <=, >, >= : Menor, menor o igual, mayor y mayor o igual. Solo
pueden manejar valores escalares o matrices de una sola dimensin de
tipos discretos.

Operadores de desplazamiento: solo existen en VHDL93


SLL, SRL: desplazamiento lgico a izquierda y a derecha. Rellena con
ceros los huecos libres.
SLA, SRA: desplazamiento aritmtico a izquierda y derecha. Conserva
el valor que tuviera el bit ms significativo del vector.
ROL, ROR: Rotacin a izquierda y derecha. Funciona como el
desplazamiento, pero los huecos se rellenan con los bits que van
saliendo
6

Operadores y Expresiones

Operadores lgicos: NOT, AND, NAND, OR, NOR, XOR. En


VHDL93 existe tambin XNOR.
El funcionamiento de estos operadores es el habitual. Si se utilizan con
arrays de bits, la operacin se realiza bit a bit.

Tipos de Datos

VHDL es un lenguaje fuertemente tipado. Cualquier objeto en VHDL


debe tener un tipo.
Tipos escalares: Contienen algn tipo de magnitud. Los que vamos
a usar principalmente son:
Enteros: Son datos cuyo contenido es un valor numrico entero. Se
definen mediante la palabra clave RANGE, mediante la que se indica
entre que valores est comprendido el dato.
TYPE byte IS RANGE 0 TO 255;
TYPE integer IS RANGE -2147483648 TO 2147483647;

Enumerados: Son datos que pueden tomar cualquier valor especfico


de una lista.
TYPE bit IS (0, 1);
TYPE estado IS (S0, S1, S2, S3);

Tipos de Datos

Tipos Compuestos: Son tipos de datos compuestos por tipos


escalares. Principalmente vamos a utilizar arrays.
Arrays: Conjunto de elementos del mismo tipo a los que se accede
mediante un ndice.

TYPE word IS ARRAY (31 DOWNTO 0) OF bit;


TYPE bit_vector IS ARRAY (natural RANGE <>) OF bit;
TYPE word IS ARRAY (3 DOWNTO 0) OF byte;
Con la palabra reservada RANGE se declaran arrays que no tienen
predefinido el tamao. El tamao se definir al declarar un dato de ese tipo:
SIGNAL dato: bit_vector(0 TO 15);

Constantes, Variables y Seales

Constantes: Las constantes son elementos que se inicializan con un


valor que no puede ser cambiado.
CONSTANT pi: real := 3.14159;
CONSTANT retraso: time := 10 ns;

Variables: Se diferencia de una constante en que si se puede


cambiar su valor. Se le puede dar valor inicial.
VARIABLE contador: natural := 0;
VARIABLE aux: std_logic_vector(31 DOWNTO 0);

Seales: Se declaran de forma similar a las constantes y variables,


pero pueden ser de 3 tipos: normal, register y bus. Por defecto se
usa el tipo normal.
SIGNAL selec: std_logic := 0;
SIGNAL dato: std_logic_vector (7 DOWNTO 0);
10

Constantes, Variables y Seales

Diferencias:
Las variables solo tienen sentido dentro de un bloque PROCESS o de
un subprograma.
Las seales slo pueden ser declaradas en las arquitecturas, en los
paquetes y en los bloques concurrentes.
Las constantes se pueden declarar en todos los sitios donde se pueden
declarar variables y seales.

Asignacin:
Las variables se asignan con el operador := y las seales con el
operador <=
variable1 := valor;
senyal1 <= valor;

Comportamiento de seales y de variables.


La asignacin a una variable es inmediata.
Las seales actualizan su valor cuando se termina de evaluar el bloque
11
PROCESS

Estructuras Concurrentes de Flujo


de Datos

Asignacin condicional WHEN ELSE


senyal <= valor1 WHEN condicin ELSE valor2;
senyal <= valor1 WHEN condicin1 ELSE
valor2 WHEN condicin2 ELSE
valor3;

Asignacin condicional WITH SELECT WHEN


WITH expresin SELECT
senyal <= valor1 WHEN caso1,
valor2 WHEN caso2,
..
valor_por_defecto WHEN OTHERS;

12

Estructuras de la Ejecucin Serie

Sentencia condicional IF THEN ELSE


Es la estructura tpica para realizar una accin u otra dependiendo del
resultado de una expresin booleana
IF condicin THEN
sentencias
ELSE
sentencias
END IF

Sentencia de seleccin CASE


Similar al switch-case de los lenguajes de programacin
CASE expresin IS
WHEN caso1 => sentencias;
WHEN caso2 => sentencias;
.
WHEN OTHERS => sentencias;
END CASE

13

Estructuras de la Ejecucin Serie

Bucles FOR y WHILE: Son los dos tipos de bucles tpicos de todos
los lenguajes. La parte repetitiva del bucle viene delimitada por las
palabras claves LOOP y END LOOP.
FOR identificador IN rango
LOOP
sentencias;
END LOOP;
WHILE condicin
LOOP
sentencias;
END LOOP;

Interrupcin en bucles NEXT y EXIT:


NEXT detiene la ejecucin de la iteracin actual y salta a la siguiente
EXIT detiene la ejecucin del bucle y sale de l.

14

Estructuras para Descripcin


Estructural

Definicin de Componentes: Se utiliza para hacer referencia a


componentes declarados en otro archivo o biblioteca, y poder
instanciarlos en nuestros diseos.

COMPONENT nombre
GENERIC(lista_parametros);
PORT(lista_puertos);
END COMPONENT

Instanciacin de Componentes: Se utiliza para reproducir


componentes dentro de la arquitectura

nombre: nombre_entidad GENERIC MAP(parametros) PORT MAP(puertos);


15

Estructuras para Descripcin


Estructural

Enlace entre componentes y entidades. Sentencia FOR: Se utiliza para


asociar los componentes instanciados con una de sus arquitecturas en
el caso de tener varias.
FOR lista_refs: nombre_comp USE ENTITY nombre_ent (arquitectura)

Ejemplos:
FOR ALL: inv USE ENTITY work.inversor;
FOR u8, u23: and USE ENTITY work.and2(concurrente);
FOR OTHERS: and2 USE ENTITY work.and2(funcional);

16

Estructuras para Descripcin


Estructural

Repeticin de estructuras: GENERATE. Se usa para unir


estructuras que se repiten varias veces, como por ejemplo el
sumador de N bits del tutorial, formado por N sumadores de 1 bit.
FOR parametro_repetitivo GENERATE
[declaraciones]
BEGIN
[sentencias]

END GENERATE;

17

Bibliografa

VHDL: Lenguaje para sntesis y modelado de circuitos. F.PardoJ.A.Boluda

18

También podría gustarte