Está en la página 1de 114

Introduccin al Lenguaje de Descripcin Hardware VHDL

Arquitectura y tecnologa de Computadores (Informtica) Fundamentos de Computadores (Teleco) Juan on!"le! #juan$gon!ale!%uam$es&

#C& 'ergio Lpe! (uedo

Lenguaje de Descripcin Hardware VHDL


Introduccin
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

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

jemplo% /ruebas de funcionamiento


/ensamos en '9 $l0oritmos de pruebas Mi diseo "ard7are

/ensamos en #9

&anco de pruebas

VHDL1 orgenes e 6istoria


: !#DL sur0e a principios de los ;<( de un proyecto D$4/$ (Departamento de Defensa de los =11=) llamado !#'IC > Very High Speed Integrated Circuits : !#DL aparece como una manera de describir circuitos inte0rados
> La crisis del ciclo de vida del HW% cada d?a los circuitos inte0rados eran ms complicados+ y el coste de reponerlos cada @eA era mayor+ porque no estaban correctamente documentados= !#DL naci como una manera estndar de documentar los circuitos > $l mismo tiempo+ se @io que la eBpresi@idad de !#DL permitir?a reducir el tiempo de diseo de los circuitos+ porque se podr?an crear directamente de su descripcin% utilidad de la s?ntesis

n )C<D el trabajo fue cedido al I momento es un estndar abierto=

+ 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

: : : : : :

Lenguaje de Descripcin Hardware VHDL


Introduccin

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 Arquitectura1 7er ni,el de a?straccin


A?straccin1 caja negra

/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

n !#DL la caja ne0ra se denomina entidad


> La 6TITM describe la N' del diseo

: rst dA=1:B clC qA=1:B

/ara describir su funcionamiento se asocia una implementacin que se denomina arquitectura


> La $4C#IT CT14 describe el contenido del diseo=

*45.'1 *uertos de una entidad


Inter@a! de dispositi,o *orts D canales de comunicacin Cada una de las posibles coneBiones se denomina un /34T y consta de% : 1n nom?re+ que debe ser Fnico dentro de la entidad= : 1na lista de propiedades+ como% > la direccin del flujo de datos+ entrada+ salida+ bidireccional y se conoce como 04D4 del puerto= > los @alores que puede tomar el puerto% ;(O+ ;); o (IPO)+ etc=+los @alores posibles dependen de lo que se denomina .I*4 de seal= : Los puertos son una clase especial de seales que adicionalmente al tipo de seal aade el modo

*orts1 entradas y salidas

rst dA=1:B clC qA=1:B

*45.'1 0odos de un puerto


Indican la direccin y si el puerto puede leerse o escribirse dentro de la entidad Una seal que entra en la entidad y no sale. La seal puede ser leda pero no escrita.

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.

1na seal que es bidireccional+ entradaNsalida de la entidad=

VHDL1 Declaracin de entidad


La declaracin VHDL de la caja negra1 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;

*+; *++;

04D4

.I*4 rst

mi_componente

dA=1:B clC

qA=1:B

/structura de un diseGo VHDL


li-$.$/ ieee; 0se ieee.std_logic_1164..ll; entit/ mi_componente is po$t ! +; end mi_componente;

Declaraciones del puerto

6ombre de la entidad

.$,0itect0$e test o1 mi_componente is

/arte declarati@a
-egin

Cuerpo

6ombre de la arquitectura

end test;

5esumen1 /ntidad y Arquitecturas


: La entidad se utiliAa para "acer una descripcin Qcaja ne0raQ del diseo+ slo se detalla su interfaA

: Los contenidos del circuito se modelan dentro de la arquitectura

)R

Lenguaje de Descripcin Hardware VHDL


Introduccin La entidad y la arquitectura

Tipos de datos

VHDL

Los procesos Circuitos combinacionales Circuitos secuenciales Mquinas de estados Triestados Diseo jerrquico stilos de diseo !erificacin con testbenc"es

/uropean .raining Institute

Lenguaje de Descripcin Hardware VHDL

Fni,$ Autnoma de 0adrid

.ipos de datos ?"sicos


:
tipos

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

compuestos > real > >

entero @sico

array record

enumerados

VHDL /' FF/5./0/E./ .I*AD4

Algunos tipos ?"sicos prede@inidos


: I6T 5 4% tipo entero
> usado como @alor ?ndice en laAos+ constantes o @alores 0en8ricos

: &33L $6% tipo l0ico


> /uede tomar como @alores IT41 O o IS$L' O

61M 4$T D% numeracin


> Conjunto de @alores definido por el usuario > /or ejemplo% TYPE est.dos IS !inicio# lento# $.pido+

.ipos '.DHL4 IC y '.DHL4 ICHV/C.45


: Definidos en el paquete I///$standardHlogicH77IJ : 'on un est"ndar industrial= : Los emplearemos 'I/0*5/ para de@inir los puertos de las entidades$ : Tipo 'tdHlogic% @alor presente en un cable de ) bit : Tipo 'tdHlogicH,ector% para definir buses (array de stdTlo0ic)
;(; ;); ;1; ;2; ;P; 'alida de una puerta con ni@el l0ico bajo 'alida de una puerta con ni@el l0ico alto 6o inicialiAado+ @alor por defecto= Desconocido= Debido a un C34T3CI4C1IT3 $lta Impedancia

