Вы находитесь на странице: 1из 34

Circuitos Integrados y Microelectrnica

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

Circuitos Integrados y Microelectrnica

Historia del VHDL


1980: Programa VHSIC (Very High Speed Integrated Circuit) del Departamento de Defensa de E.E.U.U. 1983: Comienzan los trabajos para desarrollar el VHDL 1987: Aparece el estndar IEEE 1076-1987 1994: Nueva versin del estndar: IEEE 1076-1993 1996: Aparecen las primeras herramientas que soportan la nueva versin del estndar
Nos centraremos en la versin de 1987 ya que es la versin ms universalmente aceptada

2002: Nueva versin con pequeas modificaciones

Circuitos Integrados y Microelectrnica

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

Circuitos Integrados y Microelectrnica

Caractersticas generales
Jerarqua Soporte para la utilizacin de bibliotecas de diseo Diseo genrico Concurrencia Estilos de descripcin
Estructural Comportamental (Behavioral)

Soporte para simulacin (modelado) y sntesis


VHDL sintetizable es un subconjunto del VHDL simulable

Circuitos Integrados y Microelectrnica

Sintaxis utilizada durante el curso


Letras maysculas para las palabras reservadas del lenguaje Los corchetes [ ] indican clasulas opcionales de los comandos La barra vertical | indica elementos alternativos Los comentarios se indicarn de la misma manera que en VHDL, con dos guiones - Los ejemplos con cdigo VHDL se encierran siempre en un recuadro

Circuitos Integrados y Microelectrnica

EL LENGUAJE VHDL CONCEPTOS BSICOS


Introduccin Entidades y arquitecturas Sentencias y procesos Objetos Tipos de datos y operadores
Autor: Luis Entrena Arrontes
6

Circuitos Integrados y Microelectrnica

Entidades y arquitecturas
Entidad de mayor nivel Entidad 2 Entidad 1 Arquitectura 1 Arquitectura 2 Entidad 3

Circuitos Integrados y Microelectrnica

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;

Circuitos Integrados y Microelectrnica

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;

Circuitos Integrados y Microelectrnica

Ejemplo: un semisumador

a Semisumador b

s c

Ecuaciones del semisumador


s = a xor b c = a and b

10

Circuitos Integrados y Microelectrnica

El semisumador en VHDL

ENTITY semisumador IS PORT ( a: IN BIT; b: IN BIT; s: OUT BIT; c: OUT BIT); END semisumador;

ARCHITECTURE simple OF semisumador IS BEGIN s <= a XOR b; c <= a AND b; END simple;

11

Circuitos Integrados y Microelectrnica

Un sumador total
x y cin s Sumador total cout

x y cin

s Semisumador b c

s_parcial a s Semisumador b c c_parcial1 s c_parcial2

cout

12

Circuitos Integrados y Microelectrnica

El sumador total en VHDL


ENTITY sumador_total IS PORT ( x: IN BIT; y: IN BIT; cin: IN BIT; s: OUT BIT; cout: OUT BIT); END sumador_total; ARCHITECTURE estructural OF sumador_total IS COMPONENT semisumador PORT ( a: IN BIT; b: IN BIT; s: OUT BIT; c: OUT BIT); END COMPONENT; SIGNAL s_parcial: BIT; SIGNAL c_parcial1, c_parcial2: BIT; BEGIN SS0: semisumador PORT MAP (x, y, s_parcial, c_parcial1); SS1: semisumador PORT MAP (s_parcial, cin, s, c_parcial2); cout <= c_parcial1 OR c_parcial2; END estructural;

13

Circuitos Integrados y Microelectrnica

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

Circuitos Integrados y Microelectrnica

Asociacin de puertos explcita


Alternativamente, la asociacin tambin se puede indicar explcitamente

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

Circuitos Integrados y Microelectrnica

EL LENGUAJE VHDL CONCEPTOS BSICOS


Introduccin Entidades y arquitecturas Sentencias y procesos Objetos Tipos de datos y operadores
Autor: Luis Entrena Arrontes
16

