Está en la página 1de 113

Circuitos Combinacionales

Escuela de Ingeniera Electrnica

TALLER
VHDL
Ing. Jos Alberto
Daz Garca
Pgina 1

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

Circuitos Combinacionales

Escuela de Ingeniera Electrnica

TALLER
VHDL
Ing. Jos Alberto
Daz Garca
Pgina 2

TALLER DE VHDL
OBJETIVO:

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

Circuitos Combinacionales

Escuela de Ingeniera Electrnica

TALLER
VHDL
Ing. Jos Alberto
Daz Garca
Pgina 3

TALLER VHDL
I Parte: Circuitos combinacionales
II Parte: Circuitos secuenciales
III Parte: Mquinas de secuenciales

Mayo 2006

Circuitos Combinacionales

Escuela de Ingeniera Electrnica

TALLER
VHDL
Ing. Jos Alberto
Daz Garca
Pgina 4

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

Circuitos Combinacionales

Escuela de Ingeniera Electrnica

TALLER
VHDL
Ing. Jos Alberto
Daz Garca
Pgina 5

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.

Circuitos Combinacionales

Escuela de Ingeniera Electrnica

TALLER
VHDL
Ing. Jos Alberto
Daz Garca
Pgina 6

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

Circuitos Combinacionales

Escuela de Ingeniera Electrnica

TALLER
VHDL
Ing. Jos Alberto
Daz Garca
Pgina 7

AGENDA

Introduccin
Diseo de un sumador completo
Estructura de cdigo en VHDL
Bibliotecas
Entidad
Arquitectura
Tipos de datos

Circuitos Combinacionales

Escuela de Ingeniera Electrnica

TALLER
VHDL
Ing. Jos Alberto
Daz Garca
Pgina 8

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)

Circuitos Combinacionales

Escuela de Ingeniera Electrnica

TALLER
VHDL
Ing. Jos Alberto
Daz Garca
Pgina 9

Very High Speed Integrated Circuit

V Hardware Description Lenguaje


Es un lenguaje de descripcin de hardware

Circuitos Combinacionales

Escuela de Ingeniera Electrnica

TALLER
VHDL
Ing. Jos Alberto
Daz Garca
Pgina 10

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.

Circuitos Combinacionales

Escuela de Ingeniera Electrnica

TALLER
VHDL
Ing. Jos Alberto
Daz Garca
Pgina 11

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.

Circuitos Combinacionales

Escuela de Ingeniera Electrnica

TALLER
VHDL
Ing. Jos Alberto
Daz Garca
Pgina 12

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.

Circuitos Combinacionales

Escuela de Ingeniera Electrnica

TALLER
VHDL
Ing. Jos Alberto
Daz Garca
Pgina 13

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

VHDL es el estndar para FPGAs en proyectos


industriales de moderada complejidad en Europa.

Circuitos Combinacionales

Escuela de Ingeniera Electrnica

TALLER
VHDL
Ing. Jos Alberto
Daz Garca
Pgina 14

VDHL: orgenes e historia

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:

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.

En 1987 el trabajo fue cedido al IEEE, y a partir de ese


momento se convirti en un estndar abierto.

Circuitos Combinacionales

Escuela de Ingeniera Electrnica

TALLER
VHDL
Ing. Jos Alberto
Daz Garca
Pgina 15

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.

Circuitos Combinacionales

Escuela de Ingeniera Electrnica

TALLER
VHDL
Ing. Jos Alberto
Daz Garca
Pgina 16

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.

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

Escuela de Ingeniera Electrnica

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

Circuitos Combinacionales

Escuela de Ingeniera Electrnica

TALLER
VHDL
Ing. Jos Alberto
Daz Garca
Pgina 18

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.

Circuitos Combinacionales

Escuela de Ingeniera Electrnica

TALLER
VHDL
Ing. Jos Alberto
Daz Garca
Pgina 19

EJERCICIO
Disear un sumador completo
utilizando compuertas lgicas.
Sintetizar el sistema resultante.
Empotrar el circuito en un FPGA

Circuitos Combinacionales

Escuela de Ingeniera Electrnica

TALLER
VHDL
Ing. Jos Alberto
Daz Garca
Pgina 20

TABLA DE VERDAD
ENTRA DAS

SALI DAS

MINTERMINO

CI

CO

Circuitos Combinacionales

Escuela de Ingeniera Electrnica

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

