You are on page 1of 113

Escuela de Ingeniera Electrnica

Circuitos Combinacionales

http://deversys.com/?action=article&id=45

TALLER VHDL
Ing. Jos Alberto Daz Garca
Pgina 1

Escuela de Ingeniera Electrnica

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

Escuela de Ingeniera Electrnica

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

Escuela de Ingeniera Electrnica

Circuitos Combinacionales

I Parte: Circuitos Combinacionales


OBJETIVO: Dar a conocer y utilizar los diferentes comandos del lenguaje de programacin orientado a hardware (HW) VHDL, utilizando circuitos combinacionales

TALLER VHDL
Ing. Jos Alberto Daz Garca
Pgina 4

Escuela de Ingeniera Electrnica

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

Escuela de Ingeniera Electrnica

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

Escuela de Ingeniera Electrnica

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

Escuela de Ingeniera Electrnica

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

Escuela de Ingeniera Electrnica

Circuitos Combinacionales

Very High Speed Integrated Circuit

V Hardware Description Lenguaje


Es un lenguaje de descripcin de hardware

TALLER VHDL
Ing. Jos Alberto Daz Garca
Pgina 9

Escuela de Ingeniera Electrnica

Circuitos Combinacionales

Para qu sirven los HDLs?


Los lenguajes de descripcin de HW sirven para modelar circuitos. Los modelos se pueden simular para comprobar si corresponden con el funcionamiento deseado. O si se pueden sintetizar para crear un circuito que funcione como el modelo.

TALLER VHDL
Ing. Jos Alberto Daz Garca
Pgina 10

Escuela de Ingeniera Electrnica

Circuitos Combinacionales

Los HDLs cuando el circuito ya existe


Se puede crear un modelo de un circuito que ya existe, que ya est implementado. En este caso el objetivo es simular el circuito para comprobar que su funcionamiento se ajusta a las especificaciones iniciales para luego enviarlo a fabricar.

TALLER VHDL
Ing. Jos Alberto Daz Garca
Pgina 11

Escuela de Ingeniera Electrnica

Circuitos Combinacionales

Los HDLs como documentacin


Los modelos de los circuitos si estn bien comentados sirven como documentacin del diseo. Los HDLs se pueden utilizar tambin para crear bancos de pruebas, o sea, para crear estmulos y ver resultados durante la simulacin.

TALLER VHDL
Ing. Jos Alberto Daz Garca
Pgina 12

Escuela de Ingeniera Electrnica

Circuitos Combinacionales

HDLs: estado actual y alternativas


En la actualidad, los esquemticos no son una alternativa realista de diseo en ningn proyecto. Ejemplo: GeForce4, 65 millones de transistores y 800.000 lneas de cdigo Verilog. La alternativa estndar es usar un HDL.
Verilog: Costa Oeste, ASICs, menos verboso, ms parecido a C, menos expresivo. VHDL: Costa Este y Europa, FPGAs, mas verboso, ms parecido a PASCAL y ADA, ms expresivo.

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

VHDL es el estndar para FPGAs en proyectos industriales de moderada complejidad en Europa.

Escuela de Ingeniera Electrnica

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:

VDHL: orgenes e historia

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.

Escuela de Ingeniera Electrnica

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

Escuela de Ingeniera Electrnica

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

Escuela de Ingeniera Electrnica

Circuitos Combinacionales

DIAGRAMA DE FLUJO EN VHDL


Entrada en VHDL

COMPILACIN

Netlist (nivel de compuertas)

SINTESIS

OPTIMIZACIN

Netlist optimizada (nivel de compuertas)

SIMULACIN

TALLER VHDL
Ing. Jos Alberto Daz Garca
Pgina 17

DISPOSITIVO FISICO

SIMULACIN

Escuela de Ingeniera Electrnica

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

Escuela de Ingeniera Electrnica

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

Escuela de Ingeniera Electrnica

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

Escuela de Ingeniera Electrnica

Circuitos Combinacionales

SIMPLIFICACION POR MAPAS DE KARNAUGH PARA S


A

CI

TALLER VHDL
Ing. Jos Alberto Daz Garca
Pgina 21

B S(CI,A,B)=CI*B+ A*B+ CI*A

Escuela de Ingeniera Electrnica

TALLER VHDL
Ing. Jos Alberto Daz Garca
Pgina 22