Circuitos Integrados y Microelectrnica

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

Todas las sentencias dentro de una arquitectura son concurrentes


ARCHITECTURE estructural OF sumador_total IS ... BEGIN SS0: semisumador PORT MAP (x, y, s_parcial, c_parcial1); SS1: semisumador PORT MAP (s_parcial, cin, s, c_parcial2); cout <= c_parcial1 OR c_parcial2; END estructural;
17

Circuitos Integrados y Microelectrnica

Sentencias concurrentes
Dos ejemplos equivalentes
ARCHITECTURE a OF circuito IS BEGIN g1 <= a OR b; s <= g1 AND c; END a; ARCHITECTURE a OF circuito IS BEGIN s <= g1 AND c; g1 <= a OR b; END a;

a b c

g1 s
18

Circuitos Integrados y Microelectrnica

Simulacin de sentencias concurrentes


ARCHITECTURE a OF circuito IS BEGIN g1 <= a OR b; s <= g1 AND c; END a; 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

Cada sentencia se ejecuta tantas veces como sea necesario


El orden en que se escriben las sentencias es irrelevante!

19

Circuitos Integrados y Microelectrnica

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

Circuitos Integrados y Microelectrnica

Procesos
Sirve para describir el hardware mediante sentencias secuenciales Contienen
Declaraciones Sentencias secuenciales

El proceso debe de tener una lista de sensibilidad explcita o al menos una sentencia WAIT Los procesos se ejecutan cuando
ocurre un evento en alguna de las seales de su lista de sensibilidad, o se cumplen las condiciones de disparo de la sentencia WAIT en la que se par

Los procesos se ejecutan indefinidamente de forma cclica

21

Circuitos Integrados y Microelectrnica

Ejemplo de proceso (I)


ARCHITECTURE una OF ejemplo IS BEGIN Lista de sensibilidad PROCESS ( i1 ) VARIABLE a: BIT; BEGIN a := NOT i1; -- Sentencia secuencial o1 <= a; -- Sentencia secuencial END PROCESS; END ejemplo;

El proceso se dispara cuando i1 cambia de valor Las sentencias dentro del proceso se ejecutan secuencialmente

22

Circuitos Integrados y Microelectrnica

Ejemplo de proceso (II)


ARCHITECTURE dos OF ejemplo IS BEGIN PROCESS VARIABLE a: BIT; BEGIN a := NOT i1; -- Sentencia secuencial o1 <= a; -- Sentencia secuencial WAIT ON i1; -- Sentencia secuencial END PROCESS; END ejemplo;

La ejecucin del proceso se para en la sentencia WAIT La ejecucin se reanuda cuando i1 cambia de valor Si se llega al final del proceso, se vuelve a comenzar por el principio

23

Circuitos Integrados y Microelectrnica

Algunas recomendaciones para la sntesis


No utilizar clasulas AFTER en descripciones que vayan a ser sintetizadas
Los sintetizadores suelen ignorar la clasula AFTER en las asignaciones, ya que el retraso depende de la tecnologa utilizada y no se puede fijar en el diseo

Utilizar procesos con lista de sensibilidad


La sentencia WAIT slo es sintetizable en casos muy concretos La sentencia WAIT slo es admitida por algunos sintetizadores

24

Circuitos Integrados y Microelectrnica

EL LENGUAJE VHDL CONCEPTOS BSICOS


Introduccin Entidades y arquitecturas Sentencias y procesos Objetos Tipos de datos y operadores
Autor: Luis Entrena Arrontes
25

Circuitos Integrados y Microelectrnica

Clases de objetos

Constantes Variables Seales

Similares a las de los lenguajes de programacin convencionales Representan seales hardware cuyos valores evolucionan en el tiempo

26

Circuitos Integrados y Microelectrnica

Clases de objetos: Constantes


Presentan un valor constante Se pueden declarar en cualquier mbito
CONSTANT nombre1, nombre2, ..., nombren: tipo [ := valor ];