Circuitos Combinacionales

Escuela de Ingeniera Electrnica

TALLER
VHDL
Ing. Jos Alberto
Daz Garca
Pgina 22

CIRCUITO LOGICO RESULTANTE PARA


LA SALIDA S

Circuitos Combinacionales

Escuela de Ingeniera Electrnica

TALLER
VHDL
Ing. Jos Alberto
Daz Garca
Pgina 23

SIMPLIFICACION POR MAPAS DE


KARNAUGH PARA CO

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

Circuitos Combinacionales

Escuela de Ingeniera Electrnica

TALLER
VHDL
Ing. Jos Alberto
Daz Garca
Pgina 24

CIRCUITO LOGICO RESULTANTE PARA


LA SALIDA CO

Circuitos Combinacionales

Escuela de Ingeniera Electrnica

TALLER
VHDL
Ing. Jos Alberto
Daz Garca
Pgina 25

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

Circuitos Combinacionales

Escuela de Ingeniera Electrnica

TALLER
VHDL
Ing. Jos Alberto
Daz Garca
Pgina 26

FORMAS DE IMPLEMENTACIN
Compuertas lgicas
RTL
Bloques

Circuitos Combinacionales

Escuela de Ingeniera Electrnica

TALLER
VHDL
Ing. Jos Alberto
Daz Garca
Pgina 27

IMPLEMENTACIN CON COMPUERTAS


LGICAS

Circuitos Combinacionales

Escuela de Ingeniera Electrnica

TALLER
VHDL
Ing. Jos Alberto
Daz Garca
Pgina 28

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.

Circuitos Combinacionales

Escuela de Ingeniera Electrnica

TALLER
VHDL
Ing. Jos Alberto
Daz Garca
Pgina 29

ESTRUCTURA DE UN DISEO EN VHDL


library ieee;
use ieee.std_logic_1164.all;

Declaraciones
de las entradas
y salidas

Parte declarativa
de la arquitectura
Cuerpo de la
arquitectura

entity toto is
port (

Nombre de la
entidad

);
end toto
architecture test of toto is
begin
end test;

Nombre de la
arquitectura

Circuitos Combinacionales

Escuela de Ingeniera Electrnica

TALLER
VHDL
Ing. Jos Alberto
Daz Garca
Pgina 30

ESTRUCTURA EN CDIGO VHDL

Circuitos Combinacionales

Escuela de Ingeniera Electrnica

TALLER
VHDL
Ing. Jos Alberto
Daz Garca
Pgina 31

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

Circuitos Combinacionales

Escuela de Ingeniera Electrnica

TALLER
VHDL
Ing. Jos Alberto
Daz Garca
Pgina 32

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)

Circuitos Combinacionales

Escuela de Ingeniera Electrnica

TALLER
VHDL
Ing. Jos Alberto
Daz Garca
Pgina 33

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

Circuitos Combinacionales

Escuela de Ingeniera Electrnica

TALLER
VHDL
Ing. Jos Alberto
Daz Garca
Pgina 34

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.

Circuitos Combinacionales

Escuela de Ingeniera Electrnica

TALLER
VHDL
Ing. Jos Alberto
Daz Garca
Pgina 35

BIBLIOTECAS

PAQUETES
FUNCIONES
PROCEDIMIENTOS
COMPONENTES
CONSTANTES
TIPOS
DATOS

Circuitos Combinacionales

Escuela de Ingeniera Electrnica

TALLER
VHDL
Ing. Jos Alberto
Daz Garca
Pgina 36

Acerca de las bibliotecas en VHDL

Bibliotecas clsicas (y anticuadas):


std_logic_signed
std_logic_unsigned
std_logic_arith

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

Tendencia actual del IEEE: emplear la biblioteca


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

Circuitos Combinacionales

Escuela de Ingeniera Electrnica

TALLER
VHDL
Ing. Jos Alberto
Daz Garca
Pgina 37

Entidad y la arquitectura: 1er nivel


de abstraccin
Una unidad de hardware se
visualiza como una caja
negra.

Abstraccin: caja negra

La interfaz de la caja negra est


completamente definida.
El interior est oculto, se define
en otra unidad de diseo.

En VHDL la caja negra se


denomina entidad.
La ENTITY describe la E/S del
diseo.