Circuitos Combinacionales

CIRCUITO LOGICO RESULTANTE PARA LA SALIDA S

Escuela de Ingeniera Electrnica

Circuitos Combinacionales

SIMPLIFICACION POR MAPAS DE KARNAUGH PARA CO

TALLER VHDL
Ing. Jos Alberto Daz Garca
Pgina 23

CO(CI,A,B)=CI*A*B+ CI*A*B+ CI*A*B+ CI*A*B

Escuela de Ingeniera Electrnica

TALLER VHDL
Ing. Jos Alberto Daz Garca
Pgina 24

Circuitos Combinacionales

CIRCUITO LOGICO RESULTANTE PARA LA SALIDA CO

Escuela de Ingeniera Electrnica

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

Escuela de Ingeniera Electrnica

Circuitos Combinacionales

FORMAS DE IMPLEMENTACIN
Compuertas lgicas RTL Bloques

TALLER VHDL
Ing. Jos Alberto Daz Garca
Pgina 26

Escuela de Ingeniera Electrnica

Circuitos Combinacionales
TALLER VHDL
Ing. Jos Alberto Daz Garca
Pgina 27

IMPLEMENTACIN CON COMPUERTAS LGICAS

Escuela de Ingeniera Electrnica

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

Escuela de Ingeniera Electrnica

Circuitos Combinacionales

ESTRUCTURA DE UN DISEO EN VHDL


library ieee; use ieee.std_logic_1164.all; entity toto is port ( ); end toto architecture test of toto is begin end test;

Declaraciones de las entradas y salidas

Nombre de la entidad

Parte declarativa de la arquitectura Cuerpo de la arquitectura

Nombre de la arquitectura

TALLER VHDL
Ing. Jos Alberto Daz Garca
Pgina 29

Escuela de Ingeniera Electrnica

TALLER VHDL
Ing. Jos Alberto Daz Garca
Pgina 30

Circuitos Combinacionales

ESTRUCTURA EN CDIGO VHDL

Escuela de Ingeniera Electrnica

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

Escuela de Ingeniera Electrnica

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

Escuela de Ingeniera Electrnica

Circuitos Combinacionales

BIBLIOTECAS El propsito de las bibliotecas mencionadas anteriormente es el siguiente:


El paquete std_logic_1164 especifica un sistema lgico de mltiples niveles. std es una biblioteca de recursos (tipos de datos, texto i/o, etc.) para el entorno de diseo de VHDL. work es donde se almacenar el diseo (el archivo .vhd, as como todos los archivos que llega a crear el compilador, simulador, etc.)

TALLER VHDL
Ing. Jos Alberto Daz Garca
Pgina 33

Escuela de Ingeniera Electrnica

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

Escuela de Ingeniera Electrnica

Circuitos Combinacionales

BIBLIOTECAS

PAQUETES
FUNCIONES PROCEDIMIENTOS COMPONENTES CONSTANTES TIPOS DATOS

TALLER VHDL
Ing. Jos Alberto Daz Garca
Pgina 35

Escuela de Ingeniera Electrnica

Circuitos Combinacionales

Bibliotecas clsicas (y anticuadas):


std_logic_signed std_logic_unsigned std_logic_arith

Acerca de las bibliotecas en VHDL

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

Tendencia actual del IEEE: emplear la biblioteca numeric_std


Pensada para trabajar con los tipos signed y unsigned TO_INTEGER, TO_SIGNED, TO_UNSIGNED

Escuela de Ingeniera Electrnica

Circuitos Combinacionales

Entidad y la arquitectura: 1er nivel de abstraccin


Una unidad de hardware se visualiza como una caja negra.
La interfaz de la caja negra est completamente definida. El interior est oculto, se define en otra unidad de diseo.

Abstraccin: caja negra

En VHDL la caja negra se denomina entidad.


La ENTITY describe la E/S del diseo.

Interfaz: entradas y salidas

TALLER VHDL
Ing. Jos Alberto Daz Garca
Pgina 37

Para describir su funcionamiento se asocia una implementacin que se denomina arquitectura


La ARCHITECTURE describe el contenido del diseo
.

Escuela de Ingeniera Electrnica

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

Escuela de Ingeniera Electrnica

Circuitos Combinacionales

PORT: Puertos de una entidad