Ejemplos
CONSTANT gnd : BIT := 0; CONSTANT n, m : INTEGER := 3; CONSTANT retraso : TIME := 10 NS;

27

Circuitos Integrados y Microelectrnica

Clases de objetos: Variables


Pueden cambiar de valor El cambio de valor se produce inmediatamente tras la asignacin Slo se pueden declarar en mbitos secuenciales, es decir, dentro de procesos o subprogramas Slo son visibles dentro del proceso o subprograma en el que estn declaradas. No existen variables globales
VARIABLE nombre1, nombre2, ..., nombren: tipo [ := valor ]; VARIABLE una_variable : BIT := 1; VARIABLE i, j, k: INTEGER;

28

Circuitos Integrados y Microelectrnica

Clases de objetos: Seales


Sus valores tienen siempre un componente temporal asociado Cuando se asigna un valor a una seal, el cambio de valor no se produce inmediatamente, sino despus del tiempo especificado para que se produzca. El par (valor, tiempo) se denomina transaccin Slo se pueden declarar en mbitos concurrentes, pero puede ser visibles en mbitos secuenciales, es decir, dentro de un proceso o subprograma
SIGNAL nombre1, nombre2, ..., nombren: tipo [ := valor ]; SIGNAL una_seal : BIT := 1; SIGNAL i, j, k: INTEGER;
29

Circuitos Integrados y Microelectrnica

Simulacin de seales: Drivers


En cada proceso donde se asigna un valor a una seal, existe un driver para dicha seal El driver de una seal almacena una cola de transacciones que representan los valores futuros de la seal. La primera transaccin en un driver es el valor actual del driver El kernel se encarga de actualizar el valor de las seales a medida que avanza el tiempo: cuando la componente temporal de una transaccin se iguala al tiempo actual, la seal se actualiza con el valor del driver

30

Circuitos Integrados y Microelectrnica

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

Circuitos Integrados y Microelectrnica

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; PROCESS (b) BEGIN z <= b; END PROCESS;

z?
Funcin de resolucin Valor actual de la seal (resuelto)

32

Circuitos Integrados y Microelectrnica

Consideraciones acerca del uso de variables y seales


Variables:
Son locales a los procesos. Slo sirven para almacenar valores locales o intermedios Ocupan menos espacio en memoria y son ms eficientes en la simulacin, ya que su actualizacin es inmediata

Seales
Necesarias para expresar la concurrencia. Es la nica manera de comunicar los procesos

Asignaciones
De variable De seal := <=

33

Circuitos Integrados y Microelectrnica

EL LENGUAJE VHDL CONCEPTOS BSICOS


Introduccin Entidades y arquitecturas Sentencias y procesos Objetos Tipos de datos y operadores
Autor: Luis Entrena Arrontes
34

Circuitos Integrados y Microelectrnica

ndice
Tipos de datos Operadores y funciones de conversin Atributos Interpretacin de los tipos de datos en la sntesis

35

Circuitos Integrados y Microelectrnica

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 - Registro

Compuestos
- Vector/Matriz

- Fichero

36

Circuitos Integrados y Microelectrnica

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

Circuitos Integrados y Microelectrnica

Tipos enumerados definidos por el usuario


Declaracin de tipo
TYPE conjunto_de_letras IS (A, B, C, D); TYPE semaforo IS (verde, amarillo, rojo); TYPE estados IS (s0, s1, s2, s3, s4, s5);

Utilizacin
CONSTANT primera_letra: conjunto_de_letras := A; SIGNAL semaforo1: semaforo; SIGNAL estado_actual: estados; ... estado_actual <= s0; semaforo1 <= verde;

38

Circuitos Integrados y Microelectrnica

Tipos enumerados predefinidos


BIT BOOLEAN CHARACTER ('0', '1') (FALSE, TRUE) (NUL, SOH, ..., 'A', 'B', ...)

STD_LOGIC (definido en el estndar IEEE 1164) ('U', 'X', '0', '1', 'Z', 'W', 'L', 'H', '-')

39

