Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
lenguaje
Introduccin
al
lenguaje
Int roduccin
.1
lenguaje
Introduccin
al
~ "'ZC APOTZAlCO
~
con. IIIIUQT.M
UAM-AZCAPOTZALCO
REClO:I,A
ISBN 970-654-755-X
UAM-Azcapotzalco
COfIRECOON
02200
Mxico, D.F.
Tel. 5318-9222 y 23
fax 5318-9222
Primera edicin, 2001
Hecho en M...ico
PRLOGO
El objetivo principal de est trabajo es dar un panorama genera l de lo que es y para qu se
usa el VHDL, as eo mo anali zar los pasos de la sntesis e implemen taci n para los
dispositivos lg icos programables. usando los dispositivos Xilinx en particular.
Despus de la lec tura del trabajo es de esperarse que los lec tores no puedan por s mi smos
escribir cdigo. sino que tan s lo tengan una visin global de las potencialidades del
V HDL para produc ir hardware digital: tener un primer co ntacto con algunas
caractersticas del lenguaje, comprender algu nas de sus limit aciones actuales, sus
tende ncias de de sarrollo y de que conozcan algunos de los dispositi vos en los que
preferentemente se plasman fi sicamente los diseos , y cual es el tluj o de diseo tpico de
la herramienta Foundation Express Series Software.
E l material aqu i prese ntado deber servir como la primera lectura sobre el VHDL , una
especie de "por aqu empezar el estudio del VHDL". Se supo ne que los lectores debern
estar familiarizado s con las tc nicas de diseo digital hasta el nivel de tran sferenci a entre
registros o RTL , y adems poseer buenos fundamento s de programacin con lenguajes de
alto ni vel como el C O PASCAL.
El trabaj o justifi ca su ex istencia actu almente debido a que los tpi cos por l cubi ertos son
sumamente novedosos en este momento, a la escasez de bibliografa di sponible en
espaol, ya que a los estu di antes de elect rnica en di seo digital en la UAM -Azc se les ha
pedido como parte de su formacin el cursar tanto terica como prcticamente un curso
de di seo de sistemas digitales mediante software con lenguajes de descripci n de
hardware y en especial con el VHDL.
E 1 trabajo est dividido en tres grandes partes; constan a su vez de captulos, cada uno de
ellos subdividido en varias lecc io nes o tpicos generales presentados en forma de
lminas, esto con la finalid ad de tener un mayor impacto visual con los lectores, haciendo
segn creemos, ms amena la expos icin.
En la primera parte 'conceptos bsicos del lenguaje ' trataremos sobre generalidades
acerca del lenguaje, sus reas de aplicacin, sus principales construcciones y el modelo de
simulacin VHDL. Consta de seis captulos, siendo el primero ' introduccin al lenguaje y
sus aplicaciones ' en donde se dar un panorama general de lo qu es el VHDL y qu
papel juega dentro del flujo de diseo de los sistemas digitales. El segundo captulo ' tipos
de datos y seales' estar dedi cado a estudiar los diferentes portadores de datos y sus
distintos tipos de valores que pueden llevar. Para el captulo tres 'operadores VHDL' se
deja el estudio de los operadores predefinidos en el lenguaje. El captulo cuatro
' postulados secuenciales y concurrentes' se dedica a mostrar cmo es la estructura de los
archivos *' vhd, en qu posicin dentro de ellos van los postulados concurrentes y los
secuenciales , y sobre todo la diferencia cualitativa entre ellos. Dada la importancia para la
sntesis de los procesos VHDL, ser en el captulo quinto en donde se vern con mayor
detalle los postulados secuenciales, ya que estos son propios de dichos procesos. En el
captulo que cierra la primera parte se trata sobre algunas cuestiones relac ionadas con la
sntes is del YHDL.
La segunda parte ' informac in de YHDL para Xilin x' versar sobre cuestiones prcti cas
del YHDL para cuando el cdigo se escriba ex profeso para PLDs de Xilin x, ya que como
se ver en algunas ocasiones conviene perder genera lidad propi a del YHDL y ganar
eficiencia al escribir con determinados estilos cuando se apunta a un dispositi vo
programable con una arquitectura especfica. Los captulos que componen esta parte son
tres. E l captulo siete trata de dar ' un panorama general' sobre la sntesis del YHDL para
los di spos iti vos programables en general y los FPGA de Xilinx en parti cul ar. E l captul o
octavo es donde se hablar de los diferentes estil os de escritura del YHDL para sacar
provecho de las diferentes arquitecturas de los di spos iti vos Xilinx . En el nove no
anali zaremos los diferentes pasos a seguir en una situacin de diseo tpica de di seos
YHDL-to p desde la herramienta de entrada del cdi go, la sntes is, la simul acin
funcional, la implementac in en sus di fe rentes fases, la generac in del archi vo de
co nfi guracin y finalmente la programac in misma del chip .
En la tercera parte ll amada ' In fo rmacin bsica sobre los proveedores de software'
versar sobre algunas cuesti ones a considerar cuando se trata de selecc ionar alguna
herramienta de sntesis y/o de simu lacin desde alguno de los muchos proveedores
pos ibles y de acuerdo con las neces idades actuales y a medi ano pl azo del usuario fin al.
Esta parte esta fo rmada por un solo captul o, el dc imo 'cuestiones sobre el uso del
YHDL para diseo lgico programable' y se hacen notar un conjunto de cuestiones que
consideramos esenciales de tomar en cuenta para cuando se est en la di sy unti va de cul
sintetizador, cul simul ador y bajo que pl ataforma trabajar.
La presentacin est pensada para empl earse preferentemente con medios visuales como
la pe, o mediante una copia dura de ell as, aunque debe tenerse en cuenta que el trabajo
consta de ms de 550 lminas. La informacin aqu tratada es de carcter general y no es
una presentacin fo rmal del curso de YHDL que se ha empezado a impartir en la
licenciatura en electrnica en la UAM-Azc, aunque claro est se abordan muchas ms
cuesti ones que las del curso, aunque de una manera tan slo con carcter cualitati vo, por
lo que consideramos indi spensable que los alumnos que se estn entrenando como
di seadores de hardware digital con las nov isi mas herram ientas del di seo YHDL deben
de empezar leyendo este trabajo, e ir releyendo conforme avanzan en su curso, ya que al
paso del tiempo se les harn claros muchos de los conceptos aqu manejados desde un
principio para tratar de dar un panorama general.
Este trabaj o es un primer resultado del grupo de in vesti gacin de Arquitectura de
computadoras del rea de Sistemas Di gitales del Dpto. de Electrnica de la UAM-Azc,
medi ante el cul en un principio los integrantes del grupo obtuvimos la intelecci n de la
metodolog a del diseo di gital mediante el YHDL a partir de una escasa bibliografa y
qu surgi ante la necesidad del uso de los di spos iti vos lgicos programables como chips
destino de sus diseos. Es de notar que nuestra ex periencia en diseo digital se
circunscriba al di seo esquemti co, por lo qu buena parte del tiempo lo dedicamos a
di se ar mediante esta tcnica, hasta que "descubrimos" que la metodolog a seguida hasta
aqu era sencill amente ineficiente y que med iante software se poda moldear cul
plastilina el hardware digital. Nos aplicamos desde entonces a aprender el VHDL como
nuestra herramie nta de diseo principal y a tener como dispositivos destino a los FPGAs
de modo natural.
Una vez cumplida la primera misin de este trabajo, era nuestra propia compre nsin del
VHDL, se fu a los estantes, hasta que se vio la necesidad de introducir la nueva
herramienta como parte de la curricul a de nuestros alumnos de electrnica, materia en la
que consideramos somos los primeros en hacerl o en las universidades mexicanas, y por lo
tanto nos vimos en la obligacin de desempolvar el trabajo, darle una revisin y
correccin de estilo y lanzarl o a su publicacin para ayuda de los profesores y alumnos
que ensean o cursan tpicos de VHDL.
ATENTAMENTE
NDICE
Primera parte
\.
2.
3.
4.
5.
6.
Segunda parte
7.
8.
9.
NDICE
Tercera parte
P RIMERA P ARTE
Concc' to
1.
1.1
I .~
1.3
1.4
1.5
Areas de apliclC'in
1.&
1.7
1.8
EntidaJ ( I!ni~lI)
1.9
Arquitectura turchiteclHre)
1.10
1.11
1. 12
1.13
] .14
1. 15
1.16
Hepresent.,"!Cionjerrqu,jcQ
Derlan:tc lones locales
ConJigUfaCi0neS (r:onJigu,.Jtion)
Prm.:csos y tipos (proce.fs y typl')
Paquetes (pa~'kuge )
Compilaci'ny lihrcnaii
El cuadro completo
\. 3 .,1 U
10
l.
, ''''
VHDL
y sus aplicaciones
"
Aplicaciones
del
VHDL
Primero veremos algunas cuestiones sobre las
aplicaciones del VHDL, cubriendo brevemente sus
fundamentos, algunas de sus bondades y defectos, y un
resumen de los diferentes estilos de uso del lenguaje.
CIDtulo l .
11'>
'\.
. "
'1
Conceptos,
Construcciones
Enseguida se discutirn los principales conceptos que
encierra el lenguaje, luego resumiremos las principales
construcciones disponibles. Esto con el fin de obtener un
panorama general de los diferentes tipos de facilidades
disponibles, as como de la terminologa ms importante,
Caotulo l .
..,
L L1 ; 01
USO , ..
Panoralna
general
Finalmente cubriremos como se usan las principales
construcciones del lenguaje en situaciones tpicas de diseo
para tener una visin global, de modo que conforme
avancemos los detalles puedan ir siendo introducidos segn
se vayan requiriendo dentro de la presentacin.
CIDilllkt l .
'fl ,n., .
"ti,oVHlll ?
Qu es VHDL?
Qu quiere
decirVHDL?
El primer tpico trata la cuestion ms bsica por
comprender: qu es o que significa
CIChlkII .
10
VHDL?
1.1.'
.0..;. .
"
VHSIC: Hardware Descripton Language
Lenguaje de
!!escripcin de
!!ardware para
Circuitos Integrados
de muy Alta
yelocidad
VHSIC
-Hardware
!!escription
l.anguage.
Captulo l .
I "
80's
Clp1ulo l .
11
, ."
,o.
V1-tT)1 ')
IEEE 1076:1987
Nuevo: 1993
Las construcciones del VHDL fueron definidas como
estndar con nmero 1076 por la IEEE en 1987. Una
nueva revisin fue definida en 1993, a la cul se
aadieron algunas nuevas capacidades, removindose
igualmente algunas ambiguedades, y permaneciendo
compatible hacia arriba.
Caohulo l .
13
U .4
Versiones
1987 & 1993
En el caso de las construcciones VHDL ms empleadas en
la sntesis de Hardware, las diferencias entre las dos
versiones es mnima. Todas las construcciones usadas en
adelante son validas para ambas versiones .
CIDft1aIo l .
.
7
reas de aplicacin
Veamos los diferentes pasos ms generales incluidos en el
diseo de cualesquier sistema electrnico, y a partir de ellos
veremos en donde estn las principales reas de aplicacin
del VHDL . ..
Capitulo l .
\S
Pasos de
diseo en los
Sistemas
TorJutas
Softwafe j
y
sistrfN!ls
Electrnicos
16
"
Implementacin de Hardware
I Espec Sistema I
1
"
Particin HWfSW
IEspec, Hardware I
I,-",Es""",oe,c.",S",oftw~''"'.'---'I
r
L,fPanes
Ta~elas
y
sistemas
:--i
Sorware
lestndar 1
"
'8
~-
'"
,.
Particin HWISW
.L
I Esoec. Hardware
r--I
ASIC
PLD
~:rtes
stndar
:::--.
Tarjetas
y
L.g.~.!.~ ........J
sistemas
"
CIPtulo l .
1r.
~Vl (nl
Limitaciones . .. .
CIPitulo 1.
lO
10
'.'
..l
", '
Descripciones analgicas
Analgico
Digital
j
Para sistemas analgicos
NO es adecuado actualmente,
aunque pronto lo ser .
21
VHDL
~~~~otros estndares
11
definen el estilo
espec.
IEEE
1076
Estilo A
Estilo
IEEE
sintaxi s
estilos de uso
"
11
"
2J
L"
Estilos de modelado
Estilos de escribir
VHDL ...
Habiendo conocido someramente hasta aqu algunas
virtudes y defectos del VHDL, ahora veremos algunos
estilos diferentes de como puede escribirse cdigo .. .
Caoltulo l .
"
12
.. n
,", .
J~
La
I CQM~RI"~IE:~~ t
abstraccin:
RTL
I
I define el
I LGICO
detalle
,.
:~EGI:~ ~
"
Nivel Arreglo (Layout)
ICOMPORT~!ENTO
RTL
J
LGICO
Nivel ARREGLO
(LAYOUT):
Disposicin sobre el
Silicio
Temporizacin,
efectos analgicos
"
13
Nivel de lgica
=D- I
Nivel de Lgica
-{>-=D-
COMPORTAMIENTO
RTL
ARREGW
-J~T"""~~L~6~GJ~C~o;;;.
I
funciones
arquitectura
tecnologa
temporizacin
detallada
"
Nivel RT o RTL
Nivel RT
tranferencia
entre registros
r;1;;;COMPO;;;;;;;;.;;;TAMIEmO;;;;;;;;;:;;l .
RTL
LGICO
UYOUT
Arquitecturas de
funciones y
registros
Temporizaciones
basadas en ciclos
28
14
Comportamiento (behaviora!)
Comportamiento,
o funci onal
(behavl
LCOMPORTAM IENTO
,
'=wett
I
I
RTL
LGICO
.. . -..-....ARREGLO
I
~
~
nicamente
funciones, sin
nmguna
arquitectura
. Se requiere
temporizacin
detallada
~
29
COMPORTAMIENTO
vs
RTL
A partir de lo anterior podernos ver que al menos hay
dos estilos diferentes de escribir VHDL:
Comportamiento y RTL.
Cundo usar uno u otro?
30
15
IL_.RT;.:.L_-,I ---.l,
SNTESIS LGICA
LGICA
Disposicin o
colocacin
31
_ _~.u.!oIr:~'S Comportamiento
Comportamiento
~~::...~
OTL
ILGICA
Disposicin o colocacin
"
16
L6.4
.,.
JJ
Rn
Funcional
parJ
estmulos y especificaciones
estmulos
VHDL-Comportamiento
para:
="
Partes estndar =.
Especificaciones """""
Ltt:J
17
'.0
.,.
r,
Conceptos principales
del lenguaje VHDL
Ahora se introducirn los principales conceptos del
lenguaje VHDL, asi como las principales construcciones
sintetizables disponibles para el usuario.
CaoiCuJo l .
35
Concurrencia
Concurrencia
Ya que VHDL es un lenguaje que nos permite describir
Hardware, debe por lo tanto ser capaz de describir
actividades que estan sucediendo en paralelo. Tales
actividades se dice que son "concurrentes" .
CaoltuJo 1.
36
18
Estructura
A
f-_-+-4'UM
Estructura
CIN
C.... RRy
31
Postulados secuenciales
Secuencial
38
19
Tiempo
_s-L _ __
~
Tiempo
~L..J-'---
Tiempo
. ",
"
,.
Entidad (entity)
Justo hasta ahora volveremos la atencin hacia algunas
cuestiones bsicas de la sintaxis del lenguaje VHDL.
Iniciaremos con el bloque principal de cualquier diseo
VHDL: la ENTIDAD.
Capitulo l .
40
20
"
P .
entity SEMISUM is
B---.
' SE
-. SUM
MI
SUM r;;;ARREO
..
SEMISUM is
"
21
B--
... A
D .
"
r-<
SE r- SUM
s---.
~I ,
SUM
entity SEMISUM is
port ( A, B : in bit ;
SUM , ACARREO : out bit ) ;
t;;;cARREO
1-
end SEMISUM ;
~o
.
22
""
Arquitectura
(architecture)
Ahora el inters se centrar en comprender como describir el
funcionamiento, descripcin o comportamiento (behavior)
de una entidad (entity) . Para esto se necesita una
construccin VHDL conocida como architecture
(arquitectura).
Capitulo l .
"
smtaxls e la Arqmtectura
23
47
Asignacin de seales
architecture COMPORTA of SEMISUM is
bcgin
24
.',-"' ,
""
\rcJte(;lH~
An:hltccturc
X
"
Jerarqua (hierarchy )
u : sem.isumador
B --+---oI':'."iJ
U~
; semisumador
U3 : or
y
25
Entidad
entity FULLADD is
B-_
CIN
"
Arquitectura
architecture ESTRUCTURAL of
signal 11 , 12 , 13 : bit ;
-- otras declaraciones
begin
u 1 : SEMISUlvf pOr! map( A, B , 11 , 12 ) ;
u2: SEMISUM pOl1 map( 11 , CIN, SUM, 13) ;
u3 : ORGATE por! map(I3, 12, CARRY) ;
end ESTRUCTURAL ;
SUM
[2
26
,n 1
r.
instanciacin de componentes
architectu~e ESTRUCTURAL ofFULLAD~ is
JI
~u l
"
r,"
begin
tll : SEMLSUM pon map (A, B , 11 . 12) :
u2 : SEMISUM pon map( !l , CIN, SUM , 13) ;
u3 : ORGATE pon map(I3 , 12, CARRY);
end ESTRUCTURAL ;
u2
SUM
13
L....
12
"
,
CA RR Y
53
KIlI
27
110
. ,.
Declaraciones
de:
-Seales locales
-Componentes
Existen dos declaraciones que hasta aqu han sido hechas
localmente dentro de la arquitectura. Ellas son las "signal"
locales, y una referencia a las entidades SEMISUM y
ORGATE, conocidas como una "component". Veamos
primero las seales locales, ...
ss
11
Seales locales
, architccture ESTRUCTURAL of FULLADD is
signal Il , I2 , 13 : bit;
-'
-- otras declaraciones
--'
. begin
.Ql;
ul : SEMISUM port map (A, B , Il , 12) ;
u2 : SEMISUM port map( Il, CIN, SUM, 13) ;
,
u3 : ORGATE port map(I3 , 12, CARRY) ;
. end ESTRUCTURAL ;
r-
.,
.!.!. r -
"'
'"=
IJM
"
r-
-"
'--
~,
"
28
lfIIIIZI
Declaracin de componentes
...nhjtl!;,'tlif;.~ ESTRUCTURAL
l)f FULLADD !~
signa! 1I , 12 , J3 : bit ;
- DLCLARAClONl:S OE COMPONENTE':>
end ESTRUCTURAL ;
~---'-"--'-'---"'-'--"--"'----"-"----'-"----'----_._-_ ..
__ ._.;
57
cnd component ;
, ltity .
o',
. . .PQrt. (A; B
"' .
:in bit ; , :
"/:,,-' ;$c'SUM
, A'CA:R!
.
dYn.n~
;',)
,/"
"""
.---.....
."
~
.
TvhS1110
Declaracin de
componentes
ombre
Ml~
x.~,
4;,'"
': out:bit)
; '; ,1# k " .
1.,- ,_, _,_,c,t _ ,
'<~ i ;;-;:i1/ '~?/,[i
"
29
".tI
pon( A, B : in bit ;
Z : out bit );
enrl component ;
begin
50
..
30
B y e COmPilaja al ultimo
Entity
Architccture
X
61
''"
! 6ntilyA 1
.\-
1,;Iijr~. l
IArCh
xllArCh vi
I ~"'ityc I
IArCh
xl
[ArCh
Ifn~lye;: I
vi IArch xl [Archvl
Entity Architecture
?
B
?
1
?
61
31
end CFG.fi ;
COI'\'FIGURACJON POR DEFAULT
"" .
Siempre usar la configuracin por default
Usar la
configuracin por
default!
Tal como se ha dicho, es recomendable construir al menos
una configuracin por default para cada diseo. Este es un
tema avanzado ... muy usual para simulacin y poco para
sntesis .
32
Process
y
Type
Qu es un
pr ce
en VHDL?
"
CtDlfUlo 1.
1111p,.,
bcgin
OR_GATE : process ( A,B)
bcgiD
clst'
Z <= 'O"
end i f;
,
end prow,''S OR_GA TE ;
end CMPRTMNT ;
33
PROCE5S A
PROCESSC
"
Uf
.- - l.,
-
-. ~
bit
intcger
34
PREDEFINIDOS
biCndor
hoolean
DEFINIDOS POR
USUARIO
I 1411
..
,,,..,,
Paquete
(package ... .)
El siguiente objeto VHDL a estudiar es el
conocido como package .....
Capitulo 1.
70
3S
Entity
Entity
Entity
Clpltulo 1.
~~
entity
architecture
configuration
72
36
end MI]ROYECTO ;
7l
1.... . .
,.
37
."
Compilacin o anlisis
ERRORES
archivo binario
diseo.vhd
.OMP/l.AClN,
000101 0 1
11 0000 11
01 110000
11 000000
101 0 1010
En
pequeo
que se puede compilar es
una sola unidad de diseo. Ellas son la entity, architecture,
configuration y el package, estos ltimos pueden tener una
parte separada llamada un package body. Esos cinco objetos
son las nicas unidades de diseo definidas en el lenguaje
VHDL.
Capitulo l .
"
38
UD
ij
U U
Qit'(I'crlft"1i
din:cturos
EJ
Clotulo l .
).'OI1f(. KS t~""hd
"
uLJu::r"
vv
Nornbr..: do!
Nombr(' de directorios
78
39
Capitulo 1.
79
Jerarqua de entidades-arquitecturas
lO
40
pada!!t:
PI ~
- p;~~;g~--l \ '~<:~"'._===,-_.. 1
' - - - -\~\. "\
-,
I Arch X
Arch X
IM XI
81
Configuracin
.,
41
ESTIMULO
Diseo a
simular
RESPUESTA
42
2.
2.1
2.2
2.3
2.4
2.5
Arreglos (ul'rays)
2.
2.7
2.8
Com,:lcJl.Il'iun y agregados
Definiciones de tipo
Lgica IUultivalor
Lgica e"sta ndar
2.9
2. 10
\..1 01(\,110,
"O
/>- /0
"
La finalidad ...
La siguiente presentacin tiene como objetivo ver como se
efectua la asignacin de valores a las seales en VHDL, as
como el dar un panorama de las reglas relativas al uso de los
tipos (type) .
Caoitvlol.
43
_..
M.
Concepto de tipo
"
, I
' ,'''lo
no"
1,. 1.
arrays
- arreglos (array)
- manipulacin de
seales (signal)
Enseguida trataremos el concepto de "arreglo" (array) ,
equivalente al bus en los esquemas. Se vern algunos
ejemplos de como pueden manipularse en VHDL las seales
tanto de un solo bit como de arreglos de bits.
C.pftulol.
44
Tipos enumerados
tipos propios
enumerated types
Enseguida se estudiar como se pueden definir tipos de
datos propios, los cuales se conocen en el lenguaje VHDL
como 'tipos enumerados' .
Caphulo l .
U .4 : 0 ,'
Lgica Estndar
Standard_Logic
Veremos fmalmente la definicin de un tipo conocido como
Standard_Logic, tipo al que se le ha considerado como el
estndar para la descripcin de seales en VHDL.
CIPftulo 2.
.
45
,," ".
El concepto de 'tipo'
y
como se especifica
Primero hay que describir el concepto 'tipo de dato', y
luego en que lugar del cdigo se especifica dicho 'tipo de
dato de una seal' .
e.pltlLlo 2.
"
"
Concepto de tipo
OJ
O'
, 1'
architccture ESTRUCTURAL of
FULLADD is
"la
92
46
" "
.,..
Especificar declaracin en por! o en signal
-
entity F11LLADO ,
"'------
bcgio
-Codigo
e ndESTR U~;
Tipo
Tipo
t- Tipo
._-_._--
"
K\f;
47
"
'11\ T:'
,1"..
' ""Iy
II
I
I
11
48
boolean, time
false
10 ns
200 fs
true
2.5 ps
El tipo ' boolean' define dos valores: true y false oEl tipo
boolean es devuelto en la comparacin de dos valores ...
El tipo ' time' se usa para modelar tiempos en las
simulaciones, y consiste tanto de un nmero como de una
unidad ...
CIDlrulo 2.
"
bit, bit_vector
"010101010"
"111 "
"0000"
'O'
'1 '
bit
biCvector
tipo biCvector(") .
Capitulo 2.
49
1111I~IIIIII ~IIIIIIII ~ 11
2893967
character, string
'a'
"Hola"
'?'
"VHDL"
"UAM_AZC"
string
, 1'
..
Capitulo 2.
, 1,
Ti ,
......
integer, real
l.02
-37.5
-50
294, ..
1.0, ...
Integer
Real
'00
50
!.AJ1_
t\',
" /,,
n.
Asignacin de valor a
las seales (signa!)
Una vez presentados los tipos estndar, veremos los
conceptos escondidos tras la 'asignacin a una seal'
(signa!).
,.,
Capitulo l .
asigl1acin~
de s~al
'l ""'.f:
1Z <= A e !l
: .... . . . .. . . . ~ ...jl
,.,
51
controlador de seal
Z<= A;
signa! A, B, Z : bit;
signa! X_INT : integer ;
Z
'03
Mltiples drivers
~----
z <= A;
IZ
: signa! A, B, Z : bit ;
Funcin de
... . _ .......__,
:1_.. _ ._.
<= B ;
Z
B
..
52
"
....
Todos los tipos son unresolved para los casos
tratados aqu
r':::::~-"':::::':':-x
/
,
rr====
" ============~
I signal A, B, Z : bit;
I
/
, Z<=A;
:Z,<,=B
o
i; "~;
"
L....................
............i
\ ZDeclacio ~l:.al
".
~._.--
'
_~X,
,o.
Arreglos
(arrays ...)
Ahora es tiempo de ver corno se definen y corno se
manipulan en VHDL las seales tipo arreglos (arrays)
CIPltulo 2.
10.
S3
000
Arreglo
y cada elemento
del mismo tipo
Un array es una coleccin de objetos, siendo cada uno de
ellos del mismo tipo.
El lenguaje VHDL defme dos tipos estndar de arreglos:
biC vector y string.
Cap&u.lo 2.
107
, .,
108
54
Asignacin de arrays
.ignal Z_BUS : bit_vector(3 downto O) ;
.ignal C_BUS : biCvector(1 to 4) ;
Z_BUS <= CBUS ;
es lo mismo que:
Z_BUS(3) <= CBUS(I);
Z_BUS(2) <= CBUS(2) ;
Z_BUS(I) <= CBUS(3);
Z_BUS(O) <= C_BUS(4);
'09
secciones de array
slgnal Z_BUS : biC vector(3 downto O) ;
signal C_BUS : bit_vector(1 to 4) ;
Vlido o legal:
Z_BUS (3 downto 2) <= "00" ;
C_BUS (2 to 4) <= Z_BUS(3 downto 1) ;
Ilegal:
Z_BUS(O to 1) <= "11" ;
110
55
Concatenacin
y
Agregados
La concatenacin y los agregados son dos
mtodos para asociar 'juntando' las seales, a
modo de asignar a ellas objetos de arreglos.
CIDitulo 2.
111
Concatenacin
signa! Z_BUS : bit_vector (3 downto O) ;
signa! A,B, C,O : bit;
signa! BYTE: biCvector (7 downto O) ;
signa! A_BUS: bit_vector(3 downto O) ;
signa! B_BUS : bit_vector(3 downto O) ;
Z BUS <= A & B &
.
e&
t -"-----
D;
?-~
operador de....e?Dcatenacl(m
.....
BYTE <= A_BUS & B_BUS ;
S6
,"
Agregados
signal Z_BUS : bit_vector(3 downto O) ;
signal A, B, e, D : bit ;
signal BYTE : biCvector(7 downto O) ;
Z_BUS <= (A , B ,
e , D) ;
..... ~. Agregado
es ib'lJal a :
Z_BUS(3) <= A ;
Z_BUS(2) <= B ;
Z_BUS(l) <= e ;
Z_BUS(O) <= D ;
e, D : bit ;
-----~ASignacin-p~r nombr e
.-
11.
57
---....
)7"
.' "
Definicin de
tipo
(type)
Se ver como los usuarios pueden definir en el lenguaje
VHDL sus tipos propios.
e . pltuJo 2.
116
58
tipos enwnerados
Las definicion es de tipo se
efectuan por lo comn en:
I package I
En VHDL un 'enumerated type' son aquellos definidos por
el usuario. Los tipos enumerados son por lo comn
definidos dentro de los package, architecture o process, y
muchas herramientas VHDL los pueden sintetizar.
Capitulo 2.
117
riJX)S cnumen;Oos
declaracin de tipo
typeMCEST
(RESET, ESPERA, RW_CICLO, INT_CICLO)
,- ------
4
'------------,.----,._/ -----'--,- ,.--,-_. - "-- ._-------- . -
l~iS
Veamos
para definir un 'e
erated type '.
Primero Y que especificar el nombre del tipo, y luego
listar todos los valores que un objeto del tipo puede tornar,
con cada uno de ellos separado por comas.
Capltlllo 1.
'lO
59
I
!,
..... l
'19
RESET
ESPERA
RW_CICLO
INT_CICLO
"00"
"DI"
"10"
"11"
110
60
'RO l .
,,,!ti
Lgica multivalor
Veremos como se pueden representar en VHDL los sistemas
lgicos con ms valores que justo el 'O' y '1', y entonces
trataremos de un estndar el cual ha sido definido en esta
rea, como Lgica Estndar (StandanLLogic).
Capitulo l .
ll..L
'"
1 ..
61
111'1
1.'
Lgica multivalor
o lgico
Ilgico
'O'
'1'
Alta impedancia
'Z'
No importa
Sin inicializar
Desconocido
'-'
'X'
'D'
123
l.
MvJ12
62
Standard_Logic
IEEE 1164
Actualmente en esta rea se ha definido un estndar, en el
cul se tiene un sistema MVL con nueve valores o 'estados' .
Este es un estndar aparte del que define el lenguaje mismo,
y es el estndar IEEE con nmero 1164. Veremos con
mayor detalle este tipo de datos, conocidos como
Standard ~~ogic .
Captulo 2.
) \)1\
<;:,_
'"
", Ir ..
Drive fuerte
Drive dbil
( .... do . lo ocasionalmente)
type std_ulogic is (
tu',
sin inicializar
'x',
desconocido
O lgico
'O"
'1' ,
1 lgico
'Z' ,
Alta impedancia
'W' ,
Desconocido
'L',
O lgico
Ilgico
' H',
'-') .
no importa
12'
63
un resolved
127
A - - ;;\;+Wl>---,
lleva asociada
\Ina funcin
de resolucin
Z
.28
64
!. ,
Package:
standard_logic_1164
Los tipos std_ulogic y std_Iogic estan definidos y
contenidos dentro del paquete llamado
standard_Iogic_1164, Ms adelante veremos como hacer
referencia a este paquete,
Cl ptulo 2.
'"
std_ulogic_ vector
std_l ogic_vector
std_ulogic_vector
std_logic_vector
130
65
11 00
H.J 'V::
Usando
standard_logic
Una vez vistas las definiciones de los tipos de datos
basados en standard_logic, veamos como emplearlos.
' .10.1
\J~
. tllI .
..
library IEEE;
use IEEE.std_logic_1164.alI;
~
-_.--
_ .. _ _ _ ._ - -0
("
entity MVLS is
port (A, B : in std_logic;
hace visile todo conten do
Z
: out std_logic );
del paquete
elld MVLS;
.
66
1.10.'
legal
IJJ
B
RES_Z<=A;
RES_Z<=B;
Z<=A;
Z<=B;
Ilegal
Legal
134
67
Usar std_Iogic
std_Iogic
recomendado
std_ulogic
no recomendado
Las siguientes presentaciones se basan en el uso de tipos
std_Iogic y std_Iogic_vector, los cuales son los
recomendados a usar en todos los diseos. La razn ms
poderosa es que en el VHDL existen otros estndares
defmidos en base a estos tipos, no as en los std_ulogic y
std_ulogic_vector.
e.pitlllo 2,
68
3.
Operadores VHDL
II
3.:2
3.3
3.-1.
Operadores I\ritmCttC0S
Operadores
VHDL
Trataremos sobre los operadores VHDL
CIPitu!o J.
138
69
I I
,n.
.1.. ..
Operadores
VHDL
Como hasta aqu ya conocemos lo bsico sobre las seales y
sus tipos asociados, es tiempo de ver los principales
operadores que nos permitirn efectuar ... aunque no lo
crea! oo. operaciones entre esas seales.
Capitulo 3.
".
Lgicos
Operadores
Lgicos
Veremos los operadores lgicos que usa el lenguaje, tal
como 'and', 'or', 'xor'
Capitulo 3.
1..
70
u.""
Relacionales
Relacionales
Tambin veremos los operadores que se usan para la
comparacin entre valores, .. .
Capitulo 3.
L4Y
'41
~?
Aritmticos
Aritmticos
'42
71
Lgicos
'43
not: tiene la ms
alta precedencia
,<1
72
145
Iboolcanl
Istd_IogiCvector I
Iha vector I
Istd_ulogic
vector I
----=~~=--_. Istd_logic I
L.
'46
73
n .4
",,o,
(3 downto O);
! equh'ah' ntr ft :
Z_BUS (3) <- A_BUS (3) and B_BUS (3) ;
Z_BUS (2) <= A _BUS (2) and B_BUS (2) ;
Z_BUS (1) <= A_BUS (1) and B_BUS (1);
Z_BUS (O) <- A_BUS (O) and Y_BUS (O) ;
147
Operadores
relacionales
Veamos ahora los operadores
relacionales o de comparacin
Capitulo J.
148
74
menor q , t c EJ
mayor que
.EJE
dnt:co a
-----1 < 1
----~ 1> 1
.[8
diferente a
'49
if (A = B) then
Z <= '1' ;
leIse
z <= 'O' ;
lend
if;
.. _-----_._...._. __._._.._._--
devuelve un tipo
booleano
if-tbell-else
;~.,_
,so
75
[Llj! l~ G:J
[_11] -'~
Gcs ms grande!
.l.
I ~I
- - --
--,-.1
Sin significado
, .
nu lll cnco
~. , 1-...L--L--.J
11 0
1!11
76
Operadores
aritlnticos
' 53
181
valor ahsoluto
multiplicacin
division
exponenciacin6
[j
l.., '
resto
a bs
11
Irem I
'54
77
''' ,
Z <= A + B;
tipos 'integer'
Por lo general los operandos necesitan ser del mismo tipo.
Asi por ejemplo, la suma de dos integer regresa otro integer.
CIDitalO l .
A
=--,
., ... ..i
78
tiempo:
lS7
79
4.
4 .1
Cuarta
4.2
P(\s ru1ad()~
4 .,
El proceso
4 .4
Ejecllci(ll1 de pro.::esos
4.5
4 .6
FI postulado
4.7
El p0:itubdo Ca.c
4.8
El For Lo<>p
" I PIIU
pre~elltacio!l:
(,Que
3prend~rem) s
Ml ella?
ir
'"
o ".
..
.~.
'1
Postulados
'Concurrentes'
y
'Secuenciales'
Presentacin que trata sobre los postulados concurreiltes y
secuenciales. Veremos que la palabra concurrente es para
los postulados que se ejecutan fuera de un proceso, mientras
que los secuenciales, son aquellos que se ejecutan en
secuencia dentro de un proceso.
Capitulo".
81
..
,
Postulados Concurrentes
Postulados
'concurrentes'
En primer lugar revisaremos brevemente los
conceptos que encierra la palabra concurrente ...
163
CIPitulo 4.
Postulados secuenciales
164
82
if
c~sc
X is
when Oto 4 =>
Z <= .R ;
w hen .. ..
case
ror 1 in O to 3 loop
. if(A ~ 1) tben
Z(l) <= ' 1' ;
~utl if ;
:ndlnup;
fol' loop
lO'
420 ~ "
'66
83
Da lo mismo
cualquier orden
de escritura
y <= D+Z ;
Z <= C+X;
X <= A + B;
'67
'68
84
!x <= x +Y ; !
en software,
un programador
pensara en el
siguiente esqucm~
Ca Ditulo 4.
!x <= x +y; 1
para UD programador
VHDL la situacin
es di ferente
ien bardware
esta muy mal!
1
+
de
I
' . ,. ~
..c'~
170
85
!f.'>!,!
,~
171
Ir;,
etiquct~
.......... Li ta de sensitividad
Postula os
,
secueufales
end if ;
end process MUXI ;
In
86
""
~
.
el se
Se ejec uta
sucede un evento
en A, B. o SEL
Z <=B ;
end if;
173
87
l .. ................. _......,
!t begin
PI : process
IL
postulados ..cuenciales
. end process PI ;
!
i
E postulados concurrentes
!I P2:.
process
beglD
~-
codA;
postulados secuenciales
1
,
end process P2 ;
f- posflados concurrentes
l7S
14flF '
Ejecucin de
'procesos'
(process)
Una vez revisados los principios bsicos de los procesos,
ahora veremos en mayor detalle cul es la forma de
ejecucin de esos procesos.
CIIDitulo4.
17.
88
'z <= A
. Z <=
andE ;
e ancl D ;
(, .. y que s son
:;t:l'uencia le::;?
177
i end CONCURRENTE;
A--f
B -----t:
~=~-~
178
89
~.
Z <:= , and D;
end process ;
end SECUENCIAL ;
Valor asignado
finahnente
: __--1Dl---Z
'"
,-..-.-;--.------.----.-.-.-.---1
signal Z, A, B, C, D : std_logic;
1 begin
process (A, B, C, D)
begin
!
Z<= AandB;
i
Z <= C and D;
:
end process;;_ _ _ _~
: end SECUENCIAL;
Z se actualiza
tan solo
despus de
queeJ
proceso
se suspende
I
.80
90
n, .
Listas
de
sensitividad
Ahora que nos hemos familiarizado con la forma
en que se ejecutan los procesos, veamos algunas
cuestiones relativas a su lista de sensitividad
Caotulo 4.
181
Ej emplo de MUX
MUX : process (A, B, SEL)
begin
ir SEL = '1' tben
Z<=A;
el se
Z<=B;
end ir;
end process MUX ;
"2
91
y SEU
' 13
SEL_ J!
L . '_ _ __
92
-1
_'-_~~___-
Sntesis de
lgica
Z<=A ;
combnacional:
else
Z<=S;
Lista de sensitividad
eod if;
!._end
proccss
MUX
;
....................__....... _.. _._._
...-...- ...................-........-
completa!
4.
18S
El postulado
,1'r
Una vez vistas las bases sobre la ejecucin de procesos,
ahora veremos tres postulados que nicamente pueden ser
usados dentro de cdigo VHDL secuencial: primero el
postulado 'if', luego el 'case', y por ltimo 'for loop'.
..
93
,., c.
... "
..inf:;rxis de jfthen-else
jf CONDICION then
- postulados secuenciales
end if;
il' CONDICION then
-- postulados secuenciales
e]se
-- postulados secuenciales
end jf;
l\IIIlj
187
estructura jf-elsi f
ir CONDICIONl theu
-- postulados secuenciales
elsif CONDICION2 thcn
-- postulados secuenciales
elsif CONDICION3 then
-- postulados secuenciales
cIsc
i
I
II
se ejecuta
nicamente
una sola rama
- postulados secuenciales
. ~IlI1}f ;
...................................
94
ir CONDlCIONl then
-- postulados secuenciales
elsif CONDlCION2 then
-- postulados secuenciales
elsif CONDlCION3 tben
1
-- postu lados secuenciales
else
-- postulados secuenciales
,
end ir;
_ ____________1
la primera
rama
verdadera
es la nica
que se
ejecuta
Capitulo 4.
.11. ..
.:..
ejemplo: if-elsif
,
process (A, B, e, X)
begm
si X="OOOO"
i f (X = "0000") tben ...------esta es
Z <=A '
elsif (X = "0000") then
la rama que
Z <= B ;
else
se ejecuta
Z <= C '
cnd if;
,
cnd process ;
95
El postulado
,case'
Ahora presentamos un segundo postulado
secuencial: el 'case'
C.pilulo 4.
19'
.
b
!
,
l:~~~:s~;
... . . . . . . . ~~lres
posibles
El postulado' case' considera todos los valores posibles que
un objeto puede tomar, y ejecuta los postulados secuenciales
dentro de una sola rama dependiendo del valor actual de
dicho obeto.
C.pitulo 4.
'"
96
" ,., ,
Rangos, listas , others
Capllulo 4.
19'
e, X)
case X is
I
",hen O lo 4~
~>
I
ilegal, Ino
Z<= B;
I
mas de una
when 3 =>
!
vez!
Z<=C;
j
",hen 7 I 9 = >
!
when
Z <= A
Z<=O ,'
cnd process ;
olhcrs~ --
end case ;
__ t
1
I
i
_r---.----~
~ ubr",
lodo!' Jos
casos no
~spccifica do s
._!
."
97
'A andB'
--etc....
----~
end case :
constantes i
.i !C
n~"
'"
Postulado
'for loop'
Por ltimo otro postulado secuencial que
veremos ser el lor loop
CIPtulo 4.
'96
98
IR 1 l:1 ("
for 1 in O to 3 loop
--postulados secuenciales
enqloop ;
.........
__ ....---_.;
'------'
197
______
for 1 in O to 3 loop
no se
necesita
declarar
--postulados secuenciales
I
!
_.end -_loop;
_._-----_._- - . . . .._. . _-_. . _. . ._---_._--_. _---_!
....
...
198
99
-,l-t -----+
,-
--- -.. . . . . . .
/ sintesis
~----------~
-_._._...._...-..........,
lgIca_O ,
i Lgica_2 i
--postulados secuenciales
end loop;
Ejemplo
enli!)' EJEMPLO is
porl (A : in sld)~gic_ veclor (O lO 15))
SEL : ID mteger range Oto f3 ;
Z : oul sld_logic ) ;
end EJEMPLO'
archileclure RTL of EJEMPLO is
begin
Desconocido: process (A, SEL)
begin
for [in O lo 15 loo'p
if SEL ~ rthen
Z <~ A(I);
el se
Z <='O' .
end ir;
,
end loop;
end process Desconocido;
end RTL;
200
100
s.
Postulados secuenciales
5.1
:-.2
5.3
5.4
55
5.6
5.7
5.8
5.9
5.1 (1
5. ! 3
Variables vs seales
1..:l PI'IWD
Variab!~s
5.11
5. ~
lUI
n .- (),.,
Postulados
'secuenciales' , .
'02
101
Finalidad
Process
'03
Ejecucin de procesos
1
e.1CCUClon
- ,
actualizacin
de seales
ejecucin de
procesos
de un
proceso
'04
102
Postulado 'wait'
,--------------------------1
iES~IMULOS: process
i
i
' begm
."sit for 10 ns :
I
I
I
~nd pr~~;~~~T_IM~L.9_~i I
Finalmente veremos ms en detalle el postulado 'wait', y
como afecta la ejecucin de un proceso.
Capitulo 5.
i..2.I .
Conceptos
preVIOS
Recordemos algunos conceptos relacionados, que sern de
utilidad ahora ...
Capitulo 5.
103
modelo de proceso
207
~~ff~t~~:~::~:~~~-:n-cu:::t~~--l
PI : process
'
begin
--postulados secuenciales
end process PI ;
--postulados
concurrentes
P2 : process
!
begin
--postulados secuenciales I
end process P2 ;
j'
..................................................................................... ..1
'08
104
.
Concurrente dentro de la arquitectura
architecture
. . . . . .A.. . of E . .is.. . .. . . ..
lbegin --postulados concurrent.es
PI : process
begin
--postulados secuenciales
end process PI;
--postulados concurrentes
P2: process
begin
I
1
"
-postulados secuenciales
end process P2 ;
--postulados concurrentes
end
A;
.. __ .... _... _._._._._ ..
-_.~
_._-_
---_ .. "-- ..
_
,'
209
--postulados concurrentes
PI : process
begin
--postulados secuenciales
end prncess PI ;
--postulados concurrentes
P2 : process
begin
--postuladns secuenciales
I
eud process P2 ;
--postulados concurrentes
l eud A; . ... ............. . .......... ..
......... _...
210
lOS
,n .
"""'~ "'"
Asignacin
de seales
dentro de un
proceso
Otro concepto que debemos tener presente, es cmo se
actualizan dentro de un proceso los valores asignados a las
seales.
211
CIPitulo S.
ibegin
signal Z, A, B, C, O : std_logic ;
Z <= Aand B;
Z <= C andD ;
end CONCURRENTE ;
D
_ .. ____......__ .... __..____ ..._... ___ ._. ____ _
212
106
i begin
signal Z, A, B, C, D : std_logic ;
process (A, B, C, D)
begin
Z <=A and B;
Z <= C and D;
end process ;
! end SECUENCIAL;
!
~_--D--z
2Il
signal Z, A, B, C, D : std_Iogic ;
! begin
process (A, B, C, D)
1
;
i
~~
.i
Z <= C andD;
l
end process ------ -_ .. cuando el proceso se !
suspende
'
L<l!l~~~c,::l,I~]\/C::I,'.\,~;
'
...._.
.. . . ... .. . ;
El LRM define que dentro de un proceso la asignacin a la
seal hecha al ltimo es la que toma efecto, pero tan solo en
el momento en que el proceso se suspende, que en este
ejemplo es cuando se ejecuta la ltima lnea end process.
CaDitulo 5.
'"
107
\", tknrr
"'~~"
Diferente signiflcado!
proccss ( A, B, C, O)
begin
Z <= Aand B ;
Z <= C and o ;
end process ;
dentro de un proceso
begin
Z <= A and B ;
Z <= C andB ;
end X ;
Los mismos postulados tienen significados muy diferentes,
dependiendo de si ellos son ejecutados dentro o fuera de un
proceso.
Capflulo S.
,J I
lIS
lSlIII.I.I
', '
Mltiples
llamadas
a un solo proceso?
Debido a la forma de actualizacin de las seales dentro de
un proceso, ahora veremos como un proceso puede
potencialmente ser ejecutado varias veces antes de que todas
las seales sean actualizadas.
Capitulo S.
'"
108
~ ._.--_.----,.-
------_.- ----------'
'"
-\
____
Ibegin
A: O ~
B: 1
Y <= A;
M <= B;
Z <= M ;
ZM::OO
~~pro~ess~~
_M
_P_
L_
O_;_____ __
(
t\'eoto en 8
'"
109
H_.1
,,, "~,m
_+ . . __ . ._ . . __.____ __
A
tvi: O...
;r B ': 1
no
el valor d~ M a(m es 0,
se ha actualizado hasta aqu!
!Z:O
'"
Capitulo 5.
Z no se actualiza!
EJEMPLO: process (A, B, M)
1 begin
,'
y <_ A .
-,
,
M <= B~'
';"'-- 'aa-z-se
Zs
.-------- :
,..//
:
'
asznar
-
z<= ]\
'
1 end process EJEMPLO;
i
!An
'
/'
- --'M: O
________iZ:O
---,........................... .1
M an contiene O
O
.-----_____ B: I
11 0
begin
Y <=A;
M <= B ;
Z <= M ;
.................. ..!
.......
i1\: O
M se actua
. l'Iza - - - - - -. M:
Bl
1
Z no se actualiza - -
_ _ ----- Z: O
221
--~--==-------"),------,
i EJEMPLO : process (A, B, M)
1 begin
y <= A '
,
,
,
M <=B;
Z <= M
1
'
end process EJEMPLO;
_ _ _ _ _-.J
I
-A
:
B: 1 ,
M:
'
lZ:Ol t1
L...............,
________ evento en M
111
: cuando el proceso
I se suspenda,
Y <= A ,.
!
-'
.
M <=B ;
~-~ :
Zsera
I
Z <= M~
~ actuahzada con M
: end process EJEMPLO;
.! ~J
1 begin
.
Z va1e O mIentras no se
suspenda el proceso --------_
:O
::A
. ::
: B: 1 :
: M: 1 :
~Z:O
CIPftulo S.
M <= B ;
z <= M
al su~penderse el proceso
<= A .,
_________...._ -
.;-
i
:
[N
:O j:
_Z: 1 +--~: \ i
...................... ;
'24
112
e lllO se ej ecuta
un ciclo de
simulacin
VHDL?
Se presentar mediante un pequeo ejemplo 'el como'
se lleva a cabo una simulacin VHDL. Este ejemplo
ajusta en un cuadro ms general...
m
CI Pitulo S.
Mecanismo de cola
:.'
cola de
ejecucin
de procesos
cola de
actualizacin
de seales
'"
113
<, 1<1 ,
i "n
'------------l
j process (A, B, M)
j begin
Y <=A;
M <= B ;
Z <=M ;
j end process ;
',<0-"
\'O'*"f~.~
h~--:-:-. " ' :!:r
.
,y ' .'
--
- '-'
~ft(
I r;:...: "t -
.--
:w';
.j\;
f
-- ,
cola de /
cola de
actualizacin
ejecucin
..
..~..
de seales
de procesos
pro~;:sos sensitivos van a la cola
B es actualizada
-..
~.~
~. ~
lIlR1I
l27
...
i ~'~' ~=i~~
__-+ I .'~~=~
::-:--\
- --
.'
de
procesos
Cada uno de los procesos puestos en la cola se ejecuta por
turno, y las seales a ser asignadas en cada uno de los
procesos no se actualizan en cuanto el proceso se suspende,
sino que son colocadas en la cola' Actualizacin de
Seales'. Cuando todos los procesos activos se han
ejecutado, solo entonces las seales se actualizan.
228
114
Ciclo delta
todas las
sealfs
se actua Izan
\
I
r-------,
==11-
--
begin
Y<=A;
M<= B;
Z<=M;
'--,..,.:--;-.,---'
_~'.I.d.J>..r.'>.~ e ss;
...... 1
cola de
cola de
actualizacin
ejecucin
de seales
de procesos
Como resultado de la actualizacin de las seales en la cola
'Actualizacin de Seales' , algunos procesos adicionales
pueden ser colocados en la cola de 'Ejecucin de Procesos',
A la iteracin alrededor de esta secuencia se le conoce como
'ciclos delta',
eapihllo
s.
'29
Ejecucin
sobre el
tiempo ....
Es importante recordar que mltiples ciclos delta estn
sucediendo en el mismo punto del tiempo de simulacin:
veamos como este modelo puede ser extendido para incluir
el tiempo de simulacin ""
Capitulo S.
,,.
115
-' - '
Actualizacin
de Seales
Ejecucin
de Procesos
Tiempo de simulacin
2JI
El tiempo avanza
. .. avanza a la siguiente
actividad
I> I~~
= -.,
---',
--
- - 0"i<\" .i;;
>.,-
Actualizacin
de Seales
':"
Actualizacin
de Seales
o~~t
Ejecucin
de Procesos
Tiempo de simulacin
116
AV ;1n 7~m(' o
I Z <= A after 5 ns .
1l
~_~ ~~J~l
~~~~
Actualizacin
de Seales
. flS
,1
Ejecucin
de Procesos
2lJ
[E
l,
==~,
_~
. I :~
"
Actualizacin
de Seales
--
1,
'-
==----'"
Ejecucin
de Procesos
== . 1 ,' ;
~\,\
_ 'o
'::','\t>
.- ,.
,>.;<t:i"
~,">:'
=:--77.~::;;:
Actualizacin
'
Ejecucin
de Seales
de Procesos
,1
117
,"0."
Modelo
completo del
proceso ...
Hasta aqu hemos considerado el comportamiento de
procesos con lista de sensitividad: ahora ampliremos el
modelo para cubrir ms capacidades de los procesos VHDL.
Capitulo 5.
2JS
,i begin
Z <='1' ;
en
se suspende en
el fondo
,'======-___--,
process
begm
else
Z <='1'
'
Z <= 'O' .
se suspende en ~-" ---------.. end if ;
,
wait onA, B :
'wait'
end process ;
.
118
Bucle infinito
~
process
begin
if(A; ' I' or B; ' I') then
Z <='I' ;
iteracin infinita
else
Z <='Q' ;
end if ;
wait on A, B ;
end process ;
'"
'"
" ',,
Iprm,ess (A, B)
process
begm
1
if (A=' l' or B=' 1')
if (A=' l' or B=' 1') then
then
Z <='1';
Z <='1"
_.
else
i
else'
Z <= 'O' .
end if ;
,
Z <= 'O' .
end if ; '
wait on A, B ;
; end process ;
end proce~~. ; ...................................
eguivalente a~ ~a,so de
ningun wait..
bsta de sensltlvldad
. begm
'"
119
rg~~~~s-Sl~~~~~:,~;~~ - _ -I--~"f
-: g~~~r:;A='l' or B='I') then
, then
;
else
!
end if ;
! end process ;
~ ::',I~,;
, , 2 <='1'
wait on A, B ;
:;t:ll_~P~?~~~s. .; ._.
::J
.........
'"
El postulado
'wait' ...
El postulado 'wait' provoca que un proceso se suspenda,
veamos las cuatro formas del postulado 'wait', y las
diferentes maneras en que 'esas formas' causan que un
proceso se re-ejecute.
Caoltulo 5.
'40
120
~ Q
1 J:I '
~"n
c::-:=_=:-::-:,:--va",,
' i_t -,-fc,'_:...:
r: J)~Ti Qdo de tiempo
'1
: ESTIMULOS : proc',ss
, begm
SEL <= 'o'
BUS B <=:"0000" .
BUS-A <=" llll" :
wait f[JI 10 I1s :
SEL <= ' 1"
I
l'
Ir-'-:-:c----,-::--,-----,
wait for <especificar tiempo>; I
141
I I wait
on <lista de seales> ; 1
wait on A, B ;
142
121
cn
.. _
]~I .
' begm.
wait until CLK='I' ; I
Q <=D;
! end process ;
243
, o
,._.__. _____
~_l:l.'git.:~_p._!il~iempre
i ESTIMULOS : process
:
.
begin
...
5.
122
"
-----------1
I process (A, B, C)
I
variable M, N : ioteger ;
begin
M: = A;
N:=B;
Z <= M + N;
M := C;
Y <= M + N ;
end process ;
Cspitulo S.
'"
Asignadas inmediatamente
process (A, B, C)
variable M, N : integer ;
begin
A " B
"6
123
dt~clara
process (A, B, C)
variable M, N : integer ;
begin
M: = A ;
N := B;
Z <= M + N;
M :=C;
Y <= M + N;
eud proc~~s ;
___ ~aICal1 cJ
'-'--
247
'-"'-
............ ..
~
Retiene
__
._---_..._......._...su....._valor
.. __....- .........._.. ---_.__.
,
process (A, B, C)
variable M, N : integer ;
begin
M:=A;
N:=B;
Z <= M +N'
M := C-oJ-- '--- ---R tiene su valor.
Y <= M + N ;
24'
124
: process (A, B, C)
!
.
variable M, N : inleger; !
de seiial
!begin
/
1' . ~ ....
... <--- _ _ _ -.....;..
!_ _ _ _ j1"1
N :=8;
.
a variable
Z <~M+N;
M:~C;
y <~ M +
end process ;
N ;+-_
de variable a seiial
---L.
___--..
_ _ _ _ -.l - --
'49
...,
'"
Uso de
variables . ..
Capftulo S.
2SO
125
A = '1' then
Tiemp~3xhibicin := Tiempo_alarma;
I else
Tiempo_exhibicin :=Tiempo_horario ;
i end ir
~\ Valor intermedio
'-~> actua \izado
i case Tiempo_exhibicin is
!,!
when 0=>
!
Debido a que una variable se actualiza inmediatamente, es
comn usarlas para calcular valores 'intermedios' dentro de
un proceso, los cuales posteriormente se usan en la
ejecucin de ms cdigo dentro del mismo proceso.
151
'"
126
signal
2SJ
Ejemplo
,..
127
Iprocess (A)
variable TMP: std_logic ;
'1'
begin
TMP:= 'O';
for 1 in A'low to A'high loop
1
TMP := TMP xor A(I); i
end loop;
,
,
IMPAR <= TMP ;
4
L:I1~. pr~c:ss.;
...................
A (3 downto O)
'"
(A)
variable TMP : sld_logic ;
' begm
i
i
TMP := '0' ;
1
for I in A'low lo A'high loop
'
TMP := TMP xor A(I) ; 1,
1
end loop ;
IMPAR <= TMP ;
' - - " -w- .
end process ;
'~
-.;,/4 ~Geae~'dad~
del-_ _ _ _ _ _. _ _ __ _ _ _ _
pan
".
n=b
I
L
A (3 downto O)
.,
IMPAR
156
128
lCIII.)j
i~ :=~~P
A~O~
xo":Al ;;
II
TMP := TMP xor
TMP := TMP xor A 2 ;
j'
TMP := TMP xor A 3 ;
IMPAR
<= TMP ;
-_
.. _----_._-_._----_._ ... _---_ ... __ ._..
Para comprender como trabaja este cdigo, expandamos el
for-loop sustituyendo los valores para J. El resultado es la
secuencia de asignaciones de la variable TMP mostrado en
el esquema. Ahora mentalmente tracemos la interconexin
resultante de los operadores xor descritos, ... ..
Caoftulo S.
2S7
, ..
A (O) - - j
'o'
xor
r-1
xor
.J
A (l ) - - - --...J
129
'1'
] jJnCJCID
:","
._________.... J.Iacea_
ITMP ;= '0';
1 in A'low lo A'high loop
i
TMP ;= TMP xor A(I) ;
Iend loop;
I IMPAR <= TMP ;
1 for
A (llL~-'"
A (li---'
A (2}---- - --
--'
A (3 r---------------~
variables
vs
seales
Veamos el diferente comportamiento que muestran las
variables y las seales . .. .
elplhllo s.
..
130
"
, .
~E0;+ N ;~
'\,-L:j
M := C ;
Y <= M + N;
end
process
; __________
L _______
__
.~
~~
,i
I
261
,----.-.---.
. -.-.----...-.....-..--..-.-. -l
signal A, B, C, Y, Z : integer ;
ibegin
1
!
process (A, B, C)
variable M , N : integer ;
begin
M := A ;
N '= B '
Z <= M + N '
M '= C'
'
Y <= M' + N .
,
end process~o---\
Z se.
actualiza
' +B
con'"
... . . . . . . .. . . . . . . . . . . .. . . . . . . . . . .. . . .. . . . . . . . . . .. . . .. . . .. . . . . . . . . . .l-.:r----
'"
131
signal
Lo mismo para Y
_ _ _--1
A, B, C, Y, Z : integer ; i
' begin
process (A, B, C)
l
variable
M,
N
:
integer
;
!
I
.
begm
i
M := A ;
N := B ;
Z <= M + N;
M := C;
Y <= M
end process .
y se
actualiza
con
C+B
------~
26J
Cunto valen
Y &Z ?
264
132
6.
6.1
&.2
6.3
6.4
(\.5
6.6
6.7
.8
6.9
6.10
6.11
Sobrecarga de operadores
6. 12
Ejemplo de sobrt..'CaI'g:J
Paquetes d~ t\Jitmtica Vectorial
6.13
6. 14
6.15
Sntesis d~ operadores
Comparticin de Recursos
6. 16
. "b
,"
'1
Tpicos
sobre
sntesis
Hay tres ternas principales que se cubren en esta parte:
veremos un panorama general sobre inferencia de registros,
aritmtica vectorial y sntesis de operadores aritmticos.
CIDftulo 6.
133
i) Qu es.........el_..............
estilo
RTL?
_....
couc:a :~ ; ,/
Nivel de
Transferencia
RTL~IltE~_~~~!~tr?~ .
;.
1
=t
.~~~c~ m ccJJ
l:m ArreglO mm l1
........ _._-,
".
")
?
}--. z
..
134
Sntesis
D
?
'"
CaDkulo 6.
27'
13S
bcgm
271
:. process
--.-------.- --------.-
j
:begin
i wait until (CLK'event and CLK='l ') ;
i Q <= D ;
\
l end~~~~_e_s_s~;_____ __4r_------~
Proceso sncrono o proceso ~sparado por reloj
~ostulado
136
Ir.m;.
process
begin
waituntil ~
Z <= A + B ;
Y <= C+ D;
end process ;
y
B
D _______
::J
Ipro?ess
.
!begm
i . wait until ~
,
- - lgica combinacional
,1 end process ;
~.~----'--_.
'"
137
process
begin
wait until ~. . .
Z <=A+B;
Y <=C+D ,'
en~ _p~~c~~_s_ ; ____ . . __J
En VHDL existen muchas formas para detectar un flanco de
subida o bajada de la seal de reloj, y siendo que algunos
mtodos son mejor soportados por la mayora de las
herramientas de sntesis, mientras que otros no, y
analicemos la cuestin de cul seleccionar cuando se les
necesite .. .
e .pltulo ti.
process
begin
wait lmtil
Q <= D ;
,md CLK='I');
rprocss
begin
. wait until ( CLK~'l' ) ;
, Q <= D ;
end process ;
138
~'n..
n'~
,11,
r~I ..,
process-CCCKl
,begm
i
,
-X-l
L
if
end 1f ;
Ll!l1c1P~<:lCI!~ ~;
, begin
,
ir l CLK'event and CLK = ' 1') tllen j
I
Q= D
end if ;
,....end
process ;
_ ........... _.....
"
.I
.... ..................................................J
Caolulo 6.
, .
Forma mediante una llamada a funcin
f1brary11lEE-;----------- -----------------------
' uSe: IEEE.std_Iogic_1164.all ;
process
begin
.
Q <= D ''
:
. end process______
;
._____ ._______ ._____.___J,
El paquete std_logic_1l64 de la IEEE, incluye una llamada
a funcin RlSING_EDGE o FALLING_EDGE la cual
checa por un flanco de subida o bajada de la seal de reloj:
la sintaxis es mostrada aqu. No todas las herramientas de
sntesis son capaces de detectar los flancos del reloj usando
este mtodo.
CaDftuJo6.
278
139
Las-" fonnas
wait' . .son
roce-ss--'iJ..- y. .. .'. ------. .-.. -.- .las
---comunmente
-- -------.----.. . .-..usadas
.-.-.-
+1
+
begm
i wait until (CLK'event and CLK=']') ;V
i Q <= O ;
iend process ;
: p~oce~s
j begin
if (CLK'event and CLK ='1') then
Q <= O ;
. end if;
(CLK)
l~~~J?~~~~~~_ ~
!
i
!
---O<'
;.,'.
process
begin
wait until _._ t
["~"'"
-- lgica combinacional --'-",\
~_I!~P!"~ces~_~______ __ _______
;'!
~I
,/
/;~'j
\/
140
. d,
,h
~-:--
i
1
--lgica combinacional
' -- - -- - - - ,
end process ;
solo lgica
combinacional
conectada a
registros
'81
, n.
Forma
",.
process (CLK)
begin
__ --------------
_---
~--
-tI !f----;:-~d;;-~l~s - -
I;
....
end process ;
_._J I
postulados
182
14 1
Registros con.-----.-----.--.
reset asncrono..-..-.- . ..-.. ---,
procesS(CLi(~- RS T)
Ibegin
if(R ST = '1') then
Q <= 'O' ;
elsif(CLK'event and CLK='I') then
Q <= D ;
end if;
Iend process ;
Para especificar registros con reset asncrono ser necesario
usar la estructura de cdigo mostrada aqu. En este caso, un
evento en RST(=' 1') causa que el proceso se ejecute, y Q
sea puesta a cero. De otro modo, nicamente un evento
sobre el reloj ser la causa de que Q se actualice con D.
'"
Capitulo 6.
~ _ _ __
i ~I1~~~~;~s
__
284
142
,o,
Inferencia de Jatches
process (EN, D )
begin
,
if(EN = '1') then
I
.Q <= D ;
l
end if ;
end
process
;
I
_....... _.._._..._._.._.._. ------_._- .._------_._----,
qu implica el cdigo? ..
Veamos las implicaciones que trae el escribir cdigo
VHDL en la forma descrita arriba.
Captulo 6.
l8S
. ,
r-c ___ la.~(:b.es !!.ans.2ar~!?:.t_es
' process (EN, D)
Ibegin
if (EN = ' 1' ) then
Q <= D ;
end if;
I~ nd proc~ss_;_ _
=====,-- -
143
,-,.,
i process ( A, B )
i begin
if CONDICION then
X <= A ;
,
y <= B ; . ______
! asignacin incompleta
else
----------1
I
!
X <= 'O' ;
i. . --,.........._~~ .._//
! end if ;
l end process ;
..J
,,,
elpRulo 6.
__._...___LGPm9_supr!!!1ir latches? __
iprocess (A, B)
begm
. if CONDICION then
i /
r ~lmc?:c
X= A;
else y <= B ;
/'.
,/
/ i
/.
>\
\
I
fa.'
sc o.lvido la
aSlgnaclOll Y <= ' 1' ;
X <= 'O' ;
. end if ;
"" __. /
:
i c!1d.P!.oces.;...._. __ . __ __.J
Es muy fcil que al escribir cdigo se cometan
accidentalmente asignaciones incompletas, y por lo tanto
sin quer er se construyan latches. En diseos reales, el
tratar de asegurar que en todas y cada una de las ramas del
cdigo se hagan todas las asignaciones para cada una de las
seales que intervienen, es por lo comn demasiado trabajo
y sumamente tedioso, por lo que ..
CIPlhllo 6.
..
144
,-.-----_~ ~
X <- 'O' ;
(
\
X <; A ;
asignaciones
por
de(ulIlr
i
I
t
~ ~;~ICION lhen
y <~ B ;
end lf;
Iend process;
",
RTL?
Defmamos el significado de escribir cdigo VHDL al estilo
de nivel de transferencia de registros o RTL .. .
CIPftuJo 6.
".
145
'"
, .~
combinacional
process
begin
wait ~
-- lgica
end process ;
!l
process (
) I
begin
; """--._.~'
--](wica
'"
I
end process ; I
rr
L---
291
146
_ _ _ . _
"'_"_"',
iprocess
!begin
.. wait -.t
:! .. --lOglC
'
!
!I
i
~end process ;
I
lg:a-;;esp:~s ~'~--'-,~
<--
'"
I proceso combinacio~
,.-"
i
I
Iprocess ( ~)
--, ~n
--logic
aSIgnaCIOnes
! end process ;
pordefault
.....-...........................
r - -_ _
"""
~I_s_' t~_'c_--o_m~,-p_le_ta-1']
147
Mquinas
de
Estado
Finitas
(FSM) ...
Ahora veremos como se describe mediante el cdigo
VHDL las Mquinas de Estado Finitas (FSM) ...
Clptulo 6.
"7
'9S
. '
READ
WRJTE
MEF
CLK
RST
'96
148
Registros de
estado
149
.----_.._---------_...._-------_.._--------.
Ut 1 , . .
~"
_p.,
_-_ _
__
-.
._-- _.~
case EDO]RSTE is
whcn ES PERA =>
--postulados
whenRW_CICLO =>
--postulados
when INT_CICLO =>
postulados
whcn DMA_CICLO =>
--postulados
:
!
I
.._end
process Comb'inacional ;
....... __......_....................._....._......._... _..........................................._
............................._..
j'
300
150
Capitulo 6.
"o
Registros
_---_
....
_----..------,
..
: begin
ifRST = '1' tben
EDO_PRSTE <= ESPERA ;
elsif CLK'event and CLK = '1' tben
EDO_PRSTE <= EDO_SIG ;
end if;
[ end process REG ;
,
~
Registros de
estado
J.2
151
Registros de
estado
Capitulo 6.
G El
D
S
I
,\
~.
1
~
304
152
,--1-----,---0 --,--O
-----'0
--,--1
tl
Capitulo 6.
OI 1
IO I
:1 l14?ttt:
Como un resultado de lo anterior, en el lenguaje VHDL
por default no es posible efectuar operaciones aritmticas
entre arreglos, digamos como la suma o resta de vectores.
Las operaciones relacionales, tal como la prueba para
igualdad, solo dan resultados satisfactorios si los vectores
son de la misma longitud, caso contrario hay que estar
preparados ara las sorpresas.
L-~c~~~I.~6.----~~C=~~~J~~~~~~~~--------~~
153
"
operadores
sobrecargados
(overloading)
Existe una solucin para esta cuestin, la cual es
implementada va una capacidad del VHDL conocida como
'sobrecarga de operadores' ('operador overloading').
Discutiremos ms adelante en que consiste esta capacidad,
y hasta entonces explicaremos como debe usarse para
superar nuestras limitaciones, ...
Capftulo6.
307
""" ~,
concepto de
sobrecarga ...
Primero veamos el concepto de sobrecarga, considerando
algunos pocos ejemplos .. .
Capit ulo 6.
3,.
154
f~DCA
TypeX
TypeY
TypeX
TypeX
Type Y
e'DIIVlo 6.
l',+.,I
Type X
Type Y
-----j
TypeY
Type=--=-Y_--t
TypeY
Este concepto se extiende a los operadores estndar: por
ejemplo, es legal defmir mltiples funciones llamadas "+"
tan pronto como ellas tengan diferentes combinaciones de
tipos de datos para sus entradas y sus salidas.
l10
155
fun~ioB.~~ llama~la!!._~_~g!!.~L<:;.2-nltexto
slgnal A, B, Z : X ;
-
B'
_._--_. -Z <= A + -----,---_.-
-<c::r'
TYP~f=}
Type~
+ ~
TypeX
I n I~;
JII
paquete
de
funciones
El ejemplo se basa en un caso del mundo real, en donde
tenemos un paquete conteniendo varias funciones llamadas
con el mismo nombre "+", las cuales deben estar
sobrecar gadas para as poder efectuar aritmtica sobre
vectores.
CR Pllulo 6.
'"
156
El paqu~~__.__ _
i' p-ac-=k-a-ge--=PA
-:-::Q-_-"
A-=RI::::T=M
r.::::E~TI CO is
i function
1
1~ 2
!- 3
!+- 4
j +-.
l. ............................................................................................................................................................
U 1.21
Entidad
package PA<LARITMETICO ', ,' - ' - ' - - - l
~~btype slv is std_logic_ vector ;
i
ction "+" (L:slv; R:slv) retum integer ;
~ _-_
I
i
!
!
r;;;e work.PAQ_ARlTMETICO.an ;
entity SOBRECARGADA s
port ( A_BUS: in slv (O to 3) ;
A_INT, B_INT: in integer ;
Y_BUS, Z_BUS: out slv ( O to 3) ;
Y_INT, Z_INT: out nteger );
end SOBRECARGADA ; ....
.. ..-
~-----_ . _._._-_
_._-_ _
JI<
157
Arquitectura
[packagc-pTQ:::ARlfMETfco ;s ------,
!
!
! ar~;itccl;cAorsbB-RECARGADA
Ibeg,"
f;G
;s- Ilegal por default
;========'--,
n ![~========~
legal por sobrecarga [
I:
i
!______
cndA ;._.
_ _ _ _ . _
-i- ~
158
l'
I P.
: "'.
. 1
V1.orial
=Ere ::1+ re
u~
=Gr
:cr
~Iean
:t>ylean
lI1
.- ........... _.
! package VENDOR_X is
...
=Er=Gr~
. + ._
I
lean
.lean =f
l'IN-T-2VE-C-'1
... !
n ',
I
" rlean ~
VEC2INT
'
~ -
end VENDOR_X ;
'"
159
5123
" ",",
1 ~~~k~~~-viNDOR~Y is
package VENDOR_X is
IG [B @ G G [B @ G
I El~lB B El El lB B
I
! end VENDOR_ y ;
JI9
"
'"
package IEEE:
estndar ' oficial '
package Numcric_Std is
p~r lr~Arit;]
~[]~Q
131< I [El B
13 1< I lE 1> I
320
160
lIIIII.lI
(1-1]
o Si.!~
Sistemas
,
numencos
Veamos brevemente como esos paquetes aritmticos nos
permiten representar diferentes sistemas numricos a usar
en nuestros diseos ...
Ca pitulo 6.
12I
161
l....,
'
" , ',
'
./,
Arreglos de std_logic
UNSIGNED is ..
1110111010 1111
arreglo de std_logic
Los tipos de datos SlGNED y UNSlGNED se declara que
sean arreglos de elementos del tipo std_logic, de modo que
ellos representan la misma clase de estructura de bus o
vector como los tipo std_logic_vector.
C .,ft\llo6.
162
. - do
unslgne
signed
unsigned
'"
163
----,1\
' - - - - - - 1
IPrecompilado )
I
vi
Captulo 6.
referenciando Std_Logic_Arith
Std_Logic_Arith .vhd
!LIBRARY IEEE ;
!USE IEEE.Std_Logic_ ll64.ALL ;
Ii USE IEEE.Std_Logic._Arith.ALL ;
i
ENTITY .....
i LIBRARY IEEE ;
i LIBRA.RY Synopsys ;
L...:'-----"-~ : USE
SYllopsys.Std_LogicArith.ALL ;
!ENTITY ...
'"
164
'
4]
referenciando Numeric_Std
11j:111 ,==,,,,,"2>
Numenc_Std.vhd
----_._--
LIBRARY IEEE ;
. USE IEEE.Std_Logic_1164.ALL
'1
'"
Capitulo 6.
,,,
Cul de ellos usar?
,. soportado?
vs
Numeric,--Std
330
165
El El
El c==>
D ~
n
t
e
s
.i
~~C=>
331
JJl
166
compuertas vs macroceldas
Z <= A+B;
ADDl6
library
-->.
JJJ
arquitectura de operado~r:c.:e:.::s--:,..-,
Sumador
con
carry
rea
peque
IZ <= A+B ;
~~~ l~
rpido
Sumador
con
carry en
adelanto
167
comparticin de operadores
r--------------'1' then
i Z <= A + B;
else
I Z <= A + C ;
!endifc __ ____"-_____
I if SEL =
i
____________
3JS
i Ud ) en
. .,
COlllpartlclon de recursos
El concepto de operaciones compartidas que no son
ejecutadas al mismo tiempo se conoce como 'comparticin
de recursos '. Veamos un ejemplo de ello ....
Capitulo 6.
336
168
Ejemplo
~
S "'----i~
z
Analicemos el cdigo del ejemplo. Representa literalmente
dos swnadores, ya que dos operadores "+" han sido usados.
La arquitectura que este cdigo representa se muestra, y
consiste de dos sumadores y un multiplexor.
e l Dltlllo 6.
J37
Compartiendo el sumador
e
SEL
S"'-_ _~
z
Sin embargo, es posible representar esta funcin con un solo
swnador. Podemos multiplexar B o C en un solo swnador,
tal como se muestra en el diagrama. Algunas herramientas
de sintesis pueden efectuar esta optimizacin
automticamente, mientras que otras no.
Capitulo (j.
lJ8
169
Comparticin manual
e
SEL
3J9
170
7.
:. 1
7.2
()"ue l~ ubrirt'Hls
~n
la sCptlIll<l prCSl111Ucion'!
7J
Term inologa
7A
7.5
7.6
7.:
7.8
7. 9
7.10
Resumen
l,..a pl1UIO /.
,.,
171
7?n
1 ..,
,Oo.,.. ,
comencemos ...
tpicos a tratar
en esta
presentaclon
r
"" .
'"."
'.
PLD
Vs
g
b
tJ
ASIC g
b
b
34.
172
grpggooapgp"g
FPGA
!g
t=ot"",,,,,J
Entonces veremos las di ferentes arquitecturas de los
dispositivos Xilinx, esto es los :l?PGAs y los CPILDs, ya
que estos tipos de chips son los principales dispositivos
para los que se disea con VHDL.
L-~C~
..7ih7,.~7.-----------------}~,,~--------------------~
"'~
..........~
....
-',
.......,
Impltrt1entacin e~
dispositivo XILI~
".
173
terminologa propia de
los dispositivos
programables, ...
Aclaremos la terminologa bsica propia de los
dispositivos lgicos programables y aplicable para los
chips de Xilinx, la cual usaremos a lo largo de lo que resta
de las presentaciones
C.ptulo 7.
347
" ".
terminologa Xilinx
34'
174
,.
PLD
'"
Captulo 7.
o. OOOOOOOOOMb
o CPLD
d
d
r:
b
t
(basado en
FPGA
EPROM)
(basado en
SRAM)
J
~
00000000000
'50
175
Diseo
lgico
3SI
~ VT n
Sntesis
de
PLD's ..
A qu dispositivos apuntar? Da lo mismo cualquiera de
ellos? Empecemos viendo que es lo que se necesita
considerar para sintetizar diseos en los PLD's ...
Captulo 7.
'"
176
L-~
c.~.;~,"~1.7~.--------------~3S~1--~----~-----------(~
D g-~
grano
fino
354
177
, -
!ii
Gl
El I
o- /:...,
"n Glr~
" El
""'-
~ 'p
It;,.
f2
grano
grueso
CaDltulo 7.
! ..... .
!~~d
SUMADOR ;
356
178
,n
,,~
, J<11 .1NX
---IArquitectura
AI
.. _,_....
.' ,,-'
L.
.....
..--- --
"
:. Arquitectura
B
.
......- ...
IArquitectura e I
Ahora que ya conocemos en tnninos generalt:s los
diferentes PLDs, veamos un panorama general de las
arquitecturas de los dispositivos XILINX, pues ello
determinar el estilo de escritura del cdigo ...
m
Capitulo 7.
lWO
FPGA, CPLD.
dO POOOOOOO ,)
t~":~~J
FPGA
JSI
179
FPGA
Capitulo 7.
CLB
de la
sene
XC4000
G4
G3
G2
G1
Frf:::
F4
'3
F2
F1
180
~
%.'
~ l!1!J
-
B
B
~~--~~
B B ~
~ches
InputlOutput
Blocks (10B)
(1="'"
[lnal.. . ..a
~~.
~
,
.'
;z'
..
__:~ .. ~J z:.. :
"
=-
.:. .
"
. --~,..'
lJ
'"
181
XC3000
CaDtulo 7.
-:nT
', .
('prn
Tecnologas
CPLD
Las tecnologas CPLD tienden a ser ms tiles en el caso de
aplicaciones pequeas. Su comportamiento de tiempos esta
bien caracterizado y por lo tanto es predecible. Ellos tienen
una relacin de 'registros a lgica' baja y entonces no son
adecuadas para diseos donde se requieran gran cantidad de
registros (vrg. pipelined) . Los FPGA son adecuados para
grandes diseos y poseen ms capacidades que los CPLD.
Capitulo 7.
JM
182
Capitulo 1.
JO,
bloque de funcin
FPGA
CPLD
CLB
FB
(Bloque de
(Bloque de
construccin
Lgica
Funcin)
Configurable)
Bloque de
3..
183
FBs y macroce1das
"0--"0_- "0---
"0_- -
GI,ba. Clockl
- r--
'67
' .H
terminologa
FPGA
Para el resto de las presentaciones, tenderemos a usar el
tnnino CLB ms bien que el FB. Esto no significa que el
contexto sea nicamente aplicable a las tecnologas FPGA.
e.pltulo 7.
'68
184
78.0 . .
'69
......... ) ;
end .... ;
architecture .. . . of .. ...
begin
~:ss( .
15
. ..... )
for ........ .
end .... ;
end process
Diseos eficientes
end
370
185
Buen estilo
IMejor
sntesis
~_._------'
Diseo eficiente
Un cdigo con buen estilo significa que la herramienta de
sntesis pueda identificar construcciones dentro del cdigo
que fcilmente pueda mapear a caractersticas tecnolgicas.
Al escribir el cdigo de esta forma, puede haber confianza
acerca de como sera estructurada la lgica sintetizada.
Cauftulo 7.
37\
l72
186
Librera Xilinx
RO\,1
RFSTAD()KL:"
CONTADORES
REGISTROS
m, <. ORRi\'1!E tO
FIFO
SUMADORES
l7l
' I'U)',
enrity .... is
port (. ................... ,
.............
................ ... ) ;
end .... ;
architecture . .... of ...... is
begin
Ce";~ss
(..
...)
."""
for ....... .. .
5'"
end .... ;
end process .. ..;
end ....... ;
'"
187
Independencia de la arquitectura
cntity
is
pon ( ....... . . ......... ....
o
cnd .. .. ;
---_._-_ _---:>
..
::::::::::::\;
Tecnologa A
process ( ............ )
begin
for ".
end .... ,
:r. "...............,
l
. end .... ;
( ............ )
eglO
for .. ...... ..
Cdigo independiente de.l3.tccnologia;
end ...
376
188
i entity .... is
:::::::::::::::::: ) ;
i end .... ;
i architecture ...... of ...... is
. dcpen d'lentc de 1a teeno logla:
'
Ii begin ca' d'Igo 111
I
cdigo espec fi co a la tecnologia:
I
cdigo inoepend icnte de la tecnologia;
i end .... .. .;
Capitulo 7.
79 4
.1",
" .l>.
entlty .... IS
por! ( .... ...... ............. ;
::::::::: :: :: :: :::) ;
end .... ;
architecture ...... of .... .. is
begin co. d'~o 10
. depend'lente de 1a tecno logm;
'
c(hgo especfico a la tecnologa;
cdigo independiente de la tecnologa;
end .... .. .;
378
189
" "" ,.
Resumen
En esta presentacin hemos visto una introduccin a las
diferentes tecnologas de Xilinx, y algunas cuestiones
relacionadas a la sntesis a esas tecnologas como
dispositivos destino, partiendo desde el HDL. Hagamos un
resumen de los puntos tratados.
Capl'ulo 7.
J79
Xilnx terminologa
_w
-~XILINX~~' definicin de la
terminologa...
Captulo 7.
' lO
190
'10'
CPLD
FPGA
'.""''li1Q)
" _.I!!i
"'0I!i
illIiII
llIJ lIlllJ!!Ii1llI
ga
el 1"
'lO!Q . . . .
381
----~ -- - ~~-- -
Ii end . ... ;
,1
'
...... .. .......... ) ;
! begin
i
381
191
Pensar en el
hardware
especfico para la
arquitectura!
Conclumos que con el fin de alcanzar eficiencia es
necesario conocer las "caractersticas" optimizadas de cada
una de las arquitecturas tecnolgicas y usarlas sea
referenciandolas directamente o mediante el uso de cdigo
escrito con un estilo que pueda inferirlas fcilmente.
CIDitulo 7.
383
192
8.
Estilos de codificado
S.l
S.2
8.3
8.4
g.5
8.6
8.7
8.&
8.'.l
8.10
8.11
8.12
S. 13
S. I-'
8. 15
8. 1{j
"-lpnu.O O.
I~
..
193
.,
esta presentaclon
usa
terminologa de los
FPGAs.
Aclaremos el alcance de la siguiente presentacin: es de
notar que aunque la terminologa se dirige hacia los FPGAs
de Xilinx, sin embargo, muchas de las cuestiones tambin
son aplicables a los CPLDs. Donde la diferencia sea
notable, se har la distincin.
Captulo 8.
1.12' "
387
"ti, .
388
194
201
uso de mdulos
predefinidos
Un factor muy importante para el uso eficiente de los
recursos de los dispositivos FPGA o CPLDs es lo
relacionado con la utilizacion de mdulos. Xilinx hasta
aqu ha identificado la mayoria de las funciones digitales
complejas empleadas usualmente por la mayoria de los
diseadores y ha desarrollado mdulos optimizados que
pueden llevar a cabo esas tareas.
Capf1ulo 8.
R ' 1l k n,1r
Uso de mdulos
no se requiere describir en el cdigo
el comportamiento del mdulo
la optimizacin ya ha
sido hecha
Esto trae dos ventajas para los diseadores VHDL: no
necesitan describir el comportamiento de la funcin dentro
de su cdigo, y no necesitan preocuparse de optimizar la
implementacin de esa parte de su diseo, ya que esto ha
sido hecho por Xilinx. Todo lo que se necesita es
instanciar esos mdulos dentro de su proyecto VHDL-top.
Capitvlo l .
390
195
Generacin de RAMs
'"
Capitulo 8.
FIFO
Sumadores
Contador es
Registros de corrimiento
Restador es
ROM
39'
196
,,"AI
ny
LogiBLOX
Por si lo anterior no fuese suficiente, Xilinx entrega un
generador de mdulos llamado LogiBLOX, el cual es una
herramienta grfica interactiva para crear mdulos
parametrizables, tales como contadores, registros de
corrimiento, multiplexores, ... LogiBLOX incluye tanto
una librera de mdulos genricos y un conjunto de
herramientas para personalizarlos.
Capitulo 8.
'"
Generacin de mdulos personalizados
Llbrary Su_Llbrena ,
use Su_hbrena all ,
l~
entny
pone
. :' ,
lr.S-U-_-li+~,ria
),
end ... ;
architecture .. of .... Is
b'g;n
IL-o-giB
-L
O-X
~,,'
,nd
end process ;
,nd
'94
197
~
!LogiBLOXI
Cdigo VHDL
de comportamiento
Simulador VHOL
!Z<=A+ B ; !
IInstanciacin
La mayoria de las herramientas de sntesis entienden los
operadores aritmticos y pueden inferir estructuras simples o
bien mdulos LogiBLOX desde ellos. Sin embargo, si se
require designar una estructura hardware particular a la
funcin, entonces necesitaremos usar LogiBLOX para
generarla ...
e.pihdo8.
'96
198
, .'
los mdulos LogiBLOX son generados como
'caja negra'
[Z-~:-A :~--8 ;1
A----.
- -z
B ----.
'"
Z=A+B; >
B
En algunas ocasiones partes de cdigo VHDL escritas en
forma compacta resultan al ser sintetizadas en grandes
piezas de lgica, y esto es cierto para el caso de los
operadores aritmticos. Idealmente debe tenerse la manera
de como controlar la implementacin de tales funciones.
Capitulo 8.
199
A
Mdulo
_ _ ---;"'L ogiBLOX
399
..........
... ..... ) ;
end
Mi_ lib
ADD8
_ SlJB
ADD16
......
end ..... ;
end process ;
end .... ;
.00
200
Comparticin de recursos
e
B
SEL
el se
Z <=A+ C ;
end ir ;
C2oltulo 8.
SEL
el se
X := C;
end ir;
Z <=A+X;
40'
201
codificado de las
mquinas de estado
Habiendo discutido como generar y usar mdulos dentro de
los diseos basados en VHDL, ahora veremos como se
pueden implementar eficientemente mquinas de estado en
dispositivos Xilinx a partir del VHDL. ..
CapftuJo 8.
. .... . . . .
403
Registros de
estado
'04
202
Codificado binario
,..----,J
Codificado uno-por-estado
Por default en VHDL, un tipo enumerado es codificado
como una secuencia binaria, mapeando desde el valor O a
travs de la secuencia de valores segn son listados en la
definicion del tipo. Sin embargo, en la herramienta
FOUlldation Expres.~, el codificado por default es el estilo
un flip-flop por estado (one-hot - un ff-por-estado).
..
Capltlllo 8.
,_____________CambiandoJacodificacin.____.___ ___ .,
i architecture RTL of MEF is
I
i
,
El codificado
puede modificarse
desde aqu
..
Herramienta de
Sntesis
203
.o,
" ,,, ,.
mquinas de estado
uno-por-estado
(1 FF por estado)
El factor que produce un efecto mayor sobre la
implementacin eficiente de mquinas de estado en los
FPGA es el uso o no de la codificacin uno-por-estado o
one-hot. Este tipo de codificacin usa un registro para
representar cada uno de los estados, comparado al nmero
mnimo de registros que se usan en las codificaciones
binarias o de Gray.
CaDU\llol.
...
204
". ,;..<
","-!"
::;
".'
,,.
uno-por-estado
410
205
Su decisin
El diseador
decide!
Al fmal de cuentas, se requiere evaluar los compromisos y a
partir de ah hacer la decisin de cual codificado usar.
Finalmente, en esta discusin de mquinas de estados,
vermos como aseguramos de que la operacin de la
mquina de estados sea "segura" ....
CapItulo 8.
Mquinas de estados
'seguras'
Considere una mquina de estados con tres estados. En
hardware, esta ser implementada con al menos dos
registros, los cuales por s mismos pueden representar hasta
cuatro estados diferentes.
Capit ulo 8.
206
. .
,
Estados ilegales
?
Vector de estados
,.
.'
..,.<l .. indefinido
S2
Una mquina de estados segura es aquella que define como
deber comportarse el hardware si se entra en cualquiera de
los estados indefinidos. Veamos las diferentes opciones para
hacer seguras las mquinas de estados incompletamente
especificadas ....
Capitulo 8.
41.
207
'/ 1 "
[~h~n Ol:id-:.>----J
next_state <= s3 ;
0-0
4IS
".
1 ~hli~;:i~~~g~~~~:;~i~:~l::,
proccss (ESTADO_P)
begin
case ESTADO_P is
when "00" =>ESTADO _ SIG <= "01" ;
when " 01" => ESTADO_ SIG <= "10";
when "10" => ESTADO _ SIG <= "00" ;
whcn "11" => ESTADO _ Sl G <= " 00" ;
end case ;
~ Se defme el comportamiento
~~~!l ~~~~~~;pmL9~!dU~gL
208
Pensar en el HARDWARE
.17
...
209
'" v '"
latches transparentes
checar que la
arquitectura soporta
las caractersticas ...
Si en el diseo se desea implementar latches transparentes,
checar que ellos son soportados y como se pueden inferir.
Checar el archivo de sintesis 'logftle' o los reportes de la
sintesis para asegurarse que accidentalmente no se han
inferido latches, particularmente para las arquitecturas que
no los soportan.
CIPItuIo 8.
...
Postulados de generacin
GEN_BLOX:
for i in O to 16 generate
BLOX : REG portmap (...)
end generate GEN_BLOX ;
endGEN;
210
Inferencia de RAM
II Qrt ",
421
Caractersticas
l/O
de los dispositivos
Xilinx
Habiendo visto ya algunos de los mdulos de alto nivel
disponibles en la tecnologa Xilinx, vemos ahora algunas
componentes tecnolgicas mas pequeas disponibles en los
chips Xilinx, tales como los buffers de reloj y de tercer
estado (3-state). Empecemos estudiando las celdas de
entrada/salida de dichos dispositivos Xilinx.
Caoltulo 8.
",
211
Bloques de Entrada/Salida
.13
....
~
~
".
212
Definicin de l/O
Hay dos pasos incluidos en la definicin de l/O. El primero
es la definicin del tipo de buffer ( input, output, tris tate,
etc ..). El segundo es hacer la asignacin del pin, el cual es
el proceso de asignar una seal l/O a una patilla en
particular del paquete que contiene al chip. Veamos en
primer trmino la definicin del tipo del buffer YO.
CaotuJo l .
'"
Definicin del tipo en el cdigo
inferir o instanciar
110
dentro de
F oundation Express
Se puede instanciar o inferir desde el cdigo los tipos de
buffers 110. La herramienta de sintesis Foundation
Express es capaz de inferir automticamente todos los
diferentes tipos de bujJers l/O. Veremos ejemplos de su
instanciacin con el. cdigo ms adelante.
c.oitldo l .
213
La definicin de 110
en la herramienta de sntesis
,
VIa
menus
va archivo de control
En algunas herramientas de sntesis se puede efectuar un
paso separado para la defmicin de l/O. Se permitir
seleccionar tipos de bufTers y asignarlos a los puertos del
ncleo lgico. Alternativamente, es posible hacer esas
definiciones en un archivo de control.
CIPihdo l.
...
214
".
3-estado
y
E/S bidireccional
La mayoria de las familias de dispositivos Xilinx soportan
l/O con registros, 3-estado, l/O bidireccional, o varias
combinaciones de ellos. Veamos primero como los
elementos 3-estado e l/O bidireccional son manipulados ... .
CJDftwo "
43.
215
Salidas 3-estado
CdigoVHDL
-DEN
ENI
OUT
---1>----- 'z'
OUT
>-rII'II. 'Z'
IN
else
OUT_PAD <= 'Z' ;
end if;
216
el se
BIDI <= ' Z ' ;
end if ;
Le_D_d~p_
ro_c_
es_s~;__________~ eoRE_oUT
>-rllliitoll BID!
e ORE_fN
l/O
con
registros
(lO registered)
Finalmente en este repaso del acceso de las celdas VO desde
el VHDL, consideremos la implementacin de registros
manejados directamente con las seales de entrada y salida o
VO sincrona.
Clphulo 8.
217
.,
""
o<ln l in,
CLK
~outp:;:ad
/\
T
C.pftulo l .
, ,, ,
' 0",,"0 ,
".
218
417
Pull-up's
architecture ESTRUCTURAL oC PULLUP_EJ is
component PULLUP
port ( o : out std_logic ) ;
[npuc
end component ;
component IBUF
port (
1 : in std_logic ;
O : out std_logic ) ;
end component ;
signal DUMMY, CORE_IN :std_logic ;
begin
438
219
""
Requerimientos
de enrutado
especiales
Los recursos de enrutamiento especiales de algunas
arquitecturas PLD son a veces requeridos para las
conexiones con gran fan-out tales como las seales de reset
y de dock, resultando en una mejor velocidad y menor
'time-skew' . Para utilizar esos recursos de enrutado
especiales se deben especificar las conexiones especiales a
la herramienta de colocado y enrutado.
Caoftldol.
'"
m':
end .r;
end proces~ _
end ESTRUc J U Kt\L
...
220
relojes
If CLK'event and CLK = '1' then
z<=x;
end if ;
L--_ _ __
x - -,
_ __
_ _ _~
Clock
Buffer )
-..j~
'" :'--'=T---.J
Algunas herramientas de sntesis, incluyendo Foundation
Express, examinan la conectividad de un diseo e instancian
automticamnete unos buffers globales sobre las seales de
CLK
Capitulo 8.
[o<t!f><~-~~3-;~;~"""'~] BUFG
Buffers genricos
BUFG
BUFGLS,
BUFGE,
BUFFCL
BUFGP,
BlrI'GS
.,
221
1J.1.""'ua!w>:nIw.<k.""""""-'_ W, '--_ _ _ _ _ __ _ _ _ __
checar sobre la
disponibilidad de
'buffers'
Debe tenerse en cuenta que muchas arquitecturas Xilinx
tienen bll./Jers globales los cuales son disponiblcs slo a csas
arquitecturas, de modo que el uso de BUFG pennite una
tmnsicin ms fcil entrc famili!ls. T!lmbin, el nmero de
bllfers de reloj disponibles varia, de modo que hay que
revisar cuantos se necesitan y cuantos estamos implicando.
.H .U . SI!lWc.jc ~taW
iulc1""-_ _ __
_ _ _ _ _ _ _ _ _ _ _- - ,
Seales
internas
'3 -estado'
Velmos ahora el liSO de bllfTers 3-state internos, los cuales
pueden libemr gran cantidad de recursos dentro del diseno.
Ellos son muy tiles pa.ra implementar multiplexores o
funciones de lgica nla.mbr.tda. Los bll./Jers 3-cstado pueden
confi gumrse en tres modos : '3-estado', 'ond alambrada', y
or-ond ahUllbrnda'.
222
Inferencia 3-estado
A_OUT <= A when ENABLE_A else 'Z' ;
B_OUT <= B when ENABLE_B el se 'Z' ;
C_OUT <= C when ENABLLC clse 'Z' ;
process (A_OUT)
begm
Enab~ej\
SIG <=A OUT '
end process ;
,
process (B_OUT)
Enablc... B --.
begm
B
S-l>-+-+
SIG <= B OUT ;
end process ;
Enablc... C ~
SIG
pro~ess ( B_OUT )
begm
C~
SIG <=C OUT'
end process ;
,
.2-
...,
CIDltlllo 8.
R 14.'
s. .
'\.
M'"
Lgica alambrada
las expresiones
BOOLEANAS
no dan
lgica alambrada
La lgica alambrada puede ser una buena forma de reducir
el rea y complejidad de algunos tipos de lgica
combinacional. Muchas herramientas no son capaces de
inferir lgica alambrada desde operadores booleanos de
modo que se necesita usar la instanciacin para crear esta
estructura de lgica.
CI"itulo 8.
223
Decodificadores anchos
decodificadores
de borde ancho
usar
para decodificar
grandes funciones
Una funcin muy comn es la de decodificar direcciones y
muchos dispositivos Xilinx tienen circuitera dedicada
alrededor del permetro del dispositivo de modo que las
seales de entrada pueden ser decodificadas. Este tipo de
'decodificadores de borde ancho' se implementan como una
sere de celdas and-alambrado con una pull-up conectada a
la seal de 3-estado.
Capitulo l .
...,
l.
...
224
Boundarv sean
~'
e.pitglo 8.
'"
Boundary sean
Los dispositivos Xilinx XC4000 y XC5000 contienen
registros boundary-scan que son compatibles con el estandar
IEEE 1149.1. Se soportan las 110 externas y las pruebas de
interconexin; existe tambin un soporte limitado para
autopruebas internas.
Capftulo 8.
'50
225
pIneS de
boundary-scan
pueden usarse como
pines de l/O normales.
los
lj .'t
om
\vww.xl inx.com
226
Resumen
C.plCulo 8.
'"
LogiBLOX
Library Su_Libreria ;
use Su_libro:ria.a1 1;
entity
is
pon ( ....... .. ;
O"
......... ) ;
end "O" ;
architeclure ... of .... Is
begin
proce$.S ( ...... )
begin
for ....
ood
end process ;
end .... ;
".
227
Mquinas de estado
?
Vector de estados
10
Ms alto nivel
Bufers de 10
.56
228
Inferencias 3-estado
A OUT <= A when ENABLE A else 'l' .
B:::OUT <= B when ENABLE:::B el se 'l' ;'
C_OUT <= C when ENABLE_C else 'l' ;
process (A_OUT)
begtn
SIG <=A OUT
end process ;
,
process (B_OUT)
begtn
SIG <=B OUT ;
end process ;
process ( B_OUT )
begtn
SIG <=COUT;
end process ;
A--+
-:l
Enublc.... B
B --+ .-:>--of.-....
SIG
Enablc....C
c--+
229
9.
9 .1
9.2
9.3
Introduccin
Flujo de disl.!o generico- espt:dcaciones
VhlJO de di seo geni-rko- SimuJacion y Sntc!'is
\).4
9 .5
9.6
9.7
i).8
9.9
9.10
9.11
Back .4notarioll
9. 12
9. 13
9.14
Reswl1cn
(mpLementacin
,.
LO!
Cloilulo 9.
23 1
46'
Foundation
series
o
o
232
el flujo de diseo
, .
genenco
Penntasenos iniciar describiendo el flujo de diseo
genrico el cual se aplica a casi cualquier ruta RDL y a
cualquier tipo de tecnologa PLD.
CaDilulo 9.
" S
..
233
ortamiento
.,...,.,;..".,.,,..,..:....,""'--,....,,-~.,,.,.....
Simulacin
.67
234
No se requiere
para los diseos
pequeos a
medianos
con PLD
d'
47'
235
,
Generacin de cdigo VHDL-RTL
.Generacln d ~ cdigo
VRDL al nlvel RTI.
:.
"
editor HDL
'
9.
471
ru~~~~------------------------------------,
Simulacin YHDL-RTL
Simulador
VHDLde
terceras partes
236
Sntesis
,.
237
Mapeado
Cle
EJ
o
CLB
Cle
Cle
238
l'?tit I ~ [j ~ Iff ~
m :31
Programmable
Interconnect
Configurable
/ 14<1
va,~
.
Tiempos estimados
ab'
e
Pre-PAR
12n
Tiempos
~lK~~ 1"
reale~
ZeO:3
Post-PAR
enl
1 ';:,=~ 7
21
21
ns
'"
239
Programacin
...
240
Generacin de la entidad
entity SEMISUM is
SUM
ss
B
CARRY
cnd SEMlSUM ;
81
Templetes de cdigo
entity is
generic( );
poli ( : in std_Iogic_vector( );
:out std_logic_vector( ) );
cnd;
if then
cIsc
end ,f;
case is
when =>
when =>
when others =>
end case;
if then
elsif then
elsif then
elsif then
else
end if;
'fonnas' de cdigo
82
241
Revisin de sintaxis
'83
...
242
Simulacin
48'
Simulacin funcional
N
s
Se puede necesitar iterar varias veces entre la entrada de
cdigo y la simulacin antes de quedar satisfecho con el
cdigo. Ciertamente, el proceso de flujo de diseo
completo es iterativo y se pueden requerir repetir muchos
de los pasos hasta obtener los resultados buscados.
Cs-pitulo 9.
. 86
243
..
s
Sintcs.is
."
ClIpllUlo 9.
(1"'1(,
.."
... 1..
' ,
"va,
Soporte a la Snulacin
para Xilinx
Ahora discutiremos las clases de paquetes VHDL y las
libreri as que provee Xilinx junto con las herramientas
Foundation Series Software para dar soporte a los
flujos de diseo basados en VHDL.
Capilulo 9.
244
JE EE
IEEE
STD_Lome
1164
STD
..
libreras
especficas
XILINX
...
245
Soporte 'VITAL'
Libreras
VITAL
'"
,.
libreras
XILINX
'"
246
Objetivos especficos de la
optimizacin de la
Sntesis
Velocidad
Area
493
XJU NX
'"
247
~.
desde el usuario
l_~UtCF~:::~~~~~~t
__~
"pcdfk,,,
Libred"
XH.tNX
(Archi vo de
restricciones del
ver
Enseguida se
restricciones, y
junto con las
macros referenciadas en
la netlist se usa una herramienta llamada NGDBuild para
crear una base de datos genrica representando
completamente el diseo a base de las 'pnmitivas Xilinx de
mas bajo nivel'. Esta base de datos se le conoce como la
NGD o Generic Database .
Captulo 9.
96
248
q ,
Simulacin al nivel
compuertas
Despus de la sntesis, se tiene un diseo descrito en
primitivas Xilinx las cuales pueden ser simuladas con un
simulador VHDL de terceras partes.
Capitulo 9.
Comportamiento
RTL
Comportamiento
nivel compuertas
4"
249
~" .. '"
.,
NGD2VHDL
NGD
NGD2VHDL
Netlisl V!IDL
'99
..
Libreras
XILINX
l;rhD:~lac<)n:t---i VITAL
Tambin ser necesario tener las libreras VHDL basadas en
VITAL para que las celdas a nivel compuerta se activen en
el simulador VHDL. Una vez que eso esta heho, entonces se
puede efectuar la simulacin a nivel compuertas usando el
test bench VHDL para generar los estmulos.
Capitulo 9.
250
,""
Implementacin
CaDltulo 9.
501
502
251
,.
... , ..
Mapeado
NGD
Mapeo
""
I
PCF
(Archivo de
restricciones fisicas)
NCD
(Nativc Circuit
Description)
SOl
PCf
(Physical cOllstraint
File
-ma
N"D
(Circut Description
laced and routed l
SO<
252
Revisin verificando
(Back Annotation)
Una vez que el diseo esta colocado y enrutado, se necesita
verificar que su funcionalidad no ha sido modificada por la
introduccin de los retardos reales impuestos por la
implementacin fisica del diseo.
,os
Capllulo ,.
ISW
Informacin fsica
Clod; period
O>--_,--i)
Para poder verificar los retardos del diseo del flujo de
diseo, necesitamos una descripcin donde la informacin
de la implementacin fsica sea usada para defmir con
mayor seguridad las caracteristicas de tiempos del diseo . .
Este proceso es conocido como back annotation .
Capitulo 9.
253
NGDAnno
NeD
(Diseo l1sico)
NCiDAnno
SDr
S07
estructural
lihreras
XIUNX
VITAL
,os
254
"
Anlisis de tiempos
Verificacin de tiempos
Partiendo de que el simulador se ha sido inicializado
correctamente, debern tenerse mensajes de precaucin y de
error si se tienen violaciones al verificar los tiempos, tales
como esos de mantenimiento y de puesta (setup y hold
times).
Captulo 9.
509
"'" . -
Verificacin
Post Layout
Hasta aqu estamos en la posicin donde ya tenemos un
archivo VHDL que contiene todos los retardos de la
Implementacin recin incluidos. Existen las vas para
verificar que la funcionalidad est an dentro de las
especificaciones.
Capitulo 9.
SI'
255
Cdigo VHDL
estructural
l.ibrcnas
XILlNX
SDF 1 - - - _1Simlaclo,-1-----
VITAL
511
SI2
256
,.
RepOlte de tlempos
NeD
(Nativo;: Circnit
Descripcin)
PCF
( Physical constraint
rFile)
....
An~l i"dl'r
de
tl~mpos
Rer~l1e de
tiempos
SIl
.lln
Programacin
(Programming)
La etapa final en el flujo de diseo VHDL es programar el
dispositivo seleccionado como objetivo del diseo. En este
paso, necesitamos traducir la informacin hasta aqu
generada por la mquina de Implementacin en un formato
adecuado para la Programacin del dispositivo.
SI<
257
BlTGEN
5 15
" 1'"
nombrc_archivo.bit
NeD
(Native (,ircut
Descrptioll )
I3 ITCiI'N
Archivo BlT
({""ame.bit)
516
258
r.lIII<I
Bajado (Dowllload )
NCD
'----~~,:.'-"'-"==-
,----------:-..,--==-~ ~\
;~~~~>
'"
Cspftlllo 9.
NCD
"--_--l.-'
(N.!!'a::.';~v~e.!oC.!. 'r.;ccu,=i,,,-tJ~)~es~c!.!ripct",
jo,,-n,,-)_ _
CPLD
Fitter Prograrn
,J\
Archivo JEDEC
SI8
259
Resumen
Con esto hemos completado la segunda parte de las
presentaciones: VHDL para disear con dispositivos
lgicos programables de Xilinx
Captulo 9.
51'
520
260
Set de
herramientas
Foundation
Series
Software
Enseguida vimos con un poco ms de detalle cuales son los
pasos a seguir cuando se trabaja dentro del ambiente de
las herraImentas Xiliox F oundation para los dispositivos
FPGA's.
'"
Control y restricciones
Metodologas de
restricciones
e PCF)
'"
26
' b aSlca
"
1n f ormaClon
s bre l "
softwa:r-::
10.
10.1
10.2
10.3
lntroducc.in
.:.Por q u usar VH DL?
Vl'1lt'ujas de la ~irnuacin
Ventajas tnnino mtdio <'11 usar VliDL
L:ls desventajas
Cuesrione":i sobre la c ~l.idad de J o~ resultados
Cuestiones relativas a las trayectorias de- datos
CO~ :tS djgll~S de tomarse en cuenta: (.' onclusion0:;
Intrd uci..:ndo el VHDL d~ntr() del tlttio de chsel;o
Uso para un di!'positivo completo
Sim ulacin al nivel d~ la t~iblin;.i.
Com:lu!'ioncs
10.4
10.5
10.6
10.7
10.8
10.9
10.10
10.11
lO .1 :?
LI PI1U
IV.
,,,
111 1 0 1
VHDL
para
'Lgica Programable'
(PLDs)
Esta es la ltima leccin de la presentacin, y en ella se
tratan considerandos generales relativos al uso del
VHDL en el diseo digital para dispositivos de lgica
programable. La leccin nos ayudar a entender cmo es
que el VHDL trae grandes y revolucionarios beneficios
al proceso de diseo y tambin a ver los problemas
potenciales que conlleva su implantacin.
Capitulo 10.
526
263
10.1.1 lntrodu;d6n
AGENDA:
'Por qu VHDL?
Cul sintetizador')
Qu lipo de chips?
"Cmo irnph.m1ar d
\"'HDL~
S27
10.1.2 lntroduCdll
-Por qu VHDL?
" ' ).
- e na'1 d'lSpOS1tlvo
Veremos primero algunas razones a considerar que
justifiquen el uso del VHDL. Qu beneficios trae?
Adems ya que el nmero de productos de lgica
programable para disear con VHDL est creciendo con
gran dinamismo, por lo que discutiremos algunos factores
que afectan la decisin al seleccionar alguno de ellos,
Capitulo 10.
S28
264
Consideraciones
r----~~. - - - ,
** iPrecaucin! **
-Men tor
-Synopsys
-Leonardo
-Oread
- Viow L0gic
** iPr~caucin! **
10 1 4 Introdl>ccioo
C,Q..Wtb
'Oi1i'''') \
530
265
Por qu
VHDL?
Algunas razones por las cuales es conveniente el uso del
VHDL en los diseos ...
Captulo JO.
'"
. . lmiependencia de la implementacin
Jp~~~~~~(A,B,Se)
begin
if Sel ='1' then
Z<= A;
else
Z <= B;
end if;
end process;
Cualquier
PLD
,
Cualquier
ASIC
532
266
<
.~.
t"'-
IL_1_J_cr_ra_Il_1_ie_ll_t3_A_---'
I
Herramienta B
Herramienta e
VHDL
I
Sntesis
1,
Compuertas
En la actualidad las herramientas de sntesis permiten que un
diseo al nivel de compuertas pueda ser construido y.
cmtimizado automticamente a p'artir de una descripCin
VHDL. Muchos usuarios experimentados en el uso del
VHDL han encontrado que la sntesis VHDL puede
incrementar la productividad total en rdenes de dos a cinco
veces para los grandes diseos.
e'Dltulo 10.
'"
267
10.2.4
'Por"~ ll!IaT
VHD["!
53'
Estmulos
Banco de pruebas
(test bench)
Dispositivo
I~
~
'36
268
Estmul os
Banco de pruebas
(test bellch )
I!ntt:mccin
Disposi tivo
1"
..
Clo'tulo 10.
'38
269
Sistema
I~
~
Estmulos
Banco de pruebas
Inm!em~in
~
I
t==1
39
En el futuro
540
270
~ml1no
..
......,.
541
El VHDL es un estndar
Ms ingenieros
Otros grupos de trabajo
Inversin segura
El VHDL es un lenguaje estndar. Un nmero cada vez
mayor de ingenieros se las tienen que ver con l, y todo
mundo lo entiende y sabe exactamente lo que cada
construccin significa. El VHDL esta ahora lo
suficientemente establecido de modo que la inversin y el
esfuerzo de manejarlo es algo seguro. Su desarrollo est
igualmente garantizado.
Capitulo 10.
54'
27 1
Reuso de diseos
uoooou.c.~
Ahora
Process (A,B,Sel)
begin
ir Sel =' 1' then
Z<=A;
el se
Z<=B;
end ir;
end process;
D~ aos
aeS1pues
00000c"
543
Relumen ..
Resumen
Independencia
Productividad
Simulacin
Reuso
A prueba del tiempo
I
I
En resumen, hemos considerado las ventajas de la
independencia de las herramientas y de la
implementacin, el incremento de productividad cuando
se usa la sintesis con los grandes diseos, y la habilidad
de simular al nivel de las tablillas y de sistemas, y la
seguridad en la inversin a prueba del futuro mediante el
reuso de los diseos actuales.
Clotulo 10.
272
/i\
. p...genC:2.:
, -____________
l
L-
' ~, ~
_____________,
-Cuestiones desventajosas
-Portabilidad mito o realidad?
-Estilo de escritura an de bajo nivel?
7-~' -"
'.
'"
10.5.1 Lssdes\"cnta"a3
regis~'os
- ".
:;;.
Tan solo un subconjunto del VHDL
Capitulo 10.
273
Dise&dores
~~
El estilo en el cual se escribe el cdigo VHDL tiene una
influencia directa en la calidad del diseo resultante al
sintetizar. Los diseadores VHDL necesitan por lo tanto
conocer la sintaxis del lenguaje y el como los diferentes
estilos de codificado afectan los resultados de la sntesis
antes de que inicien su primer proyecto.
CIPituio 10.
547
a' .'
l"
(1 [J O")
'IP
p
iJ
g
g
O
Uo"o'o"nrrou-::n::n:::'o-l
'48
274
Ji\
Entrenarse en:
Sintaxis
Estilo RTL
..
'49
Cuidado con la
habilidad para
sintetizar!
Probablemente en la actualidad la principal cuestin a
considerar con las herramientas de sntesis es su habilidad
para sntetizar eficientemente un diseo en lgica
programable. A mayor calidad del sntetizador los diseos
ocuparan menos rea y corrern a la mayor velocidad del
reloj posible.
Caoltulo 10.
,so
275
J 0.6.1 Cw::~ti01l1$
551
Q
Contador Binario
Car
CK
TC
CE
TC
~
CE
CK
552
276
Diseos mejor
Beneficio de la
optimizados!
productividad!
An las herramientas de sntesis ms sofisticadas no son
siempre capaces de optimizar un diseo del mismo modo a
como lo hace un diseador experto, de modo que es loable
esperar que los designers efecten una pequea cantidad de
trabajo manual de vez en cuando. No obstante, los
sintetizadores ofrecen por s mismos signi ficantes beneficios
sobre todo para los grandes diseos.
Caoftulo 10.
10.7.0a....:SlI0I~rc lati\'asalaJo.lltI
. :0
'"
ah
.''.
Cuidado con la
trayectoria de
datos!
En los diseos orientados a datapath, es decir donde el
particionado del sistema se resuelve en grandes unidades
de procesamiento de datos por un lado y de control por el
otro, pueden ocurrir otro tipo de cuestiones. Veamos
cuales son ...
Caotwlo 10.
'54
277
JO.!.1
(::ue.tN)I"It~
relarivu _ la data
In
Menor que
Menor o igual
<
<=
Mayor que
!>.'lt!IHl'li~;Kln
>
Mayor o igual
>=
Diferente a
Suma
Resta
/=
10.
ath
'56
278
1U~1(m
.t ..
.:tllmc~
f(latiV3.S
iI I~
CI:l a!h
.,
inst nClaClOn
---------------------------------------------._---
------------
=8-~
v-
---------------
Capitulo 10.
1(("
'58
279
10.9.0 lntc
AGENDA:
Int.gracin al FLUJO de DISEO
-A partir de diseo esquemtico?
Se emplea actualmente algn lIDL?
'\
560
280
10.91 Inle
\o ti VUOL en d
Uso
nu o ~ ~I
~emejante
al ABEL o al Palasm
VHDL
~g-_-1VHDL
~::;:--1 ESQUEM
TICO
AB EL I - - -b=="!
,.
e'plrulo 10.
10.9.2
",, 'u.st&ndo
..
~EL
Esquemtico
I ~nfesi~
Netiist a
Estimulas
nivel compuertas.-................
.;
"-~imulacin a nive
,.--L.-,./
~
de compuertas
'"
28 1
de !Ii:il"flo
El ms bajo costo
Sntesis basada en PC
Este es el punto de entrada para integrar el VHDL al flujo de
diseo con el costo ms bajo, requiriendo una herramienta
de 'slo sntesis' VHDL basada en pe. Todas las otras
herramientas usadas no necesitan cambiar, y los diseos
existentes pueden integrarse dentro del nuevo flujo de diseo
tal como hasta aqu existen.
e.pllulo 10.
'6l
Cuestiones
Bajo costo,
Bajo riesgo
Introduccin natural
al
VHDL
Diseos
pequeos
(10-20
'gafes' )
282
l:tiV\) t"()
J,:to
Todo en
VHDL
10.10.1 Uw
56'
Uf!
iavo
kw
Cuestiones de la simulacin
VHDL
> I Sim VHDL
(dispositivo)
.l.
?/.'
/' "
\
Estmulos VHDL
Netlist a
nivel co puertas-? r---...J". : : . " - - - - - - - - - ,
Layout
..
283
10.1O.2lJsar
un di
tivo e l
Ileto
Librera
VITAL
10.10.3 UW'
567
utI
di
ti\lO com no
Herramientas requeridas
'LaPC
adecuada para
grandes di.eo
Sntesis
Esta metodologa incluir la adquisicin tanto de las
herramientas de sntesis como las de simulacin VHDL.
Actualmente las herramientas basadas en plataformas pe
pueden manejar grandes diseos, requirindose grandes
estaciones de trabajo tan s6lo si los diseos manejan
millones de compuertas con tiempos de simulacin
excesivamente grandes.
Capitulo 10.
S"
284
Cuestiones
Simulacin
V:aD L
Grandes
diseos
Mayor
inversin
Este mtodo tiene las ventajas de la simulacin con VHDL y
debe a mediano plazo ser el preferido sobre todo para
cuando haya que realizar grandes diseos. La inversin
inicial sera significativamente mayor que en el caso de la
metodologa "slo sntesis" .
CIDlt\l1o 10.
' 69
ASIC
~PU/
MEMORIA
1-1--
PLD
I
PLD
t--
11--
L-~C.-.~~7,.7.IO~
. ~--~--------~'~70~~~~--------------v.~~!~
285
Banco
de
pruebas
VHDL
ASIC
PLD
I
1-
PLD
f-
571
CPU!
ASIC
MEMORIA
(modelo
software
f-o
hardware) 1--
I
1-
PLD
f-
PLD
r-1--
S7l
286
r-r--
CPUI
MEMORIA
(modelo
software
o
hardware)
AS I ~
I
PLD
I
11-
PLD
11-1--
S7J
Beneficios potenciales
Menor nmero de
ciclos I:n el flujo de
diseo a
nivel tablilla
Tiempos
de diseo
reducido
La ms
grande
inversin
574
287
Conclusiones:
-benetic ios
-Consejos para introducir el VHDL
-Seleccin del sintetizador y simulador
_.
. Ie
101'
OIlClIISIOUCS
BenefiCi:i\0tenciales
Conclusiones:
Indes,endencia
- Pro uctividad
Simulacin
Reuso
, A prut'\>a dd !\Unl
. .
S16
288
lf.IIIII.I
Herramienta
de entrada
de bajo costo
'"
E valuar las
herramientas
con sumo
cuidado
S78
289
Tiempo
S79
290
BIBLIOGRAFA
1.
2.
3.
4.
era .a
'"
29 1
.,
Introduc ci n
lengua je
Se termin
de imprimir
en el mes de abril
del ao 2001
ef'Ilos talleres
de la Se<cin
clelmpresin
y Reproduccin de la
Universidad Autnoma Metropolitana.
/JnidiJd Azupotzalco.
la edi<in estuvo
a cargo
de la Serci6n
de Produccin
y Oistribl.lc:i6n Editoriales.
Se imprimieron
]00 ejemplares
ms sobrantes
para reposicin.
UNIVERSIDAD
N:l1
AzcapoUalco
AUTONOMA
METROPOUTANA
COORDINACIN
DE SERVICIOS
DE INFORMACIN
Cdigo de barras.
:?8~ 9(!,
FECHA DE DEVOLUOON
UAM
2893967
TK7885.7
15.75
Introduccin al lenguaje
o
o
c.
0092101
35298
..o:
c.
u"
"
~
~
""o
e
"
de Produccin y Dist ribuc in Edito riales - Divisin de Ciencias B sic as e Ingenier alOe part.r