Para describir su
funcionamiento se asocia una
implementacin que se
denomina arquitectura
La ARCHITECTURE describe el
contenido del diseo
.

Interfaz: entradas y salidas

Circuitos Combinacionales

Escuela de Ingeniera Electrnica

TALLER
VHDL
Ing. Jos Alberto
Daz Garca
Pgina 38

ENTITY (entidad)

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.

Por ejemplo, la descripcin de comportamiento que ha hecho


el diseador y el modelo post-layout obtenido despus de
implementar el chip.

Circuitos Combinacionales

Escuela de Ingeniera Electrnica

TALLER
VHDL
Ing. Jos Alberto
Daz Garca
Pgina 39

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.

Los puertos son una clase


especial de seales que
adicionalmente al tipo de la
seal aade el modo (IN,
OUT, etc.)

Interfaz de dispositivo

PORT: entradas y salidas

Circuitos Combinacionales

Escuela de Ingeniera Electrnica

TALLER
VHDL
Ing. Jos Alberto
Daz Garca
Pgina 40

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

Circuitos Combinacionales

Escuela de Ingeniera Electrnica

TALLER
VHDL
Ing. Jos Alberto
Daz Garca
Pgina 41

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.

Circuitos Combinacionales

Escuela de Ingeniera Electrnica

TALLER
VHDL
Ing. Jos Alberto
Daz Garca
Pgina 42

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.

Circuitos Combinacionales

Escuela de Ingeniera Electrnica

TALLER
VHDL
Ing. Jos Alberto
Daz Garca
Pgina 43

EJERCICIO
Realizar un programa en VHDL que
simule un multiplexor de cuatro canales
de entrada, y dos canales de seleccin.
Utilizando compuertas lgicas.

Circuitos Combinacionales

Escuela de Ingeniera Electrnica

TALLER
VHDL
Ing. Jos Alberto
Daz Garca
Pgina 44

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.

Circuitos Combinacionales

Escuela de Ingeniera Electrnica

TALLER
VHDL
Ing. Jos Alberto
Daz Garca
Pgina 45

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:

Escalares:

integer
floating point
enumerated
Compuestos: array
record
Punteros:
access
Archivos:
file

Circuitos Combinacionales

Escuela de Ingeniera Electrnica

TALLER
VHDL
Ing. Jos Alberto
Daz Garca
Pgina 46

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.

Circuitos Combinacionales

Escuela de Ingeniera Electrnica

TALLER
VHDL
Ing. Jos Alberto
Daz Garca
Pgina 47

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.

Circuitos Combinacionales

Escuela de Ingeniera Electrnica

TALLER
VHDL
Ing. Jos Alberto
Daz Garca
Pgina 48

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

Escuela de Ingeniera Electrnica

TALLER
VHDL
Ing. Jos Alberto
Daz Garca
Pgina 49

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

Circuitos Combinacionales

Escuela de Ingeniera Electrnica

TALLER
VHDL
Ing. Jos Alberto
Daz Garca
Pgina 50

Tipos bsicos predefinidos


Tipos IEEEE-1076 (cont.)

INTEGER: tipo entero de 32 bits (de -2,147,483,647 a +


2,147,483,647)

usado como valor ndice en lazos, constantes o valores genricos

BOOLEAN: tipo lgico

Puede tomar como valores TRUE o FALSE

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

Escuela de Ingeniera Electrnica

TALLER
VHDL
Ing. Jos Alberto
Daz Garca
Pgina 51

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

Circuitos Combinacionales

Escuela de Ingeniera Electrnica

TALLER
VHDL
Ing. Jos Alberto
Daz Garca
Pgina 52

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
-

Circuitos Combinacionales

Escuela de Ingeniera Electrnica

TALLER
VHDL
Ing. Jos Alberto
Daz Garca
Pgina 53

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.

Circuitos Combinacionales

Escuela de Ingeniera Electrnica

TALLER
VHDL
Ing. Jos Alberto
Daz Garca
Pgina 54

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.

Circuitos Combinacionales

Escuela de Ingeniera Electrnica

TALLER
VHDL
Ing. Jos Alberto
Daz Garca
Pgina 55

HOJA DE TRABAJO 1

Circuitos Combinacionales

Escuela de Ingeniera Electrnica

TALLER
VHDL
Ing. Jos Alberto
Daz Garca
Pgina 56

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

No solo contiene unos valores (0,1,Z, etc.) sino