PORT: son los canales de comunicacin, cada una de las posibles conexiones se denomina PORT y consta de:
Un nombre, que debe ser nico dentro de la entidad. Modo: la direccin del flujo de datos: entrada, salida, bidireccional Tipo: usualmente, los puertos toman valores de: 0, 1 o (Z), dependen de lo que se denomina TIPO de seal.

Interfaz de dispositivo

PORT: entradas y salidas

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

Escuela de Ingeniera Electrnica

Circuitos Combinacionales

VHDL: Declaracin de entidad


La declaracin VHDL de la caja negra:
LIBRARY ieee; USE ieee.std_logic_1164.ALL; ENTITY mi_componente IS PORT (
Clk, rst: d: q: co: IN IN OUT OUT std_logic; std_logic_vector(7 downto 0); std_logic_vector(7 downto 0); std_logic);

END mi_componente;

tipo modo

Mi_componente

TALLER VHDL
Ing. Jos Alberto Daz Garca
Pgina 40

Escuela de Ingeniera Electrnica

Circuitos Combinacionales

PORT: Modos de un port


Modo de los PORT Indican la direccin y si el puerto puede leerse o escribirse dentro de la entidad IN una seal que entra en la entidad y no sale. La seal puede ser leda pero no escrita. OUT una seal que sale fuera de la seal y no es usada internamente. La seal no puede ser ledo dentro de la entidad. BUFFER una seal que sale de la entidad y tambin es realimentada dentro de la entidad. INOUT una seal que es bidereccional, entrada/salida de la entidad.

TALLER VHDL
Ing. Jos Alberto Daz Garca
Pgina 41

Escuela de Ingeniera Electrnica

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

Escuela de Ingeniera Electrnica

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

Escuela de Ingeniera Electrnica

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

Escuela de Ingeniera Electrnica

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

Escuela de Ingeniera Electrnica

Circuitos Combinacionales

Tipos bsicos predefinidos


Tipos IEEEE-1076

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

Escuela de Ingeniera Electrnica

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.

Escuela de Ingeniera Electrnica

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 (:=)

Escuela de Ingeniera Electrnica

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

Escuela de Ingeniera Electrnica

Circuitos Combinacionales

Tipos bsicos predefinidos


INTEGER: tipo entero de 32 bits (de -2,147,483,647 a + 2,147,483,647) BOOLEAN: tipo lgico
Puede tomar como valores TRUE o FALSE

Tipos IEEEE-1076 (cont.)

usado como valor ndice en lazos, constantes o valores genricos

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.

Escuela de Ingeniera Electrnica

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

Escuela de Ingeniera Electrnica

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

Escuela de Ingeniera Electrnica

Circuitos Combinacionales

Tipo STD_LOGIC (cont.)


Para describir buses se utiliza el tipo std_logic_vector, que es un arreglo de std_logic. Los tipos std_logic y std_logic_vector son los estndares industriales. Todos los valores son vlidos en un simulador VHDL, sin embargo solo: 0, 1, Z, L, H y - se reconocen para la sntesis. En el paquete IEEE.std_logic_1164 aparecen otros dos tipos: std_ulogic y std_ulogic_vector. Son los mismos, pero sin haber pasado por la funcin de resolucin.
Esta funcin decide cul debe ser el valor de la seal cuando tiene dos fuentes que le asignan valores distintos. Por ejemplo, si una fuente asigna un 1 y la otra una L, la funcin de resolucin dice que la seal se queda a 1.

TALLER VHDL
Ing. Jos Alberto Daz Garca
Pgina 53

Escuela de Ingeniera Electrnica

Circuitos Combinacionales

EJEMPLO SIGNAL X:STD_LOGIC;


X se declara como una seal de un dgito (escalar) del tipo STD_LOGIC.

SIGNAL Y:STD_LOGIC_VECTOR (3 DOWNTO O):= 0001;


Se declara Y como un vector de 4 bits, con el bit de la izquierda como el MSB. El valor inicial de Y es 0001.

TALLER VHDL
Ing. Jos Alberto Daz Garca
Pgina 54

Escuela de Ingeniera Electrnica

Circuitos Combinacionales

HOJA DE TRABAJO 1

TALLER VHDL
Ing. Jos Alberto Daz Garca
Pgina 55

Escuela de Ingeniera Electrnica

Circuitos Combinacionales

Utilizando los tipos: seales en VHDL