Circuitos Integrados y Microelectrnica

Tipo lgico estndar


Definido por el estndar IEEE 1164. Es ampliamente utilizado Es un tipo enumerado para lgica de mltiples valores
U X 0 1 Z W L H - - Sin inicializar. Es el valor por defecto - Desconocido (fuerte) - Cero lgico (fuerte). Seal puesta a tierra - Uno lgico (fuerte). Seal puesta a alimentacin - Alta impedancia - Desconocido (dbil) - Cero (dbil). Resistencias pull-down - Uno (dbil). Resistencias pull-up - Valor indiferente (dont-care). Usado en sntesis

40

Circuitos Integrados y Microelectrnica

Tipo lgico estndar


Existen dos variantes del tipo lgico estndar
STD_ULOGIC: tipo no resuelto STD_LOGIC: tipo resuelto
Una seal STD_LOGIC puede tener varios drivers La funcin de resolucin asigna un valor 'X' si los valores de los drivers no son compatibles

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

Circuitos Integrados y Microelectrnica

Tipo entero
Declaracin y utilizacin
CONSTANT n: INTEGER := 8; SIGNAL i, j, k: INTEGER; ... i <= 3;

Es conveniente indicar un rango


Delimita el tamao de bits en la sntesis La simulacin da un error en caso de que el rango se exceda
SIGNAL valor_bcd: INTEGER RANGE 0 TO 9;

42

Circuitos Integrados y Microelectrnica

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

Circuitos Integrados y Microelectrnica

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;

El tipo fsico ms importante es el tipo predefinido TIME


FS PS NS US MS SEC MIN HR femtosegundo = 10-15 seg. picosegundo = 10-12 seg. nanosegundo = 10-9 seg. microsegundo = 10-6 seg. milisegundo = 10-3 seg. segundo minuto = 60 seg. hora = 60 minutos SIGNAL t: TIME; ... t <= 10 NS;

44

Circuitos Integrados y Microelectrnica

Tipos compuestos: ARRAY


Todos los elementos son del mismo tipo, que puede ser cualquier tipo VHDL
TYPE byte IS ARRAY ( 7 DOWNTO 0 ) OF STD_LOGIC; SIGNAL s: byte;

Se puede referenciar un elemento o un subconjunto de ellos


s <= 00000000; s(2) <= 1; s(4 downto 3) <= 00;

El sentido puede ser ascendente (TO) o descendente (DOWNTO)


Los subconjuntos deben tener el mismo sentido que el vector del que proceden
45

Circuitos Integrados y Microelectrnica

Tipos compuestos: ARRAY


Vectores de tamao no especificado (el tamao se especifica en una declaracin posterior)
TYPE bit_vector IS ARRAY (NATURAL RANGE <>) OF BIT; SIGNAL s: bit_vector (7 DOWNTO 0);

Los vectores de BIT y STD_LOGIC estn predefinidos


SIGNAL s: BIT_VECTOR (7 DOWNTO 0); SIGNAL a: STD_LOGIC_VECTOR (7 DOWNTO 0);

46

Circuitos Integrados y Microelectrnica

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

Circuitos Integrados y Microelectrnica

Tipos compuestos: RECORD


Los elementos son de tipos diferentes
TYPE tipo_opcode IS (sta, lda, add, sub, and, nop, jmp, jsr); TYPE tipo_operando IS BIT_VECTOR (15 DOWNTO 0); TYPE formato_de_instruccion IS RECORD opcode : tipo_opcode; operando: tipo_operando; END RECORD; SIGNAL ins1: formato_de_instruccn := (nop, 0000000000000000); ins1.opcode <= lda; ins1.operando <= 0011111100000000;

48

Circuitos Integrados y Microelectrnica

Literales
Smbolos utilizados para representar valores constantes en VHDL Caracteres: siempre entre comillas simples
'0' '1' 'Z'

Cadenas de caracteres: entre dobles comillas


"Esto es un mensaje" "00110010"

Cadenas de bits: un prefijo indica el cdigo utilizado