tambin el tiempo en el que se toman estos valores

Se declaran antes del begin de la arquitectura


(en la parte declarativa):
ARQUITECTURE tec OF prueba IS
SIGNAL s1 : STD_LOGIC;
SIGNAL s2 : INTEGER;

BEGIN

Pueden tener un valor inicial (no soportado en


sntesis)
SIGNAL a : STD_LOGIC := 0;

Circuitos Combinacionales

Escuela de Ingeniera Electrnica

TALLER
VHDL
Ing. Jos Alberto
Daz Garca
Pgina 57

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:

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

Escuela de Ingeniera Electrnica

TALLER
VHDL
Ing. Jos Alberto
Daz Garca
Pgina 58

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:

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


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

Una manera rpida y eficiente de


asignar valores a vectores son los
aggregates:
a<=(0 => 0, 1 => c and d, others => Z);

Circuitos Combinacionales

Escuela de Ingeniera Electrnica

TALLER
VHDL
Ing. Jos Alberto
Daz Garca
Pgina 59

Asignacin de seales en buses


Flexibilidad en la asignacin de valores de buses
SIGNAL tmp : STD_LOGIC_VECTOR(7 downto 0);

Todos los bits:

tmp <= 10100011;


tmp <= xA3; -- VHDL 93

Un solo bit:
tmp(7) <= ' 1;

Un rango de bits:
tmp(7 <= downto 4) <= 1010;

Notacin:
1 bit : comilla simple (')
Mltiples bits : comilla doble ()

Circuitos Combinacionales

Escuela de Ingeniera Electrnica

TALLER
VHDL
Ing. Jos Alberto
Daz Garca
Pgina 60

Definicin de tipos por parte del usuario


Se pueden definir dos tipos de datos
utilizando:
Integer
Enumerated

Circuitos Combinacionales

Escuela de Ingeniera Electrnica

TALLER
VHDL
Ing. Jos Alberto
Daz Garca
Pgina 61

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;

Circuitos Combinacionales

Escuela de Ingeniera Electrnica

TALLER
VHDL
Ing. Jos Alberto
Daz Garca
Pgina 62

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;

Definir un tipo bidimensional:


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

Circuitos Combinacionales

Escuela de Ingeniera Electrnica

TALLER
VHDL
Ing. Jos Alberto
Daz Garca
Pgina 63

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.

Circuitos Combinacionales

Escuela de Ingeniera Electrnica

TALLER
VHDL
Ing. Jos Alberto
Daz Garca
Pgina 64

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.

Circuitos Combinacionales

Escuela de Ingeniera Electrnica

TALLER
VHDL
Ing. Jos Alberto
Daz Garca
Pgina 65

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)

Subtype small_integer is integer range -32 to 32;

Circuitos Combinacionales

Escuela de Ingeniera Electrnica

TALLER
VHDL
Ing. Jos Alberto
Daz Garca
Pgina 66

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)

b<=c;
Legal (el mismo tipo base, std_logic)

Circuitos Combinacionales

Escuela de Ingeniera Electrnica

TALLER
VHDL
Ing. Jos Alberto
Daz Garca
Pgina 67

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.

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

Circuitos Combinacionales

Escuela de Ingeniera Electrnica

TALLER
VHDL
Ing. Jos Alberto
Daz Garca
Pgina 68

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.

Circuitos Combinacionales

Escuela de Ingeniera Electrnica

TALLER
VHDL
Ing. Jos Alberto
Daz Garca
Pgina 69

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.

Circuitos Combinacionales

Escuela de Ingeniera Electrnica

TALLER
VHDL
Ing. Jos Alberto
Daz Garca
Pgina 70

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.

Circuitos Combinacionales

Escuela de Ingeniera Electrnica

TALLER
VHDL
Ing. Jos Alberto
Daz Garca
Pgina 71

Ejercicio

Circuitos Combinacionales

Escuela de Ingeniera Electrnica

TALLER
VHDL
Ing. Jos Alberto
Daz Garca
Pgina 72

Arreglos
Los arreglos son colecciones de objetos
del mismo tipo.
Pueden ser:
Unidimensionales (1D)
Bidimensionales (2D)
Unidimensionales por unidimensionales
(1DX1D)

Circuitos Combinacionales

Escuela de Ingeniera Electrnica

TALLER
VHDL
Ing. Jos Alberto
Daz Garca
Pgina 73

Arreglos
Un solo valor (escalar)

Un vector (arreglo 1D)

01000

Un arreglo de vectores (1Dx1D)

01001
01100

Un arreglo de escalares (2D


array)

Circuitos Combinacionales

Escuela de Ingeniera Electrnica

TALLER
VHDL
Ing. Jos Alberto
Daz Garca
Pgina 74

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.

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

Escuela de Ingeniera Electrnica

TALLER
VHDL
Ing. Jos Alberto
Daz Garca
Pgina 75

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

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

Escuela de Ingeniera Electrnica

TALLER
VHDL
Ing. Jos Alberto
Daz Garca
Pgina 76

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.

Circuitos Combinacionales

Escuela de Ingeniera Electrnica

TALLER
VHDL
Ing. Jos Alberto
Daz Garca
Pgina 77

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

Circuitos Combinacionales

Escuela de Ingeniera Electrnica

TALLER
VHDL
Ing. Jos Alberto
Daz Garca
Pgina 78

Ejemplo
Otra forma de construir un arreglo de
1Dx1D:
TYPE matrix IS ARRAY (0 to 3) OF
STD_LOGIC_VECTOR (7 DOWNTO 0);

Circuitos Combinacionales

Escuela de Ingeniera Electrnica

TALLER
VHDL
Ing. Jos Alberto
Daz Garca
Pgina 79

Ejemplo
Arreglo de 2D
TYPE matrix2D IS ARRAY (0 TO 3, 7
DOWNTO 0) OF STD_LOGIC;

Circuitos Combinacionales

Escuela de Ingeniera Electrnica

TALLER
VHDL
Ing. Jos Alberto
Daz Garca
Pgina 80

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

Circuitos Combinacionales

Escuela de Ingeniera Electrnica

TALLER
VHDL
Ing. Jos Alberto
Daz Garca
Pgina 81

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.

Circuitos Combinacionales

Escuela de Ingeniera Electrnica

TALLER
VHDL
Ing. Jos Alberto
Daz Garca
Pgina 82

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

Circuitos Combinacionales

Escuela de Ingeniera Electrnica

TALLER
VHDL
Ing. Jos Alberto
Daz Garca
Pgina 83

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;

Circuitos Combinacionales

Escuela de Ingeniera Electrnica

TALLER
VHDL
Ing. Jos Alberto
Daz Garca
Pgina 84

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

Un valor UNSIGNED es un nmero que


nunca es menor de cero.
Son utilizados principalmente en
operaciones aritmticas.

Circuitos Combinacionales

Escuela de Ingeniera Electrnica

TALLER
VHDL
Ing. Jos Alberto
Daz Garca
Pgina 85

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)

W <= a AND b;
Ilegal (operacin lgica)

Circuitos Combinacionales

Escuela de Ingeniera Electrnica

TALLER
VHDL
Ing. Jos Alberto
Daz Garca
Pgina 86

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)

Circuitos Combinacionales

Escuela de Ingeniera Electrnica

TALLER
VHDL
Ing. Jos Alberto
Daz Garca
Pgina 87

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

Permiten operaciones con datos tipo


STD_LOGIC_VECTOR para que sean
utilizados como fueran datos tipo SIGNED o
UNSIGNED, respectivamente.

Circuitos Combinacionales

Escuela de Ingeniera Electrnica

TALLER
VHDL
Ing. Jos Alberto
Daz Garca
Pgina 88

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)

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

Circuitos Combinacionales

Escuela de Ingeniera Electrnica

TALLER
VHDL
Ing. Jos Alberto
Daz Garca
Pgina 89

Operadores y atributos

Circuitos Combinacionales

Escuela de Ingeniera Electrnica

TALLER
VHDL
Ing. Jos Alberto
Daz Garca
Pgina 90

Operadores
VHDL posee varios tipos de operadores
pre-definidos:

Asignacin
Lgicos
Aritmticos
Comparacin
Desplazamiento
Concatenacin

Circuitos Combinacionales

Escuela de Ingeniera Electrnica

TALLER
VHDL
Ing. Jos Alberto
Daz Garca
Pgina 91

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

Circuitos Combinacionales

Escuela de Ingeniera Electrnica

TALLER
VHDL
Ing. Jos Alberto
Daz Garca
Pgina 92

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

Circuitos Combinacionales

Escuela de Ingeniera Electrnica

TALLER
VHDL
Ing. Jos Alberto
Daz Garca
Pgina 93

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

Circuitos Combinacionales

Escuela de Ingeniera Electrnica

TALLER
VHDL
Ing. Jos Alberto
Daz Garca
Pgina 94

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)

Circuitos Combinacionales

Escuela de Ingeniera Electrnica

TALLER
VHDL
Ing. Jos Alberto
Daz Garca
Pgina 95

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

Circuitos Combinacionales

Escuela de Ingeniera Electrnica

TALLER
VHDL
Ing. Jos Alberto
Daz Garca
Pgina 96

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)

Circuitos Combinacionales

Escuela de Ingeniera Electrnica

TALLER
VHDL
Ing. Jos Alberto
Daz Garca
Pgina 97

Ejemplo de desplazamiento
Se tiene: x<=01001;
Se hace: y<= x sll 2;
Se obtiene y<=00100

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

Circuitos Combinacionales

Escuela de Ingeniera Electrnica

TALLER
VHDL
Ing. Jos Alberto
Daz Garca
Pgina 98

Operadores de Concatenacin
Se utilizan para agrupar variables, se
pueden usar con los tipos listados para
operadores lgicos.
&
(,,,,,,)

Circuitos Combinacionales

Escuela de Ingeniera Electrnica

TALLER
VHDL
Ing. Jos Alberto
Daz Garca
Pgina 99

Ejemplo de concatenacin
Z <= x & 1000000;
Si x=1 -- entonces z es:
z<=11000000

Circuitos Combinacionales

Escuela de Ingeniera Electrnica

TALLER
VHDL
Ing. Jos Alberto
Daz Garca
Pgina 100

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.

Circuitos Combinacionales

Escuela de Ingeniera Electrnica

TALLER
VHDL
Ing. Jos Alberto
Daz Garca
Pgina 101

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.

Circuitos Combinacionales

Escuela de Ingeniera Electrnica

TALLER
VHDL
Ing. Jos Alberto
Daz Garca
Pgina 102

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)

Circuitos Combinacionales

Escuela de Ingeniera Electrnica

TALLER
VHDL
Ing. Jos Alberto
Daz Garca
Pgina 103

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.

Circuitos Combinacionales

Escuela de Ingeniera Electrnica

TALLER
VHDL
Ing. Jos Alberto
Daz Garca
Pgina 104

Ejemplos de atributos de seales


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

Circuitos Combinacionales

Escuela de Ingeniera Electrnica

TALLER
VHDL
Ing. Jos Alberto
Daz Garca
Pgina 105

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;

Donde:
attribute_type: cualquier tipo de dato
Class: TYPE, SIGNAL, FUNCTION, etc.
Value: 0, 27, 00 11 10 01, etc.

Circuitos Combinacionales

Escuela de Ingeniera Electrnica

TALLER
VHDL
Ing. Jos Alberto
Daz Garca
Pgina 106

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

Circuitos Combinacionales

Escuela de Ingeniera Electrnica

TALLER
VHDL
Ing. Jos Alberto
Daz Garca
Pgina 107

Sobrecarga de operadores
Los operadores ya definidos se pueden
utilizar para realizar diferentes
operaciones sobre tipos de datos que no
soportan a los predefinidos.

Circuitos Combinacionales

Escuela de Ingeniera Electrnica

TALLER
VHDL
Ing. Jos Alberto
Daz Garca
Pgina 108

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

Circuitos Combinacionales

Escuela de Ingeniera Electrnica

TALLER
VHDL
Ing. Jos Alberto
Daz Garca
Pgina 109

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

Circuitos Combinacionales

Escuela de Ingeniera Electrnica

TALLER
VHDL
Ing. Jos Alberto
Daz Garca
Pgina 110

Ejemplo del uso de GENERIC


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

END my_entity;

Circuitos Combinacionales

Escuela de Ingeniera Electrnica

TALLER
VHDL
Ing. Jos Alberto
Daz Garca
Pgina 111

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

Circuitos Combinacionales

Escuela de Ingeniera Electrnica

TALLER
VHDL
Ing. Jos Alberto
Daz Garca
Pgina 112

Ejercicio

Circuitos Combinacionales

Escuela de Ingeniera Electrnica

TALLER
VHDL
Ing. Jos Alberto
Daz Garca
Pgina 113

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.

También podría gustarte