Tiene ms @alores posibles+ que no usaremos en el laboratorio% ;9;+;L;+;#;+;H;

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

rst dA=1:B clC qA=1:B

Asignacin de seGales en ?uses


> Vamos a definir una seal de 8 bits para trabajar con ella:
SI2NAL tmp% ST(_L 2I3_4E3T R!' do5nto *+;

> > > > >

si!nacin de un "alor binario:

tmp 67 81*1***118; tmp 67 98A:8;

si!nacin de un "alor en #e$adecimal: si!nacin de un bit: tmp!'+


67 ;1;;

si!nacin de un ran!o de bits: si!nacin compacta: tmp67


: : 1 bit : comilla simple (') multiples bits: comilla doble (")

tmp!' do5nto 4+ 67 81*1*8;

!*7<;*;# 17<c .nd -# ot=e$s7<;>;+;

> %otacin:

.ipos 'I E/D y FE'I E/D


> Las operaciones aritm&ticas est'ndares slo est'n definidas para los tipos signed y unsigned > (on similares a std)lo!ic)"ector. > *st'n definidos en la librera IEEE.numeric_std
USE ieee.n0me$ic_std..ll;

> Ejemplo de uso:


> +efinimos una "ariable de tipo unsi!ned, para implementar un contador:
4ARIABLE cont.do$% 0nsigned!' do5nto *+;

> Incrementamos la "ariable en -:


cont.do$%7cont.do$ ? 1;

Con,ersiones de tipos #I&


> !#DL es un len0uaje FF/5./0/E./ .I*AD4 > Las operaciones aritm8ticas estndares estn definidas para los tipos 'I E/D y FE'I E/D > ===pero los puertos de las entidades se definen 'I M/4 para los tipos '.DHL4 IC y '.DHL4 ICHV/C.45=== > ===por tanto "ay que "acer C4EV/5'I4E/' entre tipos > Bisten librer?as E4 /'.KEDA5/' que permiten "acer operaciones directamente con el tipo stdHlogicH,ector

> std)lo!ic)si!ned, > std)lo!ic)unsi!ned, > std)lo!ic)arit#