El objeto distintivo en VHDL es la seal, que se utiliza para modelar los conductores del circuito. Puesto que modela nodos fsicos, incluye informacin de tiempo

Se declaran antes del begin de la arquitectura (en la parte declarativa):


ARQUITECTURE tec OF prueba IS BEGIN
SIGNAL s1 : STD_LOGIC; SIGNAL s2 : INTEGER;

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

Pueden tener un valor inicial (no soportado en sntesis)


SIGNAL a : STD_LOGIC := 0;

Escuela de Ingeniera Electrnica

Circuitos Combinacionales

Utilizando los tipos: constantes y variables


Como en cualquier otro lenguaje, en VHDL se pueden utilizar constantes. Se declaran tambin en la parte declarativa, antes del begin
ARCHITECTURE tec OF prueba IS CONSTANT c1 : STD_LOGIC := 0; CONSTANT c2 : TIME := 10 ns; CONSTANT c3 : INTEGER := 5; BEGIN

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)

Escuela de Ingeniera Electrnica

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

a<= 0101; b<= 0101;

Produce como resultado:

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

a(0)= 0; a(1)= 1; a(2)= 0; a(3)= 1; b(0)= 0; b(1)= 1; b(2)= 0; b(3)= 1;

Escuela de Ingeniera Electrnica

Circuitos Combinacionales

Asignacin de seales en buses Flexibilidad en la asignacin de valores de buses Todos los bits: Un solo bit:
tmp(7) <= ' 1;

SIGNAL tmp : STD_LOGIC_VECTOR(7 downto 0);


tmp <= 10100011; tmp <= xA3; -- VHDL 93

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

Escuela de Ingeniera Electrnica

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

Escuela de Ingeniera Electrnica

Circuitos Combinacionales

Definido por el usuario INTEGER


Tipo INTEGER est en el rango de 2,147,483,647 a + 2,147,483,647; Tipo NATURAL esta en el rango de 0 a +2,147,483,647; Tipo MI_INTEGER est en el rango -32 a 32; Tipo MIS_NOTAS esta en el rango de 0 a 100;

TALLER VHDL
Ing. Jos Alberto Daz Garca
Pgina 61

Escuela de Ingeniera Electrnica

Circuitos Combinacionales

Cmo definir nuevos tipos (y usarlos)?


VHDL permite definir nuevos tipos, bien a partir de tipos enumerados, o como subconjunto de tipos ya existentes, o tipos multidimensionales. Las definiciones de tipos se hacen frecuentemente en la parte declarativa de la arquitectura. Definir un tipo como una enumeracin:
TYPE estados IS (inactivo, operando, finalizar); SIGNAL mi_maquina : estados;

TALLER VHDL
Ing. Jos Alberto Daz Garca
Pgina 62

Definir un tipo bidimensional:


TYPE memoria IS ARRAY (1024 downto 0) OF Std_logic_vector(7 downto 0); SIGNAL mi_memoria : memoria;

Escuela de Ingeniera Electrnica

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.

Type color is (rojo, verde, azul, blanco);


En este comando se deben asignar dos bits, empezando con 00 para el primer estado, rojo, 01 para el verde, 10 para el azul y 11 para el blanco.

TALLER VHDL
Ing. Jos Alberto Daz Garca
Pgina 63

Escuela de Ingeniera Electrnica

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

Escuela de Ingeniera Electrnica

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.

Subtype mi_logica is std_logic range 0 to z;


Recuerde que std_logic =(x , 0, 1, Z, W, L, H, -), Por lo tanto, mi_logica=(0, 1, Z)

Subtype mi_color is color range red to blue;


Como color= (red, green, blue, white), entonces mi_color=(red, green, blue)

TALLER VHDL
Ing. Jos Alberto Daz Garca
Pgina 65

Subtype small_integer is integer range -32 to 32;

Escuela de Ingeniera Electrnica

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)

Escuela de Ingeniera Electrnica

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

FUNCTION, es un paquete predeterminado que es capaz de realizar lo que deseamos.

Escuela de Ingeniera Electrnica

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

Escuela de Ingeniera Electrnica

Circuitos Combinacionales

FUNCTIONS para conversin de datos


