Documentos de Académico
Documentos de Profesional
Documentos de Cultura
VHDL-2 Conceptos Basicos
VHDL-2 Conceptos Basicos
EL LENGUAJE VHDL
CONCEPTOS BSICOS
Introduccin
Entidades y arquitecturas
Sentencias y procesos
Objetos
Tipos de datos y operadores
Autores: Luis Entrena Arrontes, Celia Lpez, Mario Garca,
Enrique San Milln, Marta Portela, Almudena Lindoso
1
El lenguaje VHDL
Es un estndar de IEEE
Ampliamente usado, principalmente en Europa
Gran mbito de aplicacin
Lenguaje muy amplio que se adapta bien a las necesidades del
diseo de circuitos digitales desde el nivel de sistema hasta el nivel
lgico
Modelado y simulacin de circuitos digitales en mltiples niveles
de abstraccin
Sntesis lgica, RT y de alto nivel
Caractersticas generales
Jerarqua
Soporte para la utilizacin de bibliotecas de diseo
Diseo genrico
Concurrencia
Estilos de descripcin
Estructural
Comportamental (Behavioral)
EL LENGUAJE VHDL
CONCEPTOS BSICOS
Introduccin
Entidades y arquitecturas
Sentencias y procesos
Objetos
Tipos de datos y operadores
Autor: Luis Entrena Arrontes
6
Entidades y arquitecturas
Entidad de mayor nivel
Entidad 2
Entidad 1
Arquitectura 1
Arquitectura 2
Entidad 3
Entidades
La entidad es el bloque bsico de diseo
La declaracin de entidad contiene
Declaracin de los parmetros genricos de la entidad
La descripcin del interfaz
ENTITY inversor IS
GENERIC (retraso: TIME := 5 NS);
PORT (i1: IN BIT; o1: OUT BIT);
END inversor;
Arquitecturas
La arquitectura define el comportamiento de la entidad
Una entidad puede tener varias arquitecturas asociadas, que
describen el comportamiento de la entidad de diferentes formas.
Dentro de una arquitectura se pueden instanciar otras
entidades, dando lugar a la jerarqua del diseo
ARCHITECTURE ejemplo OF inversor IS
-- Declaraciones
BEGIN
-- Operaciones
o1 <= NOT i1 AFTER retraso;
END ejemplo;
Ejemplo: un semisumador
s
Semisumador
10
El semisumador en VHDL
ENTITY semisumador IS
PORT ( a: IN BIT; b: IN BIT; s: OUT BIT; c: OUT BIT);
END semisumador;
11
Un sumador total
x
y
s
Sumador total
cout
cin
x
y
cin
s
Semisumador
b
c
s_parcial
s
Semisumador
b
c
c_parcial2
c_parcial1
cout
12
13
Asociacin de puertos
La asociacin de puertos se ha realizado por posicin
COMPONENT semisumador
PORT ( a: IN BIT; b: IN BIT; s: OUT BIT; c: OUT BIT);
END COMPONENT;
......
SS0: semisumador PORT MAP (x, y, s_parcial, c_parcial1);
14
COMPONENT semisumador
PORT ( a: IN BIT; b: IN BIT; s: OUT BIT; c: OUT BIT);
END COMPONENT;
......
SS0: semisumador PORT MAP (a => x, b => y , s => s_parcial, c =>c_parcial1);
15
EL LENGUAJE VHDL
CONCEPTOS BSICOS
Introduccin
Entidades y arquitecturas
Sentencias y procesos
Objetos
Tipos de datos y operadores
Autor: Luis Entrena Arrontes
16
Sentencias concurrentes
Se ejecutan a la vez!
Se pueden poner en cualquier orden
El simulador detecta los cambios en los valores de los objetos y
determina cuando tiene que actualizarlos
Sentencias concurrentes
Dos ejemplos equivalentes
ARCHITECTURE a OF circuito IS
BEGIN
g1 <= a OR b;
s <= g1 AND c;
END a;
a
b
c
ARCHITECTURE a OF circuito IS
BEGIN
s <= g1 AND c;
g1 <= a OR b;
END a;
g1
s
18
ARCHITECTURE a OF circuito IS
BEGIN
s <= g1 AND c;
g1 <= a OR b;
END a;
Simulacin:
Si hay un evento en a o b -> Calcular posible nuevo valor de g1
Si hay un evento en g1 o c -> Calcular posible nuevo valor de s
19
Sentencias secuenciales
La concurrencia es difcil de manejar:
Podemos describir un diseo mediante sentencias secuenciales
Sentencias secuenciales:
Se ejecutan una detrs de otra, como en los lenguajes de software
Las sentencias secuenciales van siempre dentro de procesos o de
subprogramas, que determinan la sincronizacin con el resto del
diseo
Entre la ejecucin de una sentencia secuencial y la siguiente no
transcurre el tiempo
20
Procesos
Sirve para describir el hardware mediante sentencias
secuenciales
Contienen
Declaraciones
Sentencias secuenciales
21
22
23
24
EL LENGUAJE VHDL
CONCEPTOS BSICOS
Introduccin
Entidades y arquitecturas
Sentencias y procesos
Objetos
Tipos de datos y operadores
Autor: Luis Entrena Arrontes
25
Clases de objetos
Constantes
Variables
Seales
26
Ejemplos
CONSTANT gnd : BIT := 0;
CONSTANT n, m : INTEGER := 3;
CONSTANT retraso : TIME := 10 NS;
27
28
30
Asignaciones a seales
Si dentro de un mismo proceso se asignan valores diferentes a
una misma seal, solo se ver el ltimo valor asignado
PROCESS (a)
BEGIN
z <= a;
z <= 1;
END PROCESS;
z siempre vale 1
31
Asignaciones a seales
Si una misma seal se asigna en varias sentencias
concurrentes a la vez, existir un driver por cada proceso
El valor de la seal se calcula mediante una funcin de
resolucin
PROCESS (a)
BEGIN
z <= a;
END PROCESS;
z?
PROCESS (b)
BEGIN
z <= b;
END PROCESS;
Funcin
de
resolucin
Valor actual de la seal
(resuelto)
32
Seales
Necesarias para expresar la concurrencia. Es la nica manera de
comunicar los procesos
Asignaciones
De variable
De seal
:=
<=
33
EL LENGUAJE VHDL
CONCEPTOS BSICOS
Introduccin
Entidades y arquitecturas
Sentencias y procesos
Objetos
Tipos de datos y operadores
Autor: Luis Entrena Arrontes
34
ndice
Tipos de datos
Operadores y funciones de conversin
Atributos
Interpretacin de los tipos de datos en la sntesis
35
Tipos de datos
VHDL es un lenguaje que posee un conjunto amplio de tipos de
datos
Todos los tipos de datos llevan asociada una restriccin, que
determina el rango de valores permitido
Tipos
Escalares:
- Enumerado
- Real
- Entero
- Fsico
Compuestos
- Vector/Matriz
- Registro
- Fichero
36
Tipos escalares
Enumerados
Los valores son identificadores o literales de un solo carcter
Pueden ser predefinidos o definidos por el usuario
Entero
Real
Fsicos
Un entero con unidades
Pueden ser predefinidos o definidos por el usuario
El tipo predefinido TIME es el nico que tiene inters
37
Utilizacin
CONSTANT primera_letra: conjunto_de_letras := A;
SIGNAL semaforo1: semaforo;
SIGNAL estado_actual: estados;
...
estado_actual <= s0;
semaforo1 <= verde;
38
('0', '1')
BOOLEAN
(FALSE, TRUE)
CHARACTER
39
40
Para usar los tipos lgicos estndar hay que aadir las
siguientes lneas antes de la declaracin de entidad o
arquitectura donde se utilicen:
LIBRARY ieee;
USE ieee.std_logic_1164.all;
ENTITY...
41
Tipo entero
Declaracin y utilizacin
CONSTANT n: INTEGER := 8;
SIGNAL i, j, k: INTEGER;
...
i <= 3;
42
Tipo REAL
Declaracin y utilizacin
SIGNAL d: REAL;
...
d <= 3.1416;
d <= 10E5;
d <= 2.01E-3;
No es sintetizable
No obstante, existen bibliotecas de componentes para operaciones
con nmeros reales
43
Tipos fsicos
Ejemplo de declaracin y utilizacin
TYPE peso IS RANGE 0 TO 100.000.000
UNITS
gramo;
kilo = 1000 gramo;
tonelada = 1000 kilo;
END UNITS;
SIGNAL p: peso;
SIGNAL t: TIME;
...
t <= 10 NS;
44
46
ARRAYS multidimensionales
Matrices multidimensionales y vectores de vectores
TYPE matriz IS ARRAY(0 TO 479, 0 TO 479) OF STD_LOGIC;
SIGNAL imagen: matriz;
TYPE memoria1 IS ARRAY(0 TO 1023) OF STD_LOGIC_VECTOR(7 DOWNTO 0);
SIGNAL ram1: memoria1;
TYPE memoria2 IS ARRAY(0 TO 1023) OF INTEGER RANGE 0 TO 255;
SIGNAL ram2: memoria2;
Utilizacin
imagen(0,0) <= 1;
ram1(0)(0) <= 1;
ram1(0) <= 00000000;
imagen(0, 0 TO 7) <= 00000000; -- ERROR
47
48
Literales
Smbolos utilizados para representar valores constantes en VHDL
Caracteres: siempre entre comillas simples
'0' '1' 'Z'
49
Alias y subtipos
Los alias permiten dar nombres alternativos a un objeto o a una
parte de l
SIGNAL registro_de_estado: BIT_VECTOR (7 DOWNTO 0);
ALIAS bit_de_acarreo: BIT IS registro_de_estado(0);
ALIAS bit_z: BIT IS registro_de_estado(1);
50
Operadores predefinidos
Clase
Operadores
Tipo de operando
Tipo de resultado
Lgicos
BOOLEAN, BIT,
NOT, AND, OR,
NAND, NOR, XOR STD_LOGIC
Relacionales
cualquier tipo
+, -, *, /,
**,
MOD, REM, ABS
INTEGER, REAL,
INTEGER, REAL,
Fsico,
Fsico,
STD_LOGIC_VECTOR STD_LOGIC_VECTOR
&
Aritmticos
Concatenacin
BOOLEAN, BIT,
STD_LOGIC
BOOLEAN
ARRAY
51
MOD y REM
Resto de la divisin:
MOD toma el signo del divisor
REM toma el signo del dividendo
5 rem 3 = 2
5 mod 3 = 2
(5) rem 3 = 2
(5) mod 3 = 1
(5) rem (3) = 2
(5) mod (3) = 2
5 rem (3) = 2
5 mod (3) = 1
52
USE IEEE.STD_LOGIC_SIGNED.ALL;
...
54
modernamente:
USE IEEE.NUMERIC_STD.ALL;
USE IEEE.STD_LOGIC_ARITH.ALL;
...
55
Funciones de conversin
Para la conversin entre tipos de datos existen algunas
funciones predefinidas
CONV_INTEGER
CONV_STD_LOGIC_VECTOR
56
Concatenacin y agregacin
La concatenacin permite concatenar vectores
SIGNAL s1, s2 : BIT_VECTOR ( 0 TO 3 );
SIGNAL x, z : BIT_VECTOR ( 0 TO 7 );
...
z <= s1 & s2;
z <= x(0 TO 6) & '0';
57
Atributos
Denotan valores, funciones, tipos o rangos asociados con
varios elementos del lenguaje
Pueden ser definidos por el usuario o predefinidos
Atributos predefinidos
Atributos de arrays: permiten acceder al rango, longitud o extremos
de un array
Atributos de tipos: permiten acceder a elementos de un tipo
Atributos de seales: permiten modelar propiedades de las seales
58
Atributos de arrays
SIGNAL d: STD_LOGIC_VECTOR(15 DOWNTO 0)
Atributo
Descripcin
Ejemplo
Resultado
LEFT
15
RIGHT
Lmite derecho
dRIGHT
HIGH
Lmite superior
dHIGH
15
LOW
Lmite inferior
dLOW
RANGE
Rango
dRANGE
15 DOWNTO 0
REVERSE_RANGE
Rango inverso
dREVERSE_RANGE
0 TO 15
LENGTH
Longitud
dLENGTH
16
59
Atributos de tipos
TYPE qit IS (0, 1, Z, X);
SUBTYPE tit IS qit RANGE 0 TO Z;
Atributo
Descripcin
Ejemplo
Resultado
BASE
titBASE
qit
LEFT
titLEFT
RIGHT
titRIGHT
HIGH
titHIGH
LOW
titLOW
POS(v)
titPOS(X)
VAL(p)
titVAL(3)
SUCC(v)
titSUCC(Z)
PRED(v)
titPRED(1)
LEFTOF(v)
titLEFTOF(1)
RIGHTOF(v)
titRIGHTOF(1)
60
Atributos de seales
Atributo
Tipo
Descripcin
DELAYED(t)
Seal
STABLE(t)
Seal
BOOLEAN
Valor
BOOLEAN
Valor TIME
EVENT
LAST_EVENT
LAST_VALUE
QUIET(t)
ACTIVE
LAST_ACTIVE
Valor
Seal
BOOLEAN
Valor
BOOLEAN
Valor TIME
61
Atributos de seales
62
Ejemplo
63
-- 32 bits
-- 3 bits
Enumerados:
Se sintetizan como un nmero en binario natural, asignando un
cdigo binario a cada valor en orden de aparicin
64
Uso de atributos
Atributos de arrays: son tiles y sintetizables
Atributos de tipos: pueden ser sintetizables, aunque no se suelen
utilizar
Atributos de seales: EVENT es el ms usado. Los dems no son
sintetizables, salvo STABLE
65
Valores iniciales
Simulacin:
Para poder simular un diseo, todas las seales y variables deben
de tener un valor inicial. El valor inicial se puede aadir en la
declaracin del objeto
Si no se especifica un valor inicial, el lenguaje asume un valor por
defecto. En tipos enumerados es el primero por la izquierda
TYPE estado IS (S0, S1, S2, S3);
SIGNAL s: estado := S3;
SIGNAL s: estado;
SIGNAL a: BIT;
SIGNAL b: STD_LOGIC;
-- Valor inicial: S3
-- Valor inicial: S0
-- Valor inicial: '0'
-- Valor inicial: 'U'
66
Valores iniciales
Sntesis
Los sintetizadores no tienen en cuenta los valores iniciales
La inicializacin debe de hacerse en el propio diseo (tal como
ocurre en el hardware real)
SIGNAL b: STD_LOGIC;
....
PROCESS (reset, ....)
BEGIN
IF reset = '1' THEN
b <= '0';
...
67