(i se quiere #acer un cdi!o V.+L portable, con"iene no usarlas

Con,ersiones de tipos #II&


> 1saremos estos objetos como ejemplo%
sign.l std&% std_logic_&ecto$!' do5nto *+; &.$i.-le 0ns% 0nsigned!' do5nto *+; &.$i.-le sig% signed!' do5nto *+; &.$i.-le ente$o% Intege$

> Con@ersin de signed y unsigned a stdHlogicH,ector%


std&67std_logic_&ecto$!0ns+; std&67std_logic_&ecto$!sig+;

> Con@ersin de stdHlogicH,ector a signed y unsigned%


0ns %7 0nsigned!std&+; sig %7 signed!std&+;

Con,ersiones de tipos #III&


> /on"ersin de signed y unsigned a Integer:
ente$o %7 to_intege$!sig+; ente$o %7 to_intege$!0ns+;

> /on"ersin de Integer a signed y unsigned:


0ns %7 to_0nsigned!ente$o#@+; sig %7 to_signed!ente$o#@+;

> /on"ersin de std_logic_vector a Integer y "ice0"ersa


std& 67 std_logic_&ecto$!to_0nsigned!ente$o#@++; ente$o %7 to_intege$!0nsigned!std&++;

De@inicin y uso de nue,os tipos


: Las definiciones de tipos se deben "acer en la parte declarati@a de la arquitectura : /jemplo 7= Definicin de un tipo como una enumeracin para usarlo en un autmata%
TYPE est.dos IS !INA3TI4 # PERAN( # AINALI>AR+; SI2NAL mi_m.,0in. % est.dos;

Fso1

mi_m.,0in.67INA3TI4 ;

: /jemplo >= Definicin de un tipo bidimensional para implementar una memoria%


TYPE memo$i. IS ARRAY !1*B: do5nto *+ std_logic_&ecto$!' do5nto *+; SI2NAL mi_memo$i. % memo$i.; A

Fso1

mi_memo$i.!*+679CAAC;

4peradores de@inidos en VHDL


: L0icos
and or+ nor Bor+ Bnor : $dicin
Y > Z suma resta concatenacin de @ectores multiplicacin di@isin resto mdulo

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

DesplaAamiento (si0ned y unsi0ned)


s"iftTri0"t+ s"iftTleft

0"s so?re operadores


: 6o todos los operadores estn definidos para todos los tipos : l operador de concatenacin se utiliAa muy a menudo
sign.l .% std_logic_&ecto$! : do5nto *+; sign.l -% std_logic_&ecto$! : do5nto *+; sign.l c% std_logic_&ecto$! ' do5nto *+; . 67 8**118; - 67 81*1*8; c 67 . D -; EE c 78**111*1*8

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 *+;

. 67 8**118; - 67 s=i1t_le1t!.#1+; EE - 78*11*8 - 67 s=i1t_$ig=t!.#1+; EE - 78***18

Lenguaje de Descripcin Hardware VHDL


Introduccin La entidad y la arquitectura Tipos de datos

Los procesos

VHDL

Circuitos combinacionales Circuitos secuenciales Mquinas de estados Triestados Diseo jerrquico stilos de diseo !erificacin con testbenc"es

/ntrando en detalle en la arquitectura


.$c=itect0$e test o1 mi_componente is
*arte declarati,a1 aqu se de@inen los su?tipos y las seGales que ,amos a usar

-egin
/n el cuerpo de la arquitectura se modela el comportamiento del circuito con asignacionesL instanciaciones y *54C/'4'

end UAF;

/l proceso1 el elemento de diseGo principal


: 1n proceso describe el comportamiento de un circuito
> Cuyo estado puede @ariar cuando cambian ciertas seales > 1tiliAando construcciones muy eBpresi@as% if..then..else+ case+ bucles for y while+ etc[ > M que adems puede declarar @ariables+ procedimientos+ etc===

p$ocess!lista de seales+ ... parte declarativa (variables, procedimientos, tipos, etc) ... -egin ... instrucciones que describen el comportamiento ... end p$ocess;

/jemplo1 Descripcin de una puerta AED

$ &

'

La lista de sensibilidad tiene las seales $+ & porque cualquier cambio en las entradas puede @ariar el estado de la puerta

l proceso no declara nada

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;

/l pro?lema de la concurrencia del H2


l #9 es in"erentemente concurrente+ los circuitos coeBisten f?sicamente en el tiempo $ & C D ' ]

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

El chip tiene dos puertas que funcionan simult neamente

Concurrencia1 Fna posi?le solucin


: La solucin al problema anterior es que aunque la ejecucin sea secuencial+ las instrucciones no tarden nin0Fn tiempo en ejecutarse% $ & C D ' ] ' VU $ and &\ ] VU C or D\

: 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 ...;

Los procesos se ejecutan concurrentemente

Dos procesos en paralelo como solucin


.$c=itect0$e 0.m o1 eGemplo is ... -egin p$ocess!A#B+ -egin i1 A7;1; .nd B7;1; t=en S 67 ;1;; else S 67 ;*;; end i1; end p$ocess;

$ & 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

Instrucciones en procesos1 IF$$.H/E$$/L'/


/jemplo1 Fn multipleOor p$ocess!A#B#S+ -egin i1 S 7 ;1; t=en J 67 A; else J 67 B; end i1; end p$ocess;

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;

$ & '

Instrucciones en procesos1 CA'/


/jemplo1 Fna ALF sencilla
.$c=itect0$e 0.m o1 .l0 is -egin

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

end .$c=itect0$e 0.m;

op* cmd

Instrucciones en procesos1 (ucle F45


Leti,0et.M A R identi1ic.do$ IN $.ngo L ... inst$0cciones sec0enci.les ... EN( L P Leti,0et.M;
.$c=itect0$e 0.m o1 decode$ is -egin decod % p$ocess !.+ is -egin 1o$ i in * to ' loop i1 i 7 to_intege$!0nsigned!.++ t=en .!i+ 67 ;1;; else .!i+ 67 ;*;; Dentro del proceso end i1; no a,an!a el tiempoL por lo que end loop; el ?ucle se end p$ocess decod;

/jemplo1 Decodi@icador de ; a 9

paraleli!a

end .$c=itect0$e 0.m;

Instrucciones en procesos1 (ucle 2HIL/


Leti,0et.M )IILE condicion L ... inst$0cciones sec0enci.les ... EN( L P Leti,0et.M; P

.$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;

/jemplo1 (Psqueda en una ta?la

(ucles con neOt y eOit


: n !#DL se pueden crear bucles infinitos
Leti,0et.M L P ... inst$0cciones sec0enci.les ... EN( L P Leti,0et.M;

: Todos los bucles pueden tener una condicin de salida


e9it Leti,0et.M L5=en condicionM;

: Con la instruccin ne!t termina inmediatamente la iteracin actual y se pasa a la si0uiente


ne9t Leti,0et.M L5=en condicionM;

*rocesos1 Dos opciones de @uncionamiento


Las instrucciones se ejecutan 6asta que se llega al @inalL y entonces se suspende el proceso

p$ocess!lista de seales+ ... -egin ... instrucciones secuenciales ... end p$ocess;
/l proceso se dispara inmediatamente

/l proceso se dispara cuando cam?ia alguna de estas seGales

Las instrucciones se ejecutan 6asta que se llega al waitL y en ese punto se suspende el proceso

Al llegar al @inalL se empie!a otra ,e! por el principio

p$ocess ... -egin ... instrucciones secuenciales ... 5.it... ... instrucciones secuenciales ... end p$ocess;

Cuando se deja de cumplir la condicin de esperaL la ejecucin continPa

Distintas claPsulas wait


> La que m's usaremos en las pr'cticas para #acer bancos de pruebas: (uspender el proceso durante un tiempo: *j. 5.it 1o$ 1* ns; (uspender el proceso #asta que ocurra una condicin: *j. 5.it 0ntil $ising_edge!cl"+; 1inali2ar un proceso en el banco de pruebas: 5.it; > 3tras formas de utili2acin: > *sperar a que cambie al!una de las seales de una lista:
5.it on .# -# cl";

*qui"alente a emplear lista de sensibilidad

Asignacin de ,alores a seGales


: 6o ol@idar=== Las asignaciones a seGales dentro de procesos slo se ejecutan cuando se suspende el proceso : 6o es un do0ma de fe+ tiene su eBplicacin===
> Las seales modelan coneBiones f?sicas+ y por tanto+ no slo deben tener en cuenta el @alor+ sino tambi8n el tiempo > /ara que un cable cambie de @alor "ace falta que el tiempo a@ance > De la misma forma+ para que una seal cambie de @alor "ace falta que el tiempo a@ance > l tiempo slo a@anAa cuando se suspende el proceso

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

: La solucin son las @ariables


> Las @ariables se declaran dentro de los procesos > 'lo se @en dentro del proceso que las "a declarado > Toman el @alor inmediatamente+ son independientes del tiempo
p$ocess!.#-#c+ ... &.$i.-le & % std_logic; ... -egin ... & %7 . .nd - o$ c; ... end p$ocess;

'olucin con ,aria?les

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

' ]

'em"ntica de ,aria?les y seGales


'eGales 'intaOis destino VU fuente modelan nodos f?sicos del circuito 0lobal (comunicacin entre procesos) se actualiAan cuando a@anAa el tiempo (se suspende el proceso) Varia?les destino %U fuente representan almacenamiento local local (dentro del proceso) se actualiAan inmediatamente

Ftilidad

Visi?ilidad

Comportamiento

.C

Lenguaje de Descripcin Hardware VHDL


Introduccin La entidad y la arquitectura Tipos de datos Los procesos

VHDL

Circuitos combinacionales
Circuitos secuenciales Mquinas de estados Triestados Diseo jerrquico stilos de diseo !erificacin con testbenc"es

/uropean .raining Institute

Lenguaje de Descripcin Hardware VHDL

Fni,$ Autnoma de 0adrid

0odelar lgica com?inacional con procesos


.$c=itect0$e 0.m o1 m09 is -egin p$ocess!.#-#sel+ -egin i1 sel7;1; t=en / 67 .; else / 67 -; end i1; end p$ocess; end 0.m;

.odas las entradas de?en estar en la lista de sensi?ilidad

'e de?e asignar siempre #en todos los casos& a la salida un ,alor

$ & 'el

/l pro?lema de la memoria implcita


: C$1'$
> las seales en !#DL tienen un estado actual y un estado futuro

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

Fn pro?lema con la memoria implcita


: Disear un circuito de acuerdo a esta tabla de @erdad
p$ocess !.+ -egin c.se . is 5=en 8**8 7< $es 67 ;1;; 5=en 8*18 7< $es 67 ;1;; 5=en 81*8 7< $es 67 ;*;; end p$ocess;

A (( () )( ))

' ) ) ( don;t care

: '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"

5eglas para e,itar la memoria implcita


: /ara e@itar la 0eneracin de latc"es no deseados
> 'e deber terminar la instruccin IS===T# 6=== L' === con la clusula L' > specificar todas las alternati@as en un C$' + definiendo cada alternati@a indi@idualmente+ o mejor terminando la sentencia C$' con la clusula 9# 6 3T# 4'=== /or ejemplo+
3ASE decode IS )IEN 81**8 7< "e/ 67 1i$st; )IEN 8*1*8 7< "e/ 67 second; )IEN 8**18 7< "e/ 67 t=i$d; )IEN TIERS 7< "e/ 67 none; EN( 3ASE;

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

: #ay tres tipos


> $si0naciones simples s 67 !. .nd -+ ? c; > $si0naciones condicionales s 67 . 5=en c7;1; else -; > $si0naciones con seleccin 5it= .?- select s 67 d 5=en 8****8# e 5=en 81*1*8# ;*; 5=en ot=e$s;

Asignaciones concurrentes simples


: $ una seal se le asi0na un @alor que pro@iene de una eBpresin+ que puede ser tan compleja como queramos
s 67 !!. ? -+ O c+ .nd d;

sta eBpresin es completamente equi@alente a este proceso%


p$ocess!.#-#c#d+ -egin s 67 !!. ? -+ O c+ .nd d; end p$ocess;

: 'e pueden utiliAar todos los operadores que queramos+ tanto los predefinidos como los que importemos de las librer?as

Asignaciones concurrentes condicionales


: $ la seal se le asi0na @alores dependiendo de si se cumplen las condiciones que se @an e@aluando%
.$c=itect0$e 0.m o1 code$ is -egin s 67 81118 5=en .!'+7;1; else 811*8 5=en .!6+7;1; else 81*18 5=en .!P+7;1; else 81**8 5=en .!4+7;1; else 8*118 5=en .!:+7;1; else 8*1*8 5=en .!B+7;1; else 8**18 5=en .!1+7;1; else 8***8; end .$c=itect0$e 0.m;

: /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

Asignaciones concurrentes con seleccin


: 'e le asi0na un @alor a una seal dependiendo del @alor que tome una eBpresin%
.$c=itect0$e 0.m o1 decod is -egin 5it= . sel s 67 8*******18 5=en 8***8# 8******1*8 5=en 8**18# 8*****1**8 5=en 8*1*8# 8****1***8 5=en 8*118# 8***1****8 5=en 81**8# 8**1*****8 5=en 81*18# 8*1******8 5=en 811*8# 81*******8 5=en ot=e$s; end .$c=itect0$e 0.m;

: /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

Lenguaje de Descripcin Hardware VHDL


Introduccin La entidad y la arquitectura Tipos de datos Los procesos Circuitos combinacionales

VHDL

Circuitos secuenciales
Mquinas de estados Triestados Diseo jerrquico stilos de diseo !erificacin con testbenc"es

/l @undamento1 0odelo del @lipQ@lop D


proceso sensi?le al reloj

tam?i+n ,ale risingHedge#clC &

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

no 6ay elseL queremos in@erir memoria

FlipQ@lop con reset asncrono y clock enable


p$ocess !cl"#$st+ -egin i1 $st7;1; t=en , 67 ;*;; elsi1 cl";e&ent .nd cl"7;1; t=en i1 ce7;1; t=en , 67 d; end i1; end i1; end p$ocess;

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

/l aOioma del diseGo sncrono

CLR

El reloj es nico y est en todos los flip-flops del diseo


: Eo se pueden usar dos relojes en el sistema : .odas las seGales asncronas se de?en muestrear #pasar por un @lipQ@lop D& nada m"s entrar al sistema : Eo se de?en poner puertas en el relojL si se necesita des6a?ilitar la carga de un @lipQ@lop utili!ar la 6a?ilitacin de reloj

/jemplo1 Fn contador de 9 ?its


p$ocess!cl"#$st+ &.$i.-le ,_temp % 0nsigned!' do5nto *+; -egin i1 $st7;1; t=en ,_temp %7 !ot=e$s 7< ;*;+; elsi1 $ising_edge!cl"+ t=en i1 ce7;1; t=en i1 0p7;1; t=en ,_temp %7 ,_temp ? 1; else ,_temp %7 ,_temp E 1; end i1; end i1; end i1; , 67 std_logic_&ecto$!,_temp+; end p$ocess;

/jemplo1 Fn registro de despla!amiento


p$ocess!$st#cl"+
&.$i.-le ,_temp % std_logic_&ecto$!' do5nto *+;

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

0etodologa1 DiseGo circuitos secuenciales

Lgica Com?$

/stFuturo registro

/stado

0etodologa1 DiseGo circuitos secuenciales


0aquinas de estados1 F'0

1tiliAacin de subtipos%
Definicion de stados

Tres &loques Suncionales


L0ica combinacional% Decision de cambio de estado 4e0istros% Mantienen el estado= Lo0ica combinacional de definicin de salidas

.$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; ...

0etodologa1 DiseGo circuitos secuenciales


0aquinas de estados1 F'0
-egin com-% p$ocess !Est.do# in1# inB# in:+ -egin c.se Est.do is 5=en E* 7< o0t1 67 ;*;; o0tB 67 ;*;; EstA0t0$o 67 E1; 5=en E1 7< o0t1 67 ;1;; i1 in1 7 ;1; t=en EstA0t0$o 67 EB; else EstA0t0$o 67 E1; end i1; 5=en EB 7< ... 5=en E: 7< ... end c.se; end p$ocess com-;

1tiliAacin de subtipos%
Definicion de stados

Tres &loques Suncionales


L0ica combinacional% Decision de cambio de estado 4e0istros% Mantienen el estado= Lo0ica combinacional de definicin de salidas

0etodologa1 DiseGo circuitos secuenciales


0aquinas de estados1 F'0

1tiliAacin de subtipos%
Definicion de stados

Tres &loques Suncionales


L0ica combinacional% Decision de cambio de estado 4e0istros% Mantienen el estado= Lo0ica combinacional de definicin de salidas

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

Lenguaje de Descripcin Hardware VHDL


Introduccin La entidad y la arquitectura Tipos de datos Los procesos Circuitos combinacionales Circuitos secuenciales

VHDL

Mquinas de estados
Triestados Diseo jerrquico stilos de diseo !erificacin con testbenc"es

GC

F'01 0aquinas de 0oore


: : S'M M334 % 1na maquina de estados en la que las salidas cambian solo cuando cambia el estado Las posibles implementaciones son%
> $si0nacin arbitraria del @alor de los estados
: Las salidas se decodifican a partir de los estados )= Decodificacin combinacional= *= Decodificacin re0istrada=

>

$si0nacin espec?fica de los @alores de estado


: : Las salidas pueden ser codificadas directamente en los estados Codificacin oneH"ot

/uropean .raining Institute

Lenguaje de Descripcin Hardware VHDL

Fni,$ Autnoma de 0adrid

D(

Implementacin de una F'0 de 0oore #7&


: 'alidas decodificadas a partir del @alor de los estados=
)= Decodificacin Combinacional : Las salidas se decodifican a partir del estado actual : 'alidas U funcin(estadoTactual)

/ntradas

L0ica estado si0=

4e0istros de estado

L0ica de salida

'alidas

/uropean .raining Institute

Lenguaje de Descripcin Hardware VHDL

Fni,$ Autnoma de 0adrid

D)

Implementacin de una F'0 0oore #>&


: 'alidas decodificadas a partir del @alor de los estados=
)= Decodificacin con salidas re0istradas : La decodificacin de las salidas se realiAa en paralelo con la decodificacin del si0uiente estado= : 'alidas U funcin(estadoTanterior+ entradas)

/ntradas

L0ica estado si0=

4e0istros de estado

/stado actual

L0ica de salida

4e0istros de salida

'alidas

/uropean .raining Institute

Lenguaje de Descripcin Hardware VHDL

Fni,$ Autnoma de 0adrid

D*

Implementacin de una F'0 0oore #;&


: 'alidas codificadas en los bits de los estados
/stado s) s* s, 'alida 7 ( ) ( 'alida > ( ( ) Codi@$ /stados (( () )(

Eota% Los dos bits del estado son utiliAados como salida

/ntradas

L0ica estado si0=

4e0istros de estado

'alidas

/uropean .raining Institute

Lenguaje de Descripcin Hardware VHDL

Fni,$ Autnoma de 0adrid

D,

/jemplo1
:

enerador de Swait statesT

Dia0rama de stados%

/9$IT 4 ' T (async) IDL/ :: 4 ] 4 ] 5/.5U :7 .c"_o0t7;1;

/9$IT

ACR 7:

$et$/_o0t7;1;

/uropean .raining Institute

Lenguaje de Descripcin Hardware VHDL

Fni,$ Autnoma de 0adrid

D.

/jemplo1 Declaracin de la entidad


: La declaracin de la entidad es la misma para todas las implementaciones%

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.,;

/uropean .raining Institute

Lenguaje de Descripcin Hardware VHDL

Fni,$ Autnoma de 0adrid

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;

/uropean .raining Institute

Lenguaje de Descripcin Hardware VHDL

Fni,$ Autnoma de 0adrid

DG

/jemplo1 'olucin 7 #cont$&


)IEN $et$/ 7< IA p5.it7;1; TIEN 5.it_gen 67 .c"; ELSE 5.it_gen 67 $et$/; EN( IA; )IEN .c" 7< 5.it_gen 67 idle; )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$/+ ELSE ;*;; .c"_o0t 67 ;1; )IEN !5.it_gen 7 .c"+ ELSE ;*;; EN( .$c=moo$e1;

/uropean .raining Institute

Lenguaje de Descripcin Hardware VHDL

Fni,$ Autnoma de 0adrid

DD

/jemplo1 'olucion >


: 'alidas re0istradas decodificadas desde el @alor de los estados
AR3IITE3TURE .$c=moo$eB 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; $et$/_o0t 67 ;*;; .c"_o0t 67 ;*;; ELSIA cloc";E4ENT AN( cloc" 7 ;1; TIEN $et$/_o0t 67 ;*;; EE .sign.cion po$ de1ecto

/uropean .raining Institute

Lenguaje de Descripcin Hardware VHDL

Fni,$ Autnoma de 0adrid

D<

/jemplo1 'olucin > #cont$&


3ASE 5.it_gen IS )IEN idle 7< IA $e, 7 ;*; TIEN 5.it_gen 67 $et$/; $et$/_o0t 67 ;1;; .c"_o0t 67 ;*;; ELSE 5.it_gen 67 idle; .c"_o0t 67 ;*;; EN( IA; IA p5.it 7 ;1; TIEN 5.it_gen 67 .c"; .c"_o0t 67 ;1;; ELSE 5.it_gen 67 $et$/; $et$/_o0t 67 ;1;; .c"_o0t 67 ;*;; EN( IA; 5.it_gen 67 idle; .c"_o0t 67 ;*;; 5.it_gen 67 idle; .c"_o0t 67 ;*;; EE p.$. e&it.$ l.tc=

)IEN $et$/

7<

)IEN .c" )IEN

7<

TIERS 7<

EN( 3ASE; EN( IA; EN( PR 3ESS 1sm; EN( .$c=moo$eB;

/uropean .raining Institute

Lenguaje de Descripcin Hardware VHDL

Fni,$ Autnoma de 0adrid

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;

std_logic_&ecto$!1 std_logic_&ecto$!1 std_logic_&ecto$!1 std_logic_&ecto$!1

/uropean .raining Institute

Lenguaje de Descripcin Hardware VHDL

Fni,$ Autnoma de 0adrid

<(

/jemplo1 'olucin ; #cont$&


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; TIEN 5.it_gen 67 .c"; ELSE 5.it_gen 67 $et$/; EN( IA; )IEN .c" 7< 5.it_gen 67 idle; )IEN TIERS 7< 5.it_gen 67 idle; EN( 3ASE; EN( IA; EN( PR 3ESS 1sm; $et$/_o0t 67 5.it_gen!*+; .c"_o0t 67 5.it_gen!1+; EN( .$c=moo$e:; )IEN $et$/ 7< IA p5.it 7 ;1;

/uropean .raining Institute

Lenguaje de Descripcin Hardware VHDL

Fni,$ Autnoma de 0adrid

<)

F'01 Codi@icacin 4neQ6ot


: 1n estado por flipHflop
> n S/5$s
: reduce la l0ica de clculo de estado si0uiente : y por tanto+ menos profundidad de l0ica : permitiendo mquinas muy rpidas (W)((M#A)

>

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

/uropean .raining Institute

Lenguaje de Descripcin Hardware VHDL

Fni,$ Autnoma de 0adrid

<*

/jemplo1 'olucin 4neQ6ot


AR3IITE3TURE .$c=moo$e4 A m., IS

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;

/uropean .raining Institute

Lenguaje de Descripcin Hardware VHDL

Fni,$ Autnoma de 0adrid

<,

/jemplo1 'olucin 4neQ6ot #cont$&


)IEN $et$/ 7< IA p5.it 7 ;1; TIEN 5.it_gen 67 .c"; ELSE 5.it_gen 67 $et$/; EN( IA;

)IEN .c" )IEN

7<

5.it_gen 67 idle; 5.it_gen 67 idle;

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;

/uropean .raining Institute

Lenguaje de Descripcin Hardware VHDL

Fni,$ Autnoma de 0adrid

<.

5esumen F'0 0oore


: 'alidas decodificadas de los bits de estado
> Mayor fleBibilidad en el proceso de diseo > 1tiliAando tipos enumerados se permite que la asi0nacin de los estados se realice durante la compilacin=

: 'alidas codificadas en los bits de estado


> > > > $si0nacin manual del @alor de los estados La salida se obtiene directamente de los re0istros 'e reduce le nFmero de re0istros L0ica adicional ms compleja

: Codificacin 3neH#ot
> Lo0ica de si0uiente estado mas sencilla > Mejora la @elocidad > 6ecesita mas re0istros

/uropean .raining Institute

Lenguaje de Descripcin Hardware VHDL

Fni,$ Autnoma de 0adrid

<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

/uropean .raining Institute

Lenguaje de Descripcin Hardware VHDL

Fni,$ Autnoma de 0adrid

<G

/jemplo1 generador de Swait statesT


: Dia0rama de estados%
REH P)AIT N A3Q RETRY_ UT 2(N() 4 ' T (async) IDL/ (2N() 5/.5U

)2N(( 2)N)(

/uropean .raining Institute

Lenguaje de Descripcin Hardware VHDL

Fni,$ Autnoma de 0adrid

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

/uropean .raining Institute

Lenguaje de Descripcin Hardware VHDL

Fni,$ Autnoma de 0adrid

<<

Lenguaje de Descripcin Hardware VHDL


Introduccin La entidad y la arquitectura Tipos de datos Los procesos Circuitos combinacionales Circuitos secuenciales Mquinas de estados

VHDL

Triestados
Diseo jerrquico stilos de diseo !erificacin con testbenc"es

/uropean .raining Institute

Lenguaje de Descripcin Hardware VHDL

Fni,$ Autnoma de 0adrid

<C

Concepto de dri,er de una seGal


: : l dri@er es el elemento que da @alores a una seal /ara cada seal que se le asi0na un @alor dentro de un proceso se crea un dri@er para esa seal
> Independientemente de cuantas @eces se le asi0ne un @alor a la seal+ se crea un Fnico dri@er por proceso > Tanto para procesos eBpl?citos como impl?citos > Cuando "ay mFltiples dri@ers se usa la funcin de resolucin

PR 3ESS!in1+ BE2IN sen.l 67 in1; EN( PR 3ESS; sen.l 67 inB;

in7 senal in>

/uropean .raining Institute

Lenguaje de Descripcin Hardware VHDL

Fni,$ Autnoma de 0adrid

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

VWV senal D V:V

V:V

V:V

/uropean .raining Institute

Lenguaje de Descripcin Hardware VHDL

Fni,$ Autnoma de 0adrid

C)

/jemplos de in@erencia de ?u@@ers triestado


: Con asi0nacin condicional%
._o0t 67 . )IEN en.-le_.7;1; ELSE ;>;; -_o0t 67 - )IEN en.-le_-7;1; ELSE ;>;;

: Con un proceso%
PR 3ESS !en._.# .+ BE2IN IA !sel_. 7 ;*;+ TIEN t 67 .; ELSE t 67 ;>;; EN( PR 3ESS;

/uropean .raining Institute

Lenguaje de Descripcin Hardware VHDL

Fni,$ Autnoma de 0adrid

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

/uropean .raining Institute

Lenguaje de Descripcin Hardware VHDL

Fni,$ Autnoma de 0adrid

C,

/jemplo con seGales ?idireccionales

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;

/uropean .raining Institute

Lenguaje de Descripcin Hardware VHDL

Fni,$ Autnoma de 0adrid

Lenguaje de Descripcin Hardware VHDL


Introduccin La entidad y la arquitectura Tipos de datos Los procesos Circuitos combinacionales Circuitos secuenciales Mquinas de estados Triestados

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

top$,6d a$,6d a7$,6d

a>$,6d

?$,6d

c$,6d

Kr?ol de jerarquas
top$,6d

C40*4E/E./ 'F*/5I45 # .4* &

a$,6d

?$,6d

c$,6d

a7$,6d

a>$,6d

C40*4E/E./' IEF/5I45/'

: Cada componente de la jerarqu?a es un arc"i@o !#DL+ con%


> ntidad > $rquitectura

/jemplo de instanciacin de componentes


> ]ueremos disear esta entidad%
Top ENTITY Top IS P RT ! AT% IN std_logic; JT% UT std_logic; EN( Top;

$T

2T

/jemplo de instanciacin de componentes


> M la podemos implementar a partir de la coneBin en serie de los componentes miTcomp
Top

ENTITY Top IS P RT ! AT% IN std_logic; JT% UT std_logic+; EN( Top;

$T $ 2

2T

mi_comp

mi_comp

ENTITY mi_comp IS P RT ! A% IN std_logic; J% UT std_logic+; EN( mi_comp;

/jemplo de instanciacin de componentes


Top A$c=itect0$e test o1 Top IS 3omponent mi_comp P RT ! A% IN std_logic; J% UT std_logic+; Sign.l S % std_logic;

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

Lenguaje de Descripcin Hardware VHDL


Introduccin La entidad y la arquitectura Tipos de datos Los procesos Circuitos combinacionales Circuitos secuenciales Mquinas de estados Triestados Diseo jerrquico stilos de diseo

VHDL

!erificacin con testbenc"es

*asos de la simulacin
$rc"i@os !#DL

$nlisis librer?as de trabajo laboracin 'imulacin

(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

Como 6acer un ?anco de prue?as #I&


)= Instanciar el diseo que @amos a @erificar *= scribir un proceso (o procesos) para 0enerar los est?mulos+ obser@ar el resultado e informar al usuario

st?mulos 1suario $l0oritmos de pruebas

Mi diseo "ard7are

4esultados

&anco de pruebas

Como 6acer un ?anco de prue?as #II&


: : s un diseo jerrquico donde el banco de pruebas ocupa el primer ni@el l banco de pruebas es una 6TID$D sin puertos

st?mulos $l0oritmos 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)

Compro?ando las respuestas


: Las respuestas del circuito a probar se comprueban con la instruccin $'' 4T
ASSERT condicion REP RT st$ing SE4ERITY ni&el;

'i0nifica% K$se0urar que se cumple la condicinL


> 'i se cumple+ el proceso continFa ejecutndose > 'i 63 se cumple+ se informa al usuario K4eportL y se indica en ni@el de 0ra@edad del error

Los ni@eles de ' ! 4ITM son%


> 63T > 9$46I65 > 4434 (ni@el por defecto si no se incluye ' ! 4ITM) > S$IL14

Algoritmo ?"sico para los test?enc6es


: $l0oritmo elemental de @erificacin%
> > > > > Dar @alores a las seales de entrada a la 11T sperar con 9$IT S34 Comprobar los resultados con $'' 4T !ol@er a dar @alores a las seales de entrada a la 11T y repetir[

seGal XD ,alor

A''/5. #resultadoDesperado&

2AI. F45

/jemplo1 sumador #I&

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;

/jemplo1 sumador #II&


ENTITY s0m.do$_t- IS EN( s0m.do$_t-; ENTITY s0m.do$ IS P RT ! A% IN std_logic_&ecto$!' do5nto *+; B% IN std_logic_&ecto$!' do5nto *+; J% UT std_logic_&ecto$!' do5nto *+; EN( s0m.do$;

/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

/jemplo1 sumador #III&


ENTITY s0m.do$_t- IS EN( s0m.do$_t-; A$c=itect0$e test o1 s0m.do$_t- IS 3omponent P RT ! A% IN B% IN J% UT s0m.do$ std_logic_&ecto$!' do5nto *+; std_logic_&ecto$!' do5nto *+; std_logic_&ecto$!' do5nto *++;

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;

/jemplo1 sumador #IV&


-egin s0m.do$ P RT FAP !A7<cA# B7<cB# J7<cJ+ p$ocess -egin cA 67 9C*1C; cB 67 9C*1C; )AIT A R 1* ns; ASSERT cJ 7 9C*BC REP RT RA.ll.C SE4ERITY AAILURE; cA67 9CAAC; cB67 9C*1C; )AIT A R 1* ns; ASSERT cJ 7 9C**C REP RT RA.ll.C SE4ERITY AAILURE; )AIT; end p$ocess; end test;

/jemplo1 sumador #V&


: s mejor "acer una prueba sistemtica= /robamos todos los casos posibles%

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;

!amos a @er al0unos ejemplos

Lenguaje de Descripcin Hardware VHDL


Introduccin 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

También podría gustarte