SIGNAL b: BIT_VECTOR (7 DOWNTO 0); b <= B"11111111"; -- Binario b <= X"FF"; -- Hexadecimal b <= O"377"; -- Octal

49

Circuitos Integrados y Microelectrnica

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);

Los subtipos definen un subconjunto de un tipo definido previamente


SUBTYPE diez_valores IS INTEGER RANGE 0 TO 9;

50

Circuitos Integrados y Microelectrnica

Operadores predefinidos
Clase Lgicos Operadores Tipo de operando Tipo de resultado
BOOLEAN, BIT, STD_LOGIC BOOLEAN

BOOLEAN, BIT, NOT, AND, OR, NAND, NOR, XOR STD_LOGIC

Relacionales Aritmticos

=, /=, <, <=, >, >= +, -, *, /, **, MOD, REM, ABS &

cualquier tipo

INTEGER, REAL, INTEGER, REAL, Fsico, Fsico, STD_LOGIC_VECTOR STD_LOGIC_VECTOR ARRAY & ARRAY ARRAY & elemento ARRAY

Concatenacin

51

Circuitos Integrados y Microelectrnica

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

Circuitos Integrados y Microelectrnica

Operandos con signo y sin signo


El resultado de algunas operaciones aritmticas sobre vectores de bits puede ser diferente dependiendo de si se consideran en una representacin con signo o sin signo:
TRUE sin signo (15 > 0)
"1111" > "0000"

FALSE con signo (-1 < 0)

Existen dos posibles soluciones:


Utilizar dos conjuntos de operadores diferenciados:
STD_LOGIC_UNSIGNED para operaciones sin signo STD_LOGIC_SIGNED para operaciones con signo

Utilizar tipos de datos diferentes:


UNSIGNED para operaciones sin signo SIGNED para operaciones con signo
53

Circuitos Integrados y Microelectrnica

Operandos con signo y sin signo


Ejemplo de la primera solucin
USE IEEE.STD_LOGIC_UNSIGNED.ALL; ... USE IEEE.STD_LOGIC_SIGNED.ALL; ...

"1111" > "0000" -- sin signo

"1111" > "0000" -- con signo

Los paquetes STD_LOGIC_UNSIGNED y STD_LOGIC_SIGNED definen las mismas operaciones de forma diferente, por lo que no se pueden aplicar los dos a la vez sobre una misma unidad de diseo

54

Circuitos Integrados y Microelectrnica

Operandos con signo y sin signo


Ejemplo de la segunda solucin
USE IEEE.STD_LOGIC_ARITH.ALL; ...

modernamente: USE IEEE.NUMERIC_STD.ALL;

SIGNAL u1, u2: UNSIGNED(3 DOWNTO 0); SIGNAL s1, s2: SIGNED(3 DOWNTO 0); -- sin signo u1 >u2 UNSIGNED("1111") > UNSIGNED("0000") -- con signo s1 > s2 SIGNED("1111") > SIGNED("0000")

55

Circuitos Integrados y Microelectrnica

Funciones de conversin
Para la conversin entre tipos de datos existen algunas funciones predefinidas
CONV_INTEGER CONV_STD_LOGIC_VECTOR

Estas funciones estn definidas en STD_LOGIC_ARITH


USE IEEE.STD_LOGIC_ARITH.ALL; ... SIGNAL s : STD_LOGIC_VECTOR ( 7 DOWNTO 0 ); SIGNAL i : INTEGER RANGE 0 TO 255; ... i <= CONV_INTEGER(s); s <= CONV_STD_LOGIC_VECTOR(i, 8)

56

Circuitos Integrados y Microelectrnica

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';

La agregacin permite conjuntar elementos para crear datos de un tipo compuesto (ARRAY o RECORD)
s1 <= ( 0, 1, 0, 0 ); -- Equivalente a s1 <= 0100; s1 <= ( 2 => 1, OTHERS => 0); -- Equivalente a s1 <= 0010; s1 <= ( 0 to 2 => 1, 3 => s2(0) );

