Professional Documents
Culture Documents
Circuitos Combinacionales
http://deversys.com/?action=article&id=45
TALLER VHDL
Ing. Jos Alberto Daz Garca
Pgina 1
Circuitos Combinacionales
TALLER DE VHDL
Dar a conocer la metodologa de diseo y uso de las herramientas que se utilizan en circuitos lgicos para empotrar en un FPGA de SPARTAN III
OBJETIVO:
TALLER VHDL
Ing. Jos Alberto Daz Garca
Pgina 2
Circuitos Combinacionales
TALLER VHDL
I Parte: Circuitos combinacionales II Parte: Circuitos secuenciales III Parte: Mquinas de secuenciales
TALLER VHDL
Ing. Jos Alberto Daz Garca
Pgina 3
Mayo 2006
Circuitos Combinacionales
TALLER VHDL
Ing. Jos Alberto Daz Garca
Pgina 4
Circuitos Combinacionales
METODOLOGIA
En cada sesin se realizar una presentacin del tema. Se realizar una prctica en la leccin Se dejar un proyecto a realizar fuera de la leccin, el cual se evaluar, esto con el fin de asignar puntos para el cambio de categora.
TALLER VHDL
Ing. Jos Alberto Daz Garca
Pgina 5
Circuitos Combinacionales
CONTENIDO
Introduccin Aspectos relacionados con VHDL Disear un sumador completo Expresin boleana del sumador Circuitos con compuertas Formato para escribir un programa en VHDL Instrucciones en VHDL Uso del ISE para sintetizar el circuito Uso del ModelSim Uso del Impact Descarga del modelo a un FPGA Proyecto
TALLER VHDL
Ing. Jos Alberto Daz Garca
Pgina 6
Circuitos Combinacionales
AGENDA
Introduccin Diseo de un sumador completo Estructura de cdigo en VHDL Bibliotecas Entidad Arquitectura Tipos de datos
TALLER VHDL
Ing. Jos Alberto Daz Garca
Pgina 7
Circuitos Combinacionales
INTRODUCCIN
VHDL
Es un estndar Es un lenguaje independiente de la tecnologa y del fabricante Es transportable Es reutilizable
APLICACIONES INMEDIATAS
Dispositivos lgicos programables ASICS (Application Specific Integrated Circuits)
TALLER VHDL
Ing. Jos Alberto Daz Garca
Pgina 8
Circuitos Combinacionales
TALLER VHDL
Ing. Jos Alberto Daz Garca
Pgina 9
Circuitos Combinacionales
TALLER VHDL
Ing. Jos Alberto Daz Garca
Pgina 10
Circuitos Combinacionales
TALLER VHDL
Ing. Jos Alberto Daz Garca
Pgina 11
Circuitos Combinacionales
TALLER VHDL
Ing. Jos Alberto Daz Garca
Pgina 12
Circuitos Combinacionales
El diseo se sintetiza a partir de un HDL, pero parte del diseo y la verificacin se puede realizar con otros lenguajes:
C y Matlab
TALLER VHDL
Ing. Jos Alberto Daz Garca
Pgina 13
Circuitos Combinacionales
VHDL surge a principios de los 80 de un proyecto DARPA (Departamento de Defensa de los EE.UU.) llamado VHSIC-Very High Speed Integrated Circuits. VHDL aparece como una manera de describir circuitos integrados:
TALLER VHDL
Ing. Jos Alberto Daz Garca
Pgina 14
En 1987 el trabajo fue cedido al IEEE, y a partir de ese momento se convirti en un estndar abierto.
Permite el trabajo en equipo sobre un mismo diseo, ya que con el diseo modular los encargados de la programacin podran trabajar en forma paralela. La crisis del ciclo de vida del HW: cada da los circuitos integrados eran ms complicados, y el costo de reponerlos cada vez era mayor, porque no estaban correctamente documentados. VHDL naci como una manera estndar de documentar los circuitos. Al mismo tiempo, se vio que la expresividad del VHDL permitira reducir el tiempo de diseo de los circuitos, porque se podran crear directamente de su descripcin: utilidad de las sntesis.
Circuitos Combinacionales
VHDL: Evolucin
1980: El departamento de defensa de los EEUU funda el proyecto para crear un HDL estndar dentro del programa VHSIC. 1981: Woods Hole Workshop, reunin inicial entre el Gobierno, Universidades e Industria. 1983: Se concedi a Intermetrics, IBM y Texas Instruments el contrato para desarrollar VHDL. 1985: Versin 7.2 de dominio pblico. 1987: El IEEE lo ratifica como su estndar 1076 (VHDL-87). 1993: El lenguaje VHDL fue revisado y ampliado, pasando a ser estndar 107693 (VHDL-93). 2001: Ultima modificacin de VHDL.
TALLER VHDL
Ing. Jos Alberto Daz Garca
Pgina 15
Circuitos Combinacionales
Y en el futuro?
Los lenguajes de descripcin de hardware tienen tambin limitaciones:
Metodologa de diseo nueva, exige un cambio de mentalidad con respecto al SW. No permiten rehusar cdigo SW para HW. La decisin HW/SW debe hacer antes de la codificacin. La simulacin es lenta, siempre hay que recurrir a una simulacin algortmica usando lenguajes SW, lo que hace que se descarguen los programas directamente sobre un FPGA, evadiendo as la simulacin.
TALLER VHDL
Ing. Jos Alberto Daz Garca
Pgina 16
Como respuesta a esto, hay varias iniciativas para describir HW usando lenguajes de alto nivel, originarios del mbito del SW:
Handel-C, System-C Forge (Java) Superlog
Circuitos Combinacionales
COMPILACIN
SINTESIS
OPTIMIZACIN
SIMULACIN
TALLER VHDL
Ing. Jos Alberto Daz Garca
Pgina 17
DISPOSITIVO FISICO
SIMULACIN
Circuitos Combinacionales
LO MS IMPORTANTE
No es secuencial, como la ejecucin de instrucciones (una despus de la otra) de un programa en un microprocesador. Es concurrente, es hardware.
TALLER VHDL
Ing. Jos Alberto Daz Garca
Pgina 18
Circuitos Combinacionales
EJERCICIO
Disear un sumador completo utilizando compuertas lgicas. Sintetizar el sistema resultante. Empotrar el circuito en un FPGA
TALLER VHDL
Ing. Jos Alberto Daz Garca
Pgina 19
Circuitos Combinacionales
TABLA DE VERDAD
ENTRA DAS
MINTERMINO
SALI DAS B S CO
CI
0 1 2 3 4 5 6 7
0 0 0 0 1 1 1 1
0 0 1 1 0 0 1 1
0 1 0 1 0 1 0 1
0 1 1 0 1 0 0 1
0 0 0 1 0 1 1 1
TALLER VHDL
Ing. Jos Alberto Daz Garca
Pgina 20
Circuitos Combinacionales
CI
TALLER VHDL
Ing. Jos Alberto Daz Garca
Pgina 21
TALLER VHDL
Ing. Jos Alberto Daz Garca
Pgina 22
Circuitos Combinacionales
Circuitos Combinacionales
TALLER VHDL
Ing. Jos Alberto Daz Garca
Pgina 23
TALLER VHDL
Ing. Jos Alberto Daz Garca
Pgina 24
Circuitos Combinacionales
Circuitos Combinacionales
ESPECIFICACIONES DE DISEO
Lo que se quiere es llegar a empotrar estos circuitos en una FPGA Spartan III de Xilinx. Este procedimiento se puede aplicar a cualquier otro circuito combinacional
TALLER VHDL
Ing. Jos Alberto Daz Garca
Pgina 25
Circuitos Combinacionales
FORMAS DE IMPLEMENTACIN
Compuertas lgicas RTL Bloques
TALLER VHDL
Ing. Jos Alberto Daz Garca
Pgina 26
Circuitos Combinacionales
TALLER VHDL
Ing. Jos Alberto Daz Garca
Pgina 27
Circuitos Combinacionales
Cdigo del sumador completo en VHDL Como se puede observar, consiste de:
una ENTITY, la cual es una descripcin de los pines (PORT) del circuito, y una ARCHITECTURE, la cual describe el funcionamiento del circuito.
TALLER VHDL
Ing. Jos Alberto Daz Garca
Pgina 28
Circuitos Combinacionales
Nombre de la entidad
Nombre de la arquitectura
TALLER VHDL
Ing. Jos Alberto Daz Garca
Pgina 29
TALLER VHDL
Ing. Jos Alberto Daz Garca
Pgina 30
Circuitos Combinacionales
Circuitos Combinacionales
OBSERVACIONES
Al final de cada comando debe colocarse un (;) para que se ejecute. Los comentarios se hacen utilizando al inicio del comentario el los caracteres (--).
TALLER VHDL
Ing. Jos Alberto Daz Garca
Pgina 31
Circuitos Combinacionales
DECLARACIN DE BIBLIOTECAS
Para declarar bibliotecas se necesitan dos lneas de cdigo,
Una donde contiene el nombre de la biblioteca, y Otra donde se indica una clusula de uso
Generalmente en un diseo se necesitan por lo menos tres paquetes, de tres bibliotecas diferentes:
ieee.std_logic_1164 (de las bibliotecas de ieee) standard (de las bibliotecas std) work (de las bibliotecas work)
TALLER VHDL
Ing. Jos Alberto Daz Garca
Pgina 32
Circuitos Combinacionales
TALLER VHDL
Ing. Jos Alberto Daz Garca
Pgina 33
Circuitos Combinacionales
BIBLIOTECAS
Las bibliotecas ieee contienen algunos paquetes como:
std_logic_1164: especifica el sistema lgico de mltiples valores, STD_LOGIC (8 niveles) y STD_ULOGIC (9 niveles) std_logic_arith: especifica tipos de datos SIGNED y UNSIGNED, y las operaciones aritmticas y de comparacin. Tambin contiene algunas funciones para conversin, que permiten convertir de un tipo a otro: conv_integer (p), conv_unsigned (p,b), conv_signed (p,b), conv_std_logic_vector (p,b) std_logic_signed: contiene funciones que permiten realizar operaciones con datos STD_LOGIC_VECTOR para manipular los datos como si fueran del tipo SIGNED. std_logic_unsigned: contiene funciones que permiten realizar operaciones con datos STD_LOGIC_VECTOR para manipular los datos como si fueran UNSIGNED.
TALLER VHDL
Ing. Jos Alberto Daz Garca
Pgina 34
Circuitos Combinacionales
BIBLIOTECAS
PAQUETES
FUNCIONES PROCEDIMIENTOS COMPONENTES CONSTANTES TIPOS DATOS
TALLER VHDL
Ing. Jos Alberto Daz Garca
Pgina 35
Circuitos Combinacionales
Las bibliotecas signed y unsigned se deben emplear cuando se quiere que los std_logic_vector estn respectivamente en complemento a 2 en binario natural.
Aqu est el CONV_INTEGER
La biblioteca arith es ms completa y utiliza mayormente los tipos signed o unsigned (derivados de std_logic_vector).
Aqu est CON_STD_LOGIC_VECTOR
TALLER VHDL
Ing. Jos Alberto Daz Garca
Pgina 36
Circuitos Combinacionales
TALLER VHDL
Ing. Jos Alberto Daz Garca
Pgina 37
Circuitos Combinacionales
Es una lista de especificaciones de todos los pines (PORT) de entradas y salidas del circuito. La entidad debe tener un nombre. Debe existir un fin de la entidad. La entidad se utiliza para hacer una descripcin caja negra del diseo, slo se detalla su interfaz. Una entidad puede tener varias arquitecturas.
ENTITY (entidad)
Por ejemplo, la descripcin de comportamiento que ha hecho el diseador y el modelo post-layout obtenido despus de implementar el chip.
TALLER VHDL
Ing. Jos Alberto Daz Garca
Pgina 38
Circuitos Combinacionales
Interfaz de dispositivo
TALLER VHDL
Ing. Jos Alberto Daz Garca
Pgina 39
Los puertos son una clase especial de seales que adicionalmente al tipo de la seal aade el modo (IN, OUT, etc.)
Circuitos Combinacionales
END mi_componente;
tipo modo
Mi_componente
TALLER VHDL
Ing. Jos Alberto Daz Garca
Pgina 40
Circuitos Combinacionales
TALLER VHDL
Ing. Jos Alberto Daz Garca
Pgina 41
Circuitos Combinacionales
ARCHITECTURE
Es una descripcin del funcionamiento del circuito. Los contenidos del circuito se modelan dentro de la arquitectura. La ARCHITECTURE tiene dos partes:
Una parte declarative (optional), donde se declaran las seales y constantes. Una parte de code, partiendo de BEGIN hasta END.
Como en la Entity, el nombre de la architecture puede ser cualquiera excepto los nombres reservados por VHDL, incluyendo el mismo nombre de la Entity.
TALLER VHDL
Ing. Jos Alberto Daz Garca
Pgina 42
Circuitos Combinacionales
EJERCICIO
Realizar un programa en VHDL que simule un multiplexor de cuatro canales de entrada, y dos canales de seleccin. Utilizando compuertas lgicas.
TALLER VHDL
Ing. Jos Alberto Daz Garca
Pgina 43
Circuitos Combinacionales
TIPOS DE DATOS
Son utilizados en la definicin de elementos dentro de la Entity, as como en la Architecture. En la Entity se utilizan para definir el tipo de entradas y salidas. En la Architecture se utilizan para definir algunas seales internas necesarias para el funcionamiento del dispositivo.
TALLER VHDL
Ing. Jos Alberto Daz Garca
Pgina 44
Circuitos Combinacionales
Tipos de datos
TIPO es la definicin de los posibles valores que puede tomar un objeto VHDL es un lenguaje fuertemente tipificado:
A los objetos se les asigna siempre un tipo cuando se declaran. La asignacin slo puede hacerse entre objetos del mismo tipo.
Los tipos predefinidos se especifican en los estndares IEEE 1076 y IEEE 1164 y pueden ser:
integer floating point enumerated Compuestos: array record Punteros: access Archivos: file Escalares:
TALLER VHDL
Ing. Jos Alberto Daz Garca
Pgina 45
Circuitos Combinacionales
BIT: slo puede tomar los valores de 0 1. Para modelar seales digitales. BIT_VECTOR: un arreglo unidimensional (vector) de bits. Para modelar buses.
TALLER VHDL
Ing. Jos Alberto Daz Garca
Pgina 46
TALLER VHDL
Ing. Jos Alberto Daz Garca
Pgina 47
Circuitos Combinacionales
EJEMPLOS SIGNAL X: BIT; X se declara como una seal de un solo dgito del tipo bit. SIGNAL Y: BIT_VECTOR (3 DOWNTO 0); Y es un vector de 4 bits, con el bit de la izquierda como el MSB. SIGNAL W: BIT_VECTOR (0 TO 7); es un vector de 8 bits, con el bit de la izquierda como el MSB.
TALLER VHDL
Ing. Jos Alberto Daz Garca
Pgina 48
Circuitos Combinacionales
ASIGNACIN DE VALORES A UNA SEAL Para la asignacin de un valor a una seal se utilizan los operadores (<=). Para asignar el valor inicial a una variable se utiliza (:=)
Circuitos Combinacionales
EJEMPLO X<=1;
-- X es una seal de un bit, cuyo valor es 1
Y<=0011;
-- Y es una seal de 4 bits, cuyo valor es 0011 el MSB es 0, las comillas dobles se utilizan en vectores.
W<=01110001;
-- W es una seal de 8 bits, cuyo valor es 01110001 y el MSB es 0
TALLER VHDL
Ing. Jos Alberto Daz Garca
Pgina 49
Circuitos Combinacionales
TALLER VHDL
Ing. Jos Alberto Daz Garca
Pgina 50
NATURAL: enteros no negativos de (0 a 2,147,483,647) REAL: tipo para nmeros en punto flotante, en el rango de 1.0E38 a +1.0E38. No es sintetizable. LITERALES FISICOS: utilizados para representar cantidades fsicas, como voltajes, etc. Muy til en simulaciones. No es sintetizable. CARACTERES LITERALES: son caracteres ASCII o una de cadena de caracteres (string). No es sintetizable. SIGNED y UNSIGNED: son tipos de datos definidos en el paquete STD_LOGIC_ARITH de la biblioteca de IEEE. Tienen la apariencia de STD_LOGIC_VECTOR, pero acepta operaciones aritmticas, las cuales son tipos de datos INTEGER.
Circuitos Combinacionales
Tipo STD_LOGIC
En la realidad los dos valores del tipo bit se quedan cortos para modelar todos los estados de una seal digital. El paquete IEEE.standard_logic_1164 define el tipo std_logic, que representa todos los posibles estados de una seal real:
U X 0 1 Z W L H No inicializado, valor por defecto. Desconocido fuerte, salida con mltiples fuentes en corto. Salida de una compuerta con nivel lgico bajo. Salida de una compuerta con nivel lgico alto. Alta impedancia Desconocido dbil, terminacin de bus 0 dbil, resistencia de pull-down 1 dbil, resistencia de pull-up No importa, usado como comodn para sntesis
TALLER VHDL
Ing. Jos Alberto Daz Garca
Pgina 51
Circuitos Combinacionales
Estados metalgicos Son estados que utiliza la herramienta en el proceso de sntesis y que no son utilizados por el usuario. Estos estados son:
U W X -
TALLER VHDL
Ing. Jos Alberto Daz Garca
Pgina 52
Circuitos Combinacionales
TALLER VHDL
Ing. Jos Alberto Daz Garca
Pgina 53
Circuitos Combinacionales
TALLER VHDL
Ing. Jos Alberto Daz Garca
Pgina 54
Circuitos Combinacionales
HOJA DE TRABAJO 1
TALLER VHDL
Ing. Jos Alberto Daz Garca
Pgina 55
Circuitos Combinacionales
No solo contiene unos valores (0,1,Z, etc.) sino tambin el tiempo en el que se toman estos valores
TALLER VHDL
Ing. Jos Alberto Daz Garca
Pgina 56
Circuitos Combinacionales
Las constantes pueden ser de cualquier tipo El tercer objeto posible en VHDL son las variables:
TALLER VHDL
Ing. Jos Alberto Daz Garca
Pgina 57
Slo almacenan valores, no entienden de tiempo Visibilidad limitada, slo dentro de un proceso y no en toda la arquitectura (a diferencia de las seales y constantes)
Circuitos Combinacionales
Usando arreglos para crear buses Los vectores se pueden definir tanto en rangos ascendentes como descendentes:
SIGNAL a: STD_LOGIC_VECTOR(0 TO 3); -- p.e. rango ascendente SIGNAL b: STD_LOGIC_VECTOR(3 DOWNTO 0); -- p.e. rango descendente
TALLER VHDL
Ing. Jos Alberto Daz Garca
Pgina 58
Una manera rpida y eficiente de asignar valores a vectores son los aggregates:
a<=(0 => 0, 1 => c and d, others => Z);
Circuitos Combinacionales
Asignacin de seales en buses Flexibilidad en la asignacin de valores de buses Todos los bits: Un solo bit:
tmp(7) <= ' 1;
Un rango de bits:
tmp(7 <= downto 4) <= 1010;
Notacin:
1 bit : comilla simple (') Mltiples bits : comilla doble ()
TALLER VHDL
Ing. Jos Alberto Daz Garca
Pgina 59
Circuitos Combinacionales
Definicin de tipos por parte del usuario Se pueden definir dos tipos de datos utilizando:
Integer Enumerated
TALLER VHDL
Ing. Jos Alberto Daz Garca
Pgina 60
Circuitos Combinacionales
TALLER VHDL
Ing. Jos Alberto Daz Garca
Pgina 61
Circuitos Combinacionales
TALLER VHDL
Ing. Jos Alberto Daz Garca
Pgina 62
Circuitos Combinacionales
Definido por el usuario ENUMERATED Type bit is (0, 1,); Type mi_logica is (0, 1, Z); Type state is (idle, forward, backward,stop);
Es un tipo definido especialmente en mquinas de estado.
TALLER VHDL
Ing. Jos Alberto Daz Garca
Pgina 63
Circuitos Combinacionales
Subtipos Los subtipos son tipos con restricciones. La razn fundamental para realizar subtipos en vez de especificar un nuevo tipo es que realizar operaciones entre diferentes tipos de datos no es permitido. Solo se permiten entre un subtipo y su tipo base correspondiente.
TALLER VHDL
Ing. Jos Alberto Daz Garca
Pgina 64
Circuitos Combinacionales
Ejemplos
Los siguientes subtipos se basan en los ejemplos anteriores
Subtype natural is INTEGER RANGE 0 TO INTEGER HIGH;
Como es de esperarse natural es un sutipo de integer.
TALLER VHDL
Ing. Jos Alberto Daz Garca
Pgina 65
Circuitos Combinacionales
Operaciones ilegales entre subtipos Subtype mi_logica is sted_logic range 0 to 1; Signal a: bit; Signal b: std_logic; Signal c: mi_logica; b<=a;
Ilegal (error en tipo: bit vrs. Std_logic)
TALLER VHDL
Ing. Jos Alberto Daz Garca
Pgina 66
b<=c;
Legal (el mismo tipo base, std_logic)
Circuitos Combinacionales
Conversin de datos VHDL no permite operaciones directas (aritmticas, lgicas, etc.) entre datos de diferentes tipos. Por lo que se hace necesario transferir datos de un tipo a otro. Esto se puede realizar de dos formas:
Escribiendo un pedazo de cdigo para realizar lo que se quiere. Invocando un FUNCTION.
TALLER VHDL
Ing. Jos Alberto Daz Garca
Pgina 67
Circuitos Combinacionales
Ejemplo Type long is integer range -100 to 100; Type short is integer range -10 to 10; Signal x : short; Signal y : long; y <= 2*x+5;
Error, error en tipo
y <= long(2*x+5);
Ok, el resultado se convierte en tipo long.
TALLER VHDL
Ing. Jos Alberto Daz Garca
Pgina 68
Circuitos Combinacionales
TALLER VHDL
Ing. Jos Alberto Daz Garca
Pgina 69
Circuitos Combinacionales
EJEMPLOS
LIBRARY ieee; USE ieee.std_logic_1164.all; USE ieee.std_logic_arith.all; .. SIGNAL a: IN UNSIGNED (7 DOWNTO 0); SIGNAL b: IN UNSIGNED (7 DOWNTO 0); SIGNAL y: OUT STD_LOGIC_VECTOR (7 DOWNTO 0); y <= CONV_STD_LOGIC_VECTOR ((A+B), 8);
Operacin legal: a+b se convierte de UNSIGNED a un valor STD_LOGIC_VECTOR de 8 bits y se asigna a y.
TALLER VHDL
Ing. Jos Alberto Daz Garca
Pgina 70
TALLER VHDL
Ing. Jos Alberto Daz Garca
Pgina 71
Circuitos Combinacionales
Ejercicio
Circuitos Combinacionales
Arreglos
Los arreglos son colecciones de objetos del mismo tipo. Pueden ser:
Unidimensionales (1D) Bidimensionales (2D) Unidimensionales por unidimensionales (1DX1D)
TALLER VHDL
Ing. Jos Alberto Daz Garca
Pgina 72
Circuitos Combinacionales
Arreglos
Un solo valor (escalar) Un vector (arreglo 1D)
TALLER VHDL
Ing. Jos Alberto Daz Garca
Pgina 73
1 1
Circuitos Combinacionales
Arreglos
Las categoras de los tipos de datos predefinidos en VHDL son solo escalar (single bit) o vector (arreglo unidimensional de bits). Los tipos sintetizables en cada una de estas categoras:
Escalares: BIT, STD_LOGIC, STD_ULOGIC, y BOOLEAN. Vectores: BIT_VECTOR, STD_LOGIC_VECTOR, STD_ULOGIC_VECTOR, INTEGER, SIGNED y UNSIGNED.
TALLER VHDL
Ing. Jos Alberto Daz Garca
Pgina 74
No hay arreglos predefinidos del tipo 2D y 1Dx1D, cuando sean necesarios deben ser especificados por el usuario. Para hacerlo debe definirse un nuevo TYPE, luego la nueva SIGNAL, VARIABLE o CONSTANT las cuales pueden ser declaradas utilizando el tipo de datos.
Circuitos Combinacionales
TALLER VHDL
Ing. Jos Alberto Daz Garca
Pgina 75
En este ejemplo se declara una seal, la cual puede ser una constante o una variable. Ntese que su valor inicial puede ser opcional (solo para simulacin)
Circuitos Combinacionales
Ejemplo Se quiere construir un arreglo que contenga cuatro vectores, cada uno de ellos de 8 bits. Se llamar a cada vector por filas y el arreglo completo como una matriz. Se asignar el bit de la izquierda como el MSB. Se quiere que el vector de arriba sea la fila 0.
TALLER VHDL
Ing. Jos Alberto Daz Garca
Pgina 76
Circuitos Combinacionales
Implementacin
TYPE row IS ARRAY (7 DOWNTO 0) OF STD_LOGIC;
- arreglo 1D
SIGNAL x: matrix;
- seal 1Dx1D
TALLER VHDL
Ing. Jos Alberto Daz Garca
Pgina 77
Circuitos Combinacionales
TALLER VHDL
Ing. Jos Alberto Daz Garca
Pgina 78
Circuitos Combinacionales
Ejemplo Arreglo de 2D
TYPE matrix2D IS ARRAY (0 TO 3, 7 DOWNTO 0) OF STD_LOGIC;
TALLER VHDL
Ing. Jos Alberto Daz Garca
Pgina 79
Circuitos Combinacionales
Inicializacin de un arreglo El valor inicial es opcional. Cuando se requiere de inicializacin debe hacerse:
:=0001; - para un arreglo de 1D :=(0, 0, 0, 1); - para un arreglo de 1D :=((0, 1, 1, 1),(1, 1, 1, 0)); -para un arreglo de 1Dx1D o un arreglo de 2D
TALLER VHDL
Ing. Jos Alberto Daz Garca
Pgina 80
Circuitos Combinacionales
PORT ARRAYS
No hay un tipo de datos predefinido para mas de una dimensin. Para las especificaciones de los pines (PORT) de entrada y salida de un circuito, se necesita especificar los PORT como un arreglo de vectores. El comando TYPE no se puede utilizar en la descripcin del circuito ENTITY. Se debe utilizar un tipo de datos definida por el usuario en un PACKAGE. Esto para que sea visible en todo el diseo, incluyendo ENTITY.
TALLER VHDL
Ing. Jos Alberto Daz Garca
Pgina 81
Circuitos Combinacionales
Ejemplo
________________________________ Tipo de datos definido por el usuario LIBRARY ieee; Que contiene un infinito USE ieee.std_logic_1164.all; nmero de vectores ________________________________ de 8 bits PACKAGE mis_datos_type IS TYPE vector_array IS ARRAY (NATURAL RANGE <>)OF STD_LOGIC_VECTOR(7 DOWNTO 0); END mis_datos_type; _________________________________ -----------------CODIGO PRINCIPAL----------------Almacenados en un paquete LIBRARY ieee; llamado mis_datos_type USE ieee.std_logic_1164.all; USE work.mis_datos_type.all; Utiliza la definicin de ___________________________________ tipo de datos ENTITY mux IS PORT (inp: IN VECTOR_ARRAY (0 TO 3); .); END mux; ; __________________________________
TALLER VHDL
Ing. Jos Alberto Daz Garca
Pgina 82
Circuitos Combinacionales
RECORDS
Los RECORDS son similares a los arreglos, con la diferencia en que contienen objetos de diferentes tipos. Ejemplo
TYPE cumpleaos IS RECORD
Dia: INTEGER RANGE 1 TO 31; Mes: nombre_mes;
END RECORD;
TALLER VHDL
Ing. Jos Alberto Daz Garca
Pgina 83
Circuitos Combinacionales
TALLER VHDL
Ing. Jos Alberto Daz Garca
Pgina 84
Un valor UNSIGNED es un nmero que nunca es menor de cero. Son utilizados principalmente en operaciones aritmticas.
Circuitos Combinacionales
Ejemplo: utilizacin legal e ilegal con tipos de datos con signo y sin signo
LIBRARY ieee; USE ieee.std_logic_1164.all; USE ieee.std_logic_arith.all; _______________________________ SIGNAL a: IN SIGNED (7 DOWNTO 0); SIGNAL b: IN SIGNED (7 DOWNTO 0); SIGNAL x: OUT SIGNED (7 DOWNTO 0); ___________________________________ V <= a + b;
Legal (operacin aritmtica)
TALLER VHDL
Ing. Jos Alberto Daz Garca
Pgina 85
W <= a AND b;
Ilegal (operacin lgica)
Circuitos Combinacionales
W <= a AND b;
Legal (la operacin lgica es correcta)
TALLER VHDL
Ing. Jos Alberto Daz Garca
Pgina 86
Circuitos Combinacionales
TALLER VHDL
Ing. Jos Alberto Daz Garca
Pgina 87
Permiten operaciones con datos tipo STD_LOGIC_VECTOR para que sean utilizados como fueran datos tipo SIGNED o UNSIGNED, respectivamente.
Circuitos Combinacionales
Ejemplo
LIBRARY ieee; USE ieee.std_logic_1164.all; USE ieee.std_logic_unsigned.all; _____________________________
SIGNAL a: IN STD_LOGIC_VECTOR (7 DOWNTO 0); SIGNAL b: IN STD_LOGIC_VECTOR (7 DOWNTO 0); SIGNAL x: OUT STD_LOGIC_VECTOR (7 DOWNTO 0);
TALLER VHDL
Ing. Jos Alberto Daz Garca
Pgina 88
W <= a AND b;
-Legal (la operacin lgica es correcta)
Circuitos Combinacionales
Operadores y atributos
TALLER VHDL
Ing. Jos Alberto Daz Garca
Pgina 89
Circuitos Combinacionales
Operadores
VHDL posee varios tipos de operadores pre-definidos:
Asignacin Lgicos Aritmticos Comparacin Desplazamiento Concatenacin
TALLER VHDL
Ing. Jos Alberto Daz Garca
Pgina 90
Circuitos Combinacionales
Operadores de asignacin
Se utilizan para asignar valores a seales, variables y constantes:
<= Asignacin de valor a una seal. := Asignacin de valor a una variable, constante o genrica. => Usado para asignar valores a elementos individuales de arreglos
TALLER VHDL
Ing. Jos Alberto Daz Garca
Pgina 91
Circuitos Combinacionales
Ejemplo de asignacin
DECLARACIONES SIGNAL x : STD_LOGIC; VARIABLE y : STD_LOGIC_VECTOR(3 DOWNTO 0); SIGNAL w: STD_LOGIC_VECTOR(0 TO 7); USO
X<=1; --1 se le asigna a la SIGNAL X utilizando <= Y:=0000; --0000 es asignado a la VAIRABLE Y utilizando := W<=10000000; -- el LSB es 1 W<=(0 =>1,OTHERS => 0); --LSB es 1 los otros son cero
TALLER VHDL
Ing. Jos Alberto Daz Garca
Pgina 92
Circuitos Combinacionales
Operadores lgicos
Usados para realizar operaciones lgicas. El tipo debe de ser: BIT, STD_LOGIC STD_ULOGIC y extensiones.
NOT AND OR NAND NOR XOR XNOR
TALLER VHDL
Ing. Jos Alberto Daz Garca
Pgina 93
Circuitos Combinacionales
Operadores Aritmticos
Utilizados para realizar operaciones aritmticas sobre los tipos: INTEGER, SIGNED, UNSIGNED O REAL. + Suma - Resta * Multiplicacin / Divisin ** Potencia MOD Mdulo REM Resto ABS Valor absoluto (Sintetiza) (Sintetiza) (Sintetiza) (Solo en potencias de 2) (Solo valores constantes) (NO sintetiza) (NO sintetiza) (NO sintetiza)
TALLER VHDL
Ing. Jos Alberto Daz Garca
Pgina 94
Circuitos Combinacionales
Operadores de comparacin
Usados para realizar comparaciones. Prcticamente no hay limitaciones respecto al tipo.
= Igual a /= diferente de < menos que > mas que <= menor o igual a >= mayor o igual a
TALLER VHDL
Ing. Jos Alberto Daz Garca
Pgina 95
Circuitos Combinacionales
Operadores de desplazamiento
Utilizados para desplazar vectores, introducidos en VHDL93. sintaxis: <operando> <operacion> <# de desplazamientos>
sll shift left lgico srl Shift right lgico sla shift left aritmtico sra shift right aritmtico rol rotacin izquierda ror rotacin derecha (adicin de ceros a la derecha) (adicin de ceros a la izquierda) (MSB pasa a ser LSB) (LSB pasa a ser MSB)
TALLER VHDL
Ing. Jos Alberto Daz Garca
Pgina 96
Circuitos Combinacionales
Ejemplo de desplazamiento
Se tiene: x<=01001; Se hace: y<= x sll 2; Se obtiene y<=00100
TALLER VHDL
Ing. Jos Alberto Daz Garca
Pgina 97
Circuitos Combinacionales
Operadores de Concatenacin
Se utilizan para agrupar variables, se pueden usar con los tipos listados para operadores lgicos.
& (,,,,,,)
TALLER VHDL
Ing. Jos Alberto Daz Garca
Pgina 98
Circuitos Combinacionales
Ejemplo de concatenacin
Z <= x & 1000000;
Si x=1 -- entonces z es: z<=11000000
TALLER VHDL
Ing. Jos Alberto Daz Garca
Pgina 99
Circuitos Combinacionales
Atributos
Le proporcionan flexibilidad al lenguaje VHDL, permiten la creacin de porciones genricas de cdigo. Adems de la lista de atributos ya predefinidos en el VHDL, el lenguaje permite al usuario definir atributos.
TALLER VHDL
Ing. Jos Alberto Daz Garca
Pgina 100
Circuitos Combinacionales
Atributos de datos
Los atributos predefinidos y sintetizables son los siguientes, donde d es un arreglo:
dLOW: retorna el menor ndice del arreglo. dHIGH: retorna el mayor ndice del arreglo. dLEFT: retorna el ndice izquierdo del arreglo. dRIGHT: retorna el ndice derecho del arreglo. dLENGTH: retona el tamao del arreglo. dRANGE: retorna el rango del arreglo. dREVERSE_RANGE: retorna el rango del arreglo en orden inverso.
TALLER VHDL
Ing. Jos Alberto Daz Garca
Pgina 101
Circuitos Combinacionales
TALLER VHDL
Ing. Jos Alberto Daz Garca
Pgina 102
Circuitos Combinacionales
Atributos de seales
Son utilizados principalmente para simulaciones, nicamente los primeros 2 son sintetizables. sEVENT: retorna verdadero cuando s cambie de estado. sSTABLE[t]:retorna verdadero si s no cambia de estado en el tiempo t. sACTIVE: retorna verdadero cuando ocurre una transaccion sobre s aunque no cambie su valor sQUIET[t] retorna verdadero si no ocurre ninguna transaccin sobre s en el tiempo t. sLAST_VALUE: retorna el valor de s antes de la ltima transaccin. SLAST_EVENT: retorna el tiempo desde el ltimo evento de s sLAST_ACTIVE: retorna el tiempo desde la ltima transaccin sobre s.
TALLER VHDL
Ing. Jos Alberto Daz Garca
Pgina 103
Circuitos Combinacionales
TALLER VHDL
Ing. Jos Alberto Daz Garca
Pgina 104
Circuitos Combinacionales
Atributos definidos por el usuario El programador puede definir sus propios atributos, la sintaxis es la siguiente
Declaracin:
ATTRIBUTE attribute_name: attribute_type;
Especificacin:
ATTRIBUTE attribute_name OF target_name: class IS value;
TALLER VHDL
Ing. Jos Alberto Daz Garca
Pgina 105
Donde: attribute_type: cualquier tipo de dato Class: TYPE, SIGNAL, FUNCTION, etc. Value: 0, 27, 00 11 10 01, etc.
Circuitos Combinacionales
TALLER VHDL
Ing. Jos Alberto Daz Garca
Pgina 106
Circuitos Combinacionales
Sobrecarga de operadores Los operadores ya definidos se pueden utilizar para realizar diferentes operaciones sobre tipos de datos que no soportan a los predefinidos.
TALLER VHDL
Ing. Jos Alberto Daz Garca
Pgina 107
Circuitos Combinacionales
END +; --AHORA EL SIMBOLO + SE PUEDE UTILIZAR PARA SUMAR ENTEROS CON DATOS TIPO BIT
TALLER VHDL
Ing. Jos Alberto Daz Garca
Pgina 108
Circuitos Combinacionales
GENERIC
El uso del GENERIC permite la creacin de programas que pueden ser adaptados para diferentes aplicaciones. Es declarado en la ENTITY. La sintaxis: GENERIC (parameter_name: parameter_type := parameter_value);
TALLER VHDL
Ing. Jos Alberto Daz Garca
Pgina 109
Circuitos Combinacionales
END my_entity;
TALLER VHDL
Ing. Jos Alberto Daz Garca
Pgina 110
Circuitos Combinacionales
TALLER VHDL
Ing. Jos Alberto Daz Garca
Pgina 111
Circuitos Combinacionales
Ejercicio
TALLER VHDL
Ing. Jos Alberto Daz Garca
Pgina 112
Circuitos Combinacionales
BIBLIOGRAFIA Petroni, Volnei A. CIRCUIT DESIGN WITH VHDL, MIT Press,, primera edicin, 2004, Massachussetts, USA. Ashenden, Peter J. THE DESIGNERS GUIDE TO VHDL, Morgan Kaufmann Publishers, segunda edicin, 2002, California, USA.
TALLER VHDL
Ing. Jos Alberto Daz Garca
Pgina 113