Unidad I Programación VHDL -...
Transcript of Unidad I Programación VHDL -...
UNIDAD IPROGRAMACIÓN VHDL1.1. Elementos del lenguaje VHDL
1.1.1. Elementos sintácticos del VHDL.
1.1.2. Operadores y expresiones en VHDL.
Dra. Adriana del Carmen Téllez Anguiano
ELEMENTO BÁSICOS DE VHDL
• Comentarios
• -- Se precede el comentario por dos guiones
• Identificadores
• Nombres o etiquetas para referir variables, constantes, señales, entre otros elementos. Mayúsculas / Minúsculas
Regla Incorrecto Correcto
Primer carácter debe ser letra
(Mayúscula o minúscula)
4suma Suma4
Segundo carácter no debe ser un guión bajo
S_4bits S4_bits
Dos guiones juntos no se permiten Resta__4 Resta_4_
No puede utilizar símbolos Clear#8 Clear_8
Dra. Adriana del Carmen Téllez Anguiano
DEFINICIONES BÁSICAS DE VHDL
• Objeto:
• Cualquier elemento que pueda tomar un valor.
• Tipo de Datos:• Cada objeto pertenece a un tipo de datos, que determina
los valores que puede tomar dicho objeto.
• Estado:
• Es el valor que toma el objeto en un momentodeterminado, y por tanto, dicho valor pertenece al tipo dedatos del objeto.
• Literal:• Símbolo cuyo valor es evidente a partir de su
representación.
• Existen 6 tipos de literales:
• Enteros, Punto Flotante, Caracteres, String, String de bits,Físicos
Dra. Adriana del Carmen Téllez Anguiano
DEFINICIONES BÁSICAS DE VHDL
• VHDL es un lenguaje con una fuerte verificación detipos de todos los objetos.
• Un objeto solo puede pertenecer a un tipo.
• No se pueden mezclar objetos de diferente tipo(existen funciones de conversión),
• El tipo de cada objeto debe ser estático (determinadoantes de iniciar la simulación o síntesis).
Dra. Adriana del Carmen Téllez Anguiano
NÚMEROS
• Los números se representan en base 10.
• Cambio de base:• Un número puede representarse en binario, octal,
decimal y hexadecimal.
• Para vectores de bits:• "01111" binario
• O"17" octal
• X"F" hexadecimal
• Para enteros y reales:• 2#1100# binario
• 12 decimal
• 16#C# hexadecimal
Dra. Adriana del Carmen Téllez Anguiano
TIPOS DE DATOS
• Escalares:
Aquellos que no se pueden subdividir en elementosmás pequeños.
Pueden ordenarse de menor a mayor.• Hay 3 tipos de Escalares:
• Numéricos, Enumerados y Físicos
• Compuestos:
Sus valores se pueden descomponer en otros máspequeños.
Están formados por escalares.• Hay 2 tipos de Compuestos:
• records y arrays (parecidos a los de Pascal).
Dra. Adriana del Carmen Téllez Anguiano
TIPOS DE DATOS (ESCALARES)
• Numéricos:
• Enteros (integer)
• signal NumeroA: integer range 0 to 208333;
• Reales o de Punto Flotante,
• Enumerados:
• Lista de literales
• Físicos (opcionales, no sintetizables): Especifican una restricción de rango y una unidad.
• Ya definidas en algunos paquetes (STANDARD)
Dra. Adriana del Carmen Téllez Anguiano
TIPOS DE DATOS (ESCALARES-NUMÉRICOS)
• Definición de nuevos tipos numéricos:
• Sintaxis general:
• Type Identificador is Definición_de_tipo;
• Sintaxis particular y ejemplos:
• Type Identificador is range Numero1 to Numero2;
• Type Enteros1 is range 0 to 15;
• Type Identificador is range Numero2 downto Numero1;
• Type Enteros2 is range 15 downto 0;
• Type Identificador is range Identificador’RANGE;
• Type Enteros3 is range Enteros1’RANGE;
Dra. Adriana del Carmen Téllez Anguiano
TIPOS DE DATOS (ESCALARES-ENUMERADOS)
• Definición de nuevos tipos enumerados:
• Sintaxis general:
• Type Identificador is (Identif1, Identif2, …, IdentifN);
• Ejemplos:
• Type Direccion is (Arriba, Abajo, Izquierda, Derecha);
• Type Estado is (E1, E2, E3, E4, E5, E6);
• Type Nivel_Logico is (’0’, ‘1’);
• Type TriNivel_Logico is (’0’, ‘1’, ‘Z’);
Dra. Adriana del Carmen Téllez Anguiano
TIPOS DE DATOS (ESCALARES-FÍSICOS)
• Definición de nuevos tipos físicos:• Sintáxis general:
• Type Identificador is range LimiteInf to LimiteSup
• units• Unidad_Básica;
• Otra_unidad = Múltiplo1 Unidad_Básica;
• …
• N_esima_unidad = MúltiploN Unidad_Básica;
• end units;
• Ejemplo:• Type Resistencia is range 1 to 10e9
• units• ohm;
• Kohm = 1000 ohm;:
• Mohm = 1e6 ohm;:
• end units;
Dra. Adriana del Carmen Téllez Anguiano
TIPOS DE DATOS (COMPUESTOS-RECORD)
• Registros (records): Los elementos que los componenpueden ser de diferentes tipos. Cada valor seespecifica mediante un identificador.
• Sintaxis general:
• Type Identificador is record
• Identificador1: tipo;
• …
• IdentificadorN: tipo;
• end record;
Dra. Adriana del Carmen Téllez Anguiano
TIPOS DE DATOS (COMPUESTOS-RECORD)
• Ejemplo de Datos Compuestos tipo record:• Type Fraccion is record
• Numerador: integer;
• Denominador: integer;
• end record;
• Ejemplo de uso de Datos tipo record:• -- Notación agregada posicional:
• Constant Un_cuarto: Fraccion := (1,4);
• -- Notación agregada nombrada:
• Constant Un_cuarto: Fraccion := (Denominador =>4, Numerador=>1);
• Referencia:• Un_cuarto.Numerador; -- Utiliza solo la parte del numerador
Dra. Adriana del Carmen Téllez Anguiano
TIPOS DE DATOS (COMPUESTOS-ARRAY)
• Matrices (array): • Todos los elementos son del mismo tipo y se especifican
mediante uno o varios paréntesis. Pueden tener varias dimensiones. Los límites pueden estar o no definidos.
• Sintaxis general:• Type Identificador is array (Rango1 [,Rango2, …]) of tipo;
• Ejemplos:• type bit_vector is array (natural range <>) of bit;
• type word is array (15 downto 0) of bit;
• type matriz4x4 is array (0 to 3, 0 to 3) of integer;
• type vector4 is array (0 to 3) of integer;
• type STRING is array (POSITIVE range <>) of character;
Dra. Adriana del Carmen Téllez Anguiano
TIPOS DE DATOS (COMPUESTOS-ARRAY)
• Ejemplos de uso de Datos tipo array:
• Notación Agregada Posicional:
• Constant V1: vector4 := (1,2,3,4);
• Notación Agregada Nombrada:
• Constant V2: vector4 := (0=>1, 1=>2, 2=> 3, 3=> 4);
• Constant V3: vector4 := (0=>1, others=>2);
• Constant M1: Matriz4x4 := ((1,2,3,4), (5,6,7,8), (9,0,1,2),(3,4,5,6));
• Referencia:
• M1(1,3); -- Elemento de fila 1, columna 3
Dra. Adriana del Carmen Téllez Anguiano
SUBTIPOS DE DATOS
• Se pueden definir subtipos de tipos ya definidos:
• Sintaxis general:
• subtype Identificador is TipoDefinido [indicador de rango];
• Ejemplos:
• subtype Minusculas is Character range ‘a’ to ‘z’;
• subtype Letras is Character;
• subtype Registro is bit_vector (7 downto 0);
• Nota: Los subtipos de un mismo tipo son compatibles entre sí.
Dra. Adriana del Carmen Téllez Anguiano
ANEXO
• Siempre que se utilice una señal o variable de tipo entero:
• Es recomendable limitar su rango para no desperdiciar hardware.
• Ejemplo de Entero:
• signal Numero: integer range 0 to 200;
• -- Genera una señal tipo entero que ocupa 8 bits.
• -- Realmente irá desde 0 hasta 255
Dra. Adriana del Carmen Téllez Anguiano
ANEXO (TIPOS DE LIBRERÍAS)
• IEEE estandarizó algunos tipos en una librería (1164).
• Estos tipos son los mas ampliamente utilizados:
• std_logic:
• 0, 1, Z, L, H, X, W, -, U.
• Fuertes, Alta impedancia, Débiles, Desconocido Fuerte y Débil, No Importa, Sin Inicializar.
• std_logic_vector(x to y);
-- x < y
• std_logic_vector(y downto x):
-- x < y
• Matriz unidimensional (vector) de std_logic
Dra. Adriana del Carmen Téllez Anguiano
ANEXO (ATRIBUTOS)
• Se indica un atributo con comilla simple ‘.
• Ejemplos de algunos Atributos:
• left, right, low, high, length, event, stable, range.
• Ejemplo:
• Ck’event: Verdadero si “ck” sufrió un cambio.
• s‘stable(t) Indica si la señal estuvo estable durante el último periodo t.
Dra. Adriana del Carmen Téllez Anguiano
OPERADORES
• <= (Asignación de Señal)
• := (Asignación de Variable)
• & (Concatenación)
• Concatena vectores, la dimensión del resultante es la suma de las dimensiones de las matrices con las que se opera
Dra. Adriana del Carmen Téllez Anguiano
OPERADORES(LÓGICOS)
• Actúan sobre los tipos bit, bit_vector y boolean. Al utilizarse en un vector, la operación se realiza bit a bit.
• AND
• OR
• NAND
• NOR
• XOR
• XNOR
• NOT.
Dra. Adriana del Carmen Téllez Anguiano
OPERADORES (ARITMÉTICOS)
• + (Suma o signo positivo)
• - (Resta o signo negativo)
• * (Multiplicación)
• / (División)
• ** (Exponencial)
• El número de la izquierda puede ser entero y real, pero el de la derecha sólo puede ser entero.
• ABS() (Valor absoluto)
• MOD (Módulo)
• REM (Resto)
Dra. Adriana del Carmen Téllez Anguiano
OPERADORES (RELACIONALES)
Siempre devuelven un valor booleano (true o false).
• == (Igualdad)• Devuelve verdadero si los operando son iguales y falso
en caso contrario
• /= (Desigualdad)• Inverso al anterior.
• > (Mayor que)
• >= (Mayor o igual que)
• < (Menor que)
• <= (Menor o igual que)• Los datos que pueden manejar son escalares o matrices.
Dra. Adriana del Carmen Téllez Anguiano
OPERADORES (DESPLAZAMIENTO)
• SLL (Shift Left Logic)• Desplazamiento lógico a la izquierda rellenando de ceros
los huecos.
• SRL (Shift Right Logic)• Desplazamiento lógico a la derecha rellenando de ceros los
huecos.
• SLA (Shift Left Arithmetic)• Desplazamiento aritmético a la izquierda
• SRA (Shift Right Arithmetic)• Desplazamiento aritmético derecha respectivamente.
• ROL (ROtate Left)• Rotación a la izquierda
• ROR (ROtate Right)• Rotación a la derecha.
Dra. Adriana del Carmen Téllez Anguiano
OPERADORES
Orden de preferencia, de mayor a menor es:
• **, ABS, NOT
• *, /, MOD, REM
• +, - (signo)
• +, -, & (operaciones)
• =, /=, <, <=, >, >=
• AND, OR, NAND, NOR, XOR
Dra. Adriana del Carmen Téllez Anguiano