Sei sulla pagina 1di 20

V.

Elementos de la Arquitectura

Tipos de Datos

Todos los sistemas digitales manejan la informacin como bits o vectores de bits. Sin embargo no es posible ni conveniente usar slo estos tipos para todos los datos.
Por ejemplo, para una memoria:
Convendra usar nmeros Decimales o Hexadecimales
Convendra usar un arreglo de Bytes

RAM

1k x 8

Arreglo de bits
Los tipos bit y bit_vector no se ajustan, el tipo aplicable es Time (que es un tipo fsico)

Decodificador de direcciones

Control Tiempo de Acceso 10 nS

Por lo tanto, VHDL debe incluir otros tipos de datos.


2

Tipos Escalares
Booleano :
Declarado como: type BOOLEAN is (false, true); Descripcin: Los valores Booleanos son TRUE/FALSE que no necesariamente son iguales a 0/1. Es decir , TRUE no es lo mismo que 1 y viceversa. Bit y Boolean son dos tipos diferentes. Ejemplos: True, false

Caracter :
Declarado como: type CHARACTER is (null, . . ., a, b, c, . . . ); Descripcin: Cubre todos los caracteres definidos en el conjunto que establece la definicin ISO 8859-1 (Conocida tambin como Latn 1). Ejemplos: 0, *, , A, }

Entero :
Declarado como: type INTEGER is range 2147483647 to 2147483647; Descripcin: El rango de un entero depende del rango especificado en la definicin. Usualmente es limitado a sub-conjuntos completos (p. Ej., 0 a 15, 0 a 99, etc.), para reducir el nmero de recursos de almacenamiento. Ejemplos: 12, 0, 2147483646, -100, 16

Real :
Declarado como: type REAL is range 1.0 E308 to 1.0 E308; Descripcin: Tambin es conocido como Punto flotante, por lo general se maneja un sub-rango que depende de la aplicacin. Todas las implementaciones deben garantizar un mnimo de 6 bits de precisin. Ejemplos: 0.0, 1.000001, -1.0 e5

Bit :
Declarado como: type BIT is (0, 1); Descripcin: El tipo Bit es una enumeracin que define dos valores lgicos estndares: 0 y 1. Es el nico que puede usarse para operaciones lgicas. Ejemplos: 0, 1

Enumeraciones: Tipos definidos por el usuario.


Son sistemas de informacin disponibles para que el diseador pueda contar con mayor informacin, o mayor entendimiento. Un ejemplo clsico es una Mquina de Estados Finitos (FSM) representando un diseo secuencial. Para propsitos de sntesis, cada estado es codificado con variables de estado (Flip-Flops) para almacenar la informacin del estado actual. Sin embargo, al nivel de especificacin conviene mas asignar un nombre a cada estado.

Ejemplo de una Enumeracin


IDLE

EXECUTE

FETCH

DECODE

type EstadosFSM is (IDLE, FETCH, DECODE, EXECUTE);

Tipos Fisicos
Los tipos fsicos son nicos en VHDL, ya que no slo especifican los valores de los objetos sino tambin sus unidades. El estndar de VHDL slo incluye un tipo fsico: El tiempo (Time), pero otros tipos pueden tambin definirse.
Type time is range 2147483647 to 2147483647 units fs; ps = 1000 fs; ns = 1000 ps; us = 1000 ns; ms = 1000 us; sec = 1000 ms; min = 60 sec; -- Primarias -- Secundarias

hor = 60 min;
end units; 7

Arreglos
Son tipos complejos con una estructura regular que contiene elementos del mismo tipo. El nmero de elementos est especificado en el mismo rango del arreglo. El rango puede ser ilimitado: range < > (aunque no es lo ms conveniente).

Hay dos arreglos pre-definidos en VHDL : Bit_Vector Con elementos del tipo Bit, y String Con elementos de tipo carcter. Si estos arreglos se declaran con rango ilimitado, difieren en su limite inferior por default en el bit_vector es 0 y en un string es 1.
Ejemplo: Signal
7 6 5 4

DataBus : bit_vector ( 7 downto 0 );


3 2 1 0

0 1 0 0 1 1 0 1
MSB LSB