57

Circuitos Integrados y Microelectrnica

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

Circuitos Integrados y Microelectrnica

Atributos de arrays
SIGNAL d: STD_LOGIC_VECTOR(15 DOWNTO 0)

Atributo LEFT RIGHT HIGH LOW RANGE REVERSE_RANGE LENGTH

Descripcin

Ejemplo

Resultado 15 0 15 0 15 DOWNTO 0 0 TO 15 16

Lmite izquierdo dLEFT Lmite derecho Lmite superior Lmite inferior Rango Rango inverso Longitud dRIGHT dHIGH dLOW dRANGE dREVERSE_RANGE dLENGTH

59

Circuitos Integrados y Microelectrnica

Atributos de tipos
TYPE qit IS (0, 1, Z, X); SUBTYPE tit IS qit RANGE 0 TO Z;
Atributo BASE LEFT RIGHT HIGH LOW POS(v) VAL(p) SUCC(v) PRED(v) LEFTOF(v) RIGHTOF(v) Descripcin Base del tipo Lmite izquierdo (subtipo) Lmite derecho (subtipo) Lmite superior (subtipo) Lmite inferior (subtipo) Posicin de v (tipo base) Valor en la posicin p (t. base) Valor siguiente a v (tipo base) Valor anterior a v (tipo base) Valor a la izquierda de v (t. base) Valor a la derecha de v (t. base) Ejemplo titBASE titLEFT titRIGHT titHIGH titLOW titPOS(X) titVAL(3) titSUCC(Z) titPRED(1) titLEFTOF(1) titRIGHTOF(1) Resultado qit 0 Z Z 0 3 X X 0 0 Z

60

Circuitos Integrados y Microelectrnica

Atributos de seales
Atributo DELAYED(t) STABLE(t) EVENT LAST_EVENT LAST_VALUE QUIET(t) ACTIVE LAST_ACTIVE Tipo Seal Seal BOOLEAN Valor BOOLEAN Valor TIME Valor Seal BOOLEAN Valor BOOLEAN Valor TIME Descripcin Genera una seal exactamente igual, pero retrasada t Vale TRUE si la seal no ha cambiado de valor durante t Vale TRUE si la seal ha tenido un evento Tiempo transcurrido desde el ltimo evento de la seal El valor de la seal antes del ltimo evento Vale TRUE si la seal no ha recibido ninguna transaccin durante t Vale TRUE si la seal ha tenido una transaccin Tiempo transcurrido desde la ltimo transaccin en la seal Cambia de valor cada vez que la seal recibe una transaccin

TRANSACTION Seal BIT

61

Circuitos Integrados y Microelectrnica

Atributos de seales

62

Circuitos Integrados y Microelectrnica

Atributos definidos por el usuario


Se pueden definir atributos de entidades, arquitecturas, tipos, objetos, etc... Primero hay que declarar el tipo del atributo
ATTRIBUTE <nombre_atributo> : <tipo>;

Despus hay que especificar su valor


ATTRIBUTE <nombre_atributo> OF <item> : <clase> IS <valor> ;
mi_diseo es una entidad

Ejemplo

ATTRIBUTE tecnologia : STRING; ATTRIBUTE tecnologia OF circuito: ENTITY IS CMOS; ... ... circuitotecnologia ...

63

Circuitos Integrados y Microelectrnica

Interpretacin de los tipos de datos para la sntesis


INTEGER:
Se sintetiza como un nmero en binario natural. Si el rango contiene valores negativos se sintetiza como un nmero en complemento a 2 Es importante indicar el rango para que la sntesis sea eficiente
SIGNAL a: INTEGER; SIGNAL b: INTEGER RANGE 0 TO 7; -- 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

Circuitos Integrados y Microelectrnica

Interpretacin de los tipos de datos para la sntesis


No son sintetizables
REAL Fsicos Punteros Ficheros

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

Circuitos Integrados y Microelectrnica

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

Circuitos Integrados y Microelectrnica

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

Вам также может понравиться