unidad i programación vhdl -...

24
UNIDAD I PROGRAMACIÓN VHDL 1.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

Upload: others

Post on 20-Sep-2020

21 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Unidad I Programación VHDL - sagitario.itmorelia.edu.mxsagitario.itmorelia.edu.mx/actelleza/DDV/U1-2.pdf · UNIDAD I PROGRAMACIÓN VHDL 1.1. Elementos del lenguaje VHDL 1.1.1. Elementos

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

Page 2: Unidad I Programación VHDL - sagitario.itmorelia.edu.mxsagitario.itmorelia.edu.mx/actelleza/DDV/U1-2.pdf · UNIDAD I PROGRAMACIÓN VHDL 1.1. Elementos del lenguaje VHDL 1.1.1. Elementos

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

Page 3: Unidad I Programación VHDL - sagitario.itmorelia.edu.mxsagitario.itmorelia.edu.mx/actelleza/DDV/U1-2.pdf · UNIDAD I PROGRAMACIÓN VHDL 1.1. Elementos del lenguaje VHDL 1.1.1. Elementos

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

Page 4: Unidad I Programación VHDL - sagitario.itmorelia.edu.mxsagitario.itmorelia.edu.mx/actelleza/DDV/U1-2.pdf · UNIDAD I PROGRAMACIÓN VHDL 1.1. Elementos del lenguaje VHDL 1.1.1. Elementos

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

Page 5: Unidad I Programación VHDL - sagitario.itmorelia.edu.mxsagitario.itmorelia.edu.mx/actelleza/DDV/U1-2.pdf · UNIDAD I PROGRAMACIÓN VHDL 1.1. Elementos del lenguaje VHDL 1.1.1. Elementos

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

Page 6: Unidad I Programación VHDL - sagitario.itmorelia.edu.mxsagitario.itmorelia.edu.mx/actelleza/DDV/U1-2.pdf · UNIDAD I PROGRAMACIÓN VHDL 1.1. Elementos del lenguaje VHDL 1.1.1. Elementos

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

Page 7: Unidad I Programación VHDL - sagitario.itmorelia.edu.mxsagitario.itmorelia.edu.mx/actelleza/DDV/U1-2.pdf · UNIDAD I PROGRAMACIÓN VHDL 1.1. Elementos del lenguaje VHDL 1.1.1. Elementos

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

Page 8: Unidad I Programación VHDL - sagitario.itmorelia.edu.mxsagitario.itmorelia.edu.mx/actelleza/DDV/U1-2.pdf · UNIDAD I PROGRAMACIÓN VHDL 1.1. Elementos del lenguaje VHDL 1.1.1. Elementos

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

Page 9: Unidad I Programación VHDL - sagitario.itmorelia.edu.mxsagitario.itmorelia.edu.mx/actelleza/DDV/U1-2.pdf · UNIDAD I PROGRAMACIÓN VHDL 1.1. Elementos del lenguaje VHDL 1.1.1. Elementos

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

Page 10: Unidad I Programación VHDL - sagitario.itmorelia.edu.mxsagitario.itmorelia.edu.mx/actelleza/DDV/U1-2.pdf · UNIDAD I PROGRAMACIÓN VHDL 1.1. Elementos del lenguaje VHDL 1.1.1. Elementos

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

Page 11: Unidad I Programación VHDL - sagitario.itmorelia.edu.mxsagitario.itmorelia.edu.mx/actelleza/DDV/U1-2.pdf · UNIDAD I PROGRAMACIÓN VHDL 1.1. Elementos del lenguaje VHDL 1.1.1. Elementos

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

Page 12: Unidad I Programación VHDL - sagitario.itmorelia.edu.mxsagitario.itmorelia.edu.mx/actelleza/DDV/U1-2.pdf · UNIDAD I PROGRAMACIÓN VHDL 1.1. Elementos del lenguaje VHDL 1.1.1. Elementos

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

Page 13: Unidad I Programación VHDL - sagitario.itmorelia.edu.mxsagitario.itmorelia.edu.mx/actelleza/DDV/U1-2.pdf · UNIDAD I PROGRAMACIÓN VHDL 1.1. Elementos del lenguaje VHDL 1.1.1. Elementos

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

Page 14: Unidad I Programación VHDL - sagitario.itmorelia.edu.mxsagitario.itmorelia.edu.mx/actelleza/DDV/U1-2.pdf · UNIDAD I PROGRAMACIÓN VHDL 1.1. Elementos del lenguaje VHDL 1.1.1. Elementos

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

Page 15: Unidad I Programación VHDL - sagitario.itmorelia.edu.mxsagitario.itmorelia.edu.mx/actelleza/DDV/U1-2.pdf · UNIDAD I PROGRAMACIÓN VHDL 1.1. Elementos del lenguaje VHDL 1.1.1. Elementos

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

Page 16: Unidad I Programación VHDL - sagitario.itmorelia.edu.mxsagitario.itmorelia.edu.mx/actelleza/DDV/U1-2.pdf · UNIDAD I PROGRAMACIÓN VHDL 1.1. Elementos del lenguaje VHDL 1.1.1. Elementos

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

Page 17: Unidad I Programación VHDL - sagitario.itmorelia.edu.mxsagitario.itmorelia.edu.mx/actelleza/DDV/U1-2.pdf · UNIDAD I PROGRAMACIÓN VHDL 1.1. Elementos del lenguaje VHDL 1.1.1. Elementos

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

Page 18: Unidad I Programación VHDL - sagitario.itmorelia.edu.mxsagitario.itmorelia.edu.mx/actelleza/DDV/U1-2.pdf · UNIDAD I PROGRAMACIÓN VHDL 1.1. Elementos del lenguaje VHDL 1.1.1. Elementos

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

Page 19: Unidad I Programación VHDL - sagitario.itmorelia.edu.mxsagitario.itmorelia.edu.mx/actelleza/DDV/U1-2.pdf · UNIDAD I PROGRAMACIÓN VHDL 1.1. Elementos del lenguaje VHDL 1.1.1. Elementos

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

Page 20: Unidad I Programación VHDL - sagitario.itmorelia.edu.mxsagitario.itmorelia.edu.mx/actelleza/DDV/U1-2.pdf · UNIDAD I PROGRAMACIÓN VHDL 1.1. Elementos del lenguaje VHDL 1.1.1. Elementos

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

Page 21: Unidad I Programación VHDL - sagitario.itmorelia.edu.mxsagitario.itmorelia.edu.mx/actelleza/DDV/U1-2.pdf · UNIDAD I PROGRAMACIÓN VHDL 1.1. Elementos del lenguaje VHDL 1.1.1. Elementos

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

Page 22: Unidad I Programación VHDL - sagitario.itmorelia.edu.mxsagitario.itmorelia.edu.mx/actelleza/DDV/U1-2.pdf · UNIDAD I PROGRAMACIÓN VHDL 1.1. Elementos del lenguaje VHDL 1.1.1. Elementos

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

Page 23: Unidad I Programación VHDL - sagitario.itmorelia.edu.mxsagitario.itmorelia.edu.mx/actelleza/DDV/U1-2.pdf · UNIDAD I PROGRAMACIÓN VHDL 1.1. Elementos del lenguaje VHDL 1.1.1. Elementos

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

Page 24: Unidad I Programación VHDL - sagitario.itmorelia.edu.mxsagitario.itmorelia.edu.mx/actelleza/DDV/U1-2.pdf · UNIDAD I PROGRAMACIÓN VHDL 1.1. Elementos del lenguaje VHDL 1.1.1. Elementos

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