nico elemento (comilla simple): DataBus( 7 ) = 0; DataBus( 3 ) = 1; Dos o mas elementos (comilla doble): DataBus = 01001101; DataBus( 5 downto 3) = 001;

Arreglos . . .
Puesto que los arreglos slo tienen una dimensin, estos son conocidos como vectores. El usuario puede declarar arreglos con dimensiones mayores, aunque tres o mas son poco tratables.

Un ejemplo tpico es una memoria: Ej. Memoria de 1 K x 4


0

Type memory1k4 : Array ( 0 to 1023 ) of Bit_Vector ( 3 downto 0 );


Signal Memory : memory1k4;

1 2 3

1019 1020 Es una especie de Vector de Vectores. 1021 1022 1023

Registros (records)
Tambin son tipos complejos, difieren de los arreglos en que sus elementos pueden ser de diferentes tipos y son referenciados por su nombre y no por un ndice.
Ejemplo :
Type Instr_T mnemonico opcode CiclosEx End record; Signal is : : : record String ( 1 to 14 ); Bit_Vector ( 3 downto 0 ); Integer;

Instr1, Instr2, Instr3 : Instr_T;

Instr1.mnemonico = add reg1 reg2; Instr1.opcode = 0010; Instr1.CiclosEx = 2; Instr2.mnemonico = xor reg1 reg2; Instr2.opcode = 0001; Instr2.CiclosEx = 1; Instr3.mnemonico = mul reg1 reg2; Instr3.opcode = 1110; Instr3.CiclosEx = 8;

Nota : No todos los records son sintetizables, pero la mayora de herramientas que sintetizan cubren los records que incluyen los tipos: bit, bit_vector, boolean y integer.

10

Operadores y Expresiones
Aparte de los sistemas triviales, las seales de entrada deben ser transformadas de alguna forma para generar las seales de salida deseadas. Outputs <- transformaciones( inputs ) Las transformaciones son realizadas por expresiones : Frmulas que consisten de operadores con un apropiado nmero de operandos. Entonces una especificacin del comportamiento de un sistema puede ser vista como un conjunto ordenado de expresiones aplicadas sobre las seales de entrada.

Operadores Lgicos:
AND, OR, NAND, NOR, XOR y XNOR ( binarios ) NOT ( unario ) Aplicables en los tipos: Bit, Booleano y Bit_Vector (Ambos operandos deben ser del mismo tipo).
11

Operadores Numricos:
OPERADOR SIMBOLO EJEMPLOS DE USO

Suma
Resta Producto Divisin Mdulo Residuo Exponenciacin Valor Absoluto

+
* / Mod Res ** Abs

IntX1 + 17, RealX2 + 2.0


BusWidth 1

A * B (ambos enteros o ambos reales), Mult * 5nS (Mult entero o real)


CLK/2 , 10 ns / 2 ns (resultado sin Unidad) 6 mod 4 ( = 2 ), (-6) mod 4 ( = 2 ), 6 mod (-4) ( = -2) 6 res 4 ( = 2 ), (-6) res 4 ( = - 2 ), 6 res (-4) ( = 2) A**2 ( A*A ), B**3 ( B*B*B ), C*0.5 ( Ilegal ) Abs 1 ( = 1 ), Abs ( - 1) ( = 1 ), Abs ( 5*(-2) ) ( = 10 )

Operadores aplicables en cada tipo de datos Enteros Todos Reales +, -, /, abs ** con el 2o. Operando Entero Tiempo +, -, / (Ambos de Tiempo) *, / (Uno entero o real) 12

Operadores Relacionales :
OPERADOR Igual a No igual a Menor que Menor o igual que Mayor que SIMBOLO = /=

Operadores de Desplazamientos :
( Aplicables a Bit_Vector o Arreglos Booleanos )
SLL Desplazamiento lgico a la Izquierda.
7 6 5 4 3 2 1 0

SLL < <=

0 0

>

Mayor o igual que

>=

SLR Desplazamiento lgico a la Derecha.


SLR

Estos operadores se aplican sobre los tipos: Booleanos, Bits, Caracteres, Enteros, Reales, Tiempo, Cadenas y Bit_Vector (ambos del mismo tipo).
El resultado siempre es Booleano: True o False

1 0

13

SLA Desplazamiento Aritmtico a la Izquierda.


SLA

ROL Rotacin a la Izquierda.


ROL

SRA Desplazamiento Aritmtico a la Derecha.


SRA

ROR Rotacin a la Derecha.


ROR

14

Operador de Concatenacin :
Facilita la creacin de nuevos arreglos a partir de arreglos existentes, los arreglos pueden ser de cualquier tipo, pero solo de una dimensin.
0 1 2 3 4 5 6 7

Ejemplo: Data1 : Bit_Vector ( 0 to 7 ); Data2 : Bit_Vector ( 0 to 7 ); BitOne : bit; VecRes : Bit_Vector ( 0 to 7 );

1
0

0
1

1
2

1
3

0
4

0
5

1
6

0
7

0 1

VecRes <= ( Data1( 0 to 3 ) & Data2 (3 to 5) & BitOne );


0 1 2 3 4 5 6 7

15

Asignacin de Expresiones a Seales


El operador de asignacin es : <= Seal_Destino <= Expresin Ejemplos: k <= 1; m <= 0101; n <= m & k; a <= b or c; x <= y <= z; Una asignacin puede ser retrazada, la clusula after permite definir esos retrazos
LAMP

Cuando la respuesta de un sistema es retrazada, Qu tan rpido puede la salida seguir los cambios de la entrada? La clusula after impone un retrazo inercial, es decir, dos cambios subsecuentes de una entrada son ignorados si el tiempo entre ellos es ms corto que el retrazo especificado.
SWITCH

10

0 Retrazo 4 seg
SWITCH

10

12

0 Lamp <= switch after 4s;


LAMP

10

4 16

Retrazo de transporte
El retrazo Inercial es comn en muchos sistemas electrnicos, pero no en todos. Por ejemplo en una lnea de transmisin los retardos en la propagacin son independientes del ancho de los pulsos. Este tipo de retrazos se les conoce como retrazos de transporte y en VHDL se modelan con la palabra reservada transport.

Retrazo 4 seg

Lamp <= transport switch after 4s;


SWITCH

10

LAMP

10 17

Comparacin de Retrazos
Out1 <= Input after 3s; -- Retrazo inercial (default)

Out2 <= transport Input after 3s; -- Retrazo de transporte

INPUT

10

12

OUT1

10

OUT2

10

13

15

18

Constantes
Juegan el mismo papel que los parmetros genricos, excepto que las constantes se declaran en la arquitectura (y no en la entidad). La declaracin de constantes requiere de la Sintaxis siguiente: Palabra reservada Constant Nombre de la constante (es un Identificador) Dos puntos Indicacin del tipo de constante Valor de la constante despues de := Punto y coma al terminar la linea Si dos constantes son del mismo tipo y tienen el mismo valor, pueden especificarse en una declaracin.
Architecture Arch1 of Ent1 is Constant t_prop : time := 10nS; Begin .... End architecture Arch1; Block_1 : block Constant N : integer := 123; Begin .... End block Block1; P1 : process( A, B) Constant t_hold : time := 5 ns; Begin .... End process P1;

19

Las constantes pueden utilizarse para : Especificar el tamao de Objetos complejos (arreglos o buses) Controlar lazos repetitivos Definir parmetros de tiempo como : retrazos, tiempos de conmutacin, etc.
Nota: No pueden usarse para definir los tamaos de vectores en los puertos , por que son declarados en las arquitecturas (solo se puede hacer si la constante est en un paquete usado por la entidad).
PARMETROS GENERICOS UBICACIN DE LA DECLARACION Slo en la Entidad ( clusula generic ) Es una lista: Generic ( name : tipo := valor_op; name : tipo := valor_op ); En la entidad, incluyendo los puertos y en todas las arquitecturas asociadas con esa Entidad CONSTANTES En una arquitectura o En un paquete Una declaracin por constante : Constant name : tipo := valor; Constant name : tipo := valor; En la arquitectura (si ah se declaro). En cualquier Unidad de diseo que use el paquete (si se declar en un paquete), esto incluye entidades y arquitecturas.

DECLARACION

VISIBILIDAD

20

Potrebbero piacerti anche