Muchas de las funciones para conversin de datos se encuentran en el paquete std_logic_arith de la biblioteca de ieee. Estos son:
CONV_INTEGER(p): convierte el parmetro p de tipo INTEGER, UNSIGNED, SIGNED, o STD_ULOGIC a un valor INTEGER. Ntese que STD_LOGIC_VECTOR no se incluye. CONV_UNSIGNED(p,b): convierte el parmetro p de tipo INTEGER, UNSIGNED, SIGNED o STD_LOGIC a un valor UNSIGNED con el nmero de bits b. CONV_SIGNED(p,b): convierte el parmetro p de tipo INTEGER, UNSIGNED, SIGNED o STD_LOGIC a un valor SIGNED con el nmero de bits b. CONV_STD_LOGIC_VECTOR(p,b): convierte el parmetro p de tipo INTEGER, UNSIGNED, SIGNED o STD_LOGIC a un valor STD_LOGIC_VECTOR con el nmero de bits b.

TALLER VHDL
Ing. Jos Alberto Daz Garca
Pgina 69

Escuela de Ingeniera Electrnica

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

Escuela de Ingeniera Electrnica

TALLER VHDL
Ing. Jos Alberto Daz Garca
Pgina 71

Circuitos Combinacionales

Ejercicio

Escuela de Ingeniera Electrnica

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

Escuela de Ingeniera Electrnica

Circuitos Combinacionales

Arreglos
Un solo valor (escalar) Un vector (arreglo 1D)

0 01000 01001 01100 0 1 0 1 0 1 0 0 0 1

Un arreglo de vectores (1Dx1D)

TALLER VHDL
Ing. Jos Alberto Daz Garca
Pgina 73

Un arreglo de escalares (2D array)

1 1

Escuela de Ingeniera Electrnica

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.

Escuela de Ingeniera Electrnica

Circuitos Combinacionales

Especificacin de un tipo de arreglo nuevo


TYPE type_name IS ARRAY (especification) OF DATA_TYPE; Para hacer uso del nuevo tipo de arreglo:
SIGNAL signal_name: type_name [:=initial_value];

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)

Escuela de Ingeniera Electrnica

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

Escuela de Ingeniera Electrnica

Circuitos Combinacionales

Implementacin
TYPE row IS ARRAY (7 DOWNTO 0) OF STD_LOGIC;
- arreglo 1D

TYPE matrix IS ARRAY (0 to 3) OF row;


- arreglo 1DX1D

SIGNAL x: matrix;
- seal 1Dx1D

TALLER VHDL
Ing. Jos Alberto Daz Garca
Pgina 77

Escuela de Ingeniera Electrnica

Circuitos Combinacionales

Ejemplo Otra forma de construir un arreglo de 1Dx1D:


TYPE matrix IS ARRAY (0 to 3) OF STD_LOGIC_VECTOR (7 DOWNTO 0);

TALLER VHDL
Ing. Jos Alberto Daz Garca
Pgina 78

Escuela de Ingeniera Electrnica

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

Escuela de Ingeniera Electrnica

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

Escuela de Ingeniera Electrnica

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

Escuela de Ingeniera Electrnica

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

Escuela de Ingeniera Electrnica

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

Escuela de Ingeniera Electrnica

Circuitos Combinacionales

Tipos de datos con signo y sin signo


Este tipo est definido en el paquete STD_LOGIC_ARITH de la biblioteca ieee. La sintaxis que se utiliza es:
SIGNAL x: SIGNED (7 DOWNTO 0); SIGNAL y: UNSIGNED (0 TO 3);

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.

Escuela de Ingeniera Electrnica

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)

Escuela de Ingeniera Electrnica

Circuitos Combinacionales

Ejemplo: operacin legal e ilegal con tipos de datos std_logic_vector


LIBRARY ieee; USE ieee.std_logic_1164.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);

_____________________________ V <= a+b;


Ilegal (la operacin aritmtica no es correcta)

W <= a AND b;
Legal (la operacin lgica es correcta)

TALLER VHDL
Ing. Jos Alberto Daz Garca
Pgina 86

Escuela de Ingeniera Electrnica

Circuitos Combinacionales

MEZCLA DE ARITMTICAS Y LGICAS


Hay una forma para que los datos del tipo STD_LOGIC_VECTOR participen directamente con las operaciones aritmticas. La biblioteca ieee provee de dos paquetes para realizarlo:
Std_logic_signed Std_logic_unsigned

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.

Escuela de Ingeniera Electrnica

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

________________________________ V <= a+b;


-legal (la operacin aritmtica es correcta, unsigned)

TALLER VHDL
Ing. Jos Alberto Daz Garca
Pgina 88

W <= a AND b;
-Legal (la operacin lgica es correcta)

Escuela de Ingeniera Electrnica

Circuitos Combinacionales

Operadores y atributos

TALLER VHDL
Ing. Jos Alberto Daz Garca
Pgina 89

Escuela de Ingeniera Electrnica

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

Escuela de Ingeniera Electrnica

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

Escuela de Ingeniera Electrnica

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

Escuela de Ingeniera Electrnica

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

Escuela de Ingeniera Electrnica

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

Escuela de Ingeniera Electrnica

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

Escuela de Ingeniera Electrnica

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

Escuela de Ingeniera Electrnica

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

Se tiene: x<=01001; Se hace: y<= x rol 2; Se obtiene y<=00101;

Escuela de Ingeniera Electrnica

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

Escuela de Ingeniera Electrnica

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

Escuela de Ingeniera Electrnica

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

Escuela de Ingeniera Electrnica

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

Escuela de Ingeniera Electrnica

Circuitos Combinacionales

Ejemplo del uso de atributos


Se tiene:
SIGNAL d : STD_LOGIC_VECTOR (7 DOWNTO 0);

Se puede obtener: dLOW=0, dHIGH=7,dLEFT=7,dRIGHT=0, dLENGTH=8, dRANGE=(7 downto 0), dREVERSE_RANGE=(0 to 7)

TALLER VHDL
Ing. Jos Alberto Daz Garca
Pgina 102

Escuela de Ingeniera Electrnica

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

Escuela de Ingeniera Electrnica

Circuitos Combinacionales

Ejemplos de atributos de seales


Detector de flancos positivos
IF(CLKEVENT AND CLK=1) IF(NOT clkSTABLE AND clk=1)

TALLER VHDL
Ing. Jos Alberto Daz Garca
Pgina 104

Escuela de Ingeniera Electrnica

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.

Escuela de Ingeniera Electrnica

Circuitos Combinacionales

Ejemplo del uso de atributos definidos por el usuario


--declaracin ATTRIBUTE number_of_inputs: INTEGER; --especificacin ATTRIBUTE number_of_inputs OF nand3: SIGNAL IS 3; ... --uso Inputs<=nand3number_of_inputs; ---retorna 3

TALLER VHDL
Ing. Jos Alberto Daz Garca
Pgina 106

Escuela de Ingeniera Electrnica

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

Escuela de Ingeniera Electrnica

Circuitos Combinacionales

Ejemplo de sobrecarga de operadores


--DECLARACION FUNCTION + (a: INTEGER, b: BIT)RETURN INTEGER IS
IF(b=1)THEN RETURN a+1; ELSE RETURN a; END IF

END +; --AHORA EL SIMBOLO + SE PUEDE UTILIZAR PARA SUMAR ENTEROS CON DATOS TIPO BIT

TALLER VHDL
Ing. Jos Alberto Daz Garca
Pgina 108

Escuela de Ingeniera Electrnica

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

Escuela de Ingeniera Electrnica

Circuitos Combinacionales

Ejemplo del uso de GENERIC


ENTITY my_entity IS
GENERIC(n : INTEGER := 8); PORT ();

END my_entity;

TALLER VHDL
Ing. Jos Alberto Daz Garca
Pgina 110

Escuela de Ingeniera Electrnica

Circuitos Combinacionales

Operadores definidos en VHDL


Lgicos and or, nor xor, xnor Relacionales = igual /= distinto < menor <= menor o igual > mayor >= mayor o igual Miscelneos abs valor absoluto ** exponenciacin not negacin (unario)
Adicin + suma resta & concatenacin de vectores Multiplicativos * multiplicacin / divisin rem resto mod mdulo Signo Unarios) *, Desplazamiento (bit_vector) sll, srl sla, sra
rol, ror

TALLER VHDL
Ing. Jos Alberto Daz Garca
Pgina 111

Escuela de Ingeniera Electrnica

Circuitos Combinacionales

Ejercicio

TALLER VHDL
Ing. Jos Alberto Daz Garca
Pgina 112

Escuela de Ingeniera Electrnica

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

You might also like