Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Seminarios VHDL
Seminarios VHDL
Arquitectura y tecnologa de Computadores (Informtica) Fundamentos de Computadores (Teleco) Juan on!"le! #juan$gon!ale!%uam$es&
VHDL
)*ara qu+ sir,e el VHDL l !#DL permite modelar 'I'./0A' DI I.AL/' $ partir de estos modelos podremos%
'imular
( ns )( ns *( ns
'inteti!ar
$ & '
Comprobar que tienen la funcionalidad deseada Crear un circuito que funciona como el modelo F* As DCD (Informtica+,-) DC' (Teleco+ .-)
'I'./0A' DI I.AL/'
Microprocesador
M12
$L1
D C3D
4 5
C36T
M M
$1T
Circuitos Combinacionales
Circuitos 'ecuenciales
/uertas l0icas
&iestables
VHDL1 H2 3 AL 45I.04'
Con !#DL modelamos el HA5D2A5/ /ero !#DL permite tambi8n pro0ramar AL 45I.04' ('oft7are)
/ensamos en #9
&anco de pruebas
+ y a partir de ese
VHDL1 /,olucin
: 789:% l departamento de defensa de los 11 funda el proyecto para crear un #DL estndar dentro del pro0rama !#'IC 7897% 9oods #ole 9orEs"op+ reunin inicial entre el 5obierno+ 1ni@ersidades e Industria 789;% 'e concedi a Intermetrics+ I&M y TeBas Instruments el contrato para desarrollar !#DL 789<% !ersin D=* de dominio pFblico= 789=% l I lo ratifica como su estndar )(DG (!#DLH<D) 788;% l len0uaje !#DL fue re@isado y ampliado+ pasando a ser estndar )(DG IC, (!#DLHC,) >:::% Jltima modificacin de !#DL
: : : : : :
La entidad y la arquitectura
Tipos de datos Los procesos Circuitos combinacionales Circuitos secuenciales Mquinas de estados Triestados Diseo jerrquico stilos de diseo !erificacin con testbenc"es
VHDL
/ntidad y arquitectura : 1na unidad "ard7are se @isualiAa como una Kcaja ne0raL
> l interfaA de la caja ne0ra esta completamente definida= > l interior esta oculto=
:
Inter@a!1 entradas y salidas
IE
4F.
Una seal que sale fuera de la seal y no es usada internamente. La seal no puede ser leda dentro de la entidad.
IE4F.
*+; *++;
04D4
.I*4 rst
mi_componente
dA=1:B clC
qA=1:B
6ombre de la entidad
/arte declarati@a
-egin
Cuerpo
6ombre de la arquitectura
end test;
)R
Tipos de datos
VHDL
Los procesos Circuitos combinacionales Circuitos secuenciales Mquinas de estados Triestados Diseo jerrquico stilos de diseo !erificacin con testbenc"es
TI/3 es la definicin de los @alores posibles que puede tomar un objeto Los tipos predefinidos son%
> inte0er floatin0 point enumerated p"ysical Compuestos% array record /unteros% access $rc"i@os% file scalares%
@ile
access
escalares
entero @sico
array record
enumerados
LIBRARY ieee; USE ieee.std_logic_1164.ALL; ENTITY mi_componente IS P RT ! cl"# $st% IN std_logic; d% IN std_logic_&ecto$!' ( )NT ,% UT std_logic_&ecto$!' ( )NT EN( mi_componente;
*+; *++;
mi_componente
> %otacin:
Fso1
mi_m.,0in.67INA3TI4 ;
Fso1
mi_memo$i.!*+679CAAC;
: 4elacionales
U NU V VU W WU i0ual distinto menor menor o i0ual mayor mayor o i0ual
Multiplicati@os
X N rem mod
: :
'i0no (unarios)
Y+ >
: Miscelneos
abs @alor absoluto XX eBponenciacin not ne0acin (unario)
Las funciones s6i@tHrig6t#& y s6i@tHle@t#& permiten "acer desplaAamientos+ pero solo para los tipos unsigned y signed
sign.l .% sign.l -% 0nsigned! : do5nto *+; 0nsigned! : do5nto *+;
Los procesos
VHDL
Circuitos combinacionales Circuitos secuenciales Mquinas de estados Triestados Diseo jerrquico stilos de diseo !erificacin con testbenc"es
-egin
/n el cuerpo de la arquitectura se modela el comportamiento del circuito con asignacionesL instanciaciones y *54C/'4'
end UAF;
p$ocess!lista de seales+ ... parte declarativa (variables, procedimientos, tipos, etc) ... -egin ... instrucciones que describen el comportamiento ... end p$ocess;
$ &
'
La lista de sensibilidad tiene las seales $+ & porque cualquier cambio en las entradas puede @ariar el estado de la puerta
p$ocess!A#B+ -egin i1 A7;1; .nd B7;1; t=en S 67 ;1;; else S 67 ;*;; 'e usa un if==t"en==else end i1; para describir la puerta end p$ocess;
ste #9 no se puede modelar en un len0uaje secuencial como C% ' U $ Z &\ ] U C ^ D\ $mbas puertas funcionan al mismo tiempo+ Mno una antes de la otraN
: De esta manera la aunque una instruccin se ejecuta despu8s de la otra+ como las dos se e@alFan en el mismo instante+ desde el punto de @ista de la modeliAacin del circuito ambas puertas estn funcionando simultneamente : sta es la solucin por la que opta !#DL (y !erilo0)
Eecesidad de la concurrencia
: 'in embar0o+ esta solucin ya no @ale con este circuito% $ & C ' ] ' VU $ and &\
a] no toma el @alor correcto porque no se da tiempo para que se actualiAe 'a
] VU ' or C\ : _/or qu8` 6o "ay que ol@idar que se trata de modeliAar circuitos reales+ no @irtuales+ y las seales necesitan que transcurra el tiempo para tomar un @alor%
La solucin de VHDL
: !#DL (y en 0eneral+ todos los #DLs) solucionan este problema dando soporte eBplicito a la concurrencia : n !#DL+ una arquitectura puede tener tantos procesos como queramos+ y todos se ejecutan concurrentemente
.$c=itect0$e ... ... -egin p$ocess!...+ ... end p$ocess; p$ocess!...+ ... end p$ocess; end ...;
$ & C
' ]
p$ocess!3#S+ -egin i1 37;1; t=en H 67 ;1;; else H 67 S; end i1; end p$ocess; end 0.m;
t(
t)
t*
*rocesos1 5ecapitulando
: Los procesos se disparan (su cdi0o se ejecuta) cuando cambia al0una de las seales en su lista de sensibilidad : Las instrucciones dentro del proceso se ejecutan secuencialmente+ una detrs de otra+ pero sin dar lu0ar a que a@ance el tiempo durante su ejecucin : l tiempo slo a@anAa cuando se lle0a al final del proceso : Las seales modelan "ilos del circuito+ y como tales+ slo pueden cambiar de @alor si se deja que a@ance el tiempo : 1na arquitectura puede tener tantos procesos como queramos+ y todos se @an a ejecutar en paralelo : sta es la manera que tiene !#DL de eBpresar la concurrencia in"erente al "ard7are
IA condicion_1 TIEN ... sec0enci. de inst$0cciones 1 ... ELSIA condicion_B TIEN ... sec0enci. de inst$0cciones B ... ELSIA condicion_: TIEN ... sec0enci. de inst$0cciones 1 ... ELSE ... inst$0cciones po$ de1ecto ... EN( IA;
$ & '
3ASE e9p$esion IS )IEN c.so_1 7< ... sec0enci. de inst$0cciones 1 ... )IEN c.so_B 7< ... sec0enci. de inst$0cciones B ... )IEN TIERS 7< ... inst$0cciones po$ de1ecto ... EN( 3ASE;
.l0 % p$ocess !op1# opB# cmd+ is -egin c.se cmd is 5=en 8**8 7< $es 67 op1 ? opB; 5=en 8*18 7< $es 67 op1 K opB; 5=en 81*8 7< $es 67 op1 .nd opB; 5=en 8118 7< $es 67 op1 o$ opB; 5=en ot=e$s 7< $es 67 8JJJJJJJJ8; end c.se; end p$ocess .l0;
op)
res
op* cmd
/jemplo1 Decodi@icador de ; a 9
paraleli!a
.$c=itect0$e 0.m o1 -0sc.$ is -egin -0sc.% p$ocess!&.lo$+ -egin encont$.do 67 ;*;; pos %7 *; 5=ile &.lo$ N7 t.-l.!pos+ o$ pos 6 1** loop pos %7 pos ? 1; end loop; i1 pos 6 1** t=en encont$.do 67 ;1;; end i1; Aqu tam?i+n se end p$ocess; paraleli!a el ?ucle end .$c=itect0$e 0.m;
p$ocess!lista de seales+ ... -egin ... instrucciones secuenciales ... end p$ocess;
/l proceso se dispara inmediatamente
Las instrucciones se ejecutan 6asta que se llega al waitL y en ese punto se suspende el proceso
p$ocess ... -egin ... instrucciones secuenciales ... 5.it... ... instrucciones secuenciales ... end p$ocess;
Las ,aria?les
: $ la "ora de modelar un circuito nos puede @enir bien un tener un objeto cuyo @alor se actualice inmediatamente
> sin tener que esperar a que a@ance el tiempo+ como en las seales
El problema de la actualizacin de la seal S tiene muy fcil solucin con una variable
.$c=itect0$e 0.m o1 eGemplo is ... -egin p$ocess!A#B#3+ &.$i.-le S % std_logic; -egin S %7 A .nd B; i1 37;1; t=en H 67 ;1;; else H 67 S; end i1; end p$ocess; end 0.m;
$ & C
' ]
Ftilidad
Visi?ilidad
Comportamiento
.C
VHDL
Circuitos combinacionales
Circuitos secuenciales Mquinas de estados Triestados Diseo jerrquico stilos de diseo !erificacin con testbenc"es
'e de?e asignar siempre #en todos los casos& a la salida un ,alor
$ & 'el
S CT3'
> n un proceso+ si el @alor futuro de una seal no puede ser determinado+ se mantiene el @alor actual= > 'e sintetiAa un latc" para mantener su estado actual
: ! 6T$b$'
> 'implifica la creacion de elementos de memoria
: D '! 6T$b$'
> /ueden 0enerarse latc"es no deseados+p=ej= cuando todas las opciones de una sentencia condicional no estn especificadas
A (( () )( ))
: 'olucin es incorrecta+ por no poner el caso Q))Q no si0nifica Qdon;t careQ+ simplemente est 0uardando el @alor anterior+ est 0enerando un latc"
Asignaciones concurrentes
: Las asi0naciones concurrentes son asi0naciones de @alores a seales+ fuera de proceso+ que permiten modelar de una manera muy compacta l0ica combinacional
> Suncionan como procesos (son procesos impl?citos) y se ejecutan concurrentemente con el resto de procesos y asi0naciones
: 'e pueden utiliAar todos los operadores que queramos+ tanto los predefinidos como los que importemos de las librer?as
: /or su ejecucin en cascada es similar al IS==T# 6== L' : /ueden 0enerarse problemas de memoria impl?cita si no se pone el Fltimo else
: /or su ejecucin en paralelo (balanceada) es similar a un C$' : 'e pueden dar problemas de memoria impl?cita si no se pone el Fltimo when others
VHDL
Circuitos secuenciales
Mquinas de estados Triestados Diseo jerrquico stilos de diseo !erificacin con testbenc"es
p$ocess !cl"+ -egin i1 cl";e&ent .nd cl"7;1; t=en , 67 d; end i1; cam?ia el reloj y end p$ocess;
es a6ora 7 $$$ 6ay un @lanco de su?ida
: 3tro circuito fundamental= : l reset debe estar en la lista de sensibilidad porque es as?ncrono+ tiene efecto independientemente del reloj= : n los circuitos secuenciales+ la lista de sensibilidad debe estar compuesta como muc"o por el reloj y el reset (si es as?ncrono)=
CLR
-egin i1 $st7;1; t=en ,_temp%78********8; elsi1 $ising_edge!cl"+ t=en i1 ce7;1; t=en i1 lo.d7;1; t=en ,_temp%7din; else ,_temp%7,_temp!6 do5nto *+ D sin; end i1; end i1; end i1; ,67,_temp; end p$ocess;
Lgica Com?$
/stFuturo registro
/stado
1tiliAacin de subtipos%
Definicion de stados
.$c=itect0$e 0.m o1 eGemplo is t/pe t_est.do is !E*# E1# EB# E:+; sign.l Est.do# EstA0t0$o % t_est.do; sign.l in1# inB# in: % std_logic; sign.l o0t1# o0tB % std_logic; sign.l 3Q# $eset % std_logic; ...
1tiliAacin de subtipos%
Definicion de stados
1tiliAacin de subtipos%
Definicion de stados
$egist$o% p$ocess!$eset#cl"+ -egin i1 $eset7;1; t=en Est.do 67 E*; elsi1 $ising_edge!cl"+t=en Est.do 67 EstA0t0$o; end i1; end p$ocess $egist$o;
VHDL
Mquinas de estados
Triestados Diseo jerrquico stilos de diseo !erificacin con testbenc"es
GC
>
D(
/ntradas
4e0istros de estado
L0ica de salida
'alidas
D)
/ntradas
4e0istros de estado
/stado actual
L0ica de salida
4e0istros de salida
'alidas
D*
Eota% Los dos bits del estado son utiliAados como salida
/ntradas
4e0istros de estado
'alidas
D,
/jemplo1
:
Dia0rama de stados%
/9$IT
ACR 7:
$et$/_o0t7;1;
D.
LIBRARY ieee; USE ieee.std_logic_1164.ALL; ENTITY m., IS P RT ! cloc"# $eset% IN std_logic; $e,# p5.it% IN std_logic; $et$/_o0t# .c"_o0t% UT std_logic+; EN( m.,;
DR
/jemplo1 'olucin 7
: 'alidas combinacionales decodificadas a partir de los estados
AR3IITE3TURE .$c=moo$e1 A m., IS
TYPE 1sm_st.tes IS !idle# $et$/# .c"+; SI2NAL 5.it_gen % 1sm_st.tes; BE2IN 1sm% PR 3ESS !cloc"# $eset+ BE2IN IA $eset 7 ;1; TIEN 5.it_gen 67 idle; EE .s/nc=$ono0s $eset ELSIA cloc";E4ENT AN( cloc" 7 ;1; TIEN 3ASE 5.it_gen IS )IEN idle 7< IA $e, 7 ;*; TIEN 5.it_gen 67 $et$/; ELSE 5.it_gen 67 idle; EN( IA;
DG
EN( 3ASE; EN( IA; EN( PR 3ESS 1sm; $et$/_o0t 67 ;1; )IEN !5.it_gen 7 $et$/+ ELSE ;*;; .c"_o0t 67 ;1; )IEN !5.it_gen 7 .c"+ ELSE ;*;; EN( .$c=moo$e1;
DD
TYPE 1sm_st.tes IS !idle# $et$/# .c"+; SI2NAL 5.it_gen% 1sm_st.tes; BE2IN 1sm% PR 3ESS !cloc"# $eset+ BE2IN IA $eset 7 ;1; TIEN 5.it_gen 67 idle; $et$/_o0t 67 ;*;; .c"_o0t 67 ;*;; ELSIA cloc";E4ENT AN( cloc" 7 ;1; TIEN $et$/_o0t 67 ;*;; EE .sign.cion po$ de1ecto
D<
)IEN $et$/
7<
7<
TIERS 7<
DC
/jemplo1 'olucin ;
: 'alidas codificadas en el @alor de los estados
AR3IITE3TURE .$c=moo$e: SI2NAL 5.it_gen% 3 NSTANT idle% 3 NSTANT $et$/% 3 NSTANT .c"% BE2IN 1sm% PR 3ESS !cloc"# $eset+ BE2IN IA $eset 7 ;1; TIEN 5.it_gen 67 idle; ELSIA cloc";E4ENT AN( cloc" 7 ;1; TIEN A m., IS ( ( ( ( )NT )NT )NT )NT *+; *+ %7 8**8; *+ %7 8*18; *+ %7 81*8;
<(
<)
>
n C/LDs
: reduce el nFmero de t8rminos producto : eliminando+ si los "ubiera+ eBpasiones de productos+ y mejorando por tanto la @elocidad : pero usa muc"as ms macroceldas+ y el beneficio nunca es tan e@idente como en S/5$s
<*
TYPE 1sm_st.tes IS !idle# $et$/# .c"+; ATTRIBUTE en0m_encoding% st$ing; ATTRIBUTE en0m_encoding A 1sm_st.tes % TYPE IS C**1 *1* 1**C; SI2NAL 5.it_gen% 1sm_st.tes; BE2IN 1sm% PR 3ESS !cloc"# $eset+ BE2IN IA $eset 7 ;1; TIEN 5.it_gen 67 idle; ELSIA cloc";E4ENT AN( cloc" 7 ;1; 3ASE 5.it_gen IS )IEN idle 7< IA $e, 7 ;*; TIEN TIEN 5.it_gen 67 $et$/; ELSE 5.it_gen 67 idle; EN( IA;
<,
7<
TIERS 7<
EN( 3ASE; EN( IA; EN( PR 3ESS 1sm; EE (ecodi1ic.cion de s.lid.s $et$/_o0t 67 ;1; )IEN !5.it_gen 7 $et$/+ ELSE ;*;; .c"_o0t 67 ;1; )IEN !5.it_gen 7 .c"+ ELSE ;*;; EN( .$c=moo$e4;
<.
: Codificacin 3neH#ot
> Lo0ica de si0uiente estado mas sencilla > Mejora la @elocidad > 6ecesita mas re0istros
<R
F'0 de 0ealy
: Las salidas cambian por un cambio de estado o por un cambio en el @alor de las entradas
> #ay que tener muc"o cuidado con las entradas as?ncronas
4e0istros de estado
/ntradas
L0ica
'alidas
<G
)2N(( 2)N)(
<D
/jemplo1 'olucin
AR3IITE3TURE .$c=me.l/1 A m., IS TYPE 1sm_st.tes IS !idle# $et$/+; SI2NAL 5.it_gen% 1sm_st.tes; BE2IN 1sm% PR 3ESS !cloc"# $eset+ BE2IN IA $eset 7 ;1; TIEN 5.it_gen 67 idle; ELSIA cloc";E4ENT AN( cloc" 7 ;1; TIEN 3ASE 5.it_gen IS )IEN idle 7< IA $e, 7 ;*; TIEN 5.it_gen 67 $et$/; ELSE 5.it_gen 67 idle; EN( IA; )IEN $et$/ 7< IA p5.it 7 ;1; TIEN 5.it_gen 67 idle; ELSE 5.it_gen 67 $et$/; EN( IA; )IEN TIERS 7< 5.it_gen 67 idle; EN( 3ASE; EN( IA; EN( PR 3ESS 1sm; $et$/_o0t 67 ;1; )IEN !5.it_gen 7 $et$/ AN( p5.it7;*;+ R !5.it_gen 7 idle AN( $e,7;*;+ ELSE ;*;; .c"_o0t 67 ;1; )IEN !5.it_gen 7 $et$/ AN( p5.it7;1;+ ELSE ;*;; EN( .$c=me.l/1;
<<
VHDL
Triestados
Diseo jerrquico stilos de diseo !erificacin con testbenc"es
<C
C(
In@erencia de triestado
: Cuando se quiere que un dri@er de una seal se quede en alta impedancia+ se le asi0na a la seal el @alor ;P;
> 'lo @ale si para el tipo stdTlo0ic
I0ual que ocurre en la realidad+ el estado de la seal lo fijar el dri@er que no est8 en alta impedancia
V:V
sen.l 67 in1 )IEN en.7;1; ELSE ;>;; PR 3ESS!in1+ BE2IN sen.l 67 ;*;; EN( PR 3ESS;
in7
V:V
V:V
C)
: Con un proceso%
PR 3ESS !en._.# .+ BE2IN IA !sel_. 7 ;*;+ TIEN t 67 .; ELSE t 67 ;>;; EN( PR 3ESS;
C*
'eGales ?idireccionales
: n este caso la seal tiene dri@ers eBternos+ fuera de la entidad
ENTITY -01oe IS P RT ! 9% IN std_logic; oe% IN std_logic; /% IN UT std_logic; /1-% UT std_logic+; EN( -01oe; AR3IITE3TURE simple A -01oe IS BE2IN / 67 9 )IEN oe7;1; ELSE ;>;; /1- 67 /; EN( simple;
oe O y@? y
C,
5/
<
DA.A
<
L4AD
CL4CR 4/
ENTITY eG-idi$ IS P RT ! lo.d#cloc"#oe% IN std_logic; d.t.% IN UT std_logic+; EN( eG-idi$; AR3IITE3TURE simple A eG-idi$ IS SI2NAL $eg% std_logic_&ecto$!' do5nto *+; BE2IN d.t.67$eg )IEN oe7;1; ELSE 8>>>>>>>>>8; PR 3ESS!cl"+ BE2IN IA $ising_edge!cl"+ TIEN $eg67d.t.; EN( IA; EN( PR 3ESS; EN( simple;
VHDL
Diseo jerrquico
stilos de diseo !erificacin con testbenc"es
DiseGo jer"rquico
> Componentes pequeos son utiliAados como elementos de otros ms 0randes > /ermite reutiliAar cdi0o > Diseos ms le0ibles y portables
a>$,6d
?$,6d
c$,6d
Kr?ol de jerarquas
top$,6d
a$,6d
?$,6d
c$,6d
a7$,6d
a>$,6d
C40*4E/E./' IEF/5I45/'
$T
2T
$T $ 2
2T
mi_comp
mi_comp
$T $ C) 2
'
2T
C*
Begin 31%mi_comp P RT FAP !A7<AT# J7<S+ 3B%mi_comp P RT FAP !A7<S# J7<JT+ EN( test;
VHDL
*asos de la simulacin
$rc"i@os !#DL
(ancos de prue?as
: : #ay que "acer un banco de pruebas (testbenc") para cada componente diseado= La simulacin de un componente consiste en%
> 5enerar unos est?mulos > 3bser@ar los resultados /ensamos en '9 $l0oritmos de pruebas Mi diseo "ard7are
/ensamos en #9
&anco de pruebas
Mi diseo "ard7are
4esultados
&anco de pruebas
Mi diseo "ard7are
4esultados
&anco de pruebas
enerando estmulos
: : : : l proceso de pruebas 0enerar est?mulos de manera secuencial 'e asi0nan @alores a las entradas 'e espera un tiempo a obtener la respuesta j= 'umador de < bits
A 67 9C*:C; B 67 9C*BC; )AIT A R B* ns; A67 9CAAC; B67 9CB*C; )AIT A R :* ns;
$ &
Dar @alores a las entradas del sumador sperar un tiempo (el proceso se suspende)
seGal XD ,alor
A''/5. #resultadoDesperado&
2AI. F45
p$ocess -egin $ A 67 9C*1C; B 67 9C*1C; & )AIT A R 1* ns; ASSERT J 7 9C*BC REP RT RA.ll.C SE4ERITY AAILURE; A67 9CAAC; B67 9C*1C; )AIT A R 1* ns; ASSERT J 7 9C**C REP RT RA.ll.C SE4ERITY AAILURE; )AIT; end p$ocess;
/lementos1 c$
/roceso de pruebas
$ 2 & c2
c&
: : : : : :
ntidad topHle@el% sumadorTtb Componente a probar% sumador /roceso de pruebas Cable c$ Cable c& Cable c2
Sign.l cA % std_logic_&ecto$!' do5nto *+; Sign.l cB % std_logic_&ecto$!' do5nto *+; Sign.l cJ % std_logic_&ecto$!' do5nto *+; Begin EE30e$po% en l. pSgin. sig0iente %E+ EN( test;
p$ocess -egin 1o$ i in 1 to BPP loop 1o$ G in 1 to BPP loop cA 67 std_logic_&ecto$!to_0nsigned!i#@++; cB 67 std_logic_&ecto$!to_0nsigned!G#@++; )AIT A R 1* ns; ASSERT cJ 7 std_logic_&ecto$!to_0nsigned!i?G#@++ REP RT RA.ll.C SE4ERITY AAILURE; end loop; end loop; end p$ocess;
VHDL