Manual VHDL

355

description

Manual de VHDL, para programar sistemas digitales

Transcript of Manual VHDL

Page 1: Manual VHDL
Page 2: Manual VHDL
Page 3: Manual VHDL

L--:I

)-,

@E]-,

Para 33t!blec€r comuntcactóncon nololro3 pued€ hac€rlo Fof:

R.n&lñl.nro 180¡ cot. s.. Ju.n

(01 55) 5561 /Oü!.55ól 5231

lñto@pálrhc!|l!¿l,com.d

,w,prti.culluñl.cm.mr

Gerente divisional: Javier Eüique C¡ll€jasC@rdinarlo€.le ediciónr Elisa Pecina RosasDiseño de interiorcs: José Luis cuen€ro HemtudezDiseño de porr¿da: Perla Al€jmdra Lóf'ez Rono

Dr. Luis Niño de Rivera Oy@bdPrcfesor Invesügador d€ ESIME,Unid¿d Culhueá¡I¡stirulo Pof t¡ícnico Nacionat

NMSM. Filib¿rto corzález Hemínd€zPrcfe$r del Deplo. de InSenie.í¡ Induslriat y de SislemasITESM CEM

VHDL: el a ¿ de pñgrhMt sisa n6 dicitalesD@bos r€s€rados:O 2002, David Maxiñez y J€sica A¡calá@ 2002, GRTJPO PATRIA CIJTTTIRAL, S,A. DE C.V.bajo el sello de Compadla Edilorial ConrinenralRemcimiento 180, Colonia San Jum Tlihuaca,Delegrción Azc¿lolalco, Código postal 02400. México. D.F.

Miembrc de lá Cámüa Nacio¡al (le la I¡dusr.ia Editorial

ISBN 970-24-0259-X

Queda pmhibida la reproducción o tr¿¡r¡nisión total o pNial del conG-nido de la prese¡te obra en cualesquiera forDas, seqn electrónic¿s omecánicas. sin el consertiDiento previo y por escriro dél ediror.

P.inero edcló¡: 2002Tercera reimpresión: 2005Cuara rEinpresiónr 2006

Page 4: Manual VHDL

Contenido

Acerc¿ de los auroresPrólogo

1. E¡tado ¡ctuál d€ la lógi€a prograrrable .,...... I1.1 Disposttivos lógicos pro8talneues (PLD) | ,; , , , . . . . . . . , . . . . . . . . . . . . . 2t.2 Dispositivos lógictls programabl€s de alto ¡tvel de tnteg¡ación ..........131.1Ambiente de desalrrollo de la lógica prqramable . . . . . . . . . . . . . . . . . . . . 181,4 Campos de apl¡cació[ de la l fu ica programable . , . , , , . . . . , . . , , . . . , . , Z31.5 La lógica proS¡amable y los le¡güajes de descripción en ha¡dwarc (HDL) . 251.6 Compañlar de soporte en hattlware y software . . . . . . . . . . . . . . . . . . . . . . 28Ejc¡cic ios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

2. VHDL:.u org¡niración y arquitect¡¡ra . . . . . . . .372.1 Unidades bá¡icas de diseño . . . . . . . , . . . . . . . . . . . . . . . . . . . . . . . . . . ]?2.2 Ent idad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 382.1 Declaración de entidades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 402.4 Dseño de ent idades ut i l izando v€ctores . . . . . . . . . . . . . . . . , . . . . . . . . .422.5 Arquirecruras (archi t€cture) . . . . . . , . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46Ejercic ios . . , , . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56

3. Dis€ño lósico combinacional medi¿ote VHDL .. . . . . . . . . . . . . . . . . . . . . . 6l3.1 Ptog¡a¡nación de estructuras báóicas mediante decláraciones concuÍentes . ól3.2 Programación de estructuras bá.ica! mediante d.cla¡a.ion€s secuenciales . ó9Eje¡cíc ioc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89

Page 5: Manual VHDL

vi

5. l¡teeración de entidades en VHDL l23l23

t66180

5.1 Esquema básico de inresración de eniidades

ó. Diseóo de controladores digitales mediante cart6 ASM y VHDL

6.2 Esnucrura de una carta ASM

ó.4 Diseño de controladores nediante cartas ASM

ó. lEl d lcor i rmo de la miqu¡n. Je e. ' .do IASM) . . . . . . . . . . . . . . . . . . . . r54156

162ó.3 Cartas ASM en conparación con las má,ruinas de estado . . . . .

o5Dbenodec"f la ' {cMmedianreVHDL . . . . . . .Eje¡cic ios . . . . . . . . . . . .

?, Diseño jerárquico en VllDL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197T.l Metodologla de dlsef lo de estructuras jerárquicas . . . . . . . . . . . . . . . . 198?.2 Anilisis del probtem¡ y descomposición en bloques individuales de la

estructura global . . . . . . . . . . . . . . . . . . . . .2007.3 Diseño y programación de componentes o unidades del cncuito . . . 201?.4 Creación de un paquete de componentes . . . . . . . . . . . . . .2067.5 Diseño del programa de al to nivel (Top Level) . . . . . . . . . . 20??.6Creaciónde unaLibreríaenWarp . . . . . . . . . . . . . . . . . . . . . . 208Ejercic ios . . . . . . . . . . . . . . . . . . . . . .225

8. Sisternas embebidos en \¡HDL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2298.1 Sblemas enb€bidos . . . . . . . . . . . . . . . . . . .2298.2 Diseño de un microprocesador . . . . . . . . . . . . . . . . . . . . . . . . . . .2378.1 Diseño jerárquico . . . . . . . . . . . . . . . . . . . . .261Éjercic ios . . . . . . . . . . . . . . . . . . . . . . . . . . . .268

9. Redes neuronales artificiales y \¡HDL . 2739.1 ¿Qué es una red neuronal art i f ic ial l . . . . . . . .2759.2 Ap¡endi la je en las neuronas art i f ic ia les . . . . . . . . . . . . . . . . . . . . . 2799.1Aprendizaje por error mínimo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Z9l9.4 Redes asociat ivas . . . . . . . . . . . . . . .294Ejercic ios . . . . . . . . . . . . . . . . . . . . . . . . . . . .308

Page 6: Manual VHDL

Apádcc¡

A. Hcr¡amienre6 dc aoportc pa¡¡ la programación c¡ VHDL . . . . . . . . . . . . . . I I I

B. I¡¡tsláción dcl Softwa¡c ,Vsrp . , , . . . . . . . . . . . , . . . . . . . . . . . . . . . . . . . . . 331

C. Idcndlcadores, tipoe y et¡iburo! . . . . . . . . . , . . . . . . . . . . . . . . . . . . . . . . . . 333

D Hoja! t&ntcar dcl CPLD CY7Cl72i . . . , , , , , , ,343

E. Palaka: rcrrvada¡ cn VHDL . . . . . . . . . . . . , . . . . . . . . . . . . , . . . . . . . . . . 34?

E O¡r¡adorc¡ deffnidoc en \,HDL ccgún ru otdcn de precedencia . . . . . . . . . . j49

ftdi.¡ "n¡ltico

. : . . . . . . , . .

: . . . . . . . , . . . . . , , , ,351

Page 7: Manual VHDL

Acerca de los autores

David González Maxinez ¡ealízó sus estudios de licencianr¡a en la Universí-dad Nacional Autónc¡ma de México, en la carrera de Ingeniero MccánicoElectricista con especiaLidad en el área de comunicaciones y electrtinica. Pos-reriormcnte obtuvo el grado dc maestro en ingeniería con "especialidad enelect¡ónica" dentro de la división dc estudios de posgrado,.lc la Faculcad delngeniería de la UNAM. Dent¡o del Insrituto Técnológico y,.le EstudiosSuperiores de Monterrey (ITESM), Campus Estado de México, cursó elDiplomado en Habilidades Docentes y poste¡io¡mcnte realiz¿) el Diplomadoen Microclecrrónica en el ITESM, Campus Que¡étaro. Realizó sus estudiosde Doctorado en el área de mic¡oelectrónica dent¡o de la Universidad Au-tí)noma Metropoliiana en convenio con la Unjvcrsidad de TE){AS A&M enIos Estados Unidos, desar¡ollandc¡ como tema de tcsis doctoral: "El diseño deun microcontrolado¡ NEUROFUZZY", el cual fue considcrado de vanguar-dia en el ámbico de investigación nacional. Actualmente es profesor/investi-gador del Insriruto Gcnológico y de Estudios Superiores de Monrerrel',Campus Estado de Móxico, así como de la Universidad Nacional Autónomade México en el área cle sistemas digitales. Combina esta actividad con el de-sarrollo de prorotipos electrónicos aplicables a diversas áreas, mcdiante la in-tegración en dispositivos lógicos programables.

Jessica Alcalá Jara csrudió Ingenierla en Compuración en la UniversidarlNacional Autónoma de México y es experta en e1 área dc programación clesistemas digitales utilizando lenguajes de ako nivel. Dentro del ITESM, hapuhlicado el libro "Programación en VHDL". Acnralmente es profesora/ir-vestigado¡a de la Universidad Nacional Autónoma dc México, Campus Ara-gón, donde imparte las cáredras de organización de computadoras y micro-computadoras,

Los autores han participado juntos en congresos naci()nales e intemacio-nales en el área de lógica programabie, sistemas difusos y microelectlinícr.

Page 8: Manual VHDL

Prólogo

Hoy en día, en nuestro ambiente familiar o de trabajo nos encontramos ro-

deados de sistemas electrónicos muy soffsticados. Teléfonos celulares, compu'

tadoras personales, televiso¡es portátiles, equipos de sonido, dispositivos de

comunicacionesy estaciones de iuego interactivo, ent¡e otros;no son más que

alg.rnos ejempl.,s Jel desanollu re(nológiLo que ha c¿mb¡¿dr' ' nueot¡o esti lo

de vida haciéndolo cada vez más confortable. Todos estos sistemas tienen al-go en comúni su tamaño, de dimensiones tan pequeñas que ¡esulta increíblepensar que sean igual o más potentes que los sistemas mucho más gtandes

que existie¡on hace algunos años.Estos avances son posibles gracias al desarrollo de la microelectrónica, la

cual ha permitido la miniaturización de los componentes para obtener así

mayores beneficios de los chips (circuitos integrados) y para ampliar las po-

sibilidades de aplicación.La evolución en ei desa¡rollo de los ci¡cuitos integrados se ha venido per-

feccionando a t¡avés de los aios. Primero, se desanollaron los ci¡cuitos de ba-ja escala de integración. (SSI o Small Scale Integration), después los de

media¡ra escala de integración (MSI o Medium Scale lntegration), y posterio¡-

mente los de larga escala de integración (LSI o Largue Scale Integration), para

continuar con los de muy alta cscala de integración (VLSI o Very l-arge Sca'

le Integration) hasta llegar a los circuitos integmdos de propósito especí6co(ASIC).

Actualmente, la gente encargada del desa¡rollo de nueva tecnologlaperfecciona el diseño de los circuitos integ¡ados orientados a una aplica'

ción y/o solución especfffca: los ASIC, logrando dispositivos muy potentes y

ql¡e ocupan un mínimo de espacio. La optimización en el diseño de estos

chips tiene dos tendencias en su conceptualización

Page 9: Manual VHDL

xll

La p¡imera tendencia es la técnica de flrlcr¿sil'rr desrÁrl (Diseñ() total-menrc a la mcdida), la cual consisrc cn clesarrollar un circuito oa¡a una aoli-| ,Lrdn r .pc.r f icr nredirnte l¿ IntcArr , r , rn de rr : l ) . r .1¡ . r nnÍ r r ln. i " ror tn,ul¿br i . r. rón .c. ig, ren lu. pa- r raJi. rorralt, Jr Jr.cñ., ¡r.p"rrcr,rn de L,,bleao base, el crecimiento epitaxial, la difusi(in dc imFüfe:as, la implanración deiones, la oxidación, la focolitogralía, la meralización r 1a limoieza química.

Lr .cgunJa rcnJrncia ( j , el . lr , ,nu.le l ,^ A.lr. nr.,r.rene de una inn -\ aJ,,r.r propue,ra. quc -ueicrr la rr i lr-acrrjn Jc .ciJo, ¡ro¡rrm rl- le. pree"ra-blecidas e insc¡tadas dentro de un circlLir() i¡rtegrado. Con base en esta ideasurgió la familia de disposirivos lógícos programables (ltx pLD), cuvo niveldc J.n.¡dad de inregr¡Lr. in I r , r .n id, , cvolucr^n.rnJ, , r r r r r i . dcl r iempo.lnici ,r^n c.,n lo, PAL rAr rcalo. L,r¿rtn, pr.,gramal-1e.1 hu.rr l leg¿r al u"ode1,. CPLD t Dr.po,ir ivo. L,tgrco. lrogramrhle, r ' . ,m¡1. ro.r I l ,^ FpCA tarre-glos de Compue¡ras Programables en Campo), ios cuales dada su conectivi.dad interna sobre cada una de sus celdas han hecho posible ei desarrolhr decircuiros integrados de aplicación especílicd de una f()rma mucbo más fácil v.conomicr. p¿ra l-enefi. i , ' Je 1,,. Ingenirrr5 cnc .rt. lJo. Jr rnrect ar \ l5remaj.

t l conrenid, , Je. . re l rb¡ . \c enrJenrrH,t ie i r r ¡ .1, l r¿. i r e.re npñ dediseño. Nuestro objetivo es brinda¡ al lcctor la oportunidad de comprender,manei.u r apl i .ar . l len¡uaje de pr,,grdma. irn m", Idcro.. fara ;, le l ipode aplicacurnes: VHDL.

El lenguaje de descripción en ha¡dware VHDL es corxide¡ado como lamáxima hcrramienta de diseño po¡ las indust¡ias y universidades de todo elmundo, pues proporciona a los usuarios muchas ventajas en la planeación ydiseño de los sistemas electrónicos digitales.

Esta obra ha sido preparada espccialmentc para aquell()s estudiauces e in_genieros quc desean introducirse en el manejo de esre lenguaje de programa,ción. El libro se encuentra redactado de una mane¡a muy cla¡a y accesiblepara guia¡ al lcctor paso por paso en los primeros cuatro capftulos. para aque_xas personas que ya tetrgan conoci¡nientos sobre el tema, hemos incomoradouna.ene Je l¡bru, rcc, ,mcnd¡do, .un mavor pr,,funJidad v comple¡,dr,J.

Uno de hrs objetivos del libro es proporcionar al estudiante v al insenie¡oclectrcinrcn , ' dc cúmfrrra, i ,rr rrn, furma f ici l 1 prá. t i \ a Je inLegr. l áDiracto-n.. drgrral<. u¡rh-¡ndo el lenguaj< de descrip.rón.n h¿rdware VHDL. lam.bién esperamos motivar al lector para que comience el desarrollo e incepraciónJe ' t temar electrcjnr..r. i I ravé- este lenguaie. . , ,n I¡ vi, icjn v up,rrunrt l¿J dec¡ecer como microemprcsario en el desarrollo dc sistemas miniarurizados. loscuales pueden ser fácilmente comerciali:ados, y generar así fuenres de empleoen bcneÉcio de la sociedad.

Este libro es recomendable para un curso int(rducrorio de VHDL. ranto anivel técnico como a nivel universitario dado que para interprerar y entenderlo' clercici,

" "obre | ' " que .e rcahzr nucirra rxphcrc rún

"ci lo .e requiere como

antecedente un curso básico de diseño lógico que involucre el conocimientos

Page 10: Manual VHDL

xlll

de los temas de compuertas lógicas, minimi:acíón de funciones bcxrleanas, ci¡-cuitos combinacionales y ci¡cuitos secuenciales.

Para nosotros es importante que los conocimientos que se adquieran enla lectura de este lib¡o puedan ser trasladatlos de manera inmediata hacia lapráctica o aplícación. Po¡ ello, hemos incluido alguDos datos de orientaciónpara que el leclor sepa cómo conseguir las herramienras d€ diseño y dóndeconseguft de manera oportuna los circuitos PLD para integrar sus aplicacio,nes (véase el Apéndice A). Támbién hemos incluido demostraciones del pro-grama VARP en el CD que acompaña al libro.

Organización del libro

En resumen, esta obra está estructurada en nueve capítulos y cinco apénd;ces. En el capítulo uno se describe de forma cualitativa el estado actual dela lógica programable: sus antecedentes, venlajas, desventajas y perspectivas,además proporciona la int'b¡mación ¡efe¡en¡e a las compañlas que brindan elsoporte tanto en softwa¡e como hardware. Este capítulo cs completamenteinformativo y su finalidad consiste en familia¡iza¡ y adentrar al lector en es,ta á¡ea de desa¡rollo.

En el capltulo dos (VHDL: sa organi¡dción J arquitecturd) se presenta laest¡uctura básica del lenguaje de descripción en hardware VHDL y se anaií-zan los módulos básicos de diseño: sus palab¡as ¡ese¡vadas, los tipos dedatos, así como el manejo de las diferentes arquitecturas o estilos de diseñoempleados en el desanollo de un programa.

En el capltulo tres (Diseño lógico combi¡ut':ional mediante VHDL) se ctes-cribe la forma de emplcar declaraciones concurrentes y secuenciales denüode un prognma mediantc la solución de ci¡cuircs combinacionales indivi-duales tales como los multiplexores, los decodificado¡es, Lrs corlificadores ysumadores, entre otros. Es ímportante resaltar qüe en este capítulo y en lossubsecuentes no se presenta la solucii;n írptima pa¡a un p¡oblema dado. R)rel contrario, cada p¡oblema se abo¡da dc diferent€ manera con el único finde presentar al lector el uso cada vez mayor de noevas palabras reservadaspor VHDL en el entendido r¡ue la mejor vrlución de un problema se da porsí solo y llega cuando el lector conoce más y más formas de programar.

En el capítulo cuatro (Disei¡a lógico sec¡uncíalcnn ttlDl) se realiza unasíntesis cle diseño de los principales ci¡cuitos secuencialcs: llip,flop, ¡egistros deco¡rimiento, contadores, manejo de diagtamas de estado etcéte¡a. Jbdos ellosse analizan por sepa¡ado haciendo énfasis cn las instrucciones encargadas desincronizar los eventos que se desanollan en estas entidades de diseño.

El capítulo cinco (Integracir5n de entidwJes en VHDL) dcralla la fo¡ma enque se unen diferentes bkques lógicos, es deci! se describe cómo se integrandentro de una soia cntidad varios circuitos, sean combinacionalcs y/o se-

Page 11: Manual VHDL

xtv

cuenciales, manejados en su programación de mancra indívidual o a travésexclusivamente de la relación entrada/salida.

En elcapítulo seis (DÁeño de controladota digitales metliante cartas ASM[Algoritmo de la máquina de estado] y l&/Dl) se describe la programación dealgoritmos digitales (conrroladores), mostrando al lector la forma de cómo brin-dar soluciones a un problema dado a través del desanollo y conceptualizaciónde un algoritmo, cuya descripción se realiza a rravés de la carta ASM. En estecapítulo el lector echa mano de todos los conocimien()s ad,ruiridos en los caDi¡¡16. prcüo', .orprendrendo,e Je fa rac¡l id¿d con la, u, l .c progum¿n . i ,rema.digitales complejos.

En el capítulo siere (Drseiiojenírqulco en VHDL) se presenta Ia forma dejerarqui?ar o dividir un problema en pequeños subsistemas que pueden ana-lizarse y simularse de mane¡a independienrc para posrer¡ormenre entrenzar-los mediante un p¡ograma de alto nivel denominado Top Level. Esta fo¡made prog¡amación es muy utilizada en VHDL ya que pe¡mite crear nuevas li-brerías de trabajo, que el diseñador puede almacenar pa¡a posterioÍnenre in-clui¡ en nuevos desarrollos.

En el capítulo ocho (Sisremas emóeóidos en VHDL) se incluye la par-te teórica de los sistemas embebidos así como su ciclo ,.le desa¡rollo medianteel diseño de un mic¡op¡ocesador, describiendo en detalle cada uno de sus mó-dulos y la forma de programarlos mediante el diseño jerárquico o Top Level.

En el capítulo nueve dejamos el contexto de programación básica y abor-damos la investigación realizada sobre la progamación en VHDL de las ¡e-des neuronales artificiales. Esto tiene por objetivo binda¡ al lector una b¡eveintroducción a un nuevo campo de desarrollo e investigación, debido a que ac-tualmente es posible desarrollar sistemas intcligentes a nivelde hardware e in-tegrarlos en un circui[o integrado, ya sea un CPLD o un FPGA.

Finalmenre, hrs apéndices del libro se encuentra¡r esrructurados de lasiguiente maneia: en el apéndice A (HerramleDtas de soporte para la progn,mación en VHDL) se describe el uso del software VarpR4 de Cyp¡ess Se-miconductor, utilizado en la símulación de todos los ejercicios y p¡obiemasde este libro, además sc incluyen los datos del distribuido¡ del software y delos circuitos integrados. El apéndice B contiene la info¡mación sobre cómoinstala¡ el software cn las diGrentes plataformas tccnológicas. El apéndice Cproporciona l(x principales identificadores, tipos y ar¡iburos que se manejanen VHDL, así como la sintaxis utilizada en cada declaración. En el apéndi-ce D piesentamos los daros técnicos del ci¡cuito CPLD CYI?21 ó6JC de Cy-press Semiconductor, en el cual fueron grabados los diseños presentados eneste lib¡o. En el apén:lice E incluye una lista de palabras reservadas porVHDL con el lin de que el lector pueda identificarlas fácilmente y, por últi-mo, en el apéndice F se incluye una lisra de operadores definidos en VHDLsegún su orden de precedencia.

Page 12: Manual VHDL

Reconocimientos

Quisiéramos agradecerle a todos nuest¡os estudiantes tanto del InstitutoTecnológico y de Estudios Supe¡io¡es de Monterrey, Campus Estado de Mé-xico, como de la Universidad Nacional Autónoma de México, Campus Ara-gón, por su valiosa colaLm¡ación en la simulación e implementación de to,dos y cada uno de los ejercicios y problemas encontrados en este libro. Enespecial a Alejandra Abad Rodríguez, por su incomparable ayuda en esaetapa. De igual manera, deseamos agradecetle al Dr. Luis Niño de Rivera porsus comentaiios y sugerencias como revisor técnico, al M. en C. Jorge Ramlrez landa, profesor del ITESM-CEM, y a la lng. Ivette C¡uz Felipe de laUNAM por su valiosa pa¡ticipación académica en el desarrollo de este libro.Finalmente, un agradecimiento a nuestra editora, Elisa Pecina, y a todo suequipo de trabajo siemp¡e incansables en su afán de obtener los mejores re-sultados y a quienes debemos la calidad de este trabajo.

Daei¿ G. Mru.inealessia Abdló Jan

Page 13: Manual VHDL

Capítulo 1

Estado actual de lalógica programable

Introducción

En la actualidad el nivel de integración alcanzado con el desa¡¡ollo de lamic¡oelect¡ónica ha hecho posible desarrollar sistemas completos dentro deun solo circuito integrado SOC (Syst¡rn On Chip), con lo cual se han mejo-rado de manera notoria ca¡acterísticas como velocidad, confiabilidad, consu-mo de potencia y sobre todo el área de diseño. Esta última característica nosha permitido observar dla a dla cómo los sistemas de uso industrial, milita¡ yde consumo han minimizado el tamaño de sus desarrollos; por ejemplo, lostelélonos celulares, computadoras personales, calculadoras de boisillo, agen-das electrónicas, relojes digitales, sistemas de audio, sistemas de telecomuni-caciones, etc., no son más que aplicaciones tlpicas que muestran la evoluciónde los circuitos integrados también conocidos como chips.

El proceso de miniaturización de los sisternas elect¡ónicos comenzó conla inte¡conexión de elementos discretos como resistencias, capacitores, resis-tores, bobinas, etc., todos colocados en un chasis reducido y una escasaseparación entre ellos. Poste¡iormente se diseñaron y construyeron los pri-meros circuitos impresos -aún vigentes-, que relacionan e interconectanlos elementos mencionados a través de cintas delgadas de cobre adheridas aun soporte aislante (por lo general baquelita) que permite el montaje de es-tos elementos I ll.

Más tarde, el desarrollo del transistor de difusión planar, construido du-rante 1947 y 1948, permitió en 1960 ia fabricación del primer circuito inte-grado monolítico. Éste integra cientos de transistores, resistencias, diodos ycapacitores, todos fabricados sobre una pastilla de silicio. Como es del cono,cimiento general, el té¡mino monolítico se deriva de las raíces griegas

Page 14: Manual VHDL

VHDL: El artc de p.o$ama¡ sistemd .lLgitalcs

"mono" y "lithos" que significan uno y piedta, respectivamente; por tanto,dentro de la tecnología de los ci¡cuitos integrados un circuito monolltico es-tá construido sobre una piedra única o c¡istal de silicio que contiene tantoelementos activos (transistores, diodos), como elementos pasivos (resisten-cias, capacitores), y las conexiones entre ellos [1].

La fab¡icación de los circuitos rnonolíticos se basa en los principios demateriales, procesos y diseño que constituyen la tecnología altamente desa-rrollada de los t¡ansistores y diodos individuales. Dicha fabricación incluye laprepatación de la oblea o base, el ctecimiento epitaxial, la difusión de impu-rezas, la implantación de iones, la oxidación, la fotolitogaffa, la meralizacióny la limpieza qulmica [1].

La inte$ación de sistemas se ha ido superando a medida que surgen nue-vas tecnologlas de fabricación. Esco ha permirido obtener componentesestándares de mayor complejidad y que brindan mayores benelicios. Sin em-bargo, el desanollo de nuevos productos requiere bastante tiempo, por locual sólo se emplea cuando se necesita un alto volumen de producción.

Una forma más rápida y directa de integrar aplicacion€s es medianre lalógica programable, la cual permite independizar el proceso de fabricacióndel proceso de diseño fuera de la fáb¡ica de semiconductores. Esta idea fuedesanollada por Hon y Sequin [2] y Conway y Mead [3] a finales de los años

L,os dispositivos lógicos programables (o PLD, por sus siglas en inglés) favore-cen la integración de aplicaciones y desarrollos lógicos mediante el empaque-tamiento de soluciones e¡ un circuito integrado. El resultado es la reducciónde espacio físico dentro de la aplicación; es decir, se trata de dispositivos fa,bricados y revisados que se pueden personalizar desde el exterior mediantediversas técnicas de programación. El diseño se basa en bibliotecas y mecanis-mos especílicos de mapeado de funciones, mientras que su implementacióntan sólo requie¡e una fase de p¡og¡amación del dispositivo que el diseñado¡suele ¡ealizar en unos segundos [4].

En la actualidad, el diseño de ASIC (circuitos integrados desarrolladospara aplicaciones especíácas) domina las tendencias en el desarrollo de apli-caciones a nivel de microelectrónica. Este diseño p¡esenta varias opciones dedesarrollo, como se observa en la tabla 1.1. A nivelde ASIC los desa¡¡ollosfull y semi custom oÍrecen gra¡des ventajas en sistemas que emplean circuitosdiseñados para una aplicación en parricular. Sin embargo, su diseño ahorasólo es adecuado en aplicaciones que requieren un alto volumen de produc.ción; por ejemplo, sistemas de telefonla celular, computadoras portátiles, cá-maras de video, etcéte¡a.

Page 15: Manual VHDL

Estado aciüal de la lócrca prosnmable J

Los FPGA (areglos de compuertas programables en campo) y CPLD(dispositivos lógicos programables complejos) ofrecen las mismas ventajas deun ASIC, sólo que a un menor costo; es decir, el costo po¡ desarrolla¡ unASIC es mucho más alto que el que precisaría un FPGA o un CPLD, con laventaja de que ambos son circuitos ¡ep¡ogramables, en los cuales es posiblemodilicar o borrar una función programada sin alterar el funcionamiento delcircuito [4].

Categoría Ca¡ac teristicas

Diseño totalmenre a la . Iotal libertad de diseño, pc.o el desa¡¡ollo requiere tod¡s l¿se¡apas del proce$ de f¡bricación: preliaraciónde la oble¡o b¡-se, üecimiento epitaxial, dilusión de impureras, implántaci{inde iones, oxidación, foroli¡os.afÍa, metali¿ación y linpieza qui'mica t1l .

los riessos y costos son muy elevados; sólo se ju$incan ante

$andes volúhenes o p.orecros co¡ resdcciones (área, vel€i-dad, cosunó de poten.ia, ctcéreG) t41.

Existe ana est¡uctüra resular de disposirivos básicos (ft¿tuúro-res) prefabric¿d¡ quc se puede peso¡alizar mediante u¡ cone,xiomdo específico que sólo necesira las úlrimas etapd del p¡de-

El diseño está limitádo a l¡s p$ibilidades de la est.úcrura p¡eia-bdcada y se ¡ealizá con basc en una bibiioreca de celdas preca-racre¡üádd pae cada familia de di¡posirivos [4] .

Celdas esrándares p.e. No se t¿baja con alcuna esFucr!¡a fija lrefab¡icad¿ en parricu,lar, pero sl.on biblnfccas de celdas y módulos preca¡actertádosy eslecíicos pata cada recnoloeía.

Li¡ertad de dceño (en tuncióD de Ia¡ lacilidades de la bibliote.ca); rielo el desdóllo €xiee un p.oceso de fablicación compleio14I.

{CPLD, TPGA) .Se r¡ara de dispcitivos fabncados y revisados qle se pueden pe¿snalizar desde el exteno. median¡e diveNas récnicas de proer¡-

El diseño se basa eñ bibliorecas y mccanismos es¡ecíncos de ma.

leado de fL¡ncimes, mie¡t6 qu€ su implenen¡ación ran sólo re.quiere una fase de p¡og¡áhaci:n del disposi¡ivo, que por lo sene.¡al realEa el disñ¿dot e¡ unos pocos segu¡dosl4l.

Tabla 1.r Gcnoloeías de t¡b¡icación de ciicuitos inreeradG

Page 16: Manual VHDL

4 VHDL: El arrc de pn)sr¡mü sistem¡s dlgir¡lcs

En la actualidad existe una gran variedad de disposirivos ligicos progra-mables, los cuales se usan pa¡a reemplazar circuitos SSI (pequeira escala deintegración), MSI (mediana escaia de inregración) e incluso ci¡cuittx VI_SI(muy alta escala de integración), ya quc ahorran espacio y redlrcen dc mane,¡a signilicativa eL número y el costo de los diseños. Estos dispositivos. llama-Ju. PLD t t ¡b la 1.2), .c ¡ l ¡ . ¡ ¡ ¡qrn Oor,u arqul .crura l ¡ l , rm¡ funcron¿l cnque se encúent¡an ordenados los elementos inte¡nos .tuc proDorcionan aldispositivo sus caracterísricas.

Dispositivo Descúpción

Programnrable Read-Only MemLrry: memoria prograñablede stllo lcctura

Programmablc Logic Array: árreglo lógico prog¡ámable

Pmgramnable Anay Lrgic: lógica de aneglcx programables

Cenerc L'gr. Ajrar: ¡rreAl,, l .Jgrco lrneriro

Complex PLD: dispositivo lógico programable comple¡)

Field Program Gate Array: arreglos de lompuerras pro-grambles en campo

Tabla 1.2 Disposirivos lós,cos ¡rograma[les.

PAL

GAL

CPLD

FPGA

1 l.l Estructura intema de un PLD

Los dispositivos PROM, PLA, PAL y GAL están formados por arreglos o ma-trices que pueden ser fijos o programablcs, mienrras que los CPLD y FPGAse encuent¡an estructurados mediante bloques lógicos configurables y ceidaslógicas de alta densidad, respectivamente.

La arquirecrum básica de un PLD está formada por un arreglo de com-puerras AND y OR conectadas a las ent¡adas y salidas del dispositivo. La 6,nalidad de cada una de ellas se describe a continuaci¡)n.

a) Arreglo AND. Está formado por va¡ias compuertas AND inte¡conecta-das a través de alamb¡€s, Ios cuales cuenrán con un fusible en cada pun-to de inte¡sección [Fig. l.1a)]. En esencia, la programación del arreglo

Page 17: Manual VHDL

Btado acroal de la lócica programable

consiste en fundir o apagar los fusibles para eliminar las variables que noserán utilizadas [Fig. 1.1b)]. Obséwese cómo en cada entrada a las com,puertas AND queda intacto el fusible que conecta la variable selecciona-da con Ia ent¡adá a la compuerta. En este caso, una ve? que los fusibles

'e funden n, ' tueden r., lu.r a programar.e.

x2 =¡B

X3=AB

reFiguñ 1.1 Aúeslos AND: a) nop¡ocmmadoyb) proe¡am¡do.

Page 18: Manual VHDL

6 VHDL El üé d€ progrmd si¡reM disirstes

ü) Atreglo OR, Está formado por un conjunro de compuertas OR conecta-das a un areglo programable, el cual contiene un fusible en cada ountode inrers€cción. Bte tipo de aneglo es similar al de compuertas ÑD ex.plicado en el punto anterior, ya que de igual manera se programa fundien-do los fusibles para elirninar las variable¡ no utilizadas. En la ffeu¡a 1.2 seobserva el arreglo OR prograrnado y sin programar.

B

Its¡E 1.2 EstruüuE básica de PLD.

De acuerdo con Io anterio¡ observemos en la tabla 1.3 la estructura delos dispositivos lógicos programables básicos.

Page 19: Manual VHDL

B¡¡do actual de la lócica proeramable

Dispositivo Esquema básico

La nenoria p¡ógramble de r¡lolectura (PROM) esrá fómadapo¡ un ¡neglo no ptugratuble decompuert¡s AND conecta¡láscomo decodincador y un areElo

El aneelo lóc1co prog¡amable(PLA.) es un PLD fotudo po¡un areglo AND y ün áregloOR, ambos proemhables.

El ¡reelo lóeio pror¡rañ¿ble(PAi-) se encuenÍ¡ fomadopor lG ¡rceLc AND ptugrmblev OR lijo on lósrú de slida.

EntÉdá 2

Salida2

Salida rSalida2

Táblá 1.3 D¡posi¡ivos lógicos prosamables.

La PROM no se utiliza como un dispositivo lógico, sino como una memo-ria direccionable, debido a las limitaciones que presenta con las compuer-tas AND ffjas.En esencia, el PLA se desarrolló para superar las limitaciones de la me-moria PROM. Este dispositivo se llama también FPLA (arreglo lógicoprogramable en campo), ya que es el usuario y no el fabricante quien lopfograma.El PAL se desa¡rolló pa¡a superar algunas limitaciones del PLA, comoietardos provocados por la implementación de fusibles adicionales, queresultan de la utilización de dos arreglos programables y de la compleji-dad del ci¡cuito. Un ejemplo tfpico de estos dispositivos es la familiaPAL16R8, la cual fue desarrollada por la compañía AMD (Advanced Mi-cro Devices) e incluye los dispositivos PAL16R4, PAL16R6, PAL16L8,PAL16R8, dispositivos programables por el usuario para reemplazarci¡cuitos combinacionales y secuenciales SSI y MSI en un circuito.

En la figura 1.3 se muestra la arquitectura interna del PAL16L8. Co¡nose puede obse¡var, esta arquitectura está formada básicamente por circuitoscombinacionales (compuertas AND, OR, buffers tri-estado e inversores), loscuales permiten la realización de funciones lógicas booleanas de la forma su-ma de productos (SOP). Cada término producto especílico se p¡ograma enel arreglo AND, mientras que en el arreglo OR se realiza la suma lógica delos términos que se envia¡án a las salidas del dispositivo.

I

Page 20: Manual VHDL

VHDL: El¡re de progr¡M¡ súrcmas digirales

@ u""

Figüa 1.3 Arqüitcctu¡a úrtemá dcL PALIóLE.

Page 21: Manual VHDL

Btado actuaL de La lógica prosraDable

1.1.2 Ameglo Lógico Genérico (GAL)

El arreglo lógico genérico (GAL) es similar al PAL, ya que se forma con ane-glos AND progamable y OR ffjo, con una salida lógica programable. Las dosprincipales diGrencias entre los dispnsitivos GAL y PAL radican en que elp meto es ¡ep¡ogramable y contiene conffguraciones de salida programables.Los dispositivos GAL se pueden progama¡ una y otra vez, ya que usan latecnolocla E2 CMOS (Ellectrically Erasable CMOS: CMOS bonable eléctri-camehte), en lugar de tecnologla bipolar y fusibles (Fig. 1.4).

Entrada 1 .---\

Edrada 2 c+

Enlrada n r__3

-- \ Salida 1

E=t Saljda 2

+ Salida n

Fisün l.a Diácnna de bl.oques del aúeclo GAL.

Programación de un a¡reglo GAL

A dife¡encia de un PAL, el GAL está formado por celdas programables, lascuales se pueden reprogramar las veces que sea necesario. Como se observaen Ia ñgura 1.5, cada ffla se conecta a una entrada de la compuerta AND ycada columna a una variable de entrada y sus complementos. Cuando seprograma una celda, ésta se activa mediante la aplicación de cualquier com-binación de las va¡iables de ent¡ada o sus complementos a la compuertaAND. Esto permite la lmplementación de cualquier funció¡ (producto detérminos) reouerida.

Page 22: Manual VHDL

10 VHDL: El¡rre de prcgrama¡ sbtem,s digu¡les

figun 1.5 Pros¡ahación del disposirilo cAL.

Arquitectura de un dispositivo GAL

Con el lin de esquematizar una arquitectura GAL, se toma como ejempio eldispositivo GAL22Vl0 [Fig. 1.6a)]. Este circuito cuenta con 22 líneás de en-trada y sus complementos, lo que da un ¡otal ,:le 44 líneas de ent¡ada a cadacompuerta AND (estas entradas se encuenrran ¡epresentadas por las líneasverricales €n eldiagrama). La intersección que forman las líneas de entradacon los rérminos producto (líneas horizontales), represenra cada una delas celdas que se pueden programar para conecrar una variable de ent¡ada(r su complemento) a una línea de té¡mino producto lFig. 1.6b)1, donde esposible apreciar la forma de obtene¡ ia suma de productos.

Page 23: Manual VHDL

Estado acrualde la kígica prosr¡mble l l

I

1C

11

Fieü¡a 1,6a Arquitectura dcl GAL2IVl0.

Page 24: Manual VHDL

t2 VHDL: El a¡re de prosamar sistehs dicit¡les

rspfessnian las lin€ases d€ las puertas AND

l=Áec*Áac+ac*eÉ

Fisun l.6b Realikción de una suna de producto dento de un GAL.

Mactoceldas lfuicas de salida. Una macrocelda lógica de salida (u OLMC,de output logic macrocell) está fotmada por ci¡cuitos lógicos que se puedenp¡ogramar co¡rro lfuica combinacional o secuencial [5]. Las configuracio,nes combinacionales se implementan por medio de programación, mientrasque en las secuenciales la salida ¡esulta de un flip-flop. En la figura 1.? se ob-serva la arquitectura de una macrocelda del dispositivo GAL22V10, la cualde maneta gengral está fo¡mada po¡ un flip.flop y dos multiplexores.

neüra 1.7 A.quirecrur¡ de una nadocetda OLMC 22VtO.

Puede haber de ocho a dieciséis entradas de las compuertas AND en lacompuerta OR. Esto indica las operaciones producto que pueden efectuarseen cada macrocelda. El área sombreada está formada por dos multiplexores y

Page 25: Manual VHDL

Esbdo actual.le la lósica pios¡amable TJ

un l'lip-flop; el multiplcxor 1 de 4 conecta rna de sus cuatro líneas de ent¡a-da al buffe¡ t¡iestado de salida, en función de las líneas de selección S0 y 51.Por otro lado, el multiplexor de I de 2 conecta por medio del buffer la salidadel flip-flop o la salida del buffer triestado al arreglo ANL); esto se determi-na por medio de 51. Cada una de las líneas de selección se programa medianteun grupo de celdas especiales que se encuentran en el arreglo AND.

1.2 Dispositivos lógicos programables de alto nivel de integración

L¡s PLD de alto nivel de integración se crearon con el objeto de integrar ma,yor cantidad de dispositivos en ün circuito Gistema en un chip SOC). Secaracterizan por la reducción de espacio y costo, además de ofrecer una me-jora sustancial en el diseño de sistemas complejos, ,.1ado que incrementan lavelocidad y las frecuencias de operación. Además, bríndan a los diseñadoresla oportunidad de enviar productos al me¡cado con más rapidez y les permi-ten realizar cambios en el diseño sin afectar la lógica, agregando periléricosde ent¡acla/salida sin consumir una gran cantidad de ricmpo, dado que los

' circuitos son reprogramables en el campo de trabajo.

1.2.1 Dispositivos lógicos programables complejos (CPLD)

Un circuiro CPLD consiste en un arreglo de múltiples PLD agrupados corncrbloques en un chip. En algunas ocasiones esros dispositivos también se cono-cen como EPLD (Enhanced PLD: PLD mejo¡ado), Super PAL, Mega PAL,

[6] etc. Se califican como de alto nivel rle integración, ya que tienen unagran capacidad equivalente a unos 50 PLD sencillos.

En su estrucru¡a básica, cada CPLD contiene múltiples bloques lógicos(similares al GAL22VI0) conectados por medio de señales canalizadas des-de la inte¡conerión programable (PI). Esta unidad PI se encarga de inter-conecta¡ los bloques lógicos y los bloques de ent¡ada/salida del dispositivcrsobre las redes apropiadas (Flg. 1.8).

Page 26: Manual VHDL

t4 VHDL: El¡¡re dc ¡msranrd¡ sircrnN Jigitrlcs

Figura i.8 Arqui¡ecrLú¡ b¡¡i.¡ Je un (IPLD.

Los bloques ltigicos, tarrbión conocidos cr¡rmr celdas generadoras de fun-cioncs, están fon¡ados for un arreglo de productos de términos que ¡nfle-mcnta los lroducnrs efccturdos cn las conrpucrtas At,\D, un s5q¡sm¿ ¿.distribución de términos.lue pcrmite cr.ear las sum¡s dc los prr uctos pro-venientcs del arreglo AND y ¡or macroceldas similarcs a las incorporarlas enta GAI-22V10 (Fig. i.9). En ocesurncs ias celdas dc entrada/salid¿r se consi-deran parte Llcl bloclue Ligico, aunqLre la ma1,oría de Lx fabricantes cr¡jncidecn que son cxternas. Cabe Drencionar que cl raln¿ño dc los bloques lógicoses importantej Ia que rlerermrn:r cuántr Iógica se pLrc.le ímplemcntar dentroJ. l r PLD. r . r , L. r r ¡ . r l r r . rp , iJ r , .1. l , l r . r , . r r \ . , .

Figu¡a t.9 Bloque lóeL.o prcgnm¡ble

Page 27: Manual VHDL

Estado actual de la ióeica proc¡anable l5

a) Arreglos de productos de términos. Es la parte del CPLD que identificael porcentaje de términos implementados por cada macrocelda yel núme-¡o máximo de productos de términos por bloque lógico. Esto es similar ala¡¡eglo de compuertas AND programable de un dispositivo GAL22V10.

b) Esquema de distibución de términos. Es el mecanismo utilizado paradistribuir los productos de términos a las mac¡oceldas; esto se realiza me-diante el arreglo programable de compuertas OR de un PLD. Los diferen-tes fabricantes de CPLD implementan la distribución de productos detérminos con diferentes esquemas, Mientras algunos como la CAL22VI0usan un esquema de distribución variable (los cuales pueden variar en8,10,12,14 o 1ó productos por macrocelda), los CPLD como la familiaMAX de Altera Corpo¡ation y Cypress Semiconductor, distribuyen cua,t¡o productos de términos por macrocelda, además de utilizar "productosde términos expandidos", que se asignan a una o varias macroceldas.

c) Mactoceldas. Una macrocelda de un CPLD está configurada int€rna,mente por flip-flops y un control de polaridad que habilira cada afirma,ción o negación de una expresión. Los CPLD suelen tene¡ mac¡oceldasde entrada/salida, de entrada y ocultas, mient¡as que los PLD sólo tienenmacroceldas de entrada/salida.

La cantidad de mac¡oceldas que contiene un CPLD es importante, debi-do a que cada uno de los bloques lógicos que conforman el dispositivo seexpresan en términos del núme¡o de macroceldas que contiene. Pot lo gene,ral, cada bloque lógico puede ten€r de cuatro a sesenta macroceldas; aho¡abien, mientras mayor sea la cantidad, mayo¡ será Ia complejidad de las fun-ciones que se pueden implementar

1.2.2 Arreglos de compuertas programables en campo (FPGA)

l¡s dispositivos FPCA se basan en lo que se conoce como arreglos de com,puertas, los cuales consisten en la parte de la arquitectuÉ que contiene treselementos conffgurables: bloques lógicos confrgurables (CLB), bloques deent¡ada y de salida (lOB) y canales de comunicación [7]. A dife¡enciade los CPLD, la densidad de los FPGA se establece en cantidades equivalen-tes a cieÍo número de compueÍas.

Por adentro, un FPGA está formado por arreglos de bloques lógicos con-ffgurables (CLB), que se comunican entre ellos y con las terminales de en-trada/salida (E/S) por medio de alamb¡ados llamados caüales de comunica-ción. Cada FPGA contiene una matriz de bloques lógicos idénticos, po¡ logeneral de fo¡ma cuadrada, conectados por medio de líneas metálicas queco¡ren vertical y horúontalmente ent¡e cada bloque (Fig. 1.10).

Page 28: Manual VHDL

16 VHDL: El arte dc p¡oetumar sbtems dreu¿tes

!

¡

I

D

Bloques

D

!

I

!

D

Bloques deE/S ------'!

!

t r " t r" ! " ! " t r ' !

Figü¡. l.lo Arquitectura básica de un FpcA.

En la figura 1.11 se puede observar una arquitectura FpGA de la familiaXC4000 de la compañía Xilinx. Este circuito muestra a detalle la configura-ción inlerna de cada uno de los componentes principales que conforman es,re dispositivo.

Bloqu€s lógjcosAlquitectura FPGA

Fisura l.l1 A.qüirecru¡a del FPGA XC4000 de Xilinx.

hs bloques lógicos (llamados también celdas generadoras de funciones)están configurados para procesar cualquier aplicación lógica. Estos bloques

org

ña

s+

s+++o

+oBloques de

Page 29: Manual VHDL

Esado ¡c¡ual de la lóeica prosramable t7

tienen la característica de ser funcionalmente compleros; es decir, permitenla implementación de cualquier función booleana representada en la formade suma de productos. El diseño lógico se implementa mediante bloques co-nocidos como generado¡es de funciones o LUT (Look Up Táble: tabla debúsqueda), los cuales permiten alm¿cena¡ la lógica requerida, ya que cuen,tan con una pequeña memoria interna por lo general de 16 birs- [6].Cuando se aplica alguna combinación en las entradas de la LU! elcircuirola traduce en una dirección de memoria v envía fuera del blooue el datoalmacenado en esa dirección. En la ligura 1.12 se obse¡van los tres LUTque contien€ esta arquitectura, los cuales se encuenúan etiquetados con lasletrasG,FyH.

c1...c4

Fig¡m l.l2 A¡quirecrum d€ un blóque lí,sico conÉcurable FPGA.

En un dispositivo FPGA, los CLB esrán ordenados en arreglos de marri-ces programables (Programmable Switch Manlr o PSM), la ma¡riz se encar-ga de dirigir las salidas de un bloque a otro. Las terminales de entrada y sali-da del FPGA pueden estar conectadas directamente al PSM o CLB, o sepueden conectar por medio de vías o canales de comunicación.

En algunas ocasiones se pueden conl ndir los dispositivos de FPGA yCPLD, ya que ambos utilizan bloques lógicos en su fabricación. La diGrenciaentre ellos radica en el núme¡o de flip,flops utilizados, mientras la arquitecru-ra del FPGA es rica en registros. La CPLD mantiene una baja densidad. En iatabla 1.4 se presentan algunas otras diferencias entre una y otra a¡quitectuta.

Page 30: Manual VHDL

l8 VHDL; El arre de proErmar !i6t€m6 disirales

CaractÉrlsticas CPLD I?GA

Simil¡r ¡ un PLD Simila¡ a lG aneglos de

Más ¡egisÍc + RAM

Depende de la aptic¡ción(aniba de los 135Mh¿)

E\celenres en aplicacids

P¡oces¡dorés Digitátés deSeÁales (DSP)

Trábajen á ftecuencús

T¡bh r.4 fferencid entre dispo6itiv6 lógicos pto$mbles complejos (CPLD) I tos aneglosdc compuertas prosaubles en cúpo (FPGA).

| 1.3 Ambiente de desarrollo de la lógica programable

Una de las grandes ventajas al diseñar sistemas digitales mediante dispositi-vos lógicos programables radica en el bajo costo de los recursos requeridospara el desarrollo de estas aplicaciones. De manera general, el soporte bási,co se encuentra fo¡mado por una computadora personal, un grabador de dis-positivos lógicos programables y el software de aplicación que soporta lasdiferentes familias de circuitos integrados PLD (Fig. 1.13).

Fisun 1.13 Henamimrd necesüias en la prcsEmción de PLD.

Page 31: Manual VHDL

ErrLlú ac(u¿l de la lóe(a p¡,sBmable 19

En la actualidad, diversos programas CAD (diseño asistido Imr computa-dora), como PALASM, OPAL, PLB ABEL, CUPL, entre otros, se encuen-tran disponibles para la programación de dispositivos lógicos (tabla 1.5).

Compilador lógico

PALASM (PAL Assemble¡ ens¡úblad{rr Geado rD¡ la compañJ¿ Adváhced Mic.o Devi.de PAL) cc¡ (AMD)

Desarcllado rinicmente parr ¡plicaciones condispcirieos PALAcepta el fotuaro de ecuacn,nes booleanasUrili¡a cualquie¡ cdito¡ que grabc en formaroASCII

OPAL (Optinil PAL l¡hcü¿ge, lenguajc Desar¡ollado por N¡tnÍal Setuiconducrosde optimúación para ¡reglos proghha- Se aplica en disposirivos PAL y GALbles) Fomaro pan úsar lensu,je de máquinas de es¡á.

do. ececiones booleaMs dc distin¡os niveles, ta.blas de verd¿d, ó cualquier conbinación enüeeIarDisponible e¡ lesión estudiantil y p.ofesional(OPALhTOPALPTo)GeneE ecuaciones d€ diseno pa¡tiendo de unarabla de verdad

PLPL (Pro$amable l¡gic Próeráhhing C.eado por AMDL¡nsxace: le¡cúale de pro$¿m¿ción de In¡¡oduce el concepto de je¡drquíd en sus dileñoslócrca proc¡anable) FoDar6 múltiples (ecuaciones knleanq tablas

dc verdad, deeramas de estadó y las combinacio.nes enúe es(oslAplicacio¡es en dispositivos PAL y GAL

ABEL (Advanced Boolean Expresio¡ Creado por Dara I/O Corporatio¡LaDsuee: lensuaje avanzado de expresio. ProcEna cualquier ripo de PLD (Versión 5.0)nes booleanat Prcpo.ciona tres dife¡enres fotuarrf de enr.ada:

ecuaciones booleanas, tablás de ve.dad y diacra-nb de esrados_Es catalocado como un le¡cuaje ávatuado HDL(rengurje de descripción en hardware)

CUPL (Conpiler Univenal ProeEmmable Creado po. AMD lam desarollo de dseñcLosic: con¡ilador univesal de lócica cohplejosprosramable) Presen¡a una rotal independencia del dispositivo

PtueFma cualquier ripo de PLDFacili¡a la seneración de desúipciones lógicd dealto nivclAi igtral que ABEL, Émbién es c¡ralogado cohoHDI-

Tabla 1.5 Descnpción d. compiladores lósicos para PLD.

Page 32: Manual VHDL

20 VHDL, El aÍ. dc rrrgnm¡r sistem¡s disitalcs

Estos programas -conocidos tanbién como compiladores lógicos-tlenen una función en común: proccsar y sintetizar el diseño Ligico que se r'a

a introducir en un PLD mediante un método cspccífico (ecuaciones boolea-

nas, diagramas de estado, tablas de ve¡clad) [51.

Método tradicional de diseño con lógica programable

La maner[ tradicional de discñar con lógica prog¡ámable, Farte de la repre-sentaci(in esquemática del circuiro quc se requiere realizar y luego clefine la

solución del sistema por el método adecuado (ccuacioncs booleanas, ¡ablas

de verdad, diagramas de estado, etc.). Por ejemplo, en la figura 1.14 sc obser-va un diagrRrna que representa a un circui&) construido con compuertaslógicas AND y OR. En este caso se eligió cl método de ecuaciones boolea-

nas para rep¡esentar su funcionamiento, Runqre sc pudo usar también unatabl¡ de verdad.

F1 =A B +AC

F2= AB+BC

reFicura L14 Cbrrn--on Je t",.. .¿.trne, booted ,..

Como se puede observar, ias ecuáciones que ¡igen el comportamiento delsistena se encuent¡an de¡ivadas en función de las salidas F1 y F2 del circuito.Una vez que se obtienen estas ecuaciones, el siguiente paso es introducir enla computadora el archivo fuente o de ent¡ada; cs decir, cl p¡ograma que con-ticnc los datos que permitirán al compílado¡ sintedzar la lógica rcquerida.Típicamenre se introduce alguna información pieliminar que intlique datoscomo el nomb¡e del diseñado¡, la empresa, fecha, nomb¡e,:lel diseño, etc.Luego se especifica el tipo de dispositivo PLI) que se va a utilizar, la nunera-ción de los pines de entrada y salida, y las variables del diseño. Por úkimo, scdeline la función lógica en forrna de ecuaciones booleanas o cualquier forma-to que aceprc cl compilador.

Page 33: Manual VHDL

[¡tado acrual de la lógica p¡og¿mable 2l

En la 6gura 1.15 se observa la pantalla principal del programa PALASM,en el cual se compilárá el diseño de la ffgura 1.14 con el ffn de ejempllffcarla memdologla que se debe seguit

I@t PDS fi¡. E(t€sie Pnt1i6f3 I f1

<"> - Fdi6 positiú

Fisu.¡ l.r5 P¡ntaÍa principál de PALASM.

La forma de int¡oducir el dileño se muestm en el listado 1. Nótese quelas palabras resirvadas por el codrpilador se representan con let¡as neg¡itas.

)

D.c¡aáción de pim¡ dé ñfuda/slida;11 12 1r 14 1s 16 17 13 19 20

)

* :*"*

¡ ¡ 4or¡ aBc¡r * lII

sinür¡cróa (@dErm4 ./t

)

Lirtado 1,r Archivó Fuenté conpitado en ldñato PAIASM.

Page 34: Manual VHDL

VHDL: El r r te Jr Fr, ! rJmrr.nrm¡ J c(r lc\

El siguiente paso consiste en la compilación del diseiro, el cual radica bá-sicamente en localizar los errores de sinraxisl o de otro tipo, cometidosdurante la i¡t¡o,:lucción de los daros en el a¡chivo fuente. El compilador pro-cesa y traduce el archívo fuente y minimiza las ecuacioncs. En este paso, eldiseño se ha simulado utilizando un conjunro de entradas y sus correspon,dientes valores de salida conocidos como vectores de prueba. Durante esreproceso se comprueba que el diseño funcione correctamente antes de int¡o-ducirlo al PLD. Si se detecta algún error en la simulacíón, se depura el dise-ño para corregir este defecto.

Una vez que el diseño no dene e¡rores, el compilador genera un archivoconocido como JEDEC (Joint Electronic Device Engineering Council)lo mapa de fusibles. Este archivo indica al grabador cuáles fusibles lundir ycüáles activai, para que luego se grabe el PLD (de acuerdo con eL mapa defusibles) en un grabador típíco (Fig. 1.16).

Figura l.16 Implementación linal del diseño en u¡ PLD.

Como se puede observar, ciertos PLD (PROM, PAL, GAL) se programanempleando un grabador de dispositivos lógicos. Algunos otros PLD, como losCPLD y FPGA, presentan la caracte¡ística de ser p¡ogramables dentro delsistema (lSP, ln-System Programmable); es decir, no hay que introducirlos algrabadoi, ya que por mcdio de elementos auxiliares se pueden programardentro de la tarjeta de cícuito integ¡ado.

Como se aprecia, el método de diseño con lógica programable reducede manera considerable el riempo de diseño y permite al diseñador mayorcontrol de los errores que se pudieran presentar, ya que la corrección se reali-za en el software y no en el diseño físico.

L L¡ s¡Frs e c6ere al lormto .r¡ble.iJó v la sihbologiá u¡iLalla pa¡a descnñ una ca¡eso¡ia de frncioncs,I Lx mhivos JIDEC ertu cañ.rizadN para rodos los cohpihdüei lógicos exisFnFs

Page 35: Manual VHDL

Estado actuálde la lóerca prog¡amáble 23

1.4 Campos de apücación de la lógica programable

La lógica programable es una herramienta de diseño muy poderosa, que seaplica en el mundo industrialy en proyectos universita¡ios en todo el mun-do. En la actualidad se usan desde los PLD más sencillos (como el GAL,PAL, PLA) como reemplazos de ci¡cuitos LSI y MSI, hasta los potentesCPLD y FPGA, que tienen aplicaciones en áreas como telecomunicaciones,computación, redes, medicina, procesamiento digital de señales, multiproce-samiento de datos, microondas, sistemas digitales, telefonía celular, filtrosdigitales programables, entre otros.

En general, los CPLD son recomendables en aplicaciones donde se requie.ren muchos ciclos de sumas de productos, ya que pueden introducirse en el dis,positivo para ejecutarse al mismo üempo, lo que conduce a pocos retrasos. En laactualidad, los CPLD son muy utilizados a nivel industrial, ya que resulta fácilconverlr diseios compuestos por múltiples PLD sencillos en un circuito CPLD.

Por otro lado, los FPGA son ¡ecomendables en aplicaciones secuencia,les que no suponen grandes cantidades de términos prcducto. Po¡ ejemplo, losFPGA desa¡rollados por la compañía ATMEL oliecen alta velocidad encómputo intensivo, aplicaciones en procesadores digitales de señales (DSP) yen otras fases del diseño lógico, debido a la gran cantidad de registros con losque cuentan sus dispositivos (de 1024 a 6400). Esto los hace ideales para su usoen dichas áreas.

Desarrollos recientes

Existen desa¡rollos realizados por diversas compañlas cuyo funcionamiento sebasa en un PLD; por ejemplo, la fgura 1.17 ilustra una tarjeta basada en unFPGA de la familia XC4000 de Xilinx C-orporarion, Esre desarrollo permite elprocesamiento de datos en paralelo a alta velocidad, lo que reduce los proble-mas de orocesarniento de datos intensivd.

-Fisura r.r? Ssrenabasado en un FPGA.

r Fuenre d¿ ilotuáción, htp://ww{.am¡pmico.con

Page 36: Manual VHDL

24 VHDL: El ait€ Je prosnn¡r sn¡cmas Jlqr¡les

En la figura 1.18 se muesrra ot¡a aplicaci(in rcalizada en un disposítivoCPLD de la familia FIexlOK de Altera Corporarion (nivel de intcgración de7000 compuertas). La función rle esta tarjcra es permitir divcrsas aplicacio-nes en tienpo real, como el filcrado digiral y muchas otras propias del ca¡n-po del procesamiento digital dc señalest.

figú¡ l.l8 EjeNplo Je un dúcir lósico p¡oerán¡br (u,Inq,).

Como ya se mencionl, el campo de la lógica programable se ha extendidoen la industria en los últimos años, ya que compañías dc nivel intemacionalin-tegran o dcsarrollan lógica programable en sus diseños (vea la tabla 1.6).

Productú. des¡nollado,.on lógica prcgramable

And¡rh C.huhins (to!!

htrp/trseÉ.ids.net-rrndr.k¡¡¡.

lrt4r/lhone.inteL,n.o!cod.Lsr.l

httri/,]nsrnctconúl.o.uk/-newhorú/úrdcr

I)ercn Se0i.e Sesmens

hdcs¡d.rer diqiialc\ Je señxlcs (DSf)C.munc¡ciono dilnáler¡r,c.rxdor6 dc ¡uJn, r rdeo

ItlóLlcm d. ¡t¿ \¿1,{ ¿JAud,., vL¡.o, adquni.ión de dtrios vpro.lsr¡ienn, Je

ArLi.rcNncs nnlitar.s: C¡irn)grilii, s.eu¡id¡d ¿n..nu-nu.n,nesi f, orc. o .spr.lrr$.

Red.t .fh¡.iorer en |nro..l$ tcP,'ltlvluliniedn, Qr¡li.snñ J¿ Audr^lJcoAFlicffnD$.n ncnl!)o ¡eJ

Digit,lnil.'cs, Cán¡¡$ dc \¡iJe. {ll¡Mblr¡sle.)

tuercs Fmlel(r de.omuni.¡.nr¡es Fri PC

Di\eñ. de ni Lcrolr(r.s¡dúc\ .onrlejosD¡Fosúñr f ¡¡¡ tcl..o¡runi.i.i.ne\, DSIr

^Fli.acn)nes e¡ dbciros !¡r¡..nüol Ddrr¡al

I¡bl¡ 1.6 Conpañias que incoaor¡¡ lósica p¡)sr¡nr¡ble e¡ sus liseños.

a Fuenre de inlorn¡clón: hrpr/r{^was¡. conr

Page 37: Manual VHDL

Er¿J,, rcru¿lJe h 1, , ¡ rKr p! LrrJm¿ble t {

1.5 La lógica programable y los lenguajes de descripciónen hardware (HDL)

Como consecuencia de la c¡ecicnte necesidad de iDt€grar un mayo¡ númerode dispositivos en un solo circuito inregrado, se desarrollaron nuevas he¡¡a-mientas dc diseño qu€ auxilian al ingeniero a integrar sisiemas de mayorcomplejidad. Esto permitió que en la década de los cincuenca aparecieran loslenguajes de descripción cn hardware (HDL) como una opción dc diseño pa-¡a el dcsarrollo de sistemas elect¡ónicos elaborados. Estos lenguajes alcan:a-ron mayor desarrollo durante los añt¡s setenta, lapso cn que se desarrollaronva¡ios de ellos como IDL de IBM, TI,HDL de Tlxas Instrumcnts, ZEUS deGcneral Electric, etc., todos o¡icntados al área indust¡ial, así como los lcn-guajes en cl ámbito unive¡sita¡io (AHPL, DDL, CDL, ISPS, etc.) [8]. Losprimeros no estaban disponibles fuera de la empresa que los rnanejaba, mien-tras que los segundos carccían de soporte y mantenimiento adecuados c¡repermitieran su ulilización industrial. El dcsarrollo continuti y en la década delos ochenta surgicron lenguajes como VHDL, Verilog, ABEL 5.0, AHDL,etc., considerados lcnguajes de descripcitin en hardware porque permitieronabordar un problema lógico a nivel funcional (descripción dc un problernasólo conociendo las entradas v salidas). lo cual facilita la evaluación de solu-ciones alternativas antes de inicia¡ un diseño derallado.

Una de las principales caracterGtic¡s de estos lenguajcs radica en su ca-pacidad para describir en distin¡os niveles de abstacción (funcional, trans,fcrencia de registros RIL y lógico o nivcl de compu€¡tas) cierto diseiio. Losnivelcs de abstracción se emplean para clasificar modelos HDL según el gra-do de detalle y precisión de sus descripciones [4].

l¡s niveles de abstracción descritos desde el punto de vista de simula-.rc in y

"rnre. i . dcl c i rcuiro ¡ueJcn d. fnrr 'e c. ' rnr . igur.

Algorítmico: se refiere a la relaciírn funcional entre las entradas y sa-lidas del circuiro o sistema, sin hacer referencia a l¡ ¡ealización final.Transferencia de registros (RI)¡ Consiste en la pá¡tición del sistcmaen bloques funcionales sin conside¡ar a detalle la realizacitin linal decada bloque.I-ógico o de compuertas: el circuito se expresa en términos de ecua-cioDes lógicas o de compuertas.

1.5.1 \¡HDL, lenguaje de descripción en hardware

En la actualidad, el lenguaje de descripción en hardware más utilizado a ni-vcl industrial es VHDL5 (Hardware Description Language), que apáreció en

5 Fuente de inf.ú¡¡.nrn, hta,,'/Nv.fs¡a c.n

Page 38: Manual VHDL

26 VHDL. El¿nc de prosmm¿¡ rsrem¡ Ll,s dtes

la década de los ochenta como un lenguaje estándar, capaz de soDorta¡ elproce:o de di.eño de sisrema. elec¡rónlLos co.pl.¡o...rn prop,"d"J., p"rnreducir el tiempo de diseño y los recursos tecrrohgi.o. ..q.,e.ijor. El D"or.ramenro de Defen'¿ de t"Lado. Unrdo..reó el l"ngrr¡" VHDL.o.o p)rt"del programa "Very High Speed Integrared Circuits,, (VHSIC), a parr; delcual se detectó la necesidad de conta¡ con un medio estándar de comunica_ción y la documentación para analizar la gran cantidad de daros asociatiospara el diseño de dispositivos de escala y complejidad deseados [9]; es tlecir,VHSIC debe entende¡se como la rapidez en el diseRo de circuiros iltegrados.

Después de va¡ias versiones revisadas por el gobierno de los Esta¡lJs Uni

Un año más iarde, surgió la necesidad de describir en VHDL todos los ASICcreados por el Departamento de Defensa, por lo que en 1993 se adoptó el es_tándar adicional de VHDL IEEEl164.

Hoy en día VHDL se considem como un estándár pa¡a la descripción,modelado y slntesis de circuitos digitales y sistema" comfle¡os. Este lengualepresenta diversas características que lo hacen uno de los HDL más utilizadosen la actualidad. Finalmente la letra ,,V" dentro de VHDL hace reG¡enciaal proyecto (VHSIC).

1.5.2 Ventajas del desarollo de circuitos integrados con \ufIDL

dos, indust¡ias y universidades, el IEEE;i:,:11:::ñlü'l';::':ltl*'J::Hé?*".*:*llñ+ffi #ffir076-198i,

A continuación se exponen algunas de las ventajas que representan los cir-cuiros integrados con VHDL:

Noacíón formal. La programación en VHDL cuentan con una nota_ción que pe¡mite su uso en cualquier diseño electrónico.Dísponibilidad pública. VHDL es un esrándar no sometido a paren-te o marca regi,rrada alguna. por Io que cualquier empre"a o instrru-. ión pueJe uri l i :arla sin resrriccione.. AJemá., d¿do que el IEEE l,mantienc v documentd. extte la garanrÍa de err¿bilrJ¿j v.ooorre.Independencia tecnológica de diseño. VHDL

"e Ji".ñ,i prrr,ooo.-tdr di\ercds tecnologra. de di,erto (pLD, FPGA, ASIC, eLc.) c.,n drs-tinta funcionalídad (circuitos combinacionales, secuenciales, síncro_nos y asíncronos), a fin de satisface¡ las distintas necesidades dediseño.Independencia de la tecnologfa y proceso de fabricación. VHDL secreó para que fuera independiente de la tecnología y del proceso de fa_bricación del circuito o del sistema elect¡ónico. EI lenguaje funcionade igual manera en circuitos diseñados con tecnología MOS, bipola-res, BICMOS, erc., sin necesidad de incluir en el diseño info¡mación

Page 39: Manual VHDL

ktado actual de l¡ lócica p.oermable

concreta de la tecnología utilizada o de sus ca¡acterísticas (retardos'

consumos, rempcratura, etc.)' aunque esto puede hace$e de mane-

ra oPcional.

. Capacidad descriptira en distintos niveles de abstracción. El proce-

so de diseño consta de varios niveles de detalle, desde la especificaciónhasta la impiementación 6nal (niveles de abstracción) . VHDL oliece la

ventaja de poder diseñar en cualquiera de estos niveles y combinarlos,

con lo cual se genera 1o que se conoce como simulación multinivel'. IJso como formato de intercambio de información. VHDL permite

el intercambio de información a lo largo de todas las etapas del proce-

so de diseño, con lo cual favorece el rrabajo en equipo.

' Independencia de los proveedores. Debido a que VHDL es rrn len-

guaje estándar, permite que las descripciones o modelos generados en

un srtlo sean accesibles desde cualquier otro, sean cuales sean las he'

rramientas de diseño utilizadas.

' Reutilización del código. El uso de VHDL como lenguaje estándarpermite reutili"ar los códigos en diversos diseños' sin impo¡tar que ha'yan sido generados para una tecnología (CMOS, bipolar, etc.) e imple-

mentación (FPGA, ASIC, etc.) en particular

' Facilitación de la patticipación e¡r proyectos intemacionales' En la

actualidad VHDL constituye el lenguaje estánda¡ de referencia a ni-

vel intemacional. Impulsado en sus inicios por el Depa¡tamento de

Defensa de Estados Unidos, cualquier programa lanzado por alguna

de las dependencias offciales de ese país vuelve obligatorio su uso pa'

ra el modelado de los sistemas y la documentación del proceso de

diseño [11]. Este hecho ha motivado que diversas empresas y univer-

sidades adopten a VHDL como su lenguaje de diseño.

En Europa la situación es simllar, ya que en nuestros dlas la mayorla de

las grandes empresas del ramo lo ha definido como el lenguaje de referencia

en todas las tareas de diseño, modelado, documentación y mantenimiento de

los sistemas electrónicos. De hecho, el númeto de usuarios de VHDL en Eu-

ropa es mayor que en Estados Unidos, debido en gran parte a que resuka el

lenguaje más común en la mayoría de los consorcios

1.5.3 Desventajas del desa¡rollo de ci¡cuitos integrados con VHDL

Como se puede observa¡ VHDL presenta grandes ventajas; sin embargo' es

necesario mencionar también algunas desventajas que muchos diseñado¡es

consideran importantes:

Page 40: Manual VHDL

28 VHDLj El arte de prograur ¡istehas drguates

En algunas ocasiones, el uso dc una herrarnienta p¡opuesta po¡ algunacompañía en espccial dene caracterGticas adicio¡rales al lenguaje, conhr que se pierde un poco la libertad de diseño. Como métorlo altemati_voj se pretendc que enrre diseñadores que utili:an distintas herramien-tas exista una compatibilidad en sus diseños, sin que esto requiera unesfue¡zo impo¡tante en la traducción del código.Debido a que VHDL es un lenguaje diseñado por un comiré, presen-ta una alta complejidad, ya que se debe dar gusto a las divcrsas opiniones.le-los miembros de éste, po¡ lo que ¡esulta un lenguaje dilicil dcap¡ende¡ pa¡a un no\,ato.

1.5,4 VHDL en la actualidad

La actividad que se ha generado en torno a VHDL es muy inrensa. En mu_chos países como España se han crdado grupos de trabajo airededor de clicholenguaje y se realizan periódicamente conferencias, reuniones, etc., donde sepresenran rrabajos tanro en Estados Unidos (en el VIUII VHDL lnternartt>nal User's Forum) como en Europa (VHDL Forun for CAD in Europe), asícomo en el congreso Eur,¡VHDL celebrado desde 1992110 l.

Lr ta l i . in.rc i , ,n europed en r l e, turrro Jc. . , " rd", ,_r , e l lengur le .ecanaliza a trar,és delproyccto ESpRIll encabezado por SIEMENS_NIiDóRFEn et pr(ryecto participan prácticamente todas las grandes compañías eu¡('peas delscctor clectrónico, corno ANACAD,ICL, pHILLlpS, Tól y THOM_SON-CSf; además de diversas universidades y cent¡os de investisación. Orrasempresas dedicadas a la microelectrónica se han ido adaptandJpoco a pocoal lenguaje. Incluso en Japón está teniendo uDa gran aceptación, no ()bstanteque cuenran con un lenÉjuaje esránddr propio llamado UDL,rI.

El proceso de escandarizaciírn del VHDL no se r.letuvo con la primera ver-sión del lenguaje (VHDL'S?), sino que ha conrinuádo con h n;eva versión(VHDL'93) y constantes acrualbaciones, mejoras y rnetodologías de uso, En,tre estas a,:liciones o actualiraciones se cncuetrtra una muy impo¡tanter la ex.tensión analógica (10?6.1), que permire la utilización de un lenguaje únicoe¡r todas las ra¡eas de especilicacióD, simulación y síntesis de sistemas electró-nicos digitales, anaiógicos o mi\tos.

Existen diversas compañías internacionales que fabrican o distribuyen dispo-sitivos lógicos p¡ogramables. Algunas oliecen productos con ."r".t".írti.^.generales y orras introducen innovaciones a sus dispositivos. A continuaciónse mcncionan algunas de las más imporcanres,

1.6 Compañías de soporG en hardwarey software

Page 41: Manual VHDL

Es¡ado ¿ctu¡i de la lógica pn¡r¡anable 29

Altera CorporationAltera es una de las compañías más importantes de producción de disposiii-vos lógicos programables y también es la que más familias ofrece, ya que

riene en el me¡cado ocho familias: APEXTM2oK, FLEX@1oK, FLEX 8000,FLEX 6000, MAX@ 9000, M.dX7000, MAX5000, y ClassicrM. La capacidadde integración en cada familia varía desde J00 hasta I 000 000 de compuer-tas utilizables por dispositivo, además de que todas tienen la capacidad de in-legrar sistemas complejos.

Las características generales más signilicativas de los dispositivos Alterason las siguientes:

Frecuencia de operación del circuito superioi a los 175 Mhz y retardospin a pin de menos de 5 ns.La implementación de bloques de aneglos incegrados (EAB), que seusan para ¡eali?ar circuitos que incluyan funcion€s aritméticas comomultiplicadores, ALU, y secuenciadores. Támbién se aplican en micro-procesadores, microcont¡olado¡es y funciones complejas con DSP(procesadores digitales de señales) [12].La programación en sistema (lSP), que permite programar los dispositivos montados en la ta¡je¡a (Fig. 1.19).

En la figura 1.19a observamos la p¡og¡amación en sistema; es decir, nohay que retírar el circuito de la tarjeta para programarlo. En la figura 1.19bse muestra lo contmrio: en este caso el tipo de programación es similar a lagrabación cotidiana que realizamos, debido a que se debe colocar Y quitar eldispositivo todas las veces que se quiera pmgramat

Figu6 r.r9 d PróFamación en sistena. b) Prcgranación en ¡ro¡rale.

Más de cuarenta tipos y tamaños de encapsulados, incluyendo elTQFP (rhin quad flat pack), el cual es un dispositivo delgado, de for,ma cuadrangular y plano, que permite ahorrar un espacio considera-ble en la tarjeta.Operacitln multivoltaje, enÍe los 5 y 3.3 volts, pa¡a máximo funcio-namiento y 2.5 V en sistemas híbridos.

Page 42: Manual VHDL

30 VHDL: El a¡re de ptug¡amar sisrehas digi¡ales

. Potentes herramientas de software como MAX+PLUS II, que so¡nrtatodas las familias de dispositivos de Altera, así como el soltware están-dar compatible con VHDL.

Cypress semiconductorLa compañía Cypress Semiconductor ofrece una amplia variedad de disposi,tivos lógicos programables complejos (CPLD), que se encuentran en lasfamilias Ultra37000ft y FLASH37Oifr. Cada una de estas familias oftece lareprogramación en sistema (lSR), la cual permite reprogramar los dispositi-vos la. veces que se quiera denrro de l¿ r¡r jeta.

Todos los dispositivos de ambas familias trabajan con voltajes de operaciónde 5 o de 3.3 V y en su inte¡ior contienen desCe J2 hasta 128 macroceldas.

En lo que respecta al software de soporte, Cypress oftece su poderoso pro-grama Warp, el cual se basa en VHDL. Este programa permite simula¡ demanera gráfica el circuito programado, generando un archivo de mapa de fu-sibles (edec) que puede ser programado directarnente en cualquier PLD.CPLD o FPCA de Crpress o de ona cLlmpdñi¿ qu. .ea .omparible.

Clear logicLa compañla Clear l-ogic inrrodujo en noviembre de 1998 los dispositivos lti-gicos p¡ocesados por láser (LPDL), tecnología que provee reemplazos de losdispositivos de la Compañía Altera, pero a un costo y tamaño menores. Latecnología LPLD puede disponer de arriba de un millón de transistores paraconst¡uir alrededo¡ de 512 macroceldas. Sustituve al disDositivo MAX75llA de AItera r reduce el r¿mano mjs de o0on re.pecro al chip originál.Las primeras familias inrroducidas por Clear Logic son CL?000 y CL7000E,las cuales denden a c¡ecer en un futuro.

MotorolaMototola, empresa llder en comunicaciones y sistemas electrónicos, ofre-ce también disposirivos FPGA y FPd{ (Field Programmable Array Ana-log: campos programables de arreglos analógicos). Los FPAA son losp¡imeros campos programables para aplicaciones analógicas, u¡ilizados enlas á¡eas de transporte, redes, computación y telecomunicaciones.

XilinxXilinx es una de las compañías líder en soluciones de lógica programable, in-cluyendo ci¡cuitos integrados avanzados, hermmientas en software para di-seño, funciones predefinidas y soporte de ingeniería. Xilinx fue la compañíaque inventó los FPGA y en la actualidad sus dispositivos ocupan más dela mitad del me¡cado mundial de los dispositivos lógicos programables.

Page 43: Manual VHDL

Estado actual de la lóc1ca proeranable 31

l-os dispositivos de Xilin-r ¡educen de mane¡a signiffcativa el Liempo ¡e-querido para desairollar aplicaciones en las áreas de computación, telecomu,nicaciones, redes, cont¡ol industrial, inst¡umentación, aplicaciones militaresy para el consümo general,

Las familias de CPLD XC9500 y XC9500XL proveen una larga variedadde dispositivos progumables con caractetfsticas que van desde los 5 a 3.3volts de operación, 36 a 288 macroceldas, 34 a 192 terminales de entrada ysalida, y progamación en sistema.

Los dispositivos de las familias XC4000 y XC1700 de FPGA manejan vol-tajes de operación entre los 5 y 3.3 V, una capacidad de integración arriba delas 40 000 compuertas y prog¡amación en sistema.

En 1o que se refiere al software, Xilinx desarrolló una importante hena-mienta llamada Foundation Series, que soporta diseños estándares basadosen ABEL,HDL y en VHDL. Esta herramienta se oftece en ve¡sión estu-diantil y profesional.

De manera general, existe una amplia y variada gama de dispositivos ló-gicos programables disponibles en el mercado. La elección de uno u otro de.pende de los recursos con que cuenta el diseñador y los tequerimientos deldiseño. En la tabla 1.? se muestran de forma simplilicada algunas de las com-pañías que ofrecen soluciones de lógica programable, mientras que en lafigura 1.20 se presentan sus productos.

Futuro de la lógica programable

Debido al auge actual de la lógica programable, no es diflcil suponer quese pretende mejora¡ a futuro las her¡amientas existentes con el ffn de ex-tender su campo de aplicación a más áreas. Algunas compañías buscanmejorar la funcionalidad e integración de sus circuitos a fin de competircon el me¡cado de losASIC. Esto mejorarfa el costo por volumen, el ciclode diseño v se disminui¡fa el voltaie de consumo.

Otra caracterGtica que se pretende mejorar es la reprogramación de loscircuitos, debido a que su implementación requie¡e muchos recu¡sos físicosy tecnológicos. Por esta ¡azón se busca cambiar las metodologías de diseñopara incluir sistemas reprogramables por completo.

Algunos desanollos cuentan con memo¡ia RAM o microprocesadoresintegtados en la tarjeta de programación. La tendencia de algunos fabrican-tes es integra¡ estos recu¡sos en un circüito.

Page 44: Manual VHDL

1t VHDL: El afte dc prcs¡ahar sbrehas dreitalcs

Compañia Productos de ha¡dware Henamientas softwa¡e

FPGA: Familias APEX 20K, FLEXIOK, ¡LE\ 6000, MAX 9OM, MAX?000, MAX 50m y CLASSIC

LPGA (La*r Pros'am careAr¡y) : CI3000, CX2000 yQYH500

LPLD (L¡se¡.prce$ed l¡gicDevice): CL?000, CL?000E,CL?OOOS

PLD: GAL22VIOCPLD: Ulnal?0cr0, FLASHJToi

FPAA (¡ield P¡os.ammble AnalogA¡ray), MPAA020

FPCA: Familias MACH4 yMACH5A

PAsic (Asic P¡ocrámable) y lafmilia QL de FPCA.

CPLD: Familia XC9500 y

MAX + PLUS U: Sopo.ta VHDL,Verilog y enrada esquená¡ica.

Chip Exp.e$

Qüick Logrc

QUICk Place&rou¡ei D6eños enbase a vecroies de prueba (CTV ,ChipExpre$ ]¡sr Vecrot yVHDL

Desa¡rollos basados en he.¡amienras

WARP, Sopo¡ta VHDL. Ve.ilos y

Easy Analoe, heramienta de diseño¡ntetacliva exclusiva para di¡eño con

MACILXL: VHDL,- Veilog

Quick Works: heranientá desoporte pan VHDL, Ve¡ilog y cap.

xilin¡ xc9500xlFpcAsFamiriaxc40oyxclzc. X'iti.Hl1$ilil:";j];i:ffi:.,

ftbh r.? Conpañías de Sopo.re de ti')sica p¡og¡amabre.

Figura 1.20 D¡posLrivos l¡)sicos prosramables.

Page 45: Manual VHDL

E¡t¡lo etu¡de ¡¡ lóss p¡osra¡'able 33

Cuestion¿do1.1 ¿Qué signiffca ñonollricoi

., 1.2 iCuál es el signiñcado de lár dglas ASICI. ,...1.3 iGráles son las caregorfardo tccnologbs de fabricación de Cf?

1.4 Describa en qué conristi €l di¡eáo Full G¡stom.' .1.5 Mencbne la! c¡tractc¡flricár ñás rel6\,ántes del discño Full Custom.

' ' 1,ó iCuál cs el,r[niffcado de tas rigla, pLD?1.? iQué rienen en común los dispositivos pROM;plA, pAL, GAL y los

CPLD y FPCAI1.8 iQué es OLMCI

' ' 1.9 iCr¡ál cs el eigniffcado de las siglar CPLD y FpGAI1.10 Desc¡iba cómo se encuedta c:structuradb un CPLD.1.11 Describa la esüuüura d€ un FPGA én t&mlnos,generales.l l2 lQué es un compilador lógicol

, 1,13 iCuál cs,cl signiffcado de .las siglas VHDLI'' '\ 1.14 iQué signiffcdo tienen las siglas VHSICI , .

1.15 D¿scrihi trcs ventajar de la programación en VFIDL.' . 1.1ó icuá[es son las,eompañlas más impcrtántes en la fdbricación de

, . dilpooiriyd lógicos prograrnablesl

Page 46: Manual VHDL

34 VHDL: El ane de progmmar sisreMs disitales

Bibliograffa

Maxinez David G., Alcalá Jessica: Diseño d.e Sistentts Embebiios a tratés delbnguaje d.e Descibción en Hardware VHDL. XIX Congreso IntemacionalAcadémico de Ingenie¡ía Electrónica. México, 199?.Kloos C., Cemy E.: Ha uare Descriptian Language and tlvir aplications. Spe,cftation, nwd.elling verification and slnthesis of microelectonic systems. Chap,man&Hall, 1997.IEEE: The IEEE standad VHDL Iaguage RefeÍer,re Manudl lEEE.Std,lO7 6-1987,1988.Advanced Mic¡o Devices: Programnable Logic HandbooklData book. Ad.¡ an,ced Micro Devices, 198ó.Zainalabedin Navabi: Analysis and Modeling of Drgiral Sysrerns. McGraw-Hill,1988.Altem Corporation: User Curftgurable Logic Dara Booi<. Altera Corp., 1988.Altera Corporation: Th e Marit¡wlist Handbook Altera Corp., 1990.Ismail M., Fiez T: An¿log VLSI. McGraw-Hill, 1994.Hayes John F: Compater Architecwre and Ogani¡¿¡¡bn. McGraw-Hill, 19?9.Vakerly J. E: Drgiral Desing hinciples anl. prac¡ic¿¡. prentice Hall, 1990.Skahill Kevin.: VHDL for programrw.tble logíc. Addison !{/esley, 199ó.Clpress Corporation: www.cypress.comXilinx Corporarion: www.xilinx.comO¡ganización Mundial de VHDL: www.vhdl.orgCampos de lógica programable, www.fpga.com

Referencias

[1] Maxinez G. Davió,: Anplifiatción d.e Señales. ITESM-CEM, 1993.[2] Hon R. !l y Sequin C.H.: A grde b I:l implentatian. Xerox Parc,

1980.[3j Mead C. y Conway L.: Inrrodloion ro VLSI Slste r^r. Addison Wesley,

VLSI se¡ies 1980.[4] Teres Ll., TorrojaY, Olcoz S., Villar E.: VHDLLnguajeEstándar ¿¿ Di.

seno Elearónicc¡. lüccraw-Hill, lqa8.[5] Floyd T L.: Fúndar entos de Sistemas Drgitales. Prentice Hall, 1998.[6, 7] Van den Bout f)ave: The practical Xiliu Designer Laó Booi<. Prentice

Hall, 1998.[8] Instituro de Ingeniería Elécr¡ica y Elect¡ónica, IEEE. Re{,is!¡ Compr¿¡er.

IEEE, r97"t.[9] Delgado C., Lecha E., Mo¡é M., Te¡és Ll., Sánchez L.: Introducción a

los bnguajes YHDL, Verilog l UDL{. Novátíca No. l12, España, 199J.

Page 47: Manual VHDL

Capítub 2

VHDL:su organizaciúny arquitectura

Introducción

2.1 Unidades básicas de diseño

Ti l tom,' lo inJr i :n ,L¡r . ig l¿r VHDI rHarJ-wrre D$.qr¡, , ¡ Langu,e. ) c.un.rengrinl . ñf lent| ldo ¡ t . r Je.c p. i^n . , model¡J, , de , i . rcmr, drgir :rrc. ,es decir, se trata de un lenguaje mediante el cual se puede describi¡ analizary evaluar e) comportamienro de un sistema electrónico digital.

. VHDL e.un lengu", . p. ,J.r . , "o que p.rmlc l . r inregr. j ( iun.1. . r . - im,.

. I ig jr" lc. .en. r l l^ . . eldbur¡Jo. , , amb,, . en ur di . fo.r rr o logi . o pr, ,gr .mrble,sea de baja capacidad ,:le integración conro un CAL, o d.-mayi. capucidaicomo los CPLD y FPGA.

,'' La estnrctura general de un programa en VHDL está fo¡matla por móduloso unidades de diseño, cada uno de elitx compuerto po. un c,r,r¡untu,Je.l.-claraciones e instrucciones que definen, .l.r..ib.n,

"rt.u.t.,.o,, u,ralio,, y

evaL(ran el comportamiento de un sisrema dieiral.tr i .ren . in.u r ipo. Je rniJrde. dc dlerto cn \ HDL: declaración dc en-

tidad (entiry declaration), arquitectura (archirecture), conffguración (con_tigxration), decla¡ación del paquete (package dcclarationf y cuerpo delpaquete (package body). En el desar¡ollr de prog¡ámas en vHlf_ i".a".,utilizarse o no tres de los cinco mtidulos, pert¡ áos d. cllo, (".rridud y u.q.,i.tectura) son in.lispensables en la estructuración de un o¡oerama.

. .L¡ . .Jr . l¿r , , ionc.dcenr idaJ,¡aqr,ercr."nl¡gur¿ci . ,n.e, , ,n" lJ.rrnuni .dxdci . fe di ,er ln pr imarias. nr .nrra. qr¡e l ¡ ¿rqui lecf | r r , r e l cuerp, dcl ¡ . , -quete son unidades de diseño secundarias porque dependen de una entijaLlprimaria que se debe analizar antes que ellas.

Page 48: Manual VHDL

38 VHDL: El a¡(e de prcemnú¡ sis¡enFs dieitales

Entidad

Una entidad (mtity) es el bloque clemental de diseño en VHDL, Las entida.des son todos los elementos eiectrónicos (sumadores, contadores, compuertas,flip-flops, memorias, multiplexores, etc.) que forman de manera individual oen conjunto un sistema digital. La entidad puede representarse de muy di-versas maneras; por ejemplo, Ia ligu¡a 2.1a) muestra la arquirectura de un su-mador completo a nivel de conpuertas; ak)ra bien, esta entidad se puede¡ep¡esenta¡ a nivel de sistema indicando tan sólo las entradas (Cin, A y B) ysaiida: (SUMA y Cout) del circuito:6gura 2.1b). L)e igual forma, la inregra-cióD de varios subsistemas (medio sumador) puede representa¡se medianteuna entidad [Fig. 2.1c)1. Los subsistemas pueden conectarse internamente en-tre sí; perc la entidad sigue idenrilicando con claridad sus enrradas y salidas

B

c)

FicuÉ 2.1 a) l)esc¡ipciór a dvel de cohpudt¡s. b ) Símbolo tuncion¡l ,le l¿ entirlarl; c ) Diag¡ama a blqusre¡resenrativo d€ la ent¡d¡d.

Page 49: Manual VHDL

VHDL: su o¡gánir¿ción y árquitec¡ura 39

2,2.1 Puertos de entrada.salida

2.2.2 Modoa

Cada una de las seÁales de entrada y salida en una entidad son refe¡idascomo puerto, el cual es similar a uria te¡minal (pin) de un slmbolo esquemá-tico. Todos los pue¡tos que son decla¡ados deben tene¡ un nombre, un mo.do y un tipo de dato. El nombte se utiliza como una forma de llamar al puer-to; el modo pe¡mite deñnir la dirección que tomará la información y el típodeffne qué clase de info¡mación se transmiti¡á por el puerto. Por ejemplo,respecto a los puertos de la entidad que rep¡esentan a un comparador deigualdad (Fig. 2.2), las variables a y b denotan los puertos de entrada y la va-riable c se ¡efiere al Due¡to de salida.

Fisur¡ 2.2 Conparador de icüaldad.

Como ya se mencionó, un modo permite deÉni¡ la di¡ección en la cual el datoes aransferido a través de un puerto. Un modo puede tener uno de cuatro va-lores: in (entrada), out (salida), inout (entrada/salüa) y buffer (Fig 2.3).

. Modo in. Se redere a las señales de entrada a la entidad. Este sólo es uni-direccional y nada más permite el flujo de datos hacia dent¡o de la entidad.

. Modo out. Indica las señales de salida de la entidad.

. Modo inout. Pe¡mite decla¡a¡ a un puerto de fo¡ma bidireccional -esdecir, de ent¡ada/salida-; además permite la ¡etroalimentación de seña-les dent¡o o fue¡a de la entidad.

. Modo buffe¿ Pe¡mite hacer ret¡oalimentaciones intemas dentro de laentidad, pe¡o a diferencia del modo inout, el puerto declarado se com-Potta como una terminal de salida.

Oul

Butler

Out

ffiFigu6 2.3 Modc y el cutso de sus señáles.

Page 50: Manual VHDL

40 VHDL: Ei ane de prosrana¡ rsiehas dieihles

2.2.3 Tipos de datos

Los tipos son los valores (datos) que el diseñador establece para los pue¡tosdc entrada y salida dentro de una entidad; se asignan de acuerdo con las ca,racterGticas de un diseño en particular. Aigunos de los tipos más utilizadosen VHDL son:

Bit, el cual tiene valores de 0 y I lógico.Boolean (booleano) que define valores de verdadero o falso en una ex-presiónBit_vector (vectores de birs) que reptesenta un conjunro de bits pa¡acada variable de entrada o salida.Integet (entero) que representa un núme¡o entero,

Los anterio¡es son sólo algunos de los tipos que maneja VHDL, pero noson los únicos.r

2.3 Declaración de entidades

Como se mencionó en ia seccirln 2.1(Unidades básicas de diseño). los módu-los elementales en el desanollo de un programa dentro del lenguaje de descrip,ción en hardware (VHDL) son la entidad y la a¡quitectura.

La declaración de una entidad consiste en la descripción de las enrradasy salidas de un ctcuito de diseño identi6cado como entiry (enridad); esdeci¡ la declaracún selala las terminales o pines de entrada y salida con quecuenta la entidad de diseño.

Por ejemplo, la forma de declara¡ la entidad co¡¡espondiente al circuitosumador de la figura 2.1b) se muestra a continuación:

1 Declaración de La enridad de un circuiLo swador2 €ntlty sulador ls3 Do¡t (A,8, Cin: i ¡ b i t ,¿ sLNt¿, or ' : cut o-5 €dd surador;

L¡t¡do 2.1 Decla¡a.ión de la entidad sunador de l¡ fis¡n 2.lb).

C¡n

B

I En el apén'l¡ce A so listan los ripos de dar,s exnrentes cn VHDL.

Page 51: Manual VHDL

VHDL: .¡ganüació¡ y antuuectLú¡ 4l

Djemplo 11

Los números de las líneas (1, 2, 3, 4, 5) no son partc del c¿)digo; se usancomo referencia para explica¡ alguna sección en particular. Las palabras ennegritas están reservadas para el lenguaje de pr)gramacíón VHL)L; es&) es,tienen un signíficado cspecial pa¡a elp¡ograma; el diseñador asigna los otros

Aho¡a comencemos a analizar cl código línea por línea. Obsen'emos quela línea 1 inicía con dos guiones (--), los cuales indican .tue el lexto que estáa la dc¡echa es un comenrario cuyo objetivo es documenfar el F¡og¡ama, yaqüe el compilador ignora todos lcx comentarios. En la línea 2 se inicía laclecl¿r¡ación dc la entidad con la palabra rcservacla entity, scguida del identi.ffcador o nombrc de la entiLiad (sümador) y la palabra rese¡vada is. Los fuer-tos de entracla y salida (port) se declaran en las Lí¡reas 3 y 4, respectivaocnte

en este caso Lrs puerros dc enftada son A, B y Cín-, mientras que SU-MA y Cout representan Lrs puertos de salida. El tipo rle clato que cada puer-

to maneja es del tipo bit, lo cual rntlica que sólo pueden manej.rrse valores de'0'y '1' lógicos. R)¡ irltimo, cn la lirea 5 terminA la declaración rle entidall conla palabra reservada end, seguida del nombre de la enridad (sumador)

Debemos nofar que como cualquier lenguaje cle programacirin, VHDLsigue una sintaxis v una semántíca dent¡o del código, mismas que hay que

¡espctar. En esra entidad conviene hacer notar el uso de punto ) colna (, alfinaliza¡ rrna declaración y de dos puntos (J al asignar nombres a las ent¡a-das y salidas.

Decla¡c L¡ cnt(lad del cücuL¡o Lóeic., de la igura E2.1.

Fisu¡a 82.1

Solución

Cotro puerle observarse, las entradas y salidas del cjrcuito se encuen¡¡an de-limitadas por la línea pun.eada. En este caso, al, bl, a2' b2,... a0, b0 son lasentradas y F es la salida.

a3b3

azb2

DI

b0

Page 52: Manual VHDL

42 VHDLi El dre de p¡ogramar sisrems d8¡táles

La declaración de la entidad sería de la siguiente forma:

2345

- - Declaración de ]a ent idadBtr t i ty c i rcui to la

por!- | a3,b3,a2,b2,a1,b1,a0,b0: in biL;

F: ouE bi t ) ;

eü¿l c i rcui to;

Identiffcadores

Los identificadores son simplemente los nomb¡es o etiquetas que se usan pa-¡a ¡efe¡ir variables, corutantes, señales, procesos, etc. Pueden ser números,letras del alfabeto y guiones bajos ( _ ) que separen caracte¡es y no tienenuna ¡estricción en cuanto a su longitud. Todos los identificado¡es deben se,guir ciertas especificaciones o reglas para que se puedan compilar sin errores,mismas que aparecen en la tabla 2.1.

Regla Incorecto Correcto

El primer ca¡acter siempre es una leúa

matúlculs o minúscula.

El segundo caocter no puede ser un suión

Dos suio¡es juntos no son permiridos

Un idenriúcador no puede utilizar

S_4bits

Clear#8

suma4SUMA454 bi$

Clear 8

Ibbl¡ 2.1 Especiffcaciones pae La 4cnruh de iden¡iticadores.

VHDL cuenta con una lista de palabras resewadas que no pueden fun-ciona¡ como identi6cadores (vea el Aoéndice B).

| 2.4 Diseño de entidades mediante vectores

La entidad sumado¡ realizada en el ci¡cuito del listado 2.1, usa bits indivi-duales, los cuales sólo pueden representar dos valores lógicos (0 o l). De ma-nera general, en la práctíca se utilizan conjuntos (palabras) de varios bits; enVHDL las palabras binarias se conocen como vectores de bits, los cuales seconsideran un grupo yno como bits individuales. Como ejemplo considéren-se los vectores de 4 bits que se muestran a continuación:

= lA3, A2, A1, A0l= [B3, 82, 81, B0l= [s3, s2, s1, s0]

Page 53: Manual VHDL

VHDL: su o.sanización y arquirecrura 43

En la figura 2.4 se observa la entidad del sumador analizado antes, sóloque ahora las entradas A, B y la salida SUMA incorporan vectores de 4 bitsen sus puer¡os. Obsérvese cómo la entrada Ciny la salida Cout son de un bit.

^,ll: =[ **'-l+sumar3o];i;;;:l süme&r l*c"r

-Fisum 2.4 Enridad ¡ep¡esentada por vectores.

La manem de describir en VHDL una conffguración que utilice vectoresconsiste en la utilización de la sentencia bit_vector, mediante la cual se es-peciffcan los componentes de cada uno de los vecto¡es utilizados. La partedel código que se usa para declara¡ un vector dentro de los puertos es el si-guiente:

port (vector_A, vecto¡ B: in bit_vector (3 downto 0);vector SUMA: out bit vector (3 do¡rnto 0));

Esta decla¡ación deffne los vecto¡es (A, B y SUMA) con cuatro compo-nen¡es distribuidos en orden descendente por medio del comando'

3 downto 0 (3 hacia 0)

los cuales se agruparían de la siguiente manera.

vector_A(2) = A2

va¡or A(0) : A0

vec¡or B(l) = B3vector B(2) = 82vector_B(l) : Blvector B(0) = B0

vector SUMA(3) = 53vector_SUMA(2) : 52vector_SuMA(l) : 51vector SUMA(o) = S0

Una vez que se ha establecido el orden en que aparecerán los bits enun-ciados en cada vector, no se puede modificar, a menos que se utilice el co-mando to:

0 to 3 (0 hasta 3)

que indica el orden de aparición en sentido ascendente.

Describa en VHDL la entidad del ci¡cuito sumador representado en la figu-ra 2.4. Observe cómo la entrada Cin (Carry in) y la salida Cour (Carry out)se expresan de forma individual.

Page 54: Manual VHDL

44 VHDL. El¿'ir dc proc¡¿m¿r jre¡Ds J,g,ntes

Solución

Ejemplo 2.3 Decla¡e Ia enridad del ci¡cuito lógico most¡ado en la ligura del ejemplo 2.1,median¡e vectores,

Solución

12345

entity sunador ís9o!t (A,B: in bir vecror ( : dosl to 0);

c in: in bir ;Cou!: out b i r ;SLn' lA I out bir ,vecror€ do!¡nto 0));

Declaración de encidades medianr_e v€ctoresent i ty c i rcui to isport (a,b. tn biL vector(3 dow¡¡to 0);

Fr out. bar)) ;

2.4.1 Declaración de entidades mediante librerías y paquetes

Una pa¡te impo¡tante en la programación con VHDL radica en el uso de li.brerías y paquetes que permiten tleclarar y almacenar estructuras lógicas,seccionadas o completas que faciliran el diseño.

Una librería o biblioteca es un lugar al que se tiene acceso para utilizarla. unidale. de d¡,r¡o predeLermrnaJa. por el iabricanre de l¿ h.rrrmienru(paquete) y su función es agilizar el diseño. En VHDL se encuentran definidas dos lib¡erías llamadas ieee y work (Fig. 2.5). Como puede observane, enla librería ieee se encuentra el paquete std_logic_l164, mientras que en la li-brería wo¡k se hallan nume¡ic-s¡d, std-arirh y gatespkg.

E-& ie€.i 6@ 'roJoI*-trecE-& worlr

É @ nr¡ieÍc sdÉ'61 *¿ *m'É'@ srtespks6'@ ar¡

: ' - - - - -FtuÉ 2.5 L.n¡enLdo.le l¡s lib¡erí's ieee y work.

Page 55: Manual VHDL

VHDL: s! oryani:acntn y aquitectu¡a 45

2.4.2 Paqu.etel

En una librería también se permite almacenar el resultado de la compi_lación de un diseño, con el fin de utilizar en uno o varios programes. La li_brerla work es el lugar establecido donde se almacenan los progranas que

ei usuario va gene¡ando. Esta libreda se encuentra siemp¡e p¡esentc en l¡

cornpilación de un diseño y los diseños se guardan en clla mientras no scespecifQue otra. La carpeta ora mostrada en la figura 2.5 rcpresenta estasituación.

Un paquete es una unidad de diseño que permite desarrollar un pro-grama en VHDL de una manera ágil, debíclo a qu€ contiene ¡lgoriúnosp¡eestablecidos (sumadores, restadores, conladores, etc.) que ya iíenenoptimizado su comportamiento. Por esta ¡azón, el diseñador no necesitáca¡acte¡izar paso a paso una nueva unidad de diseño si ya se encuentra al-macenada en algún paquete en cuyo caso basta con llamarla y especifi-carla en el programa-. Por lo tanto, un paquete no es más que una unidadde diseño formada por declaraciones, programas, componentes y subprogra-mas, que incluyen los diversos ripos de datrx (bit, booleanc¡, sttl-lt¡gíc), cm-pleados en la p¡ogramación en VHDL y que suelen formar parte de lashe¡ramientas en sof tware,

Por último, cuando en el diseño se utíliza algún paquete es necesario lla-mar a la librerla que lo contiene. Para esto se utiliza la siguiente declaración:

lib¡ary ieee;

Lo anterior permite el uso de todos los componcntes incluidos en la li

brería ieee. En el caso de la librería de trabajo (work), su trso no tequíere ladeclaracit5n library, dado que la carpeta work siempre está prcsente al desa-¡rollar un diseño.

. El paquete std_logic_116,1 (estánda¡ lógico 1164) que se encuentraen la libre¡ía ieee contiene todos los tipos de dato que suelen em'plearse en VHDL (std_logic vector, std_logíc, enÍe ofros).

El acceso a la info¡mación contenide en un paquete es por mcdio de lasentencia use, seguida del nombre de la liblería y del p¡quetei respectiva-

usenombre libre¡ía.nomb¡e paquete.all;

por ejemplo:

use reee.stJ_l,,gic_l l64.al l ;

Page 56: Manual VHDL

46 VHDL: El a¡te de prccrana¡ sisremás digi¡ales

En este caso ieee es Ia librerla, std logic 1164 es el paquete y la palabrareservada all indica que se pueden usar todos los componentes almacenadosen el paquete.

El paquete numeric_std define funciones para reali"ar operacionesentre diferentes tipos de datos (sobrecargado);además, los tipos pue,den representarse con signo o sin éste (vea el Apéndice A).El paquete numeric_bit deffne tipos de datos binarios con signo o sinéste.El paquete std_arith define funciones y operadores aritméticos, comoigual (=), mayor que (>), menor que (<), entre orros (vea el Apén-dice A).

En lo sucesivo, se usarán a menudo las librerías y paquetes de los progra-mas desarrollados en el texto.

En la ffgura E2.4 se muestra el bloque representativo de un circuito multiplicador de 2 bits. La rnultiplicación de (X1, X0) y (Y1,Y0) producen la salida23,22,71,20.

Decla¡e la entidad del circuito utilizando la librería ieee y el paquere std._logic_r 1ó4.all.

zozl

z3

x0X1

YOY1

Figun 82.4

Solución

2

l

4

6

7

use ieee - srd_loqic_1164. al l ;ent l ty mul t ip l ica isPort ' (X0,¡1,Y0,Y1: ln std_1ogic;

23,Z2,ZI,Z0: oüt std togic) ;e l mult ip l ica;

Una arquitectura (architecture) se define como la estruccura que describe elfuncionamiento de una entidad, de tal forma que permita el desarrollo de losprocedimientos que se lleva¡án a cabo con el fin de que la entidad cumolala" condicrone. de funciunamrento des.ada,.

2.5 Arquitecturas

Page 57: Manual VHDL

VHDL: su o¡ganüación y arquitectu¡a 47

La gran ventaja que presenta VHDL para defini¡ una a¡quitectura radi,ca en la manera en que pueden describi¡se los diseños; es deci¡, mediante elalgoútmo de p¡ogramación empleado se puede descdbir desde el nivei decompuertas hasta sistemas complejos.

De manera general, Ios estilos de programación utilizados en el diseñode arquitecturas se clasiffcan como:

Estilo funcionalEstilo por flujo de darosEstilo est¡uctural

El nombre asignado a estos estilos no es importante, ya que es tarea deldiseñador escribir el comportamiento de un ci¡cuito utilizando uno u otro es-tilo que a su juicio le sea el más acertado.

2.5. I Descripción fu ncional

En la figura 2.6 se describe funcionalmente el circuito comparador Se t¡ata deuna descripción funcional porque expone la fo¡ma en que trabaja el sistema;es decir, las descripciones consideran la ¡elación que hay entre las entradas ylas salidas del circuito, sin importa¡ cómo esté o¡gani"ado en su inte¡ior Pa¡a

a:bentoncesc=la+bentoncesc=0

rcFigüra 2.6 Desc¡ipció¡ fu¡cionáL de u¡ cohpdador de Lgualdad de dos bits.

El código que rep¡esenta el ci¡cuito de la figura 2.6 se muestra en ell istado 2.2:

sl

s l

Page 58: Manual VHDL

48 VHDL: El alte de proer¡mar scicn¡s drstáles

I

23451l'1

I9101lI2L3

t677t8

EjenLplo de una descr ipcrón funcional

use ieee. sLd loqic_l164.atL;

entí ly comp is

bi t r ¡ecLor l 1 domto 0);

archi lecture . o i of p is

begin

conpara; process (a¡b)

i fa=bthen

c <='L ' ;

c<=,0, ;

eñd i f ,

€nd Proceaa compara;

enat funcional ;

Listádo 2.2 A¡tuLtcctura fu¡cionJ.le ün conla¡ado¡ de ieual¿¡.Ide 2 bi¡s.

Ntltese cómo la decla¡ación de la entidad (entity) se describe en las llneasde la 1 a la 7; el código crcupa de la línea 8 a la 18, donde se desarrolla el al-goritmo (architectu¡e) que describe el funcionamienro del comparador. Parainicia¡ Ia decla¡aciírn de la arquitectura (línea 8), es necesario delinir un nom-bre arbitrario con que se pueda identilicar -en nuestro caso el nombre asig,nado fue funcional- además de incluir la entidad con que se relaciona(comp). En la llnea 9 se puede observar el inicio (begin) de la sección dondese comienzan a decla¡ar los procesos que rigen el comportamiento del sistema.La declaración delproceso (llnea 10) se utiliza para la definición de algoritmosy comienza con una etiqueta opcional (en este caso compara), seguida de dospuntos O, Ia palabra reservada process y une ia lisra sensitiva (a y b), que ha-ce reférencia a las señales que determinan el funcionamiento del proceso.

Al seguir el análisis, puede notarse que de la llnea 12 a la l7 el procesose ejecuta mediante declaraciones secuenciales del tipo if,then.else (si,en-rcnces-si no). Esto se inte¡p¡era como sigue (línea 12): gi el valor de la señal¡r es igual al valor de la señal b, gqtrg¡gg¡'1'se asigna a c, g!39 (elsc)se asig-na un'0' (el símbolo <= se lee como "se asigna a"). Una vez que se ha de,finido el proceso, se termina con la palab¡a reser."'ada end process y de ma,nera opcional el nombre del p¡oceso (compara); de forma similar se añade laetiqueta (funcional) al terminar la arquitecru¡a en la línea 18.

Page 59: Manual VHDL

VHDLj s¡ o¡ganización y ¿rquirecíra 49

gmplo 2,5

Como se puede observar, la descipción funcional se basa princípalrnen-te en el uso de piocesos y de declanciones secuencialcs, las cuales permitenmodelar la función con rapidez.

Desc¡iba mediante declaraciones del tipo if.then.else el funcionamiento dela compuerta OR mostrada en la figura E2.5 con base en la tabla de verdad.

AD00o11011

01j

1

Figu.¡ E2.5

Solución

Como puede observarse, la declaración de la librería y el paquete se introdu-cen en las líneas 2 y 3, respectivamente. La declaracirln de la entidad se de-ffne entre las líneas 4 a 7 inclusive. Por idtimo, la arquitectuta se describe enlasl íneas8a17.

r - - DecLarac ión funcionaL

2 l ibrary ieee;

I uEe ieee. sLd Logic-1164.al l ;

4 etrtlly con_o¡ is

5 port ( a,b: in std-1oqic;ra fLt out sr ,d_loqic ) ;

I archl tecture funcional of com_or is

9 begln

10 Drocess (a, b) beqln

11 t f (a= 0 andb = 0 ) then

12 f1 <= 0 ;1 l eIEé

14 fL <= L ;

L6 enat process;

17 ef la l funcional ;

2.5.2 Descripción por flujo de datos

La descripción por flujo datostransfe¡i¡ de Llna señal a otra

indica la fo¡ma en que los datos se puedensin necesidad de declaraciones secuenciales

Page 60: Manual VHDL

50 VHDL: El a¡te d€ procranar sisremd d8Lrales

(if-then-eLse). Este r ipo de descripciones permite Jefinir el flujo que romaránlos daros enrre mólulos encargado5 de realizar operaciones. En este ripo dedescripción se pueden utiliza¡ dos formatos: mediante inst¡ucciones ;hen.else (cuando-si no) o por medio de ecuaciones booleanas.

a) Descripción por flujo de datos mediaote when else

A conrinu¿(ión se muesrra el códrgo del compar¿Jor de igualdad de dosorrsoescfl¡o antes (Fe. l .ó) Ndrese que la diferenci¿ enrre los l isrados 2.2y r. r rad¡ca en la el imin¿ción del proceso y en la descripcicin sin declara.ciones secuenciales (if.then-else).

1 --Ejmpto ate decLaración de la enradad de u conparador2 l ib¡ary ieee;3 uae ieee. srd,Logic_1164. at I ,4 entlty comp is5 port (a,b: t ¡ bi !_vecror (1 Clownto 0);6 c, our bir) ;

18 archit€ctur€ f_alaros of conp 1s9 bestn10 c <. ,1, wb€a (a = b) etse ,0, ; (asisna a C et vator11 de 1 cuando a=b si no vate 0)12 e¡d f-da!os;

Littado 2.3 A¡quitecr!¡a por nujo de daros.

Ejenplo 2.6

En VHDL se manejan dos dpos de declaraciones : secuenci4les y concu-tten¿es. Una declaración secuencial de la form" if.th..r,el"" .e h"llu É.r.1 li..

li9: 2,2 d:.,Ir: d:l.or3ceso. donJe.u ejecución debe seguir u" .rd;";;;

evrt¿r ta pérdid¿ de la lógrca descrira. En cambio. en un¿ Jeclaracrón concu-frente esto no es necesario, ya que no importa el orden en que se ejecutan.Tál es el caso del listado 2.3.

Con,ba.e en I¿ rabla de verdad y mediante l¿ declaracrón when.else, Je"cn_Da er ¡uncronamrento de la siguiente compuerta AND,

0001t0t l

0001

Ficüla 82.6

i--{-\,- --1 ,-/

Page 61: Manual VHDL

VHDL: so organiación y arquirectüra 5l

Solución

I - -Alsor i turo ur i l izando f lujo de da.os2 l lbrary ieee;3 uÉe ieee. srd_togic_1164. ¿I1;4 €rtlty 'com_and lE5 Dort ( a,b: in std_togic;6 f : ou! srd_togic) ;7 e¡r¿l con_and;8 archltecture compuerla of com_and lÉ9 begla10 f <= '1 ' $hétr (a = ,1, ¡ !d b = ,1, ) efse11 '0, ;'2 enal compu.r La;

b) Descripción por flujo de datos mediante ecuaciones booleanas

Otra fo¡ma de describir el circuito comparador de dos bits es mediante la ob-tención de sus ecuaciones booleanas ñgura 2.?. En el listado 2.4 se observaeste desa¡rollo.

aOb0

a1bl

Fi8üta 2.7 ¡) Enridad del @mpamdo¡ de dos bits. b) Compamdor de dos bit! reatüado conompueras,

El interior del circuito comparador de la ffgura 2,?a) puede representar_se po¡ medio de compuertas básicas [Fig. 2.?b)] y este circuito Duede descri-birse medianre la obtención de sus ecuacione" Lnoleanas.

Page 62: Manual VHDL

52 VHDL: EI ¡rre dc l]¡oetunDr sircnas dig¡ales

üstádo 2.4 A.quircctuade t,rm¡ de ftuj. de d¿t6 co¡srn,ido por me¿nj dcecu¡cnmes booteeu:.

La forma de flujo de datos en cualquiera de sus rep¡escn¡aciones descri_be el camino que los datos siguen al set transferidos de las operaciones efec-tuadas ent¡e las entradas a y b a la señal de salida c.

Ejemplo 2.7 Describa medianre ecuaciones booleanas el circuito most¡ado a contmuactón.

Fisu¡ 82.?

Solución

1 -- EtempLo de dcctaració. . te ta ent idad de un compar.a. lor2 libraly ie,-e;I use ieee. srd Loqjc_1164.aI1;4 entity comp le5 po!! 1 a,b: in bi t vecbor (L ¿lownlo 0) ;{ , c, out b i l j ) ;

8 architecture bocteana of conp is9 besin

1r c <= (a(r) Eo! b(1)l i and at0) :d¡or b(0)) ;l2 eñ¿l booleana;

-Decl araci ón nedianre ecuacio.¡s boo,enas

uae ieee. std- loqic t i64. a l I ;ent i ty ejemplo is

Pol t (a,b,c,d: i .n std_logic;

f : out srd I o l l ic ) ;

archi lecture conpaerras of e jenpto isbeqin

f <= {(a or t j ) r .no¡ (c anat orr ;end compue¡ras;

b

Page 63: Manual VHDL

VHDL: ñ organiz¡ción varqtriktur¡ 53

2.5.3 Descripción estructural

Como su nomh¡e indica, una descripción estructural basa su cornportamien-to cn modelcx lógicos establecidos (compuertas, sumadores, conteclores, etc.).Según vercmos más adclante, el usuario puede diseñar csras estructuras yguardarlas para su uso posre¡ior o toma¡las de ios paquetcs contenidos en iaslibre¡ías de diseño dcl software que se esté urilizrndo.

En la figura 2.8 se encuentra un esquema delcircuito comparadorde igual-dad cle 2 bits, el cual está fo¡mado por compuertas nor-exciusivas y una com-puerta AND.

Fisu¡a 2.8 Represenr.ció¡ €qucmári.a de u¡ cohparador de I bi¡s.

En nucstro caso, cada compuerra (modelo lirgico) se eDcuentra dent¡odel paquete gatespkg,ó del cual se coman para estructu¡ar el diseño. A su vez,este tipo de arquitecturas estándares se conoce como componentes, que alinterconectarse por medio de señales internas (x0, x1) permiten proponeruna solución. En VHDL esca conectividad se conoce como netlist? o listadode componentes.

Pa¡a iniciar la prog¡amación de una entidad de manera estructural, csneccsa¡io la descomposición lógica del diseño en pequeños submódulos (je_rarquizar), los cuales permiten analizar de manera práctica el ci¡cuito, ya quela función de entrada/salida es conocida. En nuestro ejemplo se conoce Iafunción r{e salida de las dos compue¡ras xnor, por lo que al unirlas a la com-puerta and, la salida c es el resultado de la operación and eiectuada en el in_terior a través de las señales x0 y xl (Fig. 2.8).

Es importante resaltar que una jerarquía en VHDL se reliete al procedi-miento de dividir en bloques y no a que un bloque tenga mayorjerarquía (peso)que ot¡o. Esta foma de dividir el problema hace de la descripción estructuraluna forma sencilla de programar En el contexto del diseño ltlgico esto es obser,vable cuando se anali"a por separado alguna sección de un sis¡ema integral.

b

Page 64: Manual VHDL

54 VHDI-: Elaite de proeram¡r sistemas dirihlej

En el listado 2.5 se muestra e1 círdigo del programa que representa al es-quema de la figura 2.8.

t l lbra: 'y ieee;

2 uae ieee.srd losic 1164.al1;

I enlily co¡1p is port (

4 a,b: in bi t ,wector (0 to 1),

5 c: out b j t ) ;

7 use woik. cor.pue.ta. a l l ,

E archl tecture estrucrural of comp is

9 s iEnal r : b i ' - vecior (0 !o 1);

1 i-r begin

Lt U0: xnor2 l )o l t EI) (a(0), b(0), : (0) ) ;12 I t I t xrrcr2 port r ¡ap (a(1), b( i ) , ) i (1)) ;

13 u2r and2 port rüap (x(0), x( i ) , c) ;

L4 enal estructural ;

Listado 2.5 D.scripción esrtucrúal de un conpaedor de ieualda.lJé 2 brs.

En el código se puede ver que en la entidad nada más se desc¡iben las en-tradas y salidas del circuito (a, b y c), según se ha venido haciendo (líneas 3a la 6). I-os componentes xnor y and no se declaran debido a que se encuen'tran en el paquete de compuerras (gatespkg), el cual a su vez está dent¡o dela librería de rrabajo (work),línea 7.

En la línea B se inicia la declaración de la arquitectura estructural. Elalgo¡itmo propuesto (líneas l1 a 13) describe la estructura de la siguienteforma: cada compuerta sc maneja como un bioque lógico independienre(conrponcnre) del diseño original, al cual se le asigna una variable tempo-ral (U0, Ul y U2); la salida de cada uno de estos bloques se maneja comouna señal línea 9, signal x (x0 y xl), las cuales se declaran dentro de laarquitecrura y no en la entídad, debido a que no represenran a una te¡mi-nal (pin) y sólo se utilizan pa¡a conectai bloques de manera interna a laentidad.

Por último, podemos observar que la compuerra and recibe las dos se-ñales provenientes de x (x0 y xl), ejecura la ope¡ación y asigna el resultadoa la salida c del cí¡cuito.

Page 65: Manual VHDL

VHDL: n, ors¿ntación r Útuireciura 55

ticoplo 2.8 Realice el programa corespondiente en VHDL para el circuiro mostrado enla ligura E2.8. Utilice descripción estructural.

FisuÉ D2.8

Solución

1ltblary ieee;

2 ua€ ieee. std logrc_1164.a1l ;

3 e¡tlty conp i6

4 porE( A,B,C : in srd_logic;5 F: out std_logic) ;

7 uae work. compuerta . a l l ;8 alchl t€cture estrucrura of comp lE9 slglral xr b i r_vecror (0 to 2)J10 begin

11 ü0: and2 port nap (8, C, x(0)) ;12 U1: and2 port ! ¡áD (c, A, x(1)) ;13 U2t ar1d2 port ¡ rap (A, B, x(2)) ;14 Ul : or3 gort na9 (r(0), x(1), x\2),15 end eslrucrura;

Comparación entre los estilos de diseño

El estilo de diseño urilizado en la prograrnación del circuito depende del dise-ñador y de la complejidad del proyecto. Por ejemplo, un diseño puede descri-birse por medio de ecuaciones booleanas, pero si es muy extenso quizá sea másapropiado emplear est¡uc¡u¡as jerárquicas para dividirlo; ahora bien, si se re-quiere diseñar un sistema cuyo funcionamiento dependa sólo de sus entradasy salidas, es conveniente utiliza¡ la descripción funcional, la cual presenta laventaja de requeri¡ menos instrucciones y el diseñador no necesita un cono-cimiento previo de cada componente del crcurto.

Page 66: Manual VHDL

56 VHDI. ElJdc de ¡rúeÍJm¡r \b¡ems d,c,tdtes

Ejercicios

Unidades basbas dc diseño

2.1 Describa los cinco tipos de unidades de diseño en VHL)L.2.2 Dete¡mine cuáles son las unidades de diseño necesarias para realizar trn

programa en VHDL.2.J Mencione las unidades de diseño primaúas y secundarias.

Declarucíót de entidades

2.4 Desc¡iba el signiffcado de una entidad y cuál es su palabra reservada.2.5 En la siguiente declaración de entidad indique:

library ieee;use ieee.std_logic_ 1 164.all;e¡tity seleccion i6 port (x: in srd,logic_vecror(0 to 3);fi out srd_logic);end seleccion;

a) El nombre de la entidadb) Los puertos de entradac) Los puertos de salidad) EI tipo de dato

2.6 Señale cuáles de los siguientes identificadores son co¡rectos o inco_rrectos, colocando en las l lneas de respuesta la letra,C'o,l ' , respec_tivamente.

llógico Desp_lazaN_lvel

S uma#

con trolPáginaRegistro2Suma _ Res _ta

2.7 Declare la entidad para la siguiente compuerta AND

+c

Page 67: Manual VHDL

VHDL su orca¡üación y arquitecr¡ra

2.8 Decla¡e la entidad para el siguiente ci¡cu1to.

2.9 Decla¡e la entidad para el circuito que se muestra en la 6gura Uti-

lice vecto¡es.

2.10 Decla¡e la entidad paÉ el siguiente citcuito que utiliza vectores

:)ct0:31

2.11 Descdba qué es una librería en VHDL.

2.12 tndique el signiñcado de la siguiente exp¡esión:use ieee.std-logic-l 164.all;

2.13 Declate la entidad del circuito multiplexor de 4:1 mostrado en Ia fi-

gura utilizando la libre¡ía: ieee.std-logic-l 164 all;

B+

EO

E2

s0 s1

2.14 Declare la entidad del multiplexor de 4:1 mostrado en la ffgura del

ejercicio 2.13, si cada entrada está formada por un vector de 4 bits'

2,15 Declare la entidad del multiplicador mostrado en el ejemplo 2 4

utilizando vectores y el paquete std-logic-l164

Page 68: Manual VHDL

58 VHDL, El a.re de p.ogramar sisren¡s ¡tisi¡ales

Atquítechnas

2.16 Mediante un estilo funcional, programe en VHDL el funcionamientode una lámpara para código Morse que encienda la luz al p¡esiona¡ unbotón y la apague al soltarlo.

2.1? Con un estilo funcional, programe en VHDL el funcionamiento delmotor de un ventilador en que ei moto¡ gire en un sentido al presionarel borón 'a' y en dirección contraria al oprimir el botón ,b'.

2.18 Con un esrilo por flujo de datos, programe en VHDL el funcionamienrode un panel en una lábrica de empaquetamiento de arro?. Este panelmuestra el contenido de 2 silos (a, b) que riene la fábrica pa¡a gu;rdarel arrozj un sensor detecta cuán llenos están, cuando se encuentran al1007o de su capacidad, envla un ,1 l(rgico', y cuando tienen 25% o me,nos envía un '0 lógico'; si en uno de estos silos disminuye el contenido a257o o menos, se prende una luz (c), si los dos sobrepasan ese límite seenciende otra luz (d) y suena una alarma (e).

2.19 Mediante el esdlo de p¡ogramación por flujo de daros, programe enVHDL el funcionamiento de un robot en una planta que espera a quese llene una tarima con cuarro cajas antes de llevarla a la bodega de al_macenamiento; para saber si la ta¡ima está llena cuen¡a con cuatrosensores, cada uno apunta a sendas cajas; si hay una caja marca un'1 lógico'; si falta, marca un'0 lógico'. Si falta alguna caja el robot nose puede i! cuando están las cuat¡o cajas el robot se lleva la tarima.

2.20 Con el estilo de programación por flujo de datos, programe en VHDLel funcionamiento de una caja de seguddad cuya apertura requiere lapresión simultánea de tres de cuatro botones (,a', ,b', ,c,y d'). Los bo,tones que se deben oprimir son; 'a', ,c' y 'd'.

2.21 Mediante el estilo de programación estructural, programe en VHDL elprobleura del apagador de escalera. La función para este problema esc = a b + áb, donde a es el interruptor inferior, b es el in;rruptor su-perior y c es el foco.

2.22 Con un estilo es¡ructural, programe en VHDL el funcionamiento ¡leun moto¡ que se enciende con la siguiente ecuación:

y=ab+cb+ac.

Page 69: Manual VHDL

VHDL: s! orsanización y a¡qui¡ec¡um 59

Bibüografía

Bergé J. M., Fonkua 4., Maginot S.: VHDL Desiger's Relerence. Kluwer Aca,demic Publisher, 1992.

Teres Ll., Tonoja Y, Olcoz S., Mllar E.: VHDL lzrgaje Esandar de DismoElectúnico. McGraw-Hill, 1998.

Skahill K.: VHDL /or programmable logic. Aúdison Wesley, 1996.Mazor S., Laangstraar P.: A Cuide ¡o VHDL. Kluwer Academic Publisher,

t993.Maxinez G. David, Alcalá lessica: Diseño de Sktemas Embebidos a traús del

IanguAje de Descripción en Haduare YHDL. XIX Congreso Intemacio-nal Académico de lngenie¡la Electrónica. México, 1997.

Kloos C., Cemy E.: Hardware Description Langwge and their aplkatiors. Spe,cification, modzüing uerificatbn and slnthcsis of microelectronic systems.Chapman & Hall, 199?.

IEEE The IEEE xandard VHDL Utnguage Reference M¿nrcI. IEEE-SId- 1076.1987. 1988.

Zainalabedin Navabi: Anallsis a .Modelingd Digitai Slsterns. McGraw-Hill,1988.

Ot¡as lectu¡as sob¡e el temaArmstrong James R., Oray E G.: S¡rttured lagic Desing wíth YHDL.

Prentice Hall, 1993.

Page 70: Manual VHDL

Capitulo 3

Diseño lógicocombinacional medianteVHDL

lntroducción

En csre capímlo se cliseñan los circuitos combinacionales más urilizados en eldiseño lógico a través dei lcnguaje de descripción cn hardware. Esto pcrmLte

int¡oduci¡ nuevos concepros, palabras reservadas, reglas, aigo¡itmos, ctc.,que muestran la potencia y profundidad del lenguaje VHDL.

El desarrollo ,.le cada una de las entídades de diseño descritas en esre ca-pítulo se puede optimízar mediante el uso adecuado dc las decla¡acrones se-cuenciales, concurrentes o ambas, urilizando en esta dcscripcia)n cualquíerade los tres tipos de arquitectura funcional, por flujo de daros y estructu-ral- vistos en el capítulo anterior Sin embargo y datla la filosoffa que qu.-

remos maneiar en este texlo, nos parece conveniente presentar soluclonesque incluyan nuevas declaraciones, nuevos tipos de datos y nuevos algorit-mos de análísis; es decir, no se pretende presentar la mejor opción de diseñcrpara rrn prohlema; por el contrario, se propone brindar la mayor cantidad desoluciones (modelos) que le permiran deducir y construir sus est¡ategiasde diseño para optinrizar sus resultados.

3.1 Programación de estructuras básicas mediante declaracionesconcurrentes

Como se mencionó antes, las declaraciones concurentes sc cncuentran lue-ra de la decla¡ación de un proceso

-v suelen usarsc cn las ,:lescripcioncs de flu-jo de daros y estructural. Esro sc debe a que en ura dcclaracirin concu¡rc¡rfeno importa el orden en que se escriban las señales, ya quc cl resultado ptra

determinada función scría el mismo.

Page 71: Manual VHDL

62 VHDL: El arre de p¡oclam¿r sisrem¡s diLl¡ales

En VHDL existen tres tipos de declaraciurcs concurrenres:

Declaraciones condicionales asignadas a una señal (when,else)Declaraciones concurrentes asignadas a señalesSelección de una señal (ürh.select.when)

3.1.1 Declaraciones condicionales asignadas a una señal (when.el¡e)

La declaración when.else se utiliza para asignar valores a una señal, de¡e¡mi-nando así la ejecución de una condición propia del diseño. para ejemplifica¡consideremos la entidad mostrada en la figura 3.1, cuyo funcionamiento sedeline en la rabla de ve¡dad.

tf-F?mol*,r"o"r

Figu6 l.r Decla¡aciones when.else.

La entidad se puede programar mediante decl¿ra¡ion¿s catdiciotules(when,else), debido a que este mdelo permite deÉnir paso a paso el com-portamiento del sistema, según se muestra en el listado j.1.

1- Ejenpto combinacionat básico2 ltb¡a:"y ieee;3 us€ ieee. std loqic_1164.aI I ;4 eüt i ty rabta is Dorr(5 a,b,c: lü std Loqic;6 f . our srd_toqic) ;

8 arcbttéctur€ ejempto of rabla is9 begin10 f <= ,1, l rhen (a=,0, a¿al b=,0, an¿t c=,0,11 ' \ ' nhéa (a=,0, a¡at b=,r , ánd c=,1,12 '1 ' l rhen (a=,1, a¡ ld b=,1, an¿t c=,0,13 ' l ' rher¡ (a=,1, a¡at b=,1, and c=,1,

15 elal e jenplo;

Listldo 3.1 Desúipción de la enridad hosrEda en la ¡abla de la úsura 1.1.

I00 000101001110 0101110r11

0010011

Page 72: Manual VHDL

Disóo lósi@ combinacionál medianre VHDL 63

,,.#ffi :Ii::T::l,ll;:i*"i[::Ji] jjl]5*il,"il:::1:ejecución inicial de una u otra condic.e.,r¡ado e. er mismo, ;.;:; l""#i',#'dJl.j*l.Fi:i q"l.!1.,',,fi1..,5::iJi$.;:iil *"Je ejecurar,e antes qu. r,.orr¿n,n, -ooó.:u"

"i,.*,, , .

La ventaja de la programación en VHDL en comparación con el diseño

i::t:i''i* ::'H:,:'li"'iTndo que Ia f'nción de sa'a, r,."a1"",. iir"-

l - - ob, * abc _ abc r abc

en el di"eño convencronal "e uri luarí¡

pue¡tas AND; en VHDL la soluci¿n fn lnve¡sores' compuertas OR y com-

:y,in**lrrh.n#;.,11:TiÍ'^",:.i;,¿Í*xl j::;::l0 asigna a " f"elvalorde I cuando a = 0yb = 0yc:0sinot t asigna a, , f , ,e lvalorde I cuando a = Orb = i i . = i " i " l12 asigna a,,f" el valor de t cuando a = l y b = i;; = ó;i;;

il ::ff;.i:i;:[:i:á""""0o" = oi¡ = ii. = i'i""

Operadores lógicosLos operadores iógicos más utilizados en Ia descripción de runciones boorea-l:: '.::'':*: ':^':' 1'j':':1"" 'ipo' a' a"á' uii--'i';;.üT:::;

., ro_ - l_a. operaciones que 5e efecrúen €n-

ñil:|ffi:fiXi:|. deben reali-zarse con d"t' o* ""r"'

l" .t'.,* i."-

"'t.T."j.T;'fflf.o;ser

compilados los operadores lógicos presentan el si-

1) Expresiones entre paréntesis2) Complementos3) Función AlrlD4) Función OR

Las operaciones xor y xnor son tri,.,.p,".o Á"d,,nt" r, "u,":.;;;;:i'.T',::;".1'ñfl .':Tli::L:1,.'-.. -

t-omo ejemplo del uso de operadore: lógicos en VHDL. ob.ervemos la "igulente comparación:

Page 73: Manual VHDL

& VHDL: El a.t€ de pro€rmar ¡i5te¡¡á5 dicitales

Ecuaciótr En VHDL

y=Mt(^d6üal@t. túd)

Una función F depende de cüatro va¡irabbs q C, B, A, que representan unnúmero binario, donde A es la variable menos signifrcativa. La frlnción Fadopta el valor de uno si el núqero formado por las cuat¡o va¡iables es infe-rior o igual a 7 y supe¡io¡ a 3. En caso conüa.io la función F es cero.

. Obtenga la tabla de ve¡dad de la función F y ¡ealice el p¡ograma corre!.pondíente en V,HDL (utilice estructura¡ del tipo when.elee y ope¡ado¡eslógicos).

Solución

P¡imero analizamos el e¡runciado y estnrc+urarnos la siguiente tabla de ve¡-dad segun las especifiqagiones indicadas.

DCBA

r:a+b.c+¿

000 000010.0 1 00 0.1 I010 0010 1.0110011 I100 010011010l01l110 0I l0 Il t l0l t I 1

00.00IIII00000000

A partir de la tabla anteri,or, se puede programar la función F utilizando de-claraciones condicionales when--else. El cÁligo VHDL es el siguiente:

Page 74: Manual VHDL

Disño lósico @mbi¡acio¡al mediante VHDL 65

2 1E ieee, std_Loqic_1164 . aU;3 atlty fucion iÉ Dort (

4 D,C,B,A: i ! std logic;

5 F: dt std 1.¡¡ ic) ;

7 alctlll*ElE a_füc of fuci@ is

9 F <= ',1', ¡it$ (a =

10 '1 ' ld8 (A =

11 '1 ' úbdr (a -

12 'f ió€dr (A =

13 'A' '

'0 ' ád c = '1 ' . !d

'0 ' .d c = '1 ' . td

'1 ' ¿¡¡ l C = '1 ' . ¡d

'1 ' árd C = '1 ' . !d

D=

D=

1.1.2 Declaraciones concurentes asignadas a señales

En este tipo de declaración encont¡aremos las funciones de salida mediantela ecuación booleana que describe el comportamiento de cada una de lascompue¡tas. Obsérvese que ahora el circuito de la ffgun 3.2 cuenta con tressalidas (x1, x2 y x3) en lugar de una.

Ftún 3.2 Ci¡cuito lógrco realü¡do con compuerra".

El programa correspondiente al circuito de la ligu¡a 3.2 se muestra en el lis-tado 3.2.

b

d

I

ex3

use ieee. std_]o9ic,1164. aI l ;ent t ty ]oqic ls Dort (

a,b,c,d,e, f : In std losic;xL,x2,x3. out std losic) ;

archit€ctur. booLeana of losic lg

x1 <= a *:ior b;x2 <= (((c ¿ntt d)or(a Eo! b) ) ¡ ¡ ¡d

((e xo¡ f )a: ld(c and d)) ) ;x3 <= (e Eo! f ) and (c ÁDdl d) ,

Listido 3.2 Decla¡acio¡es concurenres *imádd a señales.

Page 75: Manual VHDL

ú VHDL; El ¿ne de progr¡M¡ sisremás disirales

Dada la tabla de verdad mosrrada a conrinuación, halle las ecuaciones X. y.Z, de la forma suma de productos y p¡ográmelas en VHDL, utilüando decla-raciones concur¡entes asignadas a señales.

Solución

Las ecuaciones de la forma su¡na de productos para X, y y Z se muest¡an acontinuación:

l ) X=ABC +ABC+ABC+ABC2) Y=ÁBC +ABC+ABC3) z: ÁBe + ÁBc + ÁBC

Obsérvese aho¡a la forma de implementar estas ecuaciones po¡ medio deoperadores lógicos.

2 r¡. ieee. srd_loqic_1164 . aU;3 útIW c@ürer¡Ee 1. Doút (4 A,B.c¡ t¡ srüosic;5 X. ' t ,z, . r ¡ t st oqic) ;6 d @tr¡enre;7 ¡tcblt cb¡¡. a_conc of concursre t8 D.gt¡

10

12

!4

(El adEt Bdd c) a (ú adúr Bdc)cr (Dr a d B d c ) c (A d B d c) :

(Dt Add B d c) a (A dÉc B ¡ Í t c)c (a rd B ¡¡d ¡¡ot c):

(ú l Add Baú4 C) cr {d Ad B dd C)o! (Dot A.¡d B ¡ !d c) ;

Page 76: Manual VHDL

Diseño lósio combin¡cim¡l nediante VHDL TI

1.1.3 Selección de una ¡eñal (with,selec¿w{ren)

La declaración üth.select when se utiliza para asignar un valor a una señalcon base en el valo¡ de otra señal p¡eviamente seleccionada. Por ejemplo, enel listado correspondiente a la ffgura 3.3 se muestra el código que rep¡esentaa este tipo de declaración. Como puede observa¡se, el valor de la salida C de.pende de las señales de ent¡ada seleccionadas a(0) y a(l), de acuerdo con latabla de verdad correspondiente.

F'sD J.l Tabl. de verdad.

2 ul6 ieee.s|{losic_1164..rI;3 dtlty circuito 1. Dorl {4 a: t! std_1ogic_vector (1 ¿k'r6to 0);5 c:c|r¡ l std_logic)r

7 ücbl,!éctu!€ arq_ci¡ ol cl¡oito tg8 b€rrt¡9 Flth a elat10 c <= '1 ' vbe '00' ,11 '0 ' ¡ r !o -01",12 ' f i . !a '10",13 '0' ¡ü€ü otlr€¡.1;

Int.do 1.3 C diso VHDL coEespondiente a lá iabla de verdád de h ncúa 3.1.

Se requiere diseñar un cfucuito combinacional que detecte números primosde 4 bits. Reallce la tabla de verdad y elabore un programa que describa sufunción. Utilice instrucciones del tipo rvith - select - when.

I tl u"" de lá pdlabÉ '.senr.l¡

r*lH * érpli.á á debüern la rdón ñulripl.rore d..re (áprrulo.

Page 77: Manual VHDL

ln VHD!: ELa¡¿,1¡r ¡¡g¡¡¡-,.fr"sdistt¡¡r

SoluciónIr!rrt.r" l

'1.,,-dt ivr, iqri :r¿ rrr; , i , . , i i .¡ t , l l { i . i

la tabla de verdad que resu€lve la función es la siguientel, 1, , . . - i t , ) ) , . t . , t : j : i . ; - ,¿-r i , " . , ¡ . . , . , t , ,

. xo. Xl x2, .xJ l i .F : ,

0 0 ' ,¿l i00'

0 I 0 0100rol l l0 r I o l00 I . t I I II 0 0 oJo

. l00l l0| 0 1 010t0 l l l ll I 0 0loI I 0 , r , l . , t l r ,1 : . : : , , r1110l l t l

jI" l

2 u!. iqÉÉ.srd*Losici+164..!¡¡i .:!3 .útlty seleccion f. porr (

I b"C.E

4 x: l¡ srd_1oqic_\r6ito¡dq to,j3j;5 F: cr¡t std_loqiGi;,6 d seleccion;

? .¡c¡l.t/.éb¡r! {s.'ec Gl'serec.ior t¡

10.

12

9 r.lrh X ..I.ct

,_F '<: '1_' !ü- .0001.,

. ,, ' t. ?t" :p010., ., f iba "0011' ,

13 ' 1, tha "0101.,t : ) t \b : : , : : | , { . , r t r :na mt j r t \ . . : . n\) i : , ., r r , . r :15{. i , , ¡ j , " , , i , i ! . r14 raa i10l i . , . : . , . , r , , ;

. ie 16t, , . . : t ; r ' i . . , , : , j t t _raÁ .ü1El i ¡ j , r . - , : , . i , .I7

Page 78: Manual VHDL

Di*ño Lósico cmbi¡ácional mediani. VHDL

Rogramación de estructrras báslcas mediante declanciones secuenciales

Como ya se mencionó, las declaraciones secuenciales son aquellas en las queel orden que llevan puede tener un efecto signiffcativo en la lógica descrita.A dife¡encia de una declaración concurrente, una secuencial debe ejecutar-se en el otden enque aparece y formar parte de un proceso (process).

Decla¡ación if.then-else (si.entonces-si no). Esta declaración siNepara seleccionar una condición o condiciones basadas en el resultadode evaluaciones lógicas (fálso o verdadero). Por ejemplo, observemos queen la instrucción:

íf Lt condXirn ¿s c¡e¡ú¿ thenrcalig la operación l;

elserealizd la operación 2;

end if;

si (if) condrción se evalía como vetdadera, entonces (then) la instrucciónindica que se ejecutará l^ operaciúfi i. Por el contrario, si la condición seevalúa'como falsa (else) correrá la operac¡ón 2. La inst¡ucción que indica elíin de la decl¡ración es end if (ffn del si). Un ejemplo que ilust¡a este tipode declaraciénse encuentra en la figura 2.6 y por coúodidad se repite en la6gura 3.,f .

;:-¡::a::::::::-:.:'-ri.:-_'-:Figurá 3.4 Conpandor de istráüldd de dos bits.

ésta entidod de dfueño ¡e muest¡a en ¿lEl código correspondiente allstado 3.4.

Page 79: Manual VHDL

70 VHDL: Ll ane de prograrur s*em^ dLguale.

I -Ejenplo de declaración de 1a enrialad compaiado¡2 @ttw cd¡p 1EI Dort (a,b: h bir-vecró¡( 1 ddtro O);4 c: d¡ t b i r ) ;5 €üal co¡p;6 alcblt.ctüle fucio@l of cdip ts7 b€gl¡I compa¡a: Dle.ss (a,b)9 b6gln10 i fa=btbénLl c <=' ! ' ;12 .1sc13 c <=,0, ;14 €oat lf,15 @d Drocéós corFa¡a;16 @al fFcional;

kt¡do 3,4 Declanción *cueocial de un omparador de tüaldad de d6 hits.

Notemos cómo en este tipo de ejemplos sólo son necesarias dos condi.ciones por evaluar, pe¡o no en todos los diseños es asl. Por tanto, cuando serequieren más condiciones de control, se utiliza una nueva est¡uctura llama-da elsif (si no,si), la cual permite expandir y especiffcar prioridades dentrodeJ proceso. La sinraxis para esta operación e¡i

if ]a c¡ndXion I se crrmple thenrealizo opera.ión l;

elstf Ia cutdicim 2 se cwtbl¿ the¡realiZd operorilm 2;

elsereaLza operación 3;

end i4

la cual se interpreta como sigue: Si (if) la cryndiiht I es ve¡dadera, entonces(then) se ejecuta la operación I, si no-si (elsifl se evalúa la condrc¿rn 2 y si esverdadera entonces (then) se ejecuta la op€rdci.ín 2, si no (else) se ejecuta laoperación 3.

3.2.1 Comparador de magnitud de 4 bit$

La forma de utiliza¡ las declaraciones secuenciales se ilustra en el diseño deun comparador de dos números de 4 bits, ffgu¡a 3.5a), En este caso el siste-ma tiene tres salidas que indican cuando uno de los nrimeros es mayo¡ igual

Page 80: Manual VHDL

D!.rlo hsico comban¡cional m.diantc VHDL 7l

o menor que el ot¡o. Iá ffgu¡a 3.5b) reprcs.nta el mismo comparador de ma.nera simoliffcada utiliz¿ndo [a notación vecto¡ial.

Erur¡ 3J .) Cdnp¡¡¿do¡ dc I hrs b) CoDpa¡ador .¡prc!ádo con vectoni de { bit¡.

En el listado 3,5 s€ observa el algoritmo en VHDL que describe el fun-cionamiento del compa¡ador. En la knea 9 se muesfta la li¡ta s€nsitiva (a yb) del goceso (poce¡¡). En las lf¡reas l0 a l7 el proceso óe desenwelvemediante el análisis de las variables de la lista sensitivd. Sin mucho esñ¡er.zo puede verse qu€ si á = b, entoncB x to¡na el v"¡lor de I, de formasimilar se intuye el compo¡tamiento pa¡a a > b y a < b, incluyendo la de.cla¡ación el¡if.

e3¿[email protected]

1 1t¡ú¡ry ieee;2 u.. ieee, st{logic_1164, ¡11;3 Gtiüt' cc¡rp4 l. ¡,Gt (

4 a,b. ,.D st4-logic-veclor(3 ilmto 0),5 x,y, z: d¡ t s l { logic) ;5 o¿l ccntr4;7 !¡dhlt-q¡¡a arq-ccÍp od ccdI)4 l,8 b{L¡9 Drocaaa (a,b)

10 D.iÉ¡11 lf (a = b) tbúL2 x <= ' l ' i13 .L.11 (a > b) t!ó14 y <= ' l ' t15 al¡a16 z <- ' I ' i1'-7 d. lt¡18 d ¡rE .¡,19 d arq_ccrqg4,

I¡tüdo 3J D.$rip.ión d.l cmp.ndd d.1 bir¡ urilir¡ndo el ..tilo tutu¡máI.

Page 81: Manual VHDL

',' VFTDL: El a¡re de prcsntur si6tem¡s disirals

Dseñe tm comparador de dos números A y B, cada número formado por dosbits ( A1 A0 ) y ( Bl BO ) la salida del comparador también es de dos bits yestá ¡epresentada po¡ la variable Z ( Zl Z0 ) de tal forma que si:

A=BentoncesZ= 11A<BentoncesZ=01A>BentoncesZ:10

La tabla de verdad co¡respondiente a este comparador es la siguiente.

AI AO BI BO zr zo

Las ecuaciones lógicas teducidas media¡te un mapa de Karnaugh para21 y Z0 son las siguientes:

z l = AoAI +BO Ú + Al BO+AO BO+AO Blzo= A- At+BoBl + AOBI+ ÁO go+ ,ql gO

El circuito ¡ep¡esentativo de este comparador es el siguiente, ffgura E3.4.

81 -

0000000100r000110100010101100111100010011010r01t11001101l l10l1l1

l l01010ll0t l0 l0 ll0l0l l01t0l0l0l l

Fisu!¡ E3J D6cripción tunciónal d€ u¡ coftpaEdor de igualdad dc do, bits.

Page 82: Manual VHDL

Dielo lógk¡ @mbimcioml mediúte VHDL 13

La programación de este cornpaÉdor se muestral€ñ eld$ftn¡c'Bstado.

¡ füür¡r'i9€ét,.. ut . ieee. 9tC_l.asic_1164 . .ll ,

6tlty cdrq) Is DortA,B: h 'std_1oqic_ve¿ror (1 aot-to Ól;

' '' zt cúb srd_loqic_vecror (i &*n!o'o) ) ;

¡lchlt.ctrrf€ a_coFp of cc¡fp l.b.gfa

Proceú {A,B) b€gb

1! A =.B tbd

.Ir l fA<Btbe

z <' "0I" '

dal tf t.!rll DÉoct!r!,

Operado¡es relacion¡leÉ. Los operadores relaciorialés se usan pan evaluarla igualdad, desigualdad o la magnitud en unieixpresión. I-os operadores deigualdad y desigualdad ( = y /: ) se deffnen en todos los titlos de daros. I-osoperadores de magnitud (<,<:,> y >=) lo están sólo dentro del tipoescala¡. En ambos casos debe coruiderarse que el tamaño de los vectores enque se aplicarán dichos operadores debe ser igual. En la tabla 3.1 se mues-tran estos operadores y su signiffcado.

Opera¡tor Signtficádo

Igual

Diferenre

'. M.noio lgüal

Msyor

l'{a}bt o igual

T¡br¡ 3.r Op€radoG relacionálés.

Page 83: Manual VHDL

74 VHDL: El arre de p¡ogramár siltems digitales

3.2.2 Buffe¡¡ tri.estado

Los registros de tres estados (buffets tri,estado) tienen diversas aplicaciones,ya sea como salidas de sistemas (modo buffer) o como parte integral de uncircuito. En VHDL estos dispositivos son deffnidos a t¡avés de los valoresque manejan (0,1 y alta impedancia 'Z'). En la ligura 3.6 se observael diagrama corresÉondiente a este circuiro, y en el listado 3.ó el código quedescribe su funcionamiento.

"lllll-B- "",""ñwqiFtr€q:E1:fi¡! :trl :

Fisur¡ 3,6 Bufer rri.éstado.

ttl€ ieee. std_losic_1164. aU.;

€otlty tri_est la Dorr (

enable, dtraala: l¡ std_]ogic,

salida: out srd_logic);

á.r.ibl't ctr¡¡e arS_buffer of tri_esr l.b€si¡

pfocers (enable, entrada) b€st¡

ll en¿ble = '0' thñ

sal ida <- 'z ' ;

salida <= enlrada;

d ! . f ;

4*3!¡l¡'snitinsii¡ittt¡:!.r!:?¡{t$*W$,r.W;.qw::3ñtr1ir

Li.trdo 3.6 Desc¡ipción nediante valo¡es de alta imDedancia.

El listado anterio¡ se basa en un proceso, el cual se utiliza para describitlos valo¡es que tomará la salida del registro (buffer). En este proceso se ind!ca que cuando se conñrma el habilitado¡ del ci¡cuito (en¿bl¿), el valo¡ que se

Page 84: Manual VHDL

Di*ño ló8l@ conbiMctmal medi¡nre VHDL 7S

encuentra a la entrada del circuito se asigna a la sahda; si por el contrario nose confi¡ma en¿ü¡€, la salida del buffe¡ tomaná un valot de alta impedancia (Z) .El tipo std_logic sopotta este valot ----al igual que 0 y l-. A esto se debe que

en el diseño se preffera utilizar el esránda¡ std-logic-1164 y no el tipo bit, yaque el prirnero es más versátil al proveer valotes de d]!d imM¿trci.a y condicio'nes de no ¡tnpoft¿ G), los cuales no están considerados en el tipo bit.

3.2.3 Multiplexotes

los multiplexores se diseñan describiendo su comportamienro mediante [adecla¡ación üth-select whe¡ o ecuaciones booleanas

En la ffgura 3.?a) se obsewa que el multiplexo¡ dual tiene como entradade datos las va¡iables a, b, c y d, cada una de ellas representadas por dos bits(al, a0), (b1, b0), etc., las lfneas de selección (d de dos bits (sl y s0) y ta lí-nea de salida z (zl y z0).

En la ffgura 3.7b) se muestra un diagrama simpliÍicado que resalta la re.presentación mediante vectores de bits.

a1blctat1

aOboc0d0

a[l:01bt1:01bl1:01d[1:01

D)

Fisu¡¡ 3.? ¡) Multiplem de 4 birs. b) Multiplexor con vectoÉs.

En el listado 3.7 se muest¡a la desc¡ipción mediante with-select rvhen delmultiplexor dual de 2 x 4. En este caso la seial s detemina cuál de las cuatroseñales se asigna a la salida z. lrs valo¡es de s están dados como "00", "01" y

"10"; el término othe¡s (otros) especiffca cualquier combinación adicional quepudiera presentarse (que incluye el "11"), ya que esta variablese encuentra defrnida dentro del tipo std-logic-vecto¡ el cual contiene nueve

stl:01

s1 s0

Page 85: Manual VHDL

76 VHDL: El árte de p.ograma¡ sistehas dquales

valores posibles que la he¡ramienta de slntesis¿ reconoce como tipos lógicosestiánda¡es.

tlbr6!r' ieee;uEe ieee.srd toqic 1164.aI1;s¡llty nu is port{a,b,c,d: 1Í s. :d toqic wecror l l doMto 0t ;

s: h s ld losic vecror( l atotEto 0);Z: cu! srd_togic- vecLor(1dkwñ€o !) ;

a¡tttitecture arqnux4 ot nu l€

wit]¡ s select ]Z <= a t t t ¡e¡ ,0C,,

Ib üH "01", Ic ah@ " 10,, , Id sh€r¡ otherE; I

@d"q r¡ ¡

-LL6dol .? Vul ,p lcrorJc-. , . ,o. ,noe.t j , , . , . , . .wirh.refe.r .$hen. I

Tipos lógicos estándares ILo. funtione. e,¡ándare. de6nida. cn el lenguaJ. VHDL.e irearon lra .virar Iqrrr calr di.rr i f .urdor de.ufw¿re introduiera ju\ p¿.tucri. v rp,* je J¿lo. , l Ilenguaje. Por err¿ razdn el ln,r iru¡o Je lngenier,^ El.crnco", H".,rd";., ; . IIEEE. e"¡ablecro Je"de IaoT 1,,: e.r ind¿res srd Lgrc v vJ loE _r. i¡,r. que 1n .e Iv¡erun en un capllulu anreri, , Í |

tn . ada uno dc lo. e"ránJares .e Jetrnen cisr r, o op,. d. J"ro. . , ,n. * i Ido: (om,, rrpoi lo{¡r. { es¡andarer, los cu¿le..e p,reJen ul l¡-. j t ha.renJ. ref.. Irenria al pa.luere que lo. conr iene ren e¡rr c r.o srd /osc I lo4l. tn l¿ r¡bl¡ I1.2 .. mue.rran I,\ np,- lóei(o, e.rándrre. deliniJ* en VHD|

|;;

-v,b-," t."h- J" I,X V.tor roene de . ono, ido I

i I ii:::r: II Arr., nrpeJm. m I.Y v.rdhdeb,rde..onú,Jo

I'H r¡eoi t I

- Nu,mro,,a (Joni (¿, , .1.

Ir.bla 1.2 I..o. tosro" c., ,"0...

""*0., "" ., n;- I

. , , ; ; ; ; l - . - . ' -* . ,0 l r ldo¿.\hDL..r les. , - . . ¿.e. 1. ," , , . " -Jb. . , . . I

- ,1. . ; r ' 'n ' " ' ' ' " " ' ' " r r ' np. , " ' r , . - ' . . " r" . , ' . . , . ; : " . . r ; f i - .

II

Page 86: Manual VHDL

DFeño los(o.^mb,ra, h n" l mcJbnr ' VHDL 77

Como se puede apreciar, estos tipos de datos no tienen un signilicado evi,denre para el drseñal.'r, pero sí lo tienen en la compilación del programa. Porejemplo, cl cstándar no especifica alguna inte¡p¡etación de L y H, debido aque la mayoía de las herramientas no los soportan. bs valores metalógicosr('U', 'V', 'X', '-') carecen de sentido en la síntesis, pe¡o la he¡ramienta los usaen la simulación del código. Como se mencionó en la sección ante¡io¡, el usode 'Z' ent¡aña un valor de alta impedancia.

J.2.4 Descripción de multiplexores mediante ecuaciones booleanas

En el listado 1.8 se muestra una solución con ecuaciones booleanas para elmultiplexor dual de la figura 3.7.

ú€ ieee.std_loqic 1164.a] ] ;

e¡tlty mq Is porE (

a,b,c,d: ür std logic_vector( l akmlo 0);

s: i l l s td loqic vecror{1 dohto 0);z: or¡ ! std losic vector(1 d!o!r¡¡ !o 0)) ;

a¡chi!€cture ar.{nü of mü iE

z(1) <=(a(1) ai¡d aot(s(1)) and nol(s(0))) or(b(1) á!d not(s(1)) ard s(0)) c ' r(c (1) a¡d s (r) a¡¡d rct(s(0))) d(d(:L) ard s(1) ¿r¡d s(0)) ;

z(0) <=(a(0) ánd Áot(s( .1)) a¡¡d no!(s(01)) oü(b(0) á!d nol(s(1)) áíd s(0)) or(c( l ) ard s 11) €¡ ld rct(s(0))) c(d(0) ard s{1) ¿rd s( ! ) ) ;

Listado J.8 MüLtiplexo¡ ¿escnto con ectraciones boole¡¡as

I Un d¡r, meral,rcico comúre en lG valüe¡ de¡¡i,lú É¡rá €1 tLFo s.Llósi. los nRhs e$án conFni{16 en d

p¿quere e$án¡l¡r IEEE I164

Page 87: Manual VHDL

7t VHDL: El arte de prográMr si¡rma6 disira¡€s

3.2.5 Su¡radore¡

Dseño de un circuito medio sumadorPa¡a describir el fu¡rcionamiento de los ci¡cuitos sumado¡es es impo¡tanterecordar las reglas básicas de la adición.

0+0=0O+t=ll+0=ll+ l=10

. En el caso de la suma I + I = 10, el resultado ,,0.' representa el va-

lor cle la suma, mientras que el ,,1 " el valor del acarreo.Para obse¡var er¡ detalle el funcionamiento de un ci¡cuito medio suma-

dor, considere la suma de los números AyB mostrados en la tabla 3.3.

AB Suna Cout

000ll0

0II0

00or ( r + 1= r0)

Trl,l¡ 1.3 Tabla de ve¡dad de un .i¡c¡ito sul¡adoi

- _ La ecuación lógica que coÍespo_nde a la expresión Suma : Á B + AE esla tunción ¡ógica or-exclusiva A (9 B, miennas que la ecuación lógica delacar¡eo de salida es C.out = AB que corre.pond. á h .ompuen" logic. and.I-a realización ffsica de estas ecuaciones s€ muestra en la figu¡a 3.ga, en ellase p¡esenla el bloque lógico del medio sumador (MS) v la fieura l.gbrepresenta sU implantación mediante compuerus lógicas.

t-rPB'-*r!ffiF-

ftu¡. 3,8 ¡) D.grá¡¡a a bloques dc un ncdio sumádoq b) Mcdio surqdo¡ lósio.

Page 88: Manual VHDL

Di*ño lóBico mbir¡aciq'al ñcdiste VHDL 79

El programa en VHDL que representa este medio sumado¡ se muestraen el listado 3.9,

l!¡r.ttr ieee;

ut ieee. s !d-logic-1164 . .11 ;dtlly ¡Lsu¡ l. ¡,cEt (

A,a: l¡ sl{1osic,S:UMA, Cou!: d¡t sEd-loqic);

¡rchltactutr an_s,Jn oÉ n_sun La

b.q1¡SUMA<=ANB¡couE <= A t¡o B;

Urt¡do 3.9 Có¿iBo dé ún mdío 3úmado

Di¡eóo de m oumador completo

Un sumador completo (SC) a difercncia del circuito medio sumado¡ co¡rsideraun acarreo de entrada (Cin) tal y como se muesua en la ñgura 3.9a, el compor-tamiento de este sumado¡ se describe a t¡avés de su tabla de ve¡dad.

ABCIr au||l Coür

b)

000001010011100101110l1t

00101001100101l1

I¡t¡do 1.9 .) Sumadoi cornpl.to; b) Tablá d€ nrdád d.l mcdro !ürádor.

Page 89: Manual VHDL

t0 VHDL, El.dre de p¡osrama¡ si¡reM disitales

Ias ecuaciooes ¡educidas mediante un mapa de Kamaugh correspondíen-tes a la salida Suma y Cout se muestran a continrurción

Suma = Á BCin + AB Cin + A BCin + ABCinCout = AB +BCin + A Cin

Si "e manipulan las ecuaciones anreriores mediante álgebra booleanaobtenemos que la funcíón de Suma y Cout puede expresarse como:

]Suma = A@ B OCin Icout=AB+ (AOB)cin

Ile ¡ealización fl¡ica del ci¡cuíto ic basa en la utilización de compuertas I

or-exclusiva como se muesrra en Ia frgura ).10 a). C,omo puede oü*"o" Ien la fuura 3.10 b), dos ci¡cuito¡ medio sumadores pueden implementar un Isumador completo.

I

6-fiJ&t oo" I*¡{-.pp-s"" Ill

L!+d;lcout=AB+{a(EB,cn I

lL---atry.-:ffifia' II

a) Circuito sumador complero implemenrado por compuerras.

I

I

W;*lAB + (a @ B)cin I

b) Grcuito sumador complero implementado po¡ medio sumadores I

IFtsur r.r0 Cúluiros suú¡dore'.

II

Page 90: Manual VHDL

Deno lósico €ombi¡sidúl medianrc \aHDL 81

L¿ pfognmación r¡ VHDL del sumadorcompleto s€ presenta en el lisrado 3.10.

lllErrt¡ !eee;. u¡. teee , sr{1ogic_1164, a¡.1;

@tfty su,n l¡ Do!¿ {

A,B,Cin: .!¡ srd-1o€rict

S!Íra, cou!: d¡t std_logic);. .

alcültcctl¡¡! a_sun oú sull l|

b.cLu

Suna<=AürBüCln;

cour <= (A .d B) cr -(A:¡d B) aDd ain;c¿l a-sun,

Una& l.r0 Sumador Conpleto

Sumador Par¡lelo de 4 bits

Segrln lo anterio¡ para realizar un sumador pa¡alelo de 4 bits sólo se requie.¡e conecta¡ en iá3bada un ¿ircuito medio suhado¡ y t¡es sumado¡es comole-tos comó se muesfta en la ffeura 3.11

B1

AO

m

BI

A3

Page 91: Manual VHDL

u VHDL El ane de eoenmat ¡stemas dieirales

{ su vez, éste es un buen eiemDlo oara reali¡marel ma¡eio de señales (s¡g-nal) . En la f fgura ] .1 | "e ob,erva clmo fos acaneos de sal ida rC0. Ct y C2) seencuentran retroalimentados denEo del ciexremo asi€nado. En el listado 3.11 se ilustrrca'i:;fi11il::.1'J'"fi;il r- l

,"or:;ili:"ii"':".::|x'"'^"1 el"intervalo utrlizado dá"' a' "re"a "' ói' a,

fi ¡ffi :";:::*ü::l'^.*'rlff *".ffi il jl*l+:T:.,::,,:J;use ieee. srd-toqic-l164 _ á11,6¡rlty sLm is ¡Drr (A,B: i ¡ srü1ogic-vecror (0 ro 3);

s: cür srd_logic_vecto¡ (O to :);Cour: <¡¡t srd_Iogic);

¡rcbitéctule a¡qsllna of s1@ lsE.tsÉ1 c: srd_1ogic ve.ror(0 to 2);

s(0) <= A(0) ) io! B(o);c (0) <= Al0l a¡d E(o).s(1) <= (A(1) br B(1)) e i c(0);c( t ) <= t-A{1) a¡ l r B(1)) d (c(o)ü¿r(A(t)xor B(1))) ;s(2) <= (a(2) )<o. B(2)) , io¡ c(1r;c(2) <= (a(2) ald B(2)) d (c( :L)á¡r t (A(2)r<or B(2))) .s(3) <= la(3) br B(3)) ,<o( c(2);cout <= (a(3) Eúrar B(3) ) d (c(2)¡¡*r(A( l ) )@. B(3) )) .

Lirtado l.lt Descnpcion d< un sum¡dortje 4 birs.

srma

Operadores aritméticos. Como su nombre indica, los operadores aritmé-ticos permitm realúa¡ ope¡aciones del tipo a¡it,rrétiao, aoao aumr, aartu, arr,,,l-tiplicación, diüsión, cambios de signo, valor absolrto y conca#;;:';;

1T{rili*ilrxffij:{; ffiffi{ffiI::iResta

División

Multiplicación

Table 3.4 Opehdores aritméticos utilüadG en VHDL

Page 92: Manual VHDL

Diseño lócico conbinacio.al hedi¡nte VHDL 83

Como ejemplo, analicemos el diseÁo de un circuito sumador de 4 birsque no considera e¡ aca¡reo de saiida (listado 3.12).

libla¡t¡ ieee;

u8e reee.srd-tosic 1164.al l ,usé rork. srd ar i rh. aU;eorlty su-¡ is !b¡€ {a,B: !n std t . ¡ l ic vector(O !o l ) ;srfr: our std loqic_vecror(O to l) ) ;

end sm;

archlrecrure a.qsw of sLr isbesln

sma<=a+B;

etlit a¡qslm;

-Lbrado 3.12 Descripción de un sümado. nedianie fd_losic_vecto¡ yetp¿quere $d,rith.

En el lisrado 3.l Z se introdujo el paquere sr¿ dnrh, el cual _ corno ya semenclonó_ se encoent¡a en la libreúa de trabajo uork. Este paquete permi_te el uso de los operadores aritméticos con ope¡aciones ¡ealizadas encre arre-glos del tipo vd logrc oecror; es decir, dado lue denrro del paquete estándar(std_logic_1164) no están definidos los operadores aritméticos, es necesaiousar el paquete std arith.

El uso de los operadores existentes en VHDL, así como los tipos ¡le da-tos para los cuales se encuentran delinidos, se incluye en el apéndice B.

1.2.6 Decodiñcadores

La programación de circuitos decodificado¡es se basa en el uso de decla¡acio-nes que permiten establecer la relación entre un código binario aplicado a lasentradas del dispositivo y el nivel de salida obtenido.

En esra sección se p¡esenran dos tipos de decodificadores: el tlecodlficador BCD-decimal y el decodilicador de BCD a sier€ segmentosj ya queconsideramos que son dos de los más Lrtilizados en el diseño lOgico io-binacional.

Decodificado¡ BCD a decimal

En la ligura 3.12 podemos observar la entidad de diseño correspondiente a unciicuito decodiffcadoq el cualconvierte código BCD (código je binario a de_cimal) en uno de los diez dígiros decimales. por lo general estos dispositivos

Page 93: Manual VHDL

84 vHDL El r ' rc Jr p¡ ' r tumú {nd'r \ , l ,erJ l*

BCDDEC O12

13244586

78I

se coDocen como decodilicado¡es dc 4 a l0 llneas, ya que contíenen cuatro

Líncas de enrrada y 10 de salida.

x2+

Figúr¡ 3.12 Decdlificador de BCII a d.cimal.

El programa que describe el comporramicnro de la entidad de la figura

3.12 se encuent¡a cn el l istado 1.11.Cono se puede aprecia¡, el código correspondiente a esle circuilo sc ba-

sa en la ejecucirll de un proceso en quc se establecen las condiciones quc sc

evalúan para activar cada salida de acue¡do con eLvalor binario conespon.

diente. Para lines prácticos se asign(i a cada salida un nombre a fin de facili

tar su identificáción.A manera de ejernplo consideremos el valor de la entrada ¡ = 0010, l.r

cual corresponde al dígito decimal 2. Nótese cómo la condición que deter.

mina la ásignación del valor cvalúa prinero la condíción dc ir y sj Ia confir'ma, asigna a la salida c el valor correspondiente al tlígito l1ecímal 2.

Por otro lado, se puede ver que al inicio Llel proceso se ,:leclarirron todas

las sal idas con un valor in ic ial de'1 ' , esto iue con el f in de asegu¡á¡ que per-

manecieran desactivatlas cuando no estuvieran en evaluación.

b

d

Ishij

-Decodili.adof de tscD a decimal

use ieee.std losic 11rt4.a11;e¡rtlty deco is porE (: : i ¡ srd losrc vecto¡( l dkmlo r) ;

a,b, . : , . I ,e,r ,q,h, . ,1: at s:d loqrc) ;

archltecture a.qde.io of Ce.o iÉ

Drocess (x) besln

Cant¡núa

Page 94: Manual VHDL

Di¡irc lési.o dbi¡scio¡¡ m.di¡nt VHDL t5

f <= 'L ' . ;g <= ' l ' '

i <= ' \ ' ;

I f x - " ¡999 '

a <= ,0, ;

61á1f x - " 0001'b <= ,Q' j

éIsI f x = "0010'c <= '0 ' ;

crgt f x = "0011'd <= '0 ' i

élslf x = "0100'

. I r1! x = '0101"f <- ,0, i

€t31fx='0U0' !h!dg <= '4"

. ls l fx='0111"thloh <= ,0, ;

. l ! l f x = "1000' tb. ! ri <= ,0, ;

) <= 'A' ;cmat tf;

ündo 3.13 Descripctón de un de<.d¡Écadq ¡le BCD a decir,,¡I.

Dccodificador de BCD a display de siete segmentoe

En,la ffgura 3.13á) se lfiue¡üa un ci¡cuiro decodifrcado{, el cual aceDta códi.go 8CD en su6 enrrades y proporciona salidá¡ c¿paces de excitar un displayde siete segmentos que indica el d{giro decimal ;eleccionado. En la ÉeuraLI lb) se observa la disrribución de los segmentos denno del displav

a) b)

%Fi¡u 3.ll ¡) D(odú(¿do| BCD a *k *cmenro(. b) Cónfsuerón del

oúpray oe rete sementos,

Page 95: Manual VHDL

86 VHDL: El¡¡te de prosramar sistenas digi¡ales

Como se puede aprecia¡ la entidad del decodificadot cuenta con una en,trada llamada A, formada por cuatro bits (A0, A1, A2, A3), y siete salidas(a, b, c, d, e, f, g) activas en nivel bajo, las cuales corresponden a los segmen-tos del display. En la tabla 3.5 se indican los valores lógicos de salida corres-Dondientes a cada sesmento.

"lf' Códieo BCD

AO A1 A2 A3

Seemento del display'd

0I00100100

0I011t0I0I

000100001000100010010000000000

0 0000 0010 010001101000101011001111000l00l

01l ll010000000100000

Tabla 1,5 Valo.cs lósi.6 corespo¡die¡tes a c¡da secnento deldisFlay.

La función del prograrna cuyo código se exhibe en el listado 3.14 utilizadeclaraciones secuenciales del tipo case-when que, como se puede aprecia¡eiecutan un conjunto de instrucciones basadas en el valoi que pueda tomaruna señal. En nuest¡o ejemplo, se describe de qué manera se maneja el de-codificador de acuerdo con el valoi que toma la seéal A. Para lines ptácticosse decla¡aron todas las salidas como un solo vecto¡ de bits (identificado co-nro d); de esta forma se entiende que la salida a co¡responde al valo¡ d0, la,al valor dl, etc. Por otro lado, la palabra reservada othe$, como ya se indi-cír, deffne los valores metalógicos que puede tomar en la síntesis la salida d.

uBe ieee.std loqic 1164 . a l1;

entity deco iB port (

A: in std loqic-vector(l tlowr¡lo 0),

d: our std loqic vector (6 ¿l@to 0)) ;

alchitécEllre arqdeco of deco 1s

be!'1n

Page 96: Manual VHDL

Di\eño l .e i . ¡ combndcn nl lmedrank VHDL 87

Drocess (A) b€si!

gt¡eo '0000" => d

tdred "0001" => d

*tH "0010" => d

{i¡aD "0011" => d

itre¡ " 010 0" => d

l iben "0101" => d

¡{ü€d "0110" => d

$t¡eo "0111" => d

I¡'hed "1000" => d

{tH " 100:L ¿ => d

st¡an others => d

"0000001";"1001111";"0010010,, ;"0000110";"1001100";" 0100100 " ;"0r00000";" 0 0rt 1110 " ;, ,0000000";

"0000100";"L\1,1171" ;

Listado.l.r4 Uso de declaracion.s case.when.

En la instrucción case-when podemos observar el uso de ¿signacúcn¿s do,bies (=; ¿ < = ), las cuales permiten que una señal adopte un determinadovalor de acue¡do con el cumplimiento de una condición especificada. Po¡ejemplo, en nlrestro código (listado 3.14) estas inst¡ucciones se interp¡etan dela siguiente manera: cuando la señal A sea "0000", asigna a la señal d el valor"0000001"; cuando A = "0001", asigna a d el valor "1001t 11", etc. Cabe men-cionar que en la simulación del programa esta asignación se realiza simultánea.

1.2.? Codiffcadores

En esta sección se presenta la forma de programar un circuito codiñcador elcual como se observa en la ffgura 3.14, posee 10 entradas (cada una correspon-diente a un dígito decimal) y cuatro salidas para el código binario de ,{ bits BCD.

Enlradad0dl sálidad2 BCDd3

a0

a2a3

a5ao

a8a9

Ficura 3.r4 Codificador de decihál a BCD.

Page 97: Manual VHDL

88 VHDL, EI arte de procraM¡ ssiemas dquales

El programa que desc¡ibe al circuito de la figura 3.14, se muestra en ellistado 3.15. Como se puede ve¡ el puerto de entrada" a" se declara como unvector para indicar la nume¡ación decimal del 0 al 9, mientras que la salidabina¡ia se realiza a t¡avés del vector "d". Asimismo, observe que la progra-mación se realizó utílizando decla¡aciones del tipo if.then-elsif.

codi f icador de decinal a BcD

tlb!á.rr¡ ieee;use leee. std- loqic_1164. aU;enllty codif 15 Dort (

a: 1E l,¿tég€r ratgé 0 to 9;dj out std_1ogic wecror(l tlorn¡to 0));

archllectúe arqcodif of codif 16begh

Dloce6a (a)

b€si.!I fa=0th€nd <= "0000";

e]6i fa=1th@d <= " 0001";

els l fa=2rheDd <= '0010";

eldfa=3tbs¡d <= "0011";

el .s l fa=4¡h€¡¡d <= " 0100 " ;

e lst fa=5tbe¡¡d <= "0101";

e]Ei fa=6th€od <= "0110";

€lst fa=7t¡€¡¡d <= " 0111";

eL61!a=8the¿d <= "1000,;

d <= " 1001";€r:ll If;

€rid plocess;

end árqcoallt;

"r:':::1r.:":t::ñ=,:::::"":: =.:g::.-2:Li6tado 3.15 DiseÁo de un codidcador de decimal a binario.

Page 98: Manual VHDL

Diseñó lósico conbiná.ion¿l mediantc VHDL 89

EjerciciosDeclaracío¡es ctmcutentes

3.1 Mencione los tres tipos de declaraciones concurrentes en VHDL.3-2 Indique qué tipo de instrucciones se usan en las declaraciones condi-

cionales asignadas a una señal.3.3 Dé el orden de ejecución de los operadores lógicos en VHDL.J.4 En las siguientes expresiones propo¡cíone la expresi(')n equivalente en

VHDL.

a) X= (a+b) (cxord)b) F=(a + c+d) +(a.d.c) . (a+b)

c) Z = (w.x.y) * (x r"rtor y)

3.5 Mencione la principal diferencia ent¡e las declaraciones secuencialesy las declaraciones concurrenres,

3.6 Mencione qué tipo de instrucciones utilizan las declaraciones secuen-ciales.

3.7 Indique qué instrucción se utiliza cuando se requieren más condici(tnes de evaluación en un Proceso.

3.8 Mencione los operadores aritméticos que se utilizan en VHDL3.9 Indique en cuál librería y en qué paquete se encuent¡an los operado-

res de la pregunta 3.8.J.lO Un circuito comparador de 3 bits recibe dos números de 3 bits X :

X2, Xl, X0 y Z : 22, Zl, 20. Diseñe un prog¡ama en VHDL clueproduzca unasalidaF = l siysólosiX < Z.

3.11 Elabore un programa en VHDL que describa el funcionamiento delcircuito mostrado en la 6gura siguiente.

z

F2 - yz +t2

Page 99: Manual VHDL

q) VHDL: El ane de proc¡amr sisreña5 disirales

Decodítiadotu

3.tzSe requiete un programa en VHDL de un ci¡cuito decodiffcado¡ de 2a 4, regún se muestra en el siguiente diag¡ama. Utilice esüucturas deltipo ilthen.elsif.

Donde:EN = Ennada de habilitación delcúcuito (se acriva en bajo)A, B = Entradas del circuitoY[0:3] : 5¿¡¡¿u, ¿.1. .u,o

3.13 Con base eo el programa del lisrado 3.6 (Sec. 3.2.2) que describe unbuffer triestado, elabore un prog¡ama de un circuito t¡iestado octalcomo el de lao ffguras 3.13a) v 3.13b),

G¿

ENC

Y5

a) b)

Mlltiplemres

l.14 Diseñe un pro€Tarna de un mulriplexor de I bit con ocho entradascomo el que se ilust¡a en la 6gura siguiente. Implemente el algo¡itmocon base en la tabla de verdad adjunta.

lXX0000000000000t10l l0 l l01r

X0I0I0t0I

0lEO EO'El EI 'E2 E2'E3 ü'',E4 E4'

E6 E6'

b) rabra de vefdada) Multiplexor

Page 100: Manual VHDL

Dl¡c¡o heiao cor¡biEdtul mdiar¡tc VIIDL 91

3.15 Diseñe un progxamá en VHDL que produzc¡ un decodiftado¡ bi¡rá-rio de 2 x 4 como un circuito demultiplexor de cuaro salidas y unbit, Con¡idere la6 sigüientet especitcaciones en el diseño:

a) El ci¡cuito d€be rcne¡ doe,¡eñalcs pa¡a selecciona¡ una salida.b) El circuito 5ólo tend¡á una leñal de entr¿da.c) Impleit¡ente una q€ñal EN.a\BLE pera la habilitación del circuito.

Page 101: Manual VHDL

92 VHDL: El artc de prosr¡har sist€mas diq,rales

Bibüograffa

Fl.,vd L L.: Fr,nd.rmcn¡", d. Sr.¡cnr¡, D¡glaics. lrcnrice H¡l l . 1998. ]Tere, I 1., l¡rro1¡ )., Olco¿ q. v Vil lar t . : \ HDL Lrngrt4r L,knda.r Je t;¡e¡c, I

E/e, rrol lrcu. M.Cr¡w.Hrl l . tqqB IM:rrrrcz C. D.rid. Alc¡lá le*rca: Dire¡, di \rvem,. LmAeb¡¿, a ¡:qc, Jel I

L¡ng,aic tl¡ Des,,1p,inn tn Hardtt¿rc VHDL. XIX C,,ng¡..¡ ¡¡¡.rnr. ¡". Ir¿l Ac¿J.mrc,, de lngcnitr ia t lecrronita. Mexr.., . i997. I

Klo,* ( . , Cemv t.: H¡,Jü.r¡c Dercrpron L,onsuasc anJ hÍ alh..r, ,on, Sp, Ii t f tat ion. m,,Jcl lng. {.)r/r,dr¡un anJr}nrhe". o/,u,,,"/". ; , ,^i . , .rrk;,. IChdpmdn & H r l t , tooT I

'ott',tJ;1o,"tuu"t'"" rd vHDL Ln'guase Relcr' n" M¿nu,l lEtt srJ-r07o

l

^'".,ij;j]" N¡rab¡: A,,ai)v' r,¿ vod¿l,ne./D,e¡!¿/ ir,,en",. N4.ur¡w.Hi,.

Ion.,i*:

iJ;rtn De.iEn. '\ srrrJc ro \ HDL. N4,'rg.,n K",rffman rubti.her..

I

' "'';hli:Ti';,1.',",: 1?Í0""""'. D *rrprrur'rnd D''"r' Kr"'^*

|M:r,,r,\rLand.naar I- '. A er,Je ¡. VHDL. Kluuer l.,J.mt tubli.her..

IArm.rr,.ng I.R. v Ua¡l Grar F, S¡¡r,,¡r¡¡¿d Dcvgn u,rrh VHDL. p,enrt.. H,l l. I1997.

;[::lll:;"iill;i".:,*Sli.i."iÍ,oi;ü*." ." IRrnJol¡h H.: Ap¡lnar t,,n, oJVHD\ ¡o C,rcrir Dc.¡g¡. Kluucr Academr. lu.

I

III

I

Page 102: Manual VHDL

Capítulo 4

Diseño lógico secuencialCON VHDL

lntroducción

Los circuitos digitales que hemos manejado con anreric¡ri:lad han sido detipo combinacional; es decir, st)n circuitos que dependen por conpleto de losvaLores que se encuentran en sus entradas, en dete¡minado riempo. Si bicnun sistema secuencial puede rencr también uno o más elementos combina-cionales, la nrayoría de los sistemas que se encuentran en la práctica inclu-yen clementos cle memoria, los cuales requieren que el sistena se describa entérminos de /ridcd secuencid/.

En este capítulo se desc¡iben algunos de los circuitos secuenciales nrásutilizados en la práctica, como flip-flops, conradores, regisrros, etc., ademássc desarrolltn ejercicios para aprender la programación de citcuitos secuen-ciales en l()s que se integran los conceptos adquiridos en Lrs capítuLos ante-

4.1 Diseño lógico secuencial

Un sistema secuencial está formado por un circuiro combinacional y un ele-mento de memori¡ encargado de almacenar,:1e forma temporal Lr historia de1sístema.

Enesencia,la salida de unsistema seclrencial no sólo dependc delvalorpre-sente de ias enrradas, sino t¡nbién de la historia dcl sisterna, según se observaen la figura 4.1.

Page 103: Manual VHDL

94 VHDL: El arre de p¡og¡mar sirteúas digirates

Enlradas

Fi8uE 4.r Bflctura de un sisrena secuencial.

Básicamente hay dos tipos de sistemas secuenciales; slncronos v asfn_cronosi el comportamiento de lo. primeros se encuen¡ra sincronizaáo me-diante el pulso de reloj del sistema, mientras que el firncionamiento de lossistemas asíncronos depende del orden y momento en el cual se aDlican susseñales de entrada. por lo que no requieren un pulso de relo¡ paia sincro.mzaf sus acciones.

El elemento de memoria utilizado indistintamente en el diseño de los sisre,mas síncronos o a¡íncronos se conoce como flip.flop o celda binaria._ La caracrerGdca principal de un flip-flop es mantener o almacenar un bir

de ma¡era indeffnida hasta que a rravés de un pul.o o una señalcambie de es-tado. Ios flip-llops más conocidos son los tipos SR, JK, T y D. En la ñgura 4.2se presenta cada uno de estos elementos y la tabla de verdad que describe sucompo¡tamrento.

;W;W;@s Ro J KQ000011f

1

000110110001t011

000tt0t l000110

Fis¡n 4.2 Flip-flops y tabls de ve¡dad cáncte¡lstiq!.

Page 104: Manual VHDL

Diseño lóeico secuencial con VHDL 95

Es importante recordar el signilicado de la notación Q y Q(t+l):

Q = estado presente o actualQ,11 : estado fururo o siguiente

Por ejemplo, consideremos la tabla de verdad que describe el funciona,miento del flip-flop tipo D, mostrado en la ffgura 4.2c) y que se muestra denuevo en la figura {.3a).

D onrr0 l 00 1 01 0l 1

¡isu6 4.3 ¡) Diae¡ma y tablá de verd¿d del nip-nop D, b) llujo de inlo¡nación e¡ el dispositivo.

Cuando el valor de la entrada D es igual a 1, figura 4.3b), la salida Qrlradopta el valor de 1: Q,11 : I siempre y cuando se genere un pulso de re-loj. Es importante resakar que el valor actual en la entrada D es transfeddoa la salida Q,*t sin importar cuál sea el valor previo que haya tenido la sali-da Q en el estado presente.

En el diseño secuencial con VHDL las decla¡aciones lf-then-else sonlas más utilizadas; por ejemplo, el p¡ograma del listado 4.i usa estas decla.raciones.

La ejecución del proceso es sensible a los cambios en cll (pulso de reloj);esto es, cuando clh cambia de valor de una rransición de 0 a I (cl/< = 1), elvalor de D se asigna a Q y se conserva hasta que se genera un nuevo pulso,A la inversa, si cl/< no presenta dicha t¡ansición, el valot de Q se rnantieneigual. Esto puede observarse con cla¡idad en Ia simulación del circuiro,t e. 4.4.

Page 105: Manual VHDL

96 VHDL: El á¡te de procEm¡ ssremas digrtales

libraly ieee;use reee. std- losic_l l64. aI I ;enllty ffd ls Dolt (

Ir, clk: l¡ srd_Loqic;

Q: c|¡l sLd_losic) ;

dchllectule a¡qffd of ffd i!b€sln

9l@eas (crk) b€glnl f (crk,eveor ard ctk=,1,) tbe¡¡

Q.= D;stl 1f ;

€¡¡d ploc€ss;

€Dd arqf fd;

reLi.tsdo 4.1 Desüipción de un flip.dop dispa.ado por nanco ¡osirivo.

FrguÉ 4.4 Sinulación del ltip-flop D

Notemos que la salida Q toma el valor de la entrada D sólo cuando larransición del pulso de reloj es de O á I y se mantiene hasta que se ejecuta denuevo el cambio de valor de la ent¡ada cli¿.

Atributo 'event

En el lenguaje VHDL los at¡ibutos si¡ven para definir características que sepueden a.ociar con cualquier r ipo Je daro". oblero o enridade.. El atr iburo'eventt (evento) se urilLa para describir un hecho u ocu¡rencia de una señalen partlcular.

En el código del listado 4.1 podemos observar que la condición ifcl l<'event e" cirrta .ólo cuando ocurre un cambio de r alur; er deci¡ un suce-so (event) de la señal ci&.. Como se puede ap¡eciar, la declaración (if.then)no maneja la condición else, debido a que el compilador mantiene el valorde Q hasta que no exista un cambio de valor en la señal clJr.

I El:F6trcfo' in¡lica que É úab de u¡ jhibúo.

Page 106: Manual VHDL

Dúcño lósico secuencElcon VHDL 97

loplo,1.1

Para mayor información de Lrs arributos predelinidos en VHDL consul-te el apéndice C.

Escriba un programa que desc¡iba el funcionamiento de un fip-flop SR conbase en la siguiente rabla de verdad.

R 0 Q,+r

Figu6 E4.l TabL¡ de tuncionamient..

Solución

La tabla de verdad del flip-flop SR muestra que cuando la enrrada S esigual a I y la entrada R es igual a 0, la salida Q,*, toma valores lógicos de1. Po¡ otro lado, cuando S = 0 y R=1, la sal ida Qrrl = 0; en el casode que S y R sean ambas igual a I lírgico, la salida Q,*1 queda indete¡mi,nadai es decir, no es posible precisar su valor y éste puede adoptar el 0o 1 lógico.

Por úkimo, cuando no existe cambio en las entradas S y R --cs decir, sonigual a 0 , el valor de Q¡+l mantiene su estado actual Q.

Con base en el análisis anterior, el programa en VHDL puede realizarseurilizando instruccioncs condicionales y un nuevo ripo de datos: rdiores noimportd ('-'),los cuales permiten adoptar un valor de 0 o I lógico de mane-r:r indistinra (Lisrado 4.2).

0I

ItxX

0000010t0011100r0lr l0l l l

Page 107: Manual VHDL

98 VHDL: El arte de prosEmar sistems digitales

4.3 Registros

12

34567

89111011a2

1l141516L718

20zi2223242526

use ieee. std_losic_1164. all;

€otfty ffsr la port (

S,R,clk: I ¡ srd- logic;

árclrlt€cture a_ffsr of ffsr lBb.stnr,!oc€!! (c1k, s, R)

b.gi¡l! (c]k'evüt

'|rd clk = '1') t¡é¡r

1! (s = '0 'md R = '1 ' ) tb6n

Q <= ' ,0 ' ;

Qr <= '1 ' ;Glr f l (S = /1 ' rd R = /0/) tür¿

Qr <= '0 ' ;€I31f (S = '0 ' á¡d R = '0 ' ) th€6

Q<=0;Qr:r <= Qnt

Q <= ' - ' ;Or <= " ;

€od 1f;€¡ral If;

d ¿-f f*;

Li¡..¡lo {.2 Códiso VHDL de un resisÍo de 8 bir¡.

En la figuta 4.5 se ptesenta la est¡uctura de un registro de 8 bits con entmdey salida de datos en paralelo. El diseño es muy similar al flip-flop anterior, lediferencia radica en la utilización de vecto¡es de bits en lugar de un solo bit,como se observa en el listado 4.2.

DIo:I Iotn

Fisüi¡ 45 Résiltb púál.lo de 8 bits.

Page 108: Manual VHDL

Diseño lógrco s<uencial con VHDL

Ii¡úa.rl¡ iee€;

us€ ieee.std_loqic 1164. á11;€otlty reg fs Dort (

D: l ¡ srd loqic vector(o ro 7);c1k: i¡ std_loqic;

Q: ol¡r srd_toeric_vector ( 0 to 7)),

ar(üitectur€ arqreg of res IsbeCü¡

Dloce6g (crk) b.gtn' t f (c lk 'évEdt . ¡É ctk=,1,) th4

coat tf;

énd DEoce¡6;

@U.¡¡do 4.¿ Códigb VHDL de un

'.sLno de S brrs.

Escriba un programa de un regirtro de 4 bits, como el que se muestra enla ffgura E4.2. Realice el diseño uri l iz¿ndo insrruccion.. i f- th".r..1"" yP¡OCeSOS.

Íl$r'¡I,4.2

Solución

Como puede observarse en la tabla que desc¡ibe el comportamiento del cir-cuito, si CLR: O, las salidas Q adoptan el valor de 0; perosiCLR = 1, to-man el valo¡ de las entradas D0, Dl, D2 y D3,

Page 109: Manual VHDL

100 VHDL: El e¡t de pll8¡¡nar si6t nts diglrales

CI¡ D o QN

0I Dn

0Dn

IDn

El código del programa se observa en e[ siguient€ listado.

1 ll¡r¡¡:r ieee;2 ú¡ iee€. Ftd-1ogic-1164 . qLl t3 @ttty ¡eg4 la Doüt (

5 Cl,K, CLR: l¡ std-Losic;

7 @, ].€g4i

I .rdhlt.clr¡ñ 4_reg4 oÉ reg4 l¡9 b.gtn

D: !.¡ std-logic_vecror ( 3 abmto 0);

Q,Qr: lrcut sld_loqic_vecror(3 alrr.¡to 0)),

! ] . . , !

101.1L213't4151,6t7

' ... 181920

Daoc... (CLK, CLR) b.gl¡

l.t (clK'.vúr .d cLK ='1',)

1! (CriR -

'L. )tt6

Q<=D;

en <= nor e;.lr.

Q <= " 0000' '

Qr l <= "1111' ;o¿l 1f ;

' ' d 1r;d Dúo<rrtr,

21 6d 4-ráJ4r'

Urbdo EfJ

[ás variables s€nsitivas que determinan el componamiento delse encuentran dcnt¡o del proceso (CLR y CLK). Pa¡a transGrí¡ los datos deent¡ada hacia la salida es nece$do, 6egún se €rl¡r¡ro; generar unde reloj a través del attibuto event (ClK'revent and CLK = 'l')

Page 110: Manual VHDL

DFeño ló¡tico sccuenc¡ll con VHDL tol

-1.4 Contadores

Lrs contadores son entidades muy utilizadas en cl diseño lógico. La formausual para describirlos en VHDL es mediante operaciones de incremento,dec¡emento de datos o ambas.

Como ejemplo veamos la llgura 4.ó qlre representa un contador ascen-dente de 4 bits, así como el diagrama de lr€rnpos que muesua su runclona-miento.

CLK

o0Q1

Q2

o3

I .l ..1_) I I I _.1I J .l I J

Fieuá 4.6 Contador lrimrio de cuat¡o bits

Cabe mencionar que la presentación del diagrama de tiempos de esre cir,cuito tiene la finalidad de ilustrar el procedimiento que se sigue en la progra-mación, ),a que puede observa¡se con claridad el incremento que prescntanlas salidas cuando se aplica un pulso de reloj a la enrrada (listado 4.3).

uÉe ieee. s ld_1ogic 11rt4.a-11;use work.s: . i arrrh. a l1;4tiEy co.t4 ls IFrt (

c,k: ln srd lcsic;

$ 'n,o*, Trrno'óg¡co supedor r,€ xatapa

rtYÁ PROPTEDAD DELvav cENTRO DE TNFORMACtóN

Q: inou! std Loqi._vecror(l alosrto 0)l;

archlteclure arqccnL of cont4 is

pruess (c lk)

I f (c]k 'e l ,at árd c lk = ,1,) l t ¡enOr=Q+1;

erd if;eltt proceBB;

I istado 4.1 . . Jrg, q"e dr. . nb. , r . .1. ' ,J . . dr 4 b, . .

Page 111: Manual VHDL

102 \ H¡ l | , , , ( de ó, . .sr .h, , . . .km. . J.J, , ,F.

Cuando requerimos la retroalimenración de una se¡tal (e < = e+ 1),ya sea dentro o fuera de la entidad, utilizamos el modo inout (Vea se_cciónde Mo.los en Capítulr 2). En nuesrro caso ei puerro conespo;dienr;; ese mancja como tal, debido a quc la seiiai sc retroalimenta en ca.1a pulsJde reioj. Notemos también el uso del paquete std_arith que, ....r;;

".menclonó, permite usar el operador + con el tipo srd_iogic_vectorEl funcionamiento del contador se d"fir," b¿.i."..,ri" .r, un proceso,

en el cual se.llevan a cabo los eventos que determinan el comport;mientodel circuito. Al igual que en los otros programas, una transición de 0 a I efec_tuada por el prlso de reloj provoca que se ejecure el proceso, lo cual incre-ncnta en I ei valor asignado a la variable e. Cuando esra salida riene elvalor de 15 ("I 1 I I ") y si el pulso de reloj se sigue aplicando, el proerama em,piiza a L ontar nucr¡mrnre Jr 0.

Elabore un programa que desc¡iba el firncionamiento de un contador de 4bits. Realice en el diseño una señal de con¡¡ol (Up,iDown) que determineel sentido del conteo: ascendente o descendenre (Fig. E4.l).-

UP/DOWN ACCTON

o1 Cuenta descendent6

Figub E4.l Con¡ador binario de cuafto birs.

Solución

La señal de conrrol Up,Down permite delini si el conteo se realiza en senti_do ascendente o descendente, En nuestro caso, un cero aplicado a esta señaldete¡mina una cuenla ascendente: del 0 al 15. De e"ca forma, el funciona.miento d€l circuito quetla determinado por dos señaies: el pulso de reloj (clk)t la .eñ¡l Up Doq n. c,.n,o ,e ve cn el .rgu¡enLe pt,,grdma.

Page 112: Manual VHDL

D6eño lóeio Écuencial @n VHDL r03

ur€ reee.std_Loqic_1164..Il;us€ rcrk. s t{ari rh. llt ;€dtrry conrador 16 Dort (clk: l¡ srd_togic;

UP: l¡r srd_]oqic,

Q: trlc,r¡r s rd_1osic_vecror ( 3 dot nro 0) );

trqhltectu!€ a_contador of contaato¡ ¡.b€cla

Droc€s¡ (uP, ctk) begl-¿lf (clk, ev€at .¡dt ctk

l t ( rJP = ,0.) thd

0 <= 0+1;

= '1 ' ) tb! ! ¡

Q<=O1;6at If ;

.|D¡t tf ,cüll Droc..s;

éúat a_conractrcr;

%l¡t¡do 84.3.

Contado¡ con r€6et y carga en paralelo (load)

La entidad de díseno que aparece en la 6guta 4.?a) es un ejemplo de un cir-cuito contador súlcrono de 4 bits. Este contado¡ tiene varias caracterlsticasadicio¡ales respecto al anterior Su funcionamiento se encuentra predetermi_nado por los valores que se hallan en la tabla d. l" 0gu.a 4.?b). Cá_o

". p,r.-

de observa¡. esre contador posee las entradas ¿" -""a

¡"p 1, L."J, .JJel valor lógico que tengan en sus rerminales reali2arán ."il*qr"." ¿."üloprraciones reseñadas en la tabla. Note que la r.¡"1d" R.."r

". rcriu^.., n,i.vel alto de torma asfncronai por último, el circuito tiene cuatro ent¡adas enparalelo declaradas como P3, p2, pl v p0.

b)

P3 P2 P1 PO

Iisüra a.7 a) Conrador binano de cuarro b¡Lr. bl Tabt¿ de tun(ion¿m,enro

Page 113: Manual VHDL

104 \ dDL LI "¡ ,e -e loc¡ ' ¡ r " . em. o,s,r ' .

El propósito de describir este ejemplo radica en suhrayar el uso de variascondiciones, de tal mane¡a que no sca posible evaluar una instrucción si laG!condición(es) predecerminada(s) no se cumple(n). Po¡ ejemplo, observemo:el listado 4.4, donde la línca 11 presenta la lista sensitiva de las variables queinrervienen en el proceso (clk, ENP, LOAD, RESET). Nótcsc que no impor-ra el orden en que se declaran. En la línea 12 se indica que si RESET = Llas salidas Q roman el valor de 0; si no es igual a 1, se pueden evaluar las si'guientes condiciones (es importante resaltar que la primera condic 5n deteset RESET). En la línea 15 se observa cl proceso de habilirar una carga enparalelo, por lo que si LOAD = 0 y ENP es una con,.1ición de no importa('-') que puede romar el valor de 0 o 1 (según la tabla 4.7b), las salidas Qadoptarán el valor que se halle cn las enlradas P (Pj, P2, Pl, P0). Este ejern-plr muestra de forma didáctica el uso,.le la dcclaración elsif (si no-si).

2 usa i - - , -e. s id_Losi ._Ir64. al l ;

I use work. std a1lh.a1l ;.1 enlity co.t is Dort (

! ¡ : i ¡ std ]oqi . . ¡ccto¡(3 alomto 0);

6 clk, LO¡¡, ENF, L¡SE!: i¡ s]]d log1c;

t Q: ir¡oul s ld_loqic_vec tor (3 ¿I@to 0));

9 archileclre arLccnt of cont ls

:L:L Drocess (clk, RESET,-OArr, !.\l) beqrin

12 i f (REsET = ' ,1 ' , ) EIE

13 Q <= "0000";14 el8if (clk'evdt áfld clk = '1') ttte$

15 if lrOA¡ = 'l' ar¡d [\P = ' ') €]H

16 Q <- P;

1¡ elEi f ( I ¡AD . ' :L ' a¡d q. iP = ' l ' ) lhen

18 Q.=Q;

19 el8i f (LoA¡ = '1 ' ar id aNr = '1 ' ) then

?0 Q<=Q+1;

22 d i f ;

2l enal proc€ss,

2¿ eDd ar4conr;

Liotado 4.4 C¡ntador con reset, cnablc 1" carga en parateto.

Page 114: Manual VHDL

Diseño lóclco secuenc€l con VHDL 105

Diseño de sistemas secuenciales síncionos

Como ya se mencionó, la estructun de los sistemas secuenciales síncronosbasa su funcionamiento en los elementos de me¡noria conocidos comoflip.flops. La palabra sincronla se refiete a que cada uno de estos elemen-tos de memoria que interactúan en un sistema se encuentran conectadosa la misma señal de ¡eloj, de forma tal que sólo se producirá un cambio deestado en el sistema cuando ocu¡ra un flanco de disparo o un pulso en laseñal de reloj.

Existe una división en el diseño de los sistemas secuenciales que se refie-re al momento en que se producirá la salida del sistema.

En la estructu¡a de Mealy (Fig. 4.8) las señales de salida dependen tantodel estado en que se encuentra el sistema, como de la entrada que se apli-ca en dete¡minado momento.En la estructu¡a de Moore (Fig. 4.9) la señal de salida sólo depende delestado en que se encueüt¡a,

Figtn 4.a Arquitectu.a secuencial de MeaLn

Page 115: Manual VHDL

106 VHDL: El ene de pro8ra¡ur si.teM disital€s

FiSun 4.9 Aquirecrura secúe¡cial de Moore.

Un sistema secuencial se desarrolla a t¡avés de túia s€rie de pasos gene¡ali.zados que comprenden el enunciado del p¡oblema, diagrama de estados, tablade estados, asignación de estados, ecuaciones de entrada a lcs elementos de me-moria y diagrama elecuónico del cúcuito.

C,omo ejemplo consideremos el direño del siguíente si¡ter¡ra secuencial(Ftg, 4.10), en el cual se emite un pulso de salida 7 (Z=11 cuando en la lí,nea de entrada (X) se reciben cuatro unos en fo¡rna consecutiva: en casocontrario, la salida Z es igual a cero.

j- ñww,,.'-]-ry-'

l" "'*--lF¡sür. {.10 Derccror de secucncD.

Page 116: Manual VHDL

lr\eno oPrco secuencratcun v Ft rJL 107

Diagramas de estado

El uso de diagramas de estados en la lógica programable facilita de manerasignificativa la descdpción de un diseño secuencrat, ya que no es necesarioseguir la merodologla cradicional de diseño. En VHDL se puede utilizar unmudelo funcional en que.Jlo.e indrca Ia trdnsición que siguen 1.. esrad,sy las condiciones que controlarán el proceso.

De acue¡do con nuest¡o ejemplo (Fig. {.12), vemos que el sistema se_cuen.ial .e puede repre¡enrar por med¡o del dragrama de esrado. de la f ieu-r¿ 4.12á): arqur¡ectura Mealv. En e.re diagrama se adrierte que el si"remacuenrá con una señal de ent¡ada denominada X y una señal de salida Z. Enla figura {.12b) se muesrra la tabla de estados que describe el comportamien-to del ci¡cuito.

Cuando se está en el estado d0 y la se;al de ent¡ada X es ieual a uno. se,van:¿ al e,¡ado dl r Ia s¿Lda Z durante e.r¿ transicrón er rgual a cero; encaso contrario, cuando la entrada X es igual a cero, el ci¡cuito se mantieneen el estado d0 y la salida rambién es ce¡o (Fie. 4.l l).

olo

&.,-oFisura 4.11 Transició¡ de !n estado a oi¡o.

_ Con un poco de lógica se puede intui¡ el comportamiento del diagramade estados. Observe como sólo la secuencia de cuatro unos consecutivos pro-voca que la salida Z : 1.

Salidá ZX=0 X=1

0 0d2 0 0

d2 d2d3 0

a* --fErnada sátidá a,

Fku6 4.r2 a) Diac¡ana de Estádos. b) ]:lbla de esrados.

Page 117: Manual VHDL

108 VHDL: El ¡¡te de prrsranar s¡tem¿s disitalcs

Este diagrama se puede codificar con facilidad mediante una descripciónde ako nivel en VHDL. Esta dcscripción sgpone el uso de declaracione¡case.when las cuales,:leterminan, en un caso particular, el valor que tomaráel siguiente estado. Por oüo lado, la transición entre estados se reali:a pormedio dc declaracioncs if.then-else, de tal frrrma que éstas se encargan deestablecer la lógica que seguirá ei progama para realizar la asignación del es-tado.

Como primer paso en nuestro diseño, considcremos los esrados d0, dl.d2 y d3. Para poder representarlos en ctidigo VHDL, hay que definirlos den-tro de un tipo de datos enumerado¿ (apéndice C) mediante la declarac intype. Observemos la lorna en que se listan los identificadores de los estados.así corno las señales utilizadas para el estado actual (edo presente) y siguien.te (edo futu¡o),

EI ' l )e estados iE (d0, d1, d2,. j l ) ;

slgnal edo-s¡escnte, e.lo furu¡o : esrados;

El siguiente paso consiste en la declaración del proceso que definirá elcomportamiento ,:lel sistema. En éste debe considerarse que el edo futuroJ.¡L r 'de dcl val, r del cdú_pr..(nle v de la rnrr,da X. D. e.rn man.r, l , L-ta scnsitiva del proceso quedaría de la siguiente forma:

pfoccsol: Drocéss (edojr-ése¡:e, ¡)

Dentro del proceso se describe la tnnsición del edo-presente al edo_fu,turo. P¡imero se inícia con la decla¡aciirn case que especilica el primer esta-do que se va a evaluar +n nuestro caso consideremos que el análisis co.mienza en el estado d0 (when d0), donde la salida Z siempre es cero sinimporrar el valor de X. Si la entrada X es igual a 1 el estado futu¡o es dl; encaso contrario, es d0.

De este modo, la declaración del proceso quedaría de la siguiente manera:

p¡ocesol : Droceaa (édojresen.e, x) begincaae edojresente is

when d0 .> Z<= '0 ' ;i f x =,1, Eh€n

edo futuio <- dl ;

e lse

edo_fururo <= d0;

ead i . f ;

I S. ll.m¡n ripos enumcndos B)que e¡ elloss. ¡grupan o e¡un n¡ elemen¡or qrc Frrenecen ¡ un¡ijn.

Page 118: Manual VHDL

Discño lógico secuencialcon VHDL 109

Nótese que en cada cstado debe indicarse el valor de la salida (Z < = 0)Llcspués de la condición when, siemprc y cuando la variable Z no cambie devalor,

En el listado 4.5 se muestra la definici(rn completa r.1el código explicado.Como podemos observar, en el programa sc utilizan dos procesos. En el p¡i-rnero, procesol (línea ll) se describe la transición que sufren los estados ylas condiciones necesarias que dererminan ,:licha transíción. En el segundo,proceso2 (línea ,f2) se lleva a cabo,:1e mancra sínc¡ona la asignación del es-tado futuro al estado presente, de suerre que cuanrlo se aplica un pulso dereloj, el proceso se ejecuta.

En la línea 31 se descrihe la forma de progranrar la salida Z en el esta,Jod3 cuando ésta obtiene el valor de 0 o 1, según el valor de la entrada X.

1 l ibra?y ieee;2 uae i eee. std_1ósic 1164.al1;I €n!1ty diagrma Is Dort(4 c lk,X: ia std loqic;5 zt ouE sLd tosic) ;6 end diaqrana;? architecture arLdiagratra of diaqrana ls8 t t ¡pe estados i3 (d0, d1, d2, dl l ;9 aignal edojrese¡te, edc fur: ¡ó: cstados;10 begl¿11 p¡ocesoL: plocess ledo__rr¡ésenre, ¡ ) besin12 caEe edoj¡esenre is1l when d0 => ! <= ,0, ;

14 i f ¡ =,1 ' rhenL5 edc_ful üro <= d1,16 else17 edó_futuro <= d0;18 end i f ;19 when d1 -> z <='0 ;2A l t ¡=, 1, rhen21 edc futLro <= d2;)) e lae2l edo_ruturo <= c1;24 end i f ;25 when .12 -> Z <=' i ) ' ;26 t t x= , 1, rhea21 edo-futuro <= d3;28 eIEe29 edo_I[ tur o <= d0;l0 ead i f ;

Cont¡núa

Page 119: Manual VHDL

ll0 VHDL: El ane de prcsa¡n¿r stur.ma6 disirares

32333435 .1i .

l f x- ,1, t ! .aedo_futuro <= d0;

z <- '1, t

363'-7383940

edo_fuluro <= d3;z <= ,0, i

.¡d Lt;

a¡¿ Droc.a¡ procesol;

edoJresente <= edo_futuro;45 €¡¡al lf;46 .!tl ploc.is proceso2;47 .úd arq_diagla¡na;

I¡.¡do 4J Dis€fro de ún dias¡¡na de etedos.

Se requiere programar el diagtama de estados de la ffgum E4.4.

orc

47 .úd arq_diagla¡na;

l¡.¡do45 Dú€no dc ú d¡asr¡rq de 6.adc. ]I

Se requiere programar el diagtama de estados de la ffgum E4.4. I

IAI

f f i l\ t¡o\ \ l r /o I-"'- X)* |olo--'

I@l

r¡suE4.4 Diaanm d.6r¡dó.. I

ISolución I

IPor ejemplo. en la 6gura 84.4 notamos que el circuito pasa al estado o I con d Iprimer I de enrada y al estado q2 con el segundo. t-as salidas asociadas..rr,

".- |

¡as dos ennadas son 0, segrin se señala. La tercera enrada consecutiva de I ee-lnera un I en la salida y hace que el circuiro pas€ al estado ql. Una uez que se Iencuentra en q3, el cücuiro tt€rmanec€rá en este estado, emltiendo salidas 0. I

II

42 p¡oceso2: proc.ss (ct.k) b.g1¡43 l f (c lk ' .v!r¡ t and ctk-,1,) rb. !44

r/0 Á, 1/0 Á| 1/1

0/01t0

0/o0/0

Page 120: Manual VHDL

Diseño lósrco secue¡ciaL con VHDL lll

En lo que respecta a la programación en VHDL, este ejemplo sigue lamisma metodología que el ejercicio anterio¡ (Fig. {.12), la cual consiste enusa¡ estructu¡as case - when y tipo de datos enumerado, que en este casocontiene los cinco estados (q0, ql, q2, q3 y q4) que componen el diagrama.

El listado correspondiente al programa se encuen!¡a a continuación lis-tado 84.4.

use ieee. sLd losic 1164.¡ I I ;

entity diaq is Dort (

c lk, x: 1n std logic;

z: cr¡ l std lo€r ic) ;

4httectu!€ arq_dlag of diaq lg

t lDe estados lE (q0,q1,q2,q3,q4);

619¡rü edoj¡es, edo fut: estadós;

b€Ei-aprocesol. D¡océss (edolres,x)

cáse edo !r:es l€

dred q0 => z <= '0 ' ;i fx='0 ' thE¡

edo_fut <= q4;

edo_fuL <= q1;

€ntt 1f;

ld¡e¿ q1 => z <= '0 ' ;l tx='0 ' t ¡€d

edo fuL <= q4;

edo_fr¡t <= q2;

end íf;

i fx='0 ' tb€r¡

edo_fut <= q4;

edo_fu! <= q3;

e¡d lf;

ld l ¡en q3 => z <= '0 ' ;tf x = '0' Ér€r¡

b€gln

Continúa

Page 121: Manual VHDL

ll.2 VHDL, El arte de progamar sisteMs digirátes

edo_fur <= q3;

€1a.

edo-fur <= q3;

da l ! ;

ta l t6 q4 => z <= '0 ' ;l fx='0 ' t l r@

edo_fut <= q4;

.lÉé

edo-fut <- q1;

€oc tf;c6¿l cr5!,

€¡ll Dloceaa procesol;

proceso2: p¡océ¡E (crk) b.stE

lf (clk'event a¡d clk=' 1' ) t¡red

edojres <= edo_fut;

oat It j

.Dil ¡¡!bca¡. próceso2;

ll¡t¡do f,14.

Page 122: Manual VHDL

Dieilo lósico lduéncial cñ \4tDL llÍi

níF.FIop

4,1 Reaiice un progama en VHDL que describa el funcionamiento del flip-flop tipo JK. Auxllíese para su descripción con la tabla caracte¡lstica delFlip-Flop.

' t K Q Qt+r

I¡l

bla qEcrqf¡ricá del Fllp'Flop JK

,f.2. Reaüce un pmgrama en VHDL que describa el funcionamiento del flip.flop tipo T Auxliese para su descripción con la tabla caracterlstica delFlip.Flop.

Tabla cancterctica del Flip-Flop T

Re8úrrros

4,3. Diseñe un ¡egistro de 4 bits como el mostrado en la siguiente ffgura ycuyo fu¡rciona¡íiento re encuenÍa regulado por'la¡ señales de controlSO y 51, tal y como se muest¡a en la siguiente tablal

00o0IIII

' ,0 'I

oI

0

I

0I

Page 123: Manual VHDL

u4 VHDL: El arte de progElu ,i5t6M digitáls

ACCIONHold (Reten)Desplaramiento Izquierda SLl¡ad (Carea)Desplazamiento D€recha SR

CLK= RelojSO, Sl = Señales de control

D0,,,D3= Ent¡adas de datosRST= Reset,

Q0...Q3= Salida de datosL: Enrada se¡ie desplazamiento a la izquierdaR= Entrada serie desplazamiento a la derecha.

4.4 En la figura siguiente se muestta el esquema lógico de un registro de des-plazamieoto con ent¡ada serie/ paralelo y salida serie. Realice un prog¡&ma en VHDL que realice la misma función.

\ Enlrede d6 dálo6 sn parclelo

/

o ----------x,--

SO SI0001101l

Page 124: Manual VHDL

Dk'm l6grc Ruenc¡¡l.oñ VHDL l15

4.5 En la figura siguiente se muestra el esquema lógico de un regist¡o dedesplazamiento con salida en paralelo. La tabla de funcionamiento co.¡resfnndiente se muest a a continuación. Realice un programa enVHDL que realice la función del circurto.

Entráda

D rzqureda

Co ta¿.tras

4.6 Diseñe y progame un contador que reálice la secuencia 0,1,3,5 y repi-ta el ciclo. El ci¡cuito debe conta¡ con una señal de teset activo en ba-jo, que coloca las salidas Q en estado bajo.

Diseñe y programe un contador que realice la secuencia 0,1,2,3,4,5,6,7y repita el ciclo. El circuito debe contar con una señal de ¡eset activo enbajo, que coloca las salidas Q en esrado bajo.

4.7

Page 125: Manual VHDL

116 VHDL: El a¡te de prosmnar sisrehas disnales

4.8 Programe un ci¡cuito contador ascendente / descendente del 0 al 3mediante una señal de control X. Si X=0, el contador cuenta ascen-dente, si X= 1, el contador cuenta descendente.

4.9 Prograrne un ci¡cuito contador ascendente / descendente del 0 al 15mediante una señal de cont¡ol X- Si X :0. el contador cuenta ascen-dente; si X= 1, el contado¡ cuenta descendente.Existen dos señales de salida denominadas 21 v 22 que se activan de lla siguiente forma:Zl= 1 Cuando el contador se encuentra en los estados pares, en casocontrario Z1=0.22= I Cuando el contado¡ se encuentra en los estados impares, en ca-so cont¡a¡io Z2=0

{.10 En la siguiente ffgura se muestra el cronómetro digital configurado pa,ra contar del 0 al 99 mediante dos contadores SN 7493 conectados encascada. Realice un programa en VHDL que cuente del 0 al 99.

4.11 Realice un programa para un cronómetro que debe contar del 0 al 245y repita el ciclo.

Page 126: Manual VHDL

Dis.ño lósi@ seúéncial.ón VHDL l1g

Sisú¿m¿s sec¿encioles

4,12 Realice un programa que resuelva el siguiente diagrama de estados:

4.13 Realice un programa que resuelva el siguiente diagrama de estados:

4.14 En la ligura se muestra el c¡uce¡o de una ave¡rida cont¡olada a t¡avésde un semáfo¡o.

I

I

N

Il - lLgl

Is

___lE_-l

Page 127: Manual VHDL

118 VHDL, EL arte de procraM¡ sistemd dicitales

[¡s automóviles pueden circula¡ en la di¡ección NS o EO mediante la si-Sulente secuencia¡

f l- _ |lq,ql I*-_l--

@l Iñ;t Ir -P] |f f i i I

l-os tiempos de duración de las luces del semáforo.on, -¡o

20 ,"grrndor, u.rd. I20 segundos. ámbar 5

"egundos. IProponga el dragrama de e.tados co¡¡espondrenre y realice el progama I

:il i: ..:*,d.,.,, r" r,g,,,,i"r .¡ercicio de ra página,,, * "r. Imodificado ral v como ..e muesrra en la srguienre ligura.

IrmFr I=-=] jE== Ii - á * '

I-*9 I [E*

|Se requiere agiluar la entrada v .alida de vehrculo, por medio de

"enso- |res (S) que detecran la entrada o salida de ello". Ceneralmente 1l,;em;foro IEO siempre se encuentrd en verde \ en conrrapane e[ semáforo NS esrS eo

I

Page 128: Manual VHDL

Diseño lósico secüe¡cial conVHDL 119

rojo; cuando alguno de los sensores detecta la enr¡ada o salida del vehículoenvía una señal al sistema que gobierna el semáforo para que éste realice lasecuencia siguiente:

Nuevamente la duración de encendido de los focos del semáforo son: roja 20segundos, verde 20 segundos, ámbar 5 segundos.

Proponga el diagrama de estados correspondiente y realice el programadel sistema secuencial.

4.16 Programe un detector de secuencia que produce una salida Z= I sólocuando en la señal de entrada X se produce la siguiente secuencia X =I 1001 l .

4.1? P¡ograme un detecto¡ de secuencia cuya salida Z= 11011111 cuandoaplicamos a la entrada la secuencia X: 01101010.

4.18 Realice el programa correspondiente al sistema secuencial especiffcadoen la siguiente tabla.

Considere la siguiente asignación de estados:Aom 8001 c010 Dol l E 100

BO E/OA¡ C/1B/0 ctlc/0 E/0DA A/O

BCDE

Page 129: Manual VHDL

120 VHDL: El are de prósramar sifcmas dLettale¡

conrador as.enJente de.cendenre Je rru.: I bits. El circuito tiene una entrada deel contador cuenta ascendente , si X:1 elseudo aleatorios, tal y como se muestra e

Realice el programa de un contadormeros seudo aleato¡ios de I bits. Icon¡¡ol X .Cuando X=0 , el contadcontado¡ gene¡a núme¡os seudo alela tabla.

4.t9

X=0 X=l

01r t22l l344)55lóo1770

P¡ograme el sistema secuencialchadora de reíiescos, el valor drna acepta monedas de $5.00, $1moneda de diez o veinte pesos,Ide $5.00 pesos hasta completar

4.ZA

Pa¡a reali?ar este ptogramadas ni el sistema de se¡vicio

Programe exclusivamentrolar la secuencia descrita I

Page 130: Manual VHDL

Di.eñ¡ l .etr¡ . r , Fn( ' . ,1r{ \Hl ,L 12.

Bibliografía

TL. FloyLl: Fundamentos de sisternas drgrtales. Prentice Hall, 1998.Ll. Tlres; Y fb¡¡oja; S. Olcoz; E. Mllar: VHI)I- I-en¡uaje estánrür de discrir

ebc¡r¡i¡¡ico. McG¡arv-Hill, 1998.David G. Maxinez, Jessica Alc¿lá: Diserio de Sis¡a¡l¡ Ernbebidos a tr¿tés Je

Itnguaje de Descripción en H¿rdu,are VHDL. XIX Congreso Internacicrnal Académico de Ingenierí¡ Electrírnica. Móxico, 1997.

C. Klxrs, E. Cerny: Harduare Descriptiar Itnguage and their Apllcations. Specification, modellig t)erificLuiotr a ¿ s\nthesis o/ micnrelcctnrnic slstemsChapman&Hall, 1997.

IEEE: Tlw IEEE st¿n¡l¡trl VHDL Language Ret'erence Mon¡ral. IEEE- S rLl- 10761987, 1988.

Zainalabedin Navabi: Ana[srs and Modeling ry' Drgltai 51s¡ems. McGrar¡"Hill1988.

P J. Ashenden: TÁe Desígw's guide to VHDL. Morgan Kauflman Publisherslnc., 1995.

R. Lipsctt, C. Schaefe¡: VHDL Hardudre Descnption anl Design. KluweAcademic Publishers, 1989.

S. Mazo¡, P Langstraat: A ¡¡,.ide to YHDL, Klu$er Acadenic Publíshe¡s1993.

J.R. A¡msrrong -v E Gail firay: Strucared Design uirÁ VHDL. P¡enricc Hall1997.

K. Skahill: VHDL /rr Progra'nmable Logrc. Addison \fesley, 199ó.J. A. Bhasker: A VHDL P¡mer. Prentice Hell, 1992.H. Randolph: Appi¡cddons of VHDL n Circuit Desrgr. Kluwer Acaderni<

Püblisher

Page 131: Manual VHDL

Capítulo 5

Integración de entidadesen VHDL

Introducción

Hasta este momento hemos utilizado la programación en VHDL oara ¡lise-ñ¿r entid¡de. inJir idu r le. I bl, ,qrre. lógrc, N mínimo.l. con cl tnrc. , ,b1er, defamilia¡izario con los diversos esrilos de diseño y programación o amúos, asícomo con el uso y aplicación de las palabras rese¡vadas en VHDL.

Sin embargo, es obvio que esta he¡ramienta de diseño no fue creada paraeste 1in. Como vimos en el capírulo l, existen va¡ias.azones para su utiliza-ción; pe¡o quizá su verdadera fortaleza ¡adica en que pe¡mite integra¡ ,,siste_mas ,.1igitales" que conlienen una gran cantidad tle sr¡bsistemas el"ect¡ónicoscon el 1in de minimizar el tamaño de Ia aplicación. En prime¡a instancia, enun solo ci¡cuito integrado y si el problema es muy complejo, a través de unaserie sucesiva de circuicos programables, sea que se llamen CpLD (dispositivológico programable complejo) o FPGA (arreglos ,Je compuerta" programables

5.1 Esquema básico de integración de entidades

L^a integ¡ación de enridades puede realizarse mediante el diseño individualde cada bL4ue lógico a través de varios procesos rnrernos que postenormen-te puedeD uni¡se mediante un ptograma común. Otra posibilidad es observary analizar de manera global codo el sistema evaluando su comporramienro só_lo a tavés cle sus entrar{as y salidas. En ambos casos el resultaclo es satisfacto-rio; más bien, nuesrra tarea consiste en analizar las ventajas y desvenrajas queexisren en ambas alte¡na¡ivas de solución. En el primer caso, el inconvenien_te principal es el núme¡o excesivo de terminales utiliza¡jas en el dispositivo,debido a que al diseiiar enridades individuales, se terulrían que decla¡a¡ lasterminales de entrada salida de cada entidad (Fig 5.la).

Page 132: Manual VHDL

124 \/HDI-: !l aÍe de Fros¡¡n¡¡ s¡st€m¡s Jrgitatcs

En el seguntlo c:$o, cuando Lrbservamos cl sisfema como un todo (Fig5.1b) el nírrnero de termiralcs de ent¡ada y

"rlida dismin.,ye, p,r. lo que

nucstro trabajo es desarrollar no sólo un algorioro inrerno capa: ,:le interprc-tar el funci()namienao de cada bloque, sino tarnbién cómo conectar cada unc,de el los.

r - - -clk- I

IIlábcdet

b)

Figu6 5.1 a) Dis€ño nediant enriJades hdilid uales. b) Di$io median ¡e larel¡.ióD de entrad¡r/s¡tid¡s.

5.1.1 Progmmación de entidades individuales

Para ejemplificar las posibies diferencias, considcremos la programación dclco¡tador y decodificador de lR figura 5.1 a), medianre la prog¡amación de cn_tidades individuales, listado 5.1.

2

4

I

I

11

12

i4

lroerai¡ción oe elricrd.s inci,,dra1..

próe8E (ct i , . .se.)

If (c1k e€r ed .1k = 1 ) tb6q<=q+t;

r@ ie.e. s id_ I ogi.- L _,6:1 . a1l ;uÉe o¡k, st i_ar i r : \ . at1;4tity dlsp ¡il 1é ¡Flt 1c1i, r.seL: in srd- o!:ri.;d: i¡@t st.i 1.qic,/e.ro.i6 ¿t@Eoq: ijuÉ s:d 1._íi._ v..:or (] ¿lcMro

a¡chitetre ¿lq.1i:Dtal, otr displa'-besln

r l ; sa, :dns del de.odi f i .¿dr l0 l l ; sal i . ias dcl .óm¡dc¡

Page 133: Manual VHDL

InkijrJc,¡n de enüd{ló Ln \'HDL 125

15

It

L9

2,4

a7222)242\

2i2B2t

: l t)?,l ll4l5l6

i f ( reset = ldq

:11i1110;0:L:L0act;1:10110r ;i111001 ;r l r ¡J¡11 ;r 0 l l1 l i l ;10:L:L:111 ;1:110000;1i l11r r ;:L11ai l l l ;000c0ira;

Lidtado 5.1 IntesEcióndc un conraJo¡ r un decodilicad.tr en el misnu rr.srafrj.

Como podemos obsewar, en la declaración de la enridad (entiry) se hanasignado las terminales de entrada y salida correspondientes a cada bloque ló-gico de manera individual; así por ejemplo, el contador riene las salidas q[q3,q2, ql, qOl y el decodificarlor las salidas d(da, db, dc, dd, de, d{ dg). Note quela programación requiere dos procesos: ei p¡imero (líneas 11 a 19) describe elfuncionamiento del coorador; el segundo (líneas 2l a 35), el funcionamientodel decodilicado¿

5.1.2 Programación hediante relación entradas/salidas

Por ocro lar{o, en el listado 5.2 se programa el sistema de la 1igura 5.Ib.Observemos cómo nuevamente el programa supone dos p¡ocesos: el pri-

mero (llneas 11 a 19) p¡ograma el conrador y el segundo (líneas 20 a 34) des-cribe el decodilicador

Page 134: Manual VHDL

t7Á WIDL El art d! progtulM sürcrns d¡g¡talca

2 ül. ieée. std_1osic_1164..¡t;

3 u- $ork. 6rd_a¡i rh. .¡t ,4 Etltt¡ djspLdyl 1. Dort Is clk,lesetj t¡ sraLlosic;6 d: q¡r srd_1osic_vecto! (6 dmtÓ 0) ) ;

I .rcbllctutt a_disp1 cÉ displayl t.9 .19¡¡1 q: st oqic_vecror (3 (¡ñro u,,10 b.ad-E

11

12

15

16

7'/

19

20

2t

22

¡Eoc..r (clk,reset) b.el¡ú lclt'ew€nt úil clk = t ) tte

q<Eq+1;

1t ( teser = 1 cq=.1001.)q <= '0000 " ;

d t t ;

od lf ;

tEoc... (q) !.t|I¡c¡¡r¡. q Í

23 !üa '0000. => d <=24 t¡ld .0001 => d <=25 rü- i 'oo1o. => d <=26 ü .0011, => d <=27 tu 'O1OO. => d <=28 tüe '0101. => d <=29 tbo .0110" => d <=30 ,bú '0111, => d <=31 rüú '1000' => d <=32 tüc '1001' => d <=33 liba of¡.!¡

-> d <:

.1111110' ;

,0110000";

1101101";

' r111001,;

'0110011. ¡'10110U';

'1011111.;

'1110000 ;

'1110011";

'0000000,,33

34

35 od a-disp1,

l¡¡do 5¿ I¡t shción de la6 cnridad€s urili¡arüo s..,are5.

Page 135: Manual VHDL

In¡es¡ación de e¡tidadcs en VHDL 127

Sin embargo, a diferencia del programa anterior en éste sólo se asignan laste¡minales de salida conespondientes al decodi6cador (línea 6), el enlace inter-no entre el contador y este último se ¡ealiza mediante señales (sígnal) línea 9.

De nuevo, es importante mencionar que los dos prog¡amas son correctosy que la disponlbllidad de terminales y capacidad de inregración del disposi-tivo empleado dete¡minan la utilización de uno u otro. Por ejemplo, con elcircuito CPLD CY372i de Clpress (apéndice D), el primer programa(Llstado 5.1) urili¿a el9% de los recursos del dispositivo, mientras que el se-gundo (Listado 5.2) sólo utiliza 8 por ciento. Note la importancia del ahorrode recursos, que si bien en este caso no es significacivo, al momento de rea,lizar grandes diseños es importante, ya que perrnite aho¡ra¡ al máximo el es-pacio disponible dentro de los circuitos.

A continuación se p¡esenra la información que repo¡ta el porcentaje uti-lizado por los lisrados 5.1 y 5.2 compilados en el circuito CPLD CY372i deClpress Semiconductor.

Inf omtionr ¡ tacrocel l Ut iL izat ion.

Dedicaled inpuLs

CLock/Inputs

T/O Macrocel ls

Buried Mac¡ocells l

1 l

112

L1 32rJ l2

9 156

22 I 225

I

Reporte de Lbt¡.lo 5. I

Infomat ion: MacroceLl

Buried Macrocells

PIM Input Co¡nects

1

4

5

32

3232156 r

Reporté de Listado 5.2

B/225 =8%

Page 136: Manual VHDL

128 YHLrL t lJfr L l r F! s rmrr. ,sfen,¡ \ L,r , r .Lr

5.2 Inteeración de entidades básicas

Con base en la descripci-in clel apartado anrcrior y siguiendo con la filosofíacle este libro, cn ¡elación con la intcgración de entidades no utilizaremos téc-nica alguna de programación cspecíffc.r; por el contrario, propondremos va,rias opci()nes de solrrción "ncr necesa¡iamentc la mejor" con objeto de qucusted conozca r¡ás estrategias de programación y más palabras rcservadas porVHL)L. Esper¡mos que la cxpc¡iencia adquirida le permita en el futuro desa-rrollar soluciones novedosas e ingeniosas.

5.2.1 Programación de tres entidades individuales

En la figura 5.2 sc muest¡a un circuito lógico formado por los siguientes sub.sistemas: tcclado, codiflca,:lor, rcgistro, decodíficador de sietc segmentos ac.rivo cn bajo y un Jiqrlal de siere segrnentos. La linalidad de este sístema elec-rrtinico es observar cn el displal el número decimal equivalente al de la tecla

Ftu6 5.2 Sntema vsu¡lnado¡ dc un núDrerc e¡ u¡ displar

Para comenza¡ el usua¡io presi()na la recla decímal correspondiente alnúnero que se desea que aparezca cn el displd. El codilicador convie¡te encódigo BCD el e,quivalenrc al núme¡o decimal presionado; por ejemplo, si sep¡esiona la tecla correspondiente al número 8, el codificador enrregará cl va.lor BCD 1000, valor que luego se transfiere víl el registro hacia el dccodifi-cador de sicte segmentos para obse¡var en el display el valor del númerodecimal seleccionatlo.

Page 137: Manual VHDL

Intes.ación de entidades €n VHDL 129

La programación de estos módulos se muest¡a en el listado 5.J. Comopodemos observar, se ha hecho de mane¡a individual para catla bloque, porlo cual . . h¿n a. ignado rerminalc" para crda un,, de c l lo, t l ine," o, 7,8,b vl0l. EI bloqui Jel coJir icad,,r.e en(uenrra p¡,gramado Je la. Iure¿. l4 a la22, mienrras quc la programación del ¡egisrro se muestra en las líneas 24 ala 28; por úhimo, la parte del decodificado¡ va de la línea 29 a la 40.

1 liblary ieee;, l use reec.s.d loqic 1164.al l ;i ent l ty displayl i6 DorEf4 .1 i : in srd, loqi . , pulsó de ¡etol5 :€c1a: in std- loqi . vecror (C !o 8); boLón . tet re.La{ lorj c: il@E sr:d-toqi. '€c.or 1l ¿bú¡to O), sdlida .diiaicadof7 A; i¡4r sr.l-t.gic vecto¡ (l dl¡,.¡to 0) ; - oLraala reqisrrog Q: ilnr srd-1.Aic .Eror (l ddrto l]); sal idá ¡eqj sLro9 D: i¡4t sr{lqli. vecror (l atorEto Ol;, srrada decolifica.tor10 seq: dt std loqic r@ror {o ro 6)); salidas deccdiiicadorI I en¿l d i :p layl ,12 árcttitecture a dispi of disptayl 1s

1¿ c <= 0041 when recta = 10C00OCO1] else15 0010 vhen recla = 010OOO00| else16 0011 when recl¿ = 1]OIOl]1I l ]1]1] e lse1? 01a0 vhed recta = C0C1OCaO1] e16e18 0101 when recla = o0oo:Loool ] e lse19 C110 when recla = O(]O1]1] :L1]1]O et5e: l l 0 i l1 vheD :ccia = ! !C0!01!¡ e lse,rL 1004 when r .c a = iaooco¡t¡ e lse22 rAAT ;2a A.=a;24 Droceas (ct l i ,A, D) beqf in25 l i lc1k evenr and clk = :L ) rhen26 Q<=A;2.1 D.= Qj28 é^d í f ;29 ea6e D isl0 rhér 0000 => seq <= O1]01]OO1 ;l1 Nhéú 0001 => seq <= t0o1i1i ,12 qbé¡ 0010 => seq <= 00100:LC ,l l wh€n Coi1 => sel l <= t00011¡ ;1,1 whén 0:100 => seg <= 10011¡C ;l5 rher 0:10:L => se!:r <= 0:Ll ]1]10O ;:6 shén 0:110 > seq <= 1] :Ltr1] l ] l ]0 ;l? sbéD 0111 .> seg <. 0001110 ;38 rhéD :1000 > se!: r <- OOOOOOO ;l9 whér orhe¡s => sel l <= 1]0l ] :1100 ;40 eDd case;41 e¡d p.ocesa;

42 éúd a displ ;

üótado 5.1 Proetanacún del s$tena visuatúador de un ñúherc.

Page 138: Manual VHDL

130 VHDL: El arle de proeraúa! sisréms disirales

. El po¡centaje toral de recursos urilizados en eI CPLD Cyj72i cuando secompila el prog€ma e5 de 21%, segúü se observa en la información de lafizura 5.3.

rntor iacion: r4acro él l Jrr_-¿dt io. l

i Dedicaled Inpurs

I I /O Macrocel ls

Buried MacroceLls

I PIM Inpu! Comects

32

230

2Q

r3 l2 l

32)32t156¡

48/225=21

Fisur¡ 5,3 Porcentaje urilüádó en el CPLD CYI?2i.

. Las terminales utili:adas dent¡o del circuito se muest¡an en el sipuienrerepote de asignación de re¡minales proporcronadas po,

"l p.ágr"..

Varp R4 de Clpress Semiconducro¡ encargado de la compilación del dis,positivo (Fig.5.4).

Pactage: CY?C372L6óJC

123456'7

89

10111,21lI415161718192A2L2223

2425262¡?829303132333435363138394041424344

GND

d'¡D

clk

c_0

c2

vccGND

seg_3seg_2seq-5

tecla_rBV_1tecla_IBV_2G¡.JDtecla_IBv 3seg_0

d,3q,0

d_0

vcc

@FkuE 5.4 tuporte de asig¡ación de temitules det prosma lqao R4.

Page 139: Manual VHDL

Inte8nción de dtidades m VHDL 131

Programación de entidades indiüduales mediante acignación de señales

Desde otro ángulo, imaginemos que los bloques de la 6gura 5.2. se puedenver como un solo módulo (Fig. 5.5). En esta últirna ftguÁ se aprecia que lassalidas de una enridad funcionan como las entmd", ¿Joou.rr,id"i. ¡i" tor_ma de progtamación es posible siempe y cuando los bloques individuales serelacionen mediante señales inremas.

ftü.¡ 5.5 Sirtem visu¡tiradft de un númm utfiza¡do señales inreh6.

Otroasp€cto importante radica en que el circu¡to nada más reciLre comoenúedas la-s lmeas provenientes del reclado y como salidas las siete rermina-les del decodiffcador. Esta asignación es necesa¡ia debido a que el dispositivodebe co¡ecta$e a elementos periféiicos extemos, tal es el caso del teclado ydel d¡s¡l¿"v.

En eil¡stado_5.4 se muestra la p¡ogramación co¡respondiente a la inte_gración de los submódulos del ci¡cuito de la ffsura 5.5.

Page 140: Manual VHDL

r32 \aHDL: El arre d€ p¡osranar sisre¡b dicirales

1 l lbrary ieee;o_ oq. _ tb4.al l ;

j €nl i ty dispLay ls Dort{4 c lk: in srd_toqic;5 lecla: la srd_logic_vecror (O to S)deetaracaón6 se€r: our srd_logic vecror (o ro 6) ) deela¡ación

I a¡cbit€clure a disp o! display ts9 slgE¿l C: srd-logic_vecror € aüomro 0);10 si9É1 Q: srd_losic_vecror (l atoidnro 0);11L21lIA:1516L718I9202l2223242526272A2930313233343536

38.19404i424J4445

47

D!oce88 (c]k, tecLa, c, Q) besini f (c lk,evenr anal c lk = L ) lhed

endl lf ;l f ( tecla = 100000000") th€n

c <- ,0001 -

elsI f ( rec1a = '010000000 ) rhe¡c <= 0010";

€ls l f ( lec1a = 001000!00") rhenc <= 0011 ;

els i f ( tecla = 000100000 ) thedc <= 0100 ;

€1sIf ( tecla = 000010000, ) thenc <= ,0101,;

els l f ( recla = !00001000 ) €he¡!c <= 0110 ;

€ls l f ( recla = 000000100') rhenc <= 0:111' ;

€Is i f { tecLa = 0000000:t0 ) rbenc <= 1000 ;

c <= 1001,;e¡tl 1f;

vhen 0000, => seg <= '0000001whe¿ 0001 => ses <= 1001111wben 0010 => ses <= 0010010eben 0011, => ses <= 0000110wher '0100 => seg <= ,1001100

when 0101 => seg <= 0100100'wben 01.10 => seq <= 0100000vhen 0111 => seg <= 00011r!whea 1000 => ses <= 0000000,i ¡hen othe¡B => ses <= r l !01100,

48 enat a_disp;

Ustado 5.4 Codigo VHDL del sist€ma visualüador urili?a¡do seiiales internas.

Page 141: Manual VHDL

Intcsra.i¡,n dr cD¡tdadcs en VHDL r33

. Observe cómo en el programa (Lstado 5.4) sc integraron las entidarles ,.1el

codilicador, registro y decoclifcador de BCL) a siete scgmentos en una enticúl l r rnrda displa¡, r l ine: l i ' r I . ?) . N,.re Jui unh.menl. ,e h¡n J.c l , , r ¡J, , l . r ,cf l r1, l } del .re. l rJ. , {rr .L) v l , . .aLJ. l . que .e,.n. , r . ,n , ld¡/ ,1¿r J¡ . ¡cre..g.mcnl , \ { . .g1. LJ dr.cnp. ión uenrr , l . lc l pr , ,granra . . h¡ . r en c l c,nr l ro J.¡ . i tn. ,cr ' in dc r ,n, 'h lc. quc r l r , . r r , , l r lgrrrr 5. i . JonJe . . ¡ , . .Je , . r q.r . lo.nr¡r . luc\ !p tnterLUnccrrr , nor -neJro Je.u. .eñ"1. . Intcrn: l ¡ {C y e), l rnc. . .9 y 10. Er la línea 14 se asipa a e el valor de la señal C (e i ='Ci."".I.. r, ede-cl he. ho cift 'euent an¿ clk = . l ' . qrre nr cr . ino 1., h¿l_i l i¡¿L inn Jcl rt .er\r.r. . l-n lr l inrJ l5 .c ol-.crr ¡ qu. par¡ un v., lor dc¡.rmrnrdo Jc e.e a, r i .va un bit dcl vector de salida denoninado seg, que Fresenta la int'ormación enel displdl de siete segmentos.

, Al igual que en el caso anterior, el aho¡¡o de tc¡mi¡rales es signilicativo;

además, la utilización del circuito sc reduce de manera stgnificariva de 21 a9 por ciento, según se puede observa¡ en el a¡.hiro d" ..iort. g"r,.r".i , fo.el compilador WARP R4 (Fis.5.6).

In iom¿r, ,n. M¿L¡uLel Uül f ,JrLo,r

: redi .¿rcd rnpLts

I , /O rac.ocel ts

Buri ed ¡4a.rocetts

I)i¡/l tnlut ccmects

,1

)

l

32i2

156

22 / 22a 9 :

Fkum 5.6 A¡ch¡'o de reporie dcl comFilador .ltARp R4.

Ejernplo 5.1 Realice la prog¡amacjón en VHDL para inregrar los lliferentes bloques lógi-cos mosrrados en la figura E5.l.

Descripción. El circuito de la figura 85.1 sc utili?a para automatizar el pro-ceso Lle empaquetamiento de mLrñecas .1e porcelana. C.".td.; q;; i;"muñecas se plreden empaquetar en forma individual o con un már.i,no dcnueve unidades por paquete.

En un inicio eloperador selecciona mediante el reclado decimal la can_tidad de piezas que va a empaquetai Conro sabemos, estc número decimalse convie¡te a código BCD a úavés del ci¡cuito codificaclor y luego pasamediante el registro hacia el rlecoclificador d" ,i.t" ,.gr,.r",rro. p"." i,o*.n.

Page 142: Manual VHDL

lJ4 VHJI | | r ,e -e p, . - , 'm¡r

j . 'emr J,üi : t ( .

en el ¿¡pl¿) el valor dcl número seleccionado. Observe que este valor bi-ná¡io es a su vez la ent¡ada A (A0, A1, A2, A3) del circuito comparadorde cuatro bits.

@ql It@@.@tE>b.@l '"

Ftun E5.l ,{utomrrüación delsisten¡ en¡aquetador de muñecas.

Después de seleccionar la cantidad de muñecas por empaqueta¡ el ope-rador presiona el botr'rn de inicio, que desencadena üna serie de accione:controladas por el bloque denominado controlarlor Comienza con una seÁalde salida llamada Reset, que coloca al contador binario en el estado de ce¡o.enseguida envía la señal dc a¡ranque (Encendido) al motor que controla elavance de la banda transpo¡tado¡a.

Ahora bien, cada vez que una dc las muñecas colocadas sobre la bandat¡ansportadora pasa po¡ el "sensor" (Fig. E5.2), se origina un impulso eléct¡i.co (pulso) que hace que ei contado¡ aumente en uno su conreo. Esre proce-dimiento conrinúa incrernenrando al contado¡ en una unidad, hasta e.monenro en que la cifra acrual del contador (número B) es igual al 'húmerrA" dentro del comparador (A = B), con lo cual este último envía un¿señal al bloque controlador que detiene la banda transporcadora (Apagado,y marca el ffn del proceso.

de Banda fransporadora

Page 143: Manual VHDL

Intqnct¡r.r d. cntid¡dcícn VHDL

5t

egwEn la Águta E5.3 se obsen"a el intercambio de señales que se rcaliza en_

tre el controlador y cada uno de lo! bloques lógicos del sistema.

nr¡'¡ E ¿ S¡rena de !.@do dc múii6s.

I

I"*"vcc

Fl¡ñ 853 Intckción d. las stñ.la d.l.6trdtui

Solució¡

La programación correspondiente a esta integració¡r se rnuestra en el llstado¿).1

Page 144: Manual VHDL

136 VHDL; El a¡te de proeumr sistehas disrrales

1

2l456

89LO11I21l1415).61?18192Q21-2223242526272A29303l32l3l4l5363?38l94A4I424l

4546

48

ü€e ieee. srd- loqic_1164. el t ;rJs work.srd ar i th.a¡. l ;ert¡ty conlrof ls trrt (

c]k, reser: lf¡ srd_toEic;Do¡on: j¡ std Loqic_vecror (O !o 8);

sensor: ú srd toqic;deco: out srd_Logic-vector (0 b 6);

conpara: d¡! std_togic) ;

ariLttéctu€ a_conrrol 0f control issioláf Q,c,R: srd_loqic_vecto. (3 atounb 0);

b€Einprocesol: process (senso¡, reset, q) b€gl¡

i! (sensor'evenr ¿td sensor = I ) lbd

i f0

Q <= 0000^;O <= e + 1; cuenra

{resel = 1de= 1001 ) rhd<= 0000 ;

proceso2: Droc€ss (clk,boron, R) besiDif (c1k'evenr a¡d ctk = 1 ) t¡€n

R <= c; ca¡sa eL regist.oi ! (boron = 10000!000 ) Ebe¡r

c <= , 0001 , ;

elst! (boron = 010000000 ) ¿heüc <= 0010 , .

e ls l f (boron = 001000000,) theoc <= ^0011' ;

e ls l f (boron = '000100000 ) rh@c <= 0100 ;

elatf (boton = 000010000 ) lheoc <= '0101 ;

€ls i f (boron = '000001000 ) th€nc <= 0:L 10 .

el8i t (boton " 000000100 ) lben

c <= 0111 .els l f (boron = 000000010 ) Eb€¡¡

c <= 1000,.

¡tt¡er 0001deco <= 0000001.;decó <= 10 o:L 111 ;

Page 145: Manual VHDL

I¡tesEción dé enridads ñ VHDL 131

4950515253

55

5',15859606162

tib€n 0010"rihél¡ 0011Íh€{r 0100wh€d '0101*hed'0110'rlr€o 0111"¡ihen 1000.ribd others

€oil case ;

,0010010 ;'0000110 ;'1001100' ;0100100;0100000;0001111 ;

,0000000 ;"0001100,;

conpara <= I vt leQ=Rela€ 0;

@d arcbrltecture;

Li¡t¡¡lo E!t.l ProciaMción del sistema visualüadG oc un numero.

Obsewe que la integración de las entidades que forman el sistema sóloprecisó dos p¡ocesos: el p¡imero (línea 14), para desc¡ibi¡ el conteo de lasmuñecas mediante la variable de entrada ¡ensor; el segundo (línea 23), paraintegar el codiÉcador, registro y decodilicador de siete segmentos. Vea tam-bién que en la llnea 60 se asigna a la variable compara el valor de uno cuan-do el valor bina¡io de los vecto¡es Q y R son iguales. Esto con objeto dedetener la banda transportadora.

Conside¡emos aho¡a el caso en que el número máximo de muñecas que sepuede empaquetar pasó de 9 a 99 (Fig. E5,4).

w

Fige Es.4 Sistena üsualúador del 0 al 99-

Page 146: Manual VHDL

138 VHDL: El á.¡e de p¡os¡an¿r shtemas diSi¡ates

,Al igual que- en el ejemplo anterior, el operador selecciona mediante el

::.]:.!_.-t.ir"¡ ta canridad de muñe.¿. por empaquerar Cumo \dbemo5, e,.

;:i lru.H: ll',iluff ;I:i:1.,i:.?,3. jix::: :".il : :;f:i; :,:1:L'i.""f;:i :lÍ,1i,i,,"*:Ti*:il:.f.::[.".i::*#TinT:i: i:n::".in"iffi ::Tiff rurru:m*1.*:T::.,,*:T":i';ü"iproporctooan el siguiente códieo:

BCD (7) = 0111 BCD (2) = 0Or0

Como puede observa¡ el vecror de ent¡ada es rte g bits (01 I I 0010). Es-te valo¡ pasa vla el registro a Ios decodiffcariores ¿" ,r"r.'."*"*"r'0i."

: : : : , : I : i : l {^ph, ,as cifras correspondrenres a e"re vator. Nore que et nú-mero.DLU {/ l t es introJucido en un nuevo bl.,que denominado convert i .

l:¡ 1e :9digo_ iye tiene como función converri¡ código BCD en códigobinaúo (Fig. E5.5).

i - )Cód¡goBCD

CódigoBinario

"-- . : : : : - - - -"_:---- ._ i i=

Figu€ 85.5 Convdddor de cdiso.

Código BCD (?2) 0111,0010 = 1001000 (binario)

. Esta conversión es necesaria, ya que el contado¡ incrementa su valo¡ enlorma bina¡ia cada vez que sensa una muñeca. Co"."o ," inruy. qu.ir-iui_

ción del comparador es relaciona¡ el valor ornano p¡oveniente del teclado v:i " j ,31 :":

proporcion¿ el contaJol cuando e.¡o. número. son iguale,(^ = o, se env¡a un.pulsu aJ conrrolador para der.ne¡ la band, rran"porri Jora.La con\er,¡ón de có.hgo BCD en ccidigo binario puede realiz¿r"e a tra.]:s_:e:rrcurtos

sumadures. Básrcamente. para obrener un número binario apartrr de un núme¡o BCD hay que sumar los números binarios qrle represenltan los pesos de los bits del número BCD.

Page 147: Manual VHDL

lntegrrcron de enrdades en vHDL r39

Por ejemplo, considere que tenemos el núme¡o BCD (72).

83 82 BI BO A3 A2 AI AO0111 0 0l 0

--.-

El grupo de 4 bits más a la izquierda ¡epresenta 70, y el grupo de 4 bitsmás a la de¡echa, el número 2. Esro quiere decir que el grupo más a la izquier,da tiene un peso de l0 y el de la extrema derecha un peso de 1. En cada gru-po, el peso binario de cada bit es el siguiente:

Designación de bit:

Bit PesoBCD BCD

Dígito de las decenas80 40 20 l0B3 82 Bt B0

Dígito de las unidades8421

A3AZAtfu

Por otro lado, el equivalente binario de cada bit BCD es un número bi-na¡io que representa el peso de cada bit dentro del número BCD completo.

Por ejemplo, en la tabla E5.1 se muestra que el valo¡ del bit BCD A0tiene un peso de uno, po¡ lo cual su valor bina¡io ¡epresentado por 7 bits es0000001. De igr-ral manera, el bit BCD 83 tiene un peso de 80, por lo queel valor binario correspondiente representado en 7 bits es 1010000. Obser,ve que este valor se obtiene mediante la suma de (ó4 * 16) en notaciónbinaria.

Repr€sentación biDana

A0 1A1 2AZ4438

B0 l0Bl 20

82 40Bl 80

00

000

00

I

000000

00000i

001010101

010

ró84

00

I0

0I

00

0

i

00

I0

00

I

00

00

00

0

Thbl¡ E5.l Vdlores y peñs de los códigos BCD y binano.

Page 148: Manual VHDL

r40 VHDL: Ela¡re de prosrana¡ sis¡ehas digu.le¡

_ Para realirmar el procedi¡niento de conve¡sión BCD en bina¡io veamoslos siguientes ejercici(x resucltos.

Converti¡ e' binario los números I

;i 3F3?3¿??j¿j Isolución

Ia) Pnmero 'e e"cribe el número BCD co¡re,p.,nd,.nt" y.nr.eu,,l,

"",r., Iel peso de las unidades y decenas.

Vak¡r BCDüoroori l |

I 11133333?¿ r I,

[=ffi'iii l:'"",oo,"nnouu",.pre:enraarrrecrmarT I

\a iu¡BCD Il.'\'lltor'

I

tr l,,s' "l'.","0,"",.u,"*o***,"0".,^,, o, I;'.xi r'il: ""i: j.I:r:* üdr".rfff ff""# ::: *d;-, - l".,nl";:f ,il:"::il",* ;*?i,:;: l".':i';t ",^ :lt:::::::ff Ii:i,* t','^1'I"':llntirii,Ti.y1l*x"":i."--:fih: IEs.gt.

r¡ 'dr ra ¡¡¡(nos srgnrfrcarrv¡ l f tE I

,.. il I 11il:: i,*:i: l;$''¿l:'::ll'::::",."i:::::'i:::1,::T: -: Ic¡rcur¡o meJi,'.umador.oro r,,ro. r","nui",,l"",i,".'"'n'li:rffi lil:li; --

I

Page 149: Manual VHDL

¡üesración de €n¡idades en \aHDL l4l

^'-ffi ***= il+P_- sum¿Drañ'2*--*ffi*". - s_ ""rigu¡¡ Eí,6 Medio mmador en bi<rque y con onpuen*.

En la columna'?" de la ¡ep¡esentación binaria, la posible ocunencia de dosunos ocu¡re sumando los bits A2 y 81 del número BCD y el a.r.."o d. l".u-

*l_r:,a.i:. Con esto, la suma riene lugar a través de un su_"do, .o.ft".

u. lg. r). /).

---->S¡rña binario 4 co eroF 3r voFc, suma b¡na¡D 4

FiSum 85.? Snmdor conpleto en bloquc y .on co¡,lueres.

-. Con esa lóeica podemos inrul elcompünamrenro del circuiro de l¿ ficü¡a

Er,1, Ln recumen, en la tolum¡r¿ 'g en fa represcntación binr.,n,prr"_a.ntres unos, por lo que sumamos los bits .A3, B0 y 82 del nú..." BCé. E; ilcolumna "16", sumamos los bits Bl y 83. En l" .olu.r,u :Z .Olo ." po.ibl. uiuno único, por lo que se suma el bit 82 al acarreo de la columna ,,16,i En la co_Iumna ''64", sólo puede aparecer un uno único, de manera que el bit Bl sesuma al aca¡¡eo de la columna ',i2,'.

Page 150: Manual VHDL

142 VHDL: El árte de prcsrúar sisrems disiráles

El sistema sumador que realüa esta conversión de BCD a bina¡io semuestra en la ñgura E5.8.

ftigp ACD

Figur¡ 85.8 Circuito convenüor de cóligo BCD en birsno.

Después de analizar el proceso de conversión de BCD en binario, pode-mos desctibir el progama VHDL que intega las enridades de la figu¡a E5.{(listado E5.2).

2 !E iee. srd_logic 1164,at1;3 ulé rcrk. std-ari rh. a¡I;4

5 €otlty conr¡o199 Is ¡sr (6 reser: ln st{loqic; - senal p¡ovmiúre del conrrotador7 boron: t¡ srd_togic_v<tor (O ro 9); recla¿loI sssor: l¡ srd_1oqic; --señat que sssa e1 paso de ¡e múec:9 diqE,dispb: d¡r srdjosic_!€cror (o to 6); __ display dcble (a y..10 cdqEa: dt sr{1osic);

7213 .rcbitrcrur€ a-conrrol99 0f conrrc199 4

Continl

Page 151: Manual VHDL

lntecración de éntidades en VHDL 1¿13

T4t5 .ICñal C,RA,RB: std_Loqic-veto¡ (3 dtmto O);__ cod. y regisr¡o16 8&Er Q,cc0"v: sr oqic \,€cror (6 akr¡ño o);--conr. y coñ,e¡ridor17 aI9D.I E<1a: std_logic_veclor (1 doDto O);, recias plesilEdas18 slsll.¡ ca¡!y: st{toqic_veccor (O to 6); -- bir dé acdr€ de1 cov19 É1€óaI x: std_logic !€cEor (O to 1); -- seÉ1 inter@ de1 co,1v2021 !ÉÉl¡22

2324252621

28293031

323334l5363738

394A4t4243

46

4748495051

52535455565158

teclado: Droc6. (bDton, C, TECIA)aÚi¡ibL i: srd_loqlc_vecro¡ (1 iL.6to o):= OO.;

ü (boton = '1000000000^) tüÁ¡C <= .0000 ; tecla <= i ;

éI.1f (bor@ = "0100000000 ) t!.úc <= 0001' ; tec1a <= i ;

.trl! (boton = .0010000000') r!..¡C <- '0010 -re1a <- .

elalf (boro = oootoooooo ) t¡ÉC <= '0011.;recla <= i ;

€1sll (ború = '0000100000.) tbaC <= ,0100 ; tecla <= i ;

.1rL! (boton = 0000010000 ) tb!C <= 0101'- tec1a <- .

o151f (boto = '0000001000 ) tbdrC <= "0110.; tecla <- i ;

61.tf (botú = ,0000000100.) ü!oc <= "0111' ; tec1a <- I '

.1611 (boton = 0000000010 ) t¡eC <- 1000,.rec1a <- .

C <= '1001 ; t<1a <- i ;

1f ( t<1a = '00') l t t Í r

l f ( i=

59

Page 152: Manual VHDL

lU VHDL t t da. oe p, , ,c¡dmJr ! rcnd! o,eId¡p!

60

61 display:¡Eoc€rs (ldA,F¡) hesi¡62 €!e FA 1s -enciúde display moos slgturi.á:ivó6l ldE (Jl]l]l] => dispa <= ,0U1IO1]1]1

;o¿ e,ha 000 o: . . tu . ,OO.65 t{ t6 1]010 => dispa <= 0010010.;66 stE .0011 => disFa <_ r i r ( ,uU11o ;67 t{ta otOO. .> dispa <= 1001100,;bd ¡4itr@ 010:L => dispa <= "0:L1]1]11]O ;69 ¡,bsr 01tC => dis!€ <= U100OOO ;1A'11

127l

r¡¡6 0:111 => dispa <= 1]1]01t11 ;st@ '1000 => disFa .- 0C0O1]1]O ;r*6 ottreF => dispa <= 0001100,;

'14

?5 c€¡€. F<B i5 - eciúde dispjay @s sjgDrtrcati!ó?6 ¡tten ,O1]1]O => dispb <= U0001]l]1 ;77 ," t6 oo0t, => ¡ t ispb <= 1uu1111' ;78 ldE O0ll] --> disFb <= "Lr!11r010 ;t9 t{be O0:¡1 => dispb <= Lr000tto ,80 d¡en¡ l]11]0 => dispb <= ,1Ulr11OO

;81 !*reo 0ro1 => {tis!¡r <= .(1100100

;32 et!á O11O => dlspb <= 010!OOC.;I * tE o o.po84 tód 1OC0 => dispb <= Lr0U00OO ;85 $tE¡ orhers *> dispb <= !U01100,,86 €dd cáe;a¡38 eDd DEo@6s;

90 conve¡ridor: rEoceEs ( RA,NB,(J\R¡Y,X )91 Eli€b1e z: sr óqic := 0 ;

9: cc¡!v(O) <= RA(O);! 1tN r RA. )@ RB 0,.

95 Cq¡¡y lc) <= ¡A{ i l at t l rBc);96 cow(2) <- RA(2) j@ F¡(1) :@ (¡FRy{o);97 ca¡Ry(1)<" (RA(2) á¡d ¡¡( :L)) @ t l ¡ ¡ r . t r (0) at l t (NA(2) ,G08RA,;

99 ¡(o) <= F,A( l ) e ¡B(O) ,ór (}1]?iy(1);100 csFRy (2t <= lFA(:) aEt FB{C)) cG (cA¡Ry(1) üd(RA(])101 e ¡ 'B(o))) ;742 co\\¡( j ) <= r( l ] ) )@ RE(2);103 cA¡¡y(: l ) <= ¡(0) adt NB(2);104 x(1) <= ca¡Ry(2) ,c rB(:L) e cA¡Ryl l ) ;:105 cARRy(4) <= (c¡rRy (2) .d riB(I))@ {o\r1Ry€) sd lcAF¡yi:106 e iB(1)) t ;

Page 153: Manual VHDL

rnrecm.i ' jn de ent idade5 en VHDL 145

107 cc|ñ¡(4) <= x11) )€G FB(3);108 CCr.Ry(5)<= x(:L)and RB(l) ;:109 ccarv(5) <= cArRy (4) ,@ ¡s(:L) ¡c c¡1]]Ry(5);110 CARRY(6)<= (c¡eRy(4) á¡d RE(1)) @{cA¡Ryl5)111 )@ RB(1) t ) ;712 cc,v(6) <= ( z e F¡( ] ) , roú cAFRyl6)) ;111i:14 qd tEoce6s;115116 contado¡: !E ces¡ (saso¡,reset¡O) bégia117 if, (sensor adr ad s@so¡ = 1 ) ttE118 Q <= I ]OO00OO ;119 o<=Q+1;L2Al2l lÉ (reser= I @e= 11000:L:L ) t lE722 e <= .oooo00o,;

i23 eod 1f;724 6r¿1 lf;1:15 ed r):e@s;126

1.27 SAI,IDA DEL CII4FAIIADOR IA = B)L2B!29 cdpa¡a <= I *t¡€d¡ e = C(s,-r' ete 0 ;1:0 s¡al álchltatr.Ee;

List¿do 85.2 Proc¡lmación del sisrena visuatrador det O al 99.

Ahora analicemos el programa anterior En las llneas 5 a l1 se declaró laentidad de diseño denominada control 99. En ésta se han declarado los si-guientes bloques lógicos: codificado¡ regist¡o, conve¡tidor, compa¡ado¡. rle,codi6cddor y . onrad,,r

En la llnea 15 se declam¡on las señales urilizadas en el diseño. El sienifi-c¿do de cada una !e expli \a en l¿ Labla E5.2.

Señál Descripción

Señales de salida del codificador y d€ entrada al rcgistroSeñales de salidá del resisro. RA rep¡esenta los luasignificativos y RB los más significativos.Señal de salida del contador y de ennada al conparadorSeñal de salida del conv--rtidor de códiso y de ent¡ada al comparadorSeñal intcÍu del módulo convertidor de cc.dieo. Funciona como acarreo intemo.Señal interna auxilia¡ en el desanollo del convenidor de código

CP-A.,RB

oC'ONV

Tabla 85.2 S,cnilicado de ls señales utilüadas e¡ el diseño.

Page 154: Manual VHDL

146 VHDL: El a¡te de pros¡am¿. 6isrems digir¿tes

En lo que respecta a la arquitectura del progama, observe que se estruc_ ltu¡ó utilizando cuat¡o p¡ocesos en los cuales se detalla cada módulo del siste_ ]ma; por ejemplo para el codificador y el teclado tenemos r,n proceso llamado Iteclado (línea 22), que captura el dato proveniente del techáo, b codifica r ]detecta si la recla re prerionó por primera o segunda vez¡ luego, e5ros datos se Itransfieren al regisrro. En elproceo llamado display (hneaól) se decodrffca b Ienrrada provenienLe del regirtro 1 se a,igna la salida cone:pondiente aldíetto Iseleccionado. De acuerdo con esta recuencra, el

"igul"nt. pr,*".o .onu.rtáo, I

(línea 90) se realiza con la linalidad de desanoll¿r el módulo oue corrr.i"r," IBCD en cdligo binario (Fie. t5.8). I

Por úl¡imo. el proceso conrador (linea I lo) genera la cuenta del 0 al 99 |incremen¡ándose en una unidad cada que el sensor detecr¿ r¡n obie¡o. ya fue- |ra del proceso, en la llnea 129 se compara el vecror proveniente jel conveni. Idor (CONV) con lá ralida del cunrador (e). Si son iguale., el controlad,r Ienr la un pulso para derener la banda trarsporralr-,ra.

I

II

Page 155: Manual VHDL

Inte$áción de enridades en VHDL t47

$rcicios

Iít gacítu Ae eñri¿a¿as

5.1 Considere el diagrama most¡ado en la siguiente ñgura que corresponde auna unidad aritmética y lógica (ALU) de 4 bits. Como puede observarselos datos se trans6e¡en a través del registro de datos y el decodificadorde iristrucción activa la función que se realiza con estos datos.

a) Determine el cdigo de instrucción que se utiliza para activar las ope.¡aciones de la ALU.

b) Programe el AIU mediante el uso de va¡ios p¡ocesos para adherir en-tidad tras entidad.

c) Considere el ALU como un sistema general y programe mediante larelación de entradas y salidas.

Page 156: Manual VHDL

l¡18 VHDL: El a¡re de pros¡amar si¡renás disuates

5.2 En Ia siguiente ffgu¡a se muest¡a el circuito electrónico de una unida¡laritmética y lógica. Considere la tabla de funcionamiento mostrada en eleje¡cicio y programe utilizando la integración de eotidades mediante larelacrón de señales de enrrada - ralida

cl

t ;

1".fso

[ ;

Sel€ccion de turcións3 s2 sr

Funcióo arirmética de satidaM=Cn=0

Funcion lógica de

F=/(A+B)

F = oo00F=/(A.B)F=/BF=A BF=A./BF-lA+BF=(A B)F=BF=A.BF = l l l lF=A+/BF=A+B

SO

0oo00000I

I

I

I

I

I

I

I

0o00IIIIo000IIII

o0I

I

ooII

0oI

I

0oII

0I

oIoI

0I

0I0toIoI

F=A+BF=A+,1BF = ,1 (complemmto a 2)F = A. (A. ,A)F=(A+B).(A./B)F = A,B-rF=A.E-1F=4.(A.B)

F = (A +/B) .A,B

r=A.B-1

F=(A+B).AF=(A+D).A

Page 157: Manual VHDL

Iotegració¡ de entidades en VHDL 149

5.3 En la siguiente figu¡a se muestra u¡r circuito contador y un decodiffca,dor de binario a decimal, código BCD, cuya funcidn consiste en activarcada una de las salidas decimales del decodiffcador _"dir.rt"

"lvalor del binario cor¡espondiente procedente ,lel contador Asl porejemplo si el contador se encuentra en el estado cero (0000) la salidadel decodificador que se activa es la SO. Obse*. .o-" .t ¿".o¿in."áo.tiene las salidas activas en bajo, por lo que pa¡a encender los led de laligura se requiere el uso de un inversor.

Realice un programa en VHDL que sustituya al contado¡ decodi6cadore InveFores.

Programe utilizando un proceso que describa cada entidad de diseñoPrograme mediante un algodmro general

I

t ,

IIl

I 'IIl

5.4 Enla siguiente ñgura se muestra un circuito contado¡ y un decodilicadorde 7 segmentos, la función del circuito consiste en desplegar en el displayel valo¡ decimal correspondiente aL valor bina.io o.igin"¿J.n

"l .o.rir'doi.

, Realice unprograma en VHDL que sustrruya al circuito contador y de-

cootncador de / Sepmentos.

Programe utilizando un proceso que describa cada entidad de diseñoPrograme mediante un algoritmo general

a)b)

a)b)

Page 158: Manual VHDL

l!0 \,HDL: El ane de p¡osEmd sírteirás dkirlles

5.5 En la siguiente flgüra 6e muestra un ci¡cuito sumador-restador deros sipados de 4 bi6. Interprete el fungjon¡¡iiento del sistema y:

Programe utiü¿ndo un paoceso que dercriba cada enrjdad de diseñoRograme mediante un afuoritrno general

a)b)

Page 159: Manual VHDL

Inreqr¿cróñ de en¡dader cn VHDL l5l

Bibliografía

TLJlovd. Fundrmenor dr srsrcrnas drglales. lrenrrce H¡ll, laag.Lf. Gre.. Y lorrora. S. Of.oz: E. Villar VHDL. lengua¡e estjndar Je tJueno

eiec¡nínrco. McGraw-Hill, I998.David G. Maxinez, Jessica Alcalá. Djejño de S¡r¡emds Embebidos a trdués dcl

Itngtaje de Descripción en Hardware VHDL. XIX Congreso Intertacio-

^ _ nal Académico de Ingeniería Elect¡ónica. México, 199?.C. Kloos, E. Cern1. Ha rduare Descriptiat Language mi ther Aplfcations. Spe-

cification, Modelling Veificatirn and Slnthesis of Microeleoronrc Slsrá.Chapman & Hall, 199?.

IEEE: The IEEE statulardYHDL lttnguage Refererue Mana¿L IEEE-SId- l0?6-1987, 1988.

Zainalabedin Navabi. Ana\sis and Modeling of Dg.irai Slsrems. McGraw-Hill,1988.

P J. Ashenden. The Designer,s guide nyHDL Morgan Kauffman publishers,Inc., 1995.

R. Lipsett, C. Schaefer VHDL Hardware Descripticn and Design. KluwerAcademic Publishe¡s, 1989.

S. Mazo¡ P Langstraat. A gui¿e to yHDL, Kluwer Academic publishers,1993.

J.R. All¡rong y F GailGray. Srrucrtre d. Design withVHDL. prentice Hall,199?.

K Sk_ahill VHDL for prcgrammabte Lngk. Addison \)íe.ley. laaóJ. A. Bhas&er A VHDL Ptmet. Prentice Hall, I9o2.H. Randolplr. Applications of VHDL to Circuit Design. Kluwer Academic

Publishe¡

Page 160: Manual VHDL

Capítulo 6

Diseño de controladoresdigitales mediante cartasASM v VHDL

Introducción

Como vimos cn el capítulo anrerior, es deseable qtre un sistema elecrrónicosc diseñe dent¡o de un circuiro integrado o quizá, si el sisrema cs muy corn-plejo, a t¡avés de va¡ios disposirivos; pero siempre tracando de reducir el r.r-maño ]r en consccuencia cl espacio liico

Sin enbargo, en la mayoría de los casos los sistcmas elecrrónicos de apli-cación no son purarnente digitales; por lo general, están formados por blo-ques analógicos (amplificadores, mukiplicadores... etc.), bioques de potencia(sistemas con SCR o TRIAC) y bloques de interfaz (acondicionaclores de se,ñal, convertidores A,D, ercétera). Esto ocdsiora que el sistena digiral seconvierta en la parrc de control encargacla de sincronizar cada Lrna de lasacciones que se realizan en los diferentes bloques electrónicos mcdiante se-nales (pulsos). La misi(in dc esra unidad de control es activar cn forma pro-gramada la participación de cada uno de los subsistemas que irtegran elsistcma general.

Al funcionar siguiendo cste esquema, el sistema digital no cs nrás queuna máquina secuencial denominada CONTROLADOR, capa: de p¡oporciona¡pulso adecuados en tiempos arlecuados para realizar una operacitin scncilla.lue, junto con ot¡as, permire ejecutar una operación complicada.

El cont¡olador es el bloque lógico ¡nás importante y su actuación es vital,ya que sin este elemento sería imposible coordínar los procesos internos crexternos que se llevan a cabo en un sistema electrónico.

Debitlo a esta responsabilidad, el dheno de controladores ¡ecibc un r¡a,to especial y los algoritmos que describcn sus acciones y comportamiento de-ben de analizarse co¡r sumo cuidado.

Page 161: Manual VHDL

154 VHDL: EIarte de p.og¡amar sistehs digrrales

la secxencia de acciones que ¡ealiza un controlado¡ puede describirsemcJi¿n¡e lo. diagr¿ma, d. e.¡ad., que.e vieron en el capirulo 4, o a travésde un Ji¿gramc discñado especf6cdm(nte para definrr algorrrmo" dc hardwa.re denominado cana ASM (sigla. en rnglés de algoritmo Je la máquina deesr¡ooi. La venLaja pdncipal de un¿ carta ASM con rc\pe(ro a lo\ Jidgra.mas de estado es que permite controlar y especificar el tlujo de la inforÁa-cton at mlsmo tlempo,

Hay que recordar que un algoritmo describe paso a paso tlel cornpor_tamiento de un sistema, tomando en consideración las siguientes caracre.r lst icas:

. El algoritmo debe de se¡ ffnito. Debe tener un número determinado de

. Tiene que ser deffnido. En cada estado deben establecerse po¡ complerotodas las acciones que se llevan a cabo. Esro incluye las entradas, saiidasy decisiones que conducen a ese estado.

El algoritmo o carta ASM utiliza tres símbolos básicos para desc¡ibir el com-po¡tamiento de un sistema:

Bloque de estadoBloque de decisiónBloque de salida condicional

Bloque de estado

El bloque de estado representa el ,,estado,' de una máquina secuencial y de.be contener la siguienre información (Fi$ 6.1).

. Nombre del estado. Por lo general se utilizan números (0,1,?,3,... etc.) olet¡as (4,B,C,... etc).

. Código del estado ("xxxx"). Se reliere al código binario asignado al estado.. Lista de salidas. Señales de salida asignadas al estado y-que sólo se en_cuent¡an activas durante el tiempo que permanezca el sistema en eseestado.

6.1 Algoritrno de la máquina de est¡do (ASM

Page 162: Manual VHDL

D¡c¡¡ <lc conroH¡:¡üt¡&¡ nrünraaerc l6tl y VHDI lts

Ca¡r*loódrtada(e)+mdo

Ért¡ñ 6.r D.rcripct¡d d. ün bloquc & crt¡do.

Bloque de deci¡ió¡

El rombo o bloque de dec¡iOn si édc¡Ci l¿¡ vaiábles dc'a¡traild.al "i¡amay conti:nen la siguiente info¡mación (FE 6.2),

i- iUn¡ túi*lé'dc-ai{rd¡, Enaltctrirtbo sc,indiceclnomb¡e de la va¡ia.blc de ént¡ada.Uh¡ ¡ah¡h rrd¡¡lerá.Un¡ r¡hh 6l¡¡"

I

Et¡t¡ ó.2 D.¡.rbc¡5n d.l bloqu. & dc.isiór¡.

BtoSue de ralid¡r cúdicio¡ales

El blciquc de salidas condicionales (Fig 6.3) se utiliza par¿ acriva¡ ¡eñalcs desalida quc sólo rc cncucnnen di¡ponibkr para cim¡¡ co¡rdicio¡¡c¡ de cntra.ch. t¡ inbfoiactiiri conenüa cn dicho bloqüc cs la siguiente:

Page 163: Manual VHDL

156 VHDL: EI arre de pros¡atu¡ sistehd dicltales

. Una lista de salidas condicionales que dependen de cie¡ta condición deentrada.

. . -..- _ -,:,_,.1-

Figura 6.3 Descipción de un btoque de s¡lidas condiciooales.

6.2 Estructura de una carta ASM

Uoa ca¡ta ASM coruiste de uno o más bloques ASM inte¡conectados de unamanera consistente como se obsewa en la figura 6.{. En dicha figun se apre-cian cuatro estados denominados A, B, C y D y dos entradas: X v y.

La rransición de un bloque a oro ¡e re¿li:a a rraves de llneas denomina.das caminos de enlace,

En las cartas ASM, a cada bloque le coresponde una unidad de tiemooy en este lapso se ejecuran todos lo" bloques de decrsión y de.al idas conái-cionales que estén asociados con el mismo estado.

@Fieürs 6.4 Estruc¡uh Básica de u¡a c¿¡ta ASM.

Page 164: Manual VHDL

D*ño de @nttoladüe dieitáls hediúté ca¡tas ASM y VHDL 151

Deecripción de una cara ASM

Para describi¡ de manera general los atributos de una carta ASM, considere-mos como ejemplo el circuito de la figura ó.5.

ffiFisür¡ 6,5 Dscripción de una ca¡ta ASM.

Como puede otservatse, la carta ASM está formada por cuatro estados, identi-ñcados como A" B, C y D, cada uno con un código binario respectivo; as( el es.tado A tiene asignado el código 00 y el estado B, el código 01. También puedeve¡se en el estado A que eriste u¡u señal de salida denominada Inicio, mientrasque en el estado D la señal de salida se de6ne como Apagado. La carta tienedos señales de ent¡ada identificadas por las variables X y Y.

Esta carta puede descdbi¡se mediante la tabla 6.1. Como se puede ve¡presenta las columnas Estado presente, Señales de entrada, Estado futuro ySeñales de sa-lidas,

QI QO

Ent¡adasXY

Istado Futuro(Qr,Q0)T+r

Salidas

lA00200

10

0110

Inicio

Inicio

tB0l 0 04C10510

0I

I

1

0I

óDl1 0 0

T¡bla 6.1 Des¡iDción de u¡a cúta ASM.

Page 165: Manual VHDL

1s8 VHDL. El¿ire de p¡ogrmarsisrema dis,tateJ

. En la línea 1 (de la tabla 6.1) nos encontramos en el estado A rep¡esenta_do por el código Ql, Q0 = 00, si la señal del senso¡ X es izual a .,nolX- l l se pasa alesrado B cdligo (Ol)enelr iempo tel, e0), ¡ ¡ E* i-por.tante ¡ema¡car que mient¡as ftx eocontremos en el estado A la salida activase¡á lrüc¡b. En la línea 2 de nuevo se encuentra el estado Ai sin embarso la se_ñal de entrada X adopra el valor de cero X = 0 por lo cual se trans6eie al es.tado C. Debe notarse que la señal de salida aún es Inicio, dado que se trata delestado A; pot otro lado la condición de no importa en el sensor de la señal y(f : *), se debe a que para pasar del estado A al B o del estado A al C. el va-Ior de entrada Y no es relevante,

EI mismo análisis lo puede hacer el lecto¡ con relativa facilidad interpre-tando el comportamiento de la carta ASM de la línea 3 a la ó.

Obse¡ve la carta ASM de la ffgura Eó.l y elabore una rabla que describa sucompoftamiento.

Fi81¡E Eó.I Carra ASM.

Solución

La tabla correspondiente a la carta ASM se muestra a continuación (GblaE6.1). Observe en la línea 4 cómo es que al estar en el estado B se pasa alestado A sin importar el valor de las señales de entrada p y R.

Page 166: Manual VHDL

Dúeño de connot¿dor.' digirales medünle cdttu ASM '

VHDL 159

Btado presente

Ql QO

Dnt¡adasPR

Esta¡io Futuro(Q1,Qo)T+ I

Sdtdas

1400240300

0It

0I

00I

I0I

4801 0 0 Gnar5Cl l 0 0 Limpiar

| 6.3 Cartas ASM en comparación con las máquinas de estado

T'bt E6.l DesqiFión de uM cattá ASM.

Es relativamente fácil pasar de una ca¡ta ASM a un diagrama (máquina) deestados y viceversa por ejemplo, consideremos la carta de la ffgura 6.6a),

r l o '

Fisur¡ 6.6 ¡) Cárts ASM. b) Di¡srmas de esrado.

Como puede obsewarse, dicha carta está formada por cuatro estados (,{,B, C y D), tiene dos señales de entrada (X y Y) y dos salidas (sALl, sAL2).Note cómo estas señales de salida permanecen activas sólo mientras el siste-ma se encuent¡a en el estado presente (estructura de Moore).

En la ñgura 6.6b) se muestra la máquina de estados correspondiente.

Page 167: Manual VHDL

160 VHDL: El arre de p¡ogramar ssreMs drs,tales

Según se aprecia, existen también cuatro estados y la unión entre ellos sepresenta a través de sus líneas de entrada (X y Y). La negación de la varia-ble indica la condición cuando las entradas son igual a cero o a uno (Fig.6.7). Obsewe también en la ffgura 6.7b que las señales de salida se denotanmedianre la noración 1f + ).

b)

Figu.¡ 6.? a) Neeación de lariábles para indica¡ la co¡dición de enüada (0 o t). b) Notaciónde las señales de s¡lida.

Hasta este momento no se ha especificado el uso de las salidas condiciona-das en la carta ASM; éstas se usan en la estructura Mealy cuando la saliüdepende no sólo del estado en el que se encuent¡a, sino también de su5entradas. Como ejenplo considere la siguiente máquina secuencial (Fig. 6.8a):

a) b)

'_-- ' - . - . - - - - - 'rigu6 6.8 a) Esnucru¡a dc M@¡e. b) Eshuctüra Mealy e¡ ca¡¡a ASM.

Page 168: Manual VHDL

Di*ñod.cúEole¿*r&trLcntedieitc.¡rrsASMtVHDL .16l

Conb'iiuddo&sa+¡n¡ilo;lanáCd¡h¡¡,¿r¡¡eqtrabn drcsiúlb B, pila señal de enrada yatc 0 (0/l(Zl)) sé transftere al estado C y durante esteenlacs se activa la seful de soJúa?l r l. Igual sueede cuando se halla en elFsJqdo D y se di¡igE h.cia el e¡tado A, Obefvp que ,h señal de salida que sesrqrv? q5 22 (Zl = l) . l,alatta ¡'SM cóüespqrdiente a esta máqulna de es-tado se muestraienla 6€ura É.8b. I

. Conúena la sigulggte meqi¡iira ae MeAy in ,rna ca¡ta ASM.

Soluctón

La c¡rta ASM corrc¡priirdt¿ntc s€'niuestra en la ñgura E6.2.

¡tür i6.2

Page 169: Manual VHDL

162 VHDL: El J, re dr p¡ sE¡n¿r rrem^ disr¡¿l<r

6.4 Diseño de controladores mediante cartas ASM

Desplazamiento

Esle a-, ña.r"

El diseño de ca¡tas ASM tiene mucho que ver con la forma y sentido comúnde ínterpretar un problema, para luego visualizar un camino que Dermitsen(, 'nrrar l¿ 'o lu( idn ópt im¡. l , , r c lemplo. c, ,n.¡der.mo. Ia . iq¡¡ . ¡ ¡e , ¡ , r ,, iún: ,c rro¡. , , l ic¡ to J i .eñ¿r un conrr^ laJ, , r qur permird

"u,r*r , , rnr . .firncitmamienco de un tren que debe despiazarse de una estación a otra (Fig6.9). En cada estación se han colocado sensores que det.ctan crrando .ltren se aproxima al andén y envían al vagón una señal denominada pARO.Al recibi¡ dicha señal, el vagón activa su sistema de frenado y el rren co.mtenza ¿ de¡cner,e en for m l ¿utom¿rrca ha.¡.r Jeten.r.e y c,, locar.e cn i, , .límites de la estación.

B c

Figu.a 6.9 Dias.ana.lel conrrolado¡ de un nen subu¡b¡no.

Como puede observarse, en la figura 6.9 se muesrran tres estaciones de_nominadas A, B y C, con sendos sensores cada una (SA, SB y SC). por onilado, consideremos que cuando el t¡en se encuenrra detenido, abre sus puer_tas automáticamenre y así las consen,a durante 15 segundos para permitir l;entrada y salida de pasajeros; luego las cterra y contrnúa su camino hacr¿la siguiente estación.

- Con base en la descripción anterior podemos infert algunos aspectos r:Je

funcionamiento:

1) El tren debe poder move¡se de la estación A a la C y viceversa; sin em-bargo, no se estabiece con precisión dónde inicia su recorrido. po¡ L¡tanto, si la t¡ayectoria se realiza de A a C y viceversa se produciría unalgo¡itmo con bastantes estados, por lo cual sela conveniente situars.

Page 170: Manual VHDL

D¡eño dc cont¡oladorcs disir¿les he¡li.¡te caftas ASM y VHDL 163

en l¡ esración B y de ahídesplazarse hacia la dirección ESTE (cstaciónA) o direcciín OESTE (estación C).

2) Támhién se interpreta que cLrando el trcn se aproxima a una estación,el sensor correspondienre envía al vagón una señal de pARO queacfiva el sistema de frenado y detiene al tren jus¡o en los l¡mires de laestaci¿)n. Lá condición anterior esttrblece que el sisre¡ra de frenado es_rá predeterminado y sóftr basra la señaL pARO para inicia¡ su secuen-cia de f¡enado.

3) En la descripción del problema también puede inrerpretarse que eltiempo de ascenso/descenso de pasajeros se ma¡ca mediante un con,trolador de riempo in,:lependiente al controlador del sistema.

En el diseño de controladores es importante identiffcar con claridadla parte de control y los subsistemas perifédcos que interactúan con é1.Desde esta perspectiva es posible ubicar el cont¡olado¡ como una cajaneg¡a que permite identiffca¡ con claridad el intercambio de señales deentrada y salida que se realizan entre él y sus subsistemas.

En la figura 6.10 se observan las señales,:le entrada/salida que interac-túan en el controlador. La función dc estas señalcs se explica a continuación:

Señales de entrada

Tiempo lndica el lapso ,:lestinado al ascenso o descenso de pasajeros.SA Simboliza al senso¡ colocado en la esración A.SB Representa al sensor ubicado en la estación B.SC Simboliza al senso¡ colocado en Ia estación C.DIR Indica hacia dónde se moverá el tren (puede ser hacia el este o eloeste).

Señales de salida

. Este Indica que la dirección del ¡ren será hacia el esre.

. Oeste &ta seiral indica que la direcciin que tomará el tren se¡á el oeste.. Avance Se envía para que el tren realice su recorrido de una estacicjna o¡¡a.

. P abierta Señal que permite abrir las puerras del tren cuando se en_cuentra ,:letenido en una estación,P cerrada Señal que cier¡a las puertas dei rren una vez que el tiempode ascenso/descenso de pasajeros se ha cumplido.Paro Señal que al ser rccibida po¡ el rren activa su sisrema de frenadopa¡a quc se cletenga lentar¡ente en los líñites de una estación.

Page 171: Manual VHDL

164 VHDL: El a¡te d€ proermar sist€nas dieirales

-FiguÉ 6.10 Señales de entmda y sali¿ del conrrol¿dor

Un posible algoritmo de control "carta ASM" que permite detallar demane¡a didáctica el compo¡tamiento del sistema es el siguiente (Fig. 6.ll):

@@

@

si

\:-/

@

Fisuh 6.1r Carra ASM de un conÍotadoi

Page 172: Manual VHDL

D¡cño Je.'ütuhdores dig,r¡ks me{timtc ca¡tas ASM y VHDL 165

Descripción de algo¡itmos de control

Estado 0. En un inicio el con¡¡olado¡ se encuentra en la estación By la puer_ra del vagón sc mantiene abier¡a. Si la e¡rtmda tiempo (T = 15 se¡]rndos) noha alcanzado su valo¡ final, la puerta continúa abierta (T = No); si ya alcan-:ir el valor de T= 15 segLrndos, la puerra se cierra y el conrrolador se trans-fiere al esraclo 1.

Estado l. Con la puerra cc¡rada se elige la dirección a fravés dc la ent¡adaDIR; es dcci¡

si DIR = Si el vagtin se ciirigc hacia el esre (estacitin A)si DIR : No el vagírn se dirige hacir el oeste (estación B)

Estado 2, En cl estado 2 se da la orden pa¡a que el tren continúe sü movi_¡niento a través de la señalAvance. Como puetle obsewarse, si clsensor SAno detecta la prescncia del vagón, la señal de avance pernunece inal¡erablc;por el contrario, si el scnsor SA rletecta cl vagón, el controiador (SA = Siienvía unrl señal de Pa¡o (estar.1o j), que Lletienc de forma automática al ¡¡enjusto en los lúlires del andén ,:1e Ia estación A.

Estado 4. Ct¡n el vag(rn detenido en la estaci(,)n A, el controlador envía laseñal Pue¡ta abierta, que per¡Dire la entrada y salida de pasaje¡os y mienrrascl tienpo T = 15 scgundLrs no sc c.,nrpia, el rr.n pern,onece en la estaci¿)nA con las puertas abiertas; en caso contrario, las cie¡ra y continúa su avan-ce hacia la estación B.

Se puede deducir con rclariva facilid¡d la descripción general de la car-ta, en la cual se observaron 14 cstados,. lelcs¡ado 0 alestarlo 11.

En el diseño de algoritmos cle control ASM tiene mucho que ver el sen_tido común y La experiencia del diseñador Rrr ejemplo, en la carta antcriorse puede considerar que los sensores SA, SB y SC actúan de fo¡ma similar.nor lo Lr¡ l cn lu:rr . lc rc¡r . . .nralrc! \cr , :or( \ b.r . r r ur¡ l i ; r r .c j l . ur , , rc l ,dado que elr'agón es incapa: de sabe¡ en qué estación se encuenrra; cn con-secuencia, s(ilo podría teDerse un estado (X) qlre rep¡escnta la estaciónac¡ual. Al efecruar cs¡os arregl()s, la carta anterior podría simplilicarse de lasiguicnte manera (Fig. 6.12):

Page 173: Manual VHDL

166 \ l lDl . L l ' , ,e

h or ,erdn , , J. , , r : . J.c , .F

Estado 0, El trcn está en cualquiera de las estaciones con las puertas abiertasSi el ticmpo T = 15 no se cumple, permanece en la estación actlLal; si ei tienr-po ha terminado se da la ortlen para que la puerta se cierrc y luego la orderde Avance para continuar el recorrido (Estado 1 y 2).

Si durante esta trayectoria elsensor detecta la p¡esencia del úen, envnr¿ia señal de Paro, que hará que el vagón s. derenga cn lo estación y abra l:puerra (transici(rn del estado ] al es¡ado 0 en la carta de la Fig. 6.12). Comise adviertc, esta carta simpliffcada sólo utiliza cuatro estados a di¡e¡encra o¿la anterio¡ La linalid¡d de ejemplificar estas tliferencias es hacer ver que l:rca¡tas ASM se construyen con base en l¿r experiencia )- conocimiento de lGsubsistenas que integran una aplicación.

6.5 Diseño de cartas ASM mediante VHDL

figúa 6.12 (larrd ASM simrlifica¡ta.

Desarrollar un programa en VHDL a través de una ca¡ta ASM cs relatilamente fácil; sin embargo, no es posible recomendar un procedimiento o de-terminada forma de programa¡ La experiencia adquirida en los capltulos ar_teriores ahora adquiere importancia para comprender de manera cla¡a ¡precisa como se urilizan las palabras reservadas en VHDL.

Para ejemplificar esta situación, veamos el siguiente problema:

Page 174: Manual VHDL

Dnpn., d, , ,nnol 'dñ,e. ¿,s, "1c. m.d, ,ar ' .d_a. AqM \ VHDI 167

I. Descripción

Se requiere diseña¡ una máquina despachadora de reftescos, la cual está for-mada por tres módulos (subsistemas) independientes Cada mírdulo ¡ealizauna función predeterminada, pero hay que diseñar el sistema controladorque gobieme y sincronice cada acción de los subsistemas. A continuación sedescribe cada subsistema:

a) Módulo de recolección de monedas. Recibe las monedas que elcliente introduce en la máquina para obtener el refresco.

Caracterlsticas

. Acepta monedas de $5.00, $10.00 y $20.00.

. Cuenta con un mecanismo que ¡echaza monedas defectuosas

. Posee un mecanismo de detección de valor de la moneda; es deci! es ca-pa-z de discriminar el valor de la moneda Menor que precio (MP) e lguala precio (Prccio).

El sistema ¡ecibe dos señales de entrada denominadas Limpieza y Cap.tura. La prime¡a limpia el sistema y lo deja en condiciones de inicio; la se,gunda ¡ecolecta las monedas que ingresó el cliente.

b) Módulo de devolución de monedas. Propoiciona el cambio al clien-te cuando introduce monedas cuyo monto excede el p¡ecio del pro-

ducto.

Caracteísticas

. Acaiva una señal de salida denominada Cambio, cuya función es en-¡reg¿r cdmbio al ( l iente en monedas de cinco pe\os.

. Recibe una señal denominada Listo caÍrbio (LC), que indica cuándo

"e han dado crn.o pesor de (¿mbto.

c) Módulo de servicio. Su función es entregar el refiesco al cliente; sinembargo, el p¡oducto sólo se libe¡a cuando la cantüad que proporcionóel cliente es igual al valo¡ del ¡efiesco.

Características

. Cuenta con una señal de salida denominada Sirve, que activa el sen,sor correspondiente para que el refresco se pueda sewir y entrega¡

Page 175: Manual VHDL

168 vHJt | | , . ' . - . p, . ¡ ! , , . f rcm¿.. , ! ¡ , , , e\

. Posee una señal dc entrada deno¡ninada Listo se¡vicio (LS), que in-dica cuándo se entregti el refresco.

d) Controlador. Esta unidad sincroniza las acciones de Lx dife¡entes mtí-dulos para automatizar el funcionamiento de ia máquina despachado-ra de ¡efrescos.

En la 6gura 6.1.1 se obscrva cada módulo y la señalización entm,:la/salrtl¡que existe enrre cada subsistema.

[isu6 6.r] )v1ódulos que fi¡man elco¡¡ol¡dor

Un posible algorirmo ASM se muestra en la 1igura ó.1,f.

Estado A. Se tiene una salida denominada Ingrese monedas, que no es siniuna señal que indica al clienre a cravés de un display que la máquina se en-cuent¡a funcionando. Si la señal de enrrada Moneda es igual a "N,r(M : No), la máquina permanece en el estado A; si la señal Moneda e:igral a "Si", la carra conducc al estado B.

Estado B. La señal de enr¡ada Moneda (M) se utiliza para confirmar que e.sensor enca¡gado de esta detección ha realizado toda su ¡utina.

Es importante reco¡dar que existen algunos sensores que suelenencontrarse en el estado de reposo, para luego pasar a su estado de acti-vación y ¡egresar al reposo de nuevo. Este sensor detector de monedasreáliza la función anterior.

Page 176: Manual VHDL

D¡.ño d. cont olaútr. disttrkr ú6disrr.:úrú ASM r VIDL 169

i,r ' , ,B¡¡rdo C. La ¡eñal de cnrada,Mcncquc.prtcló (MP) 6e utiliza para indi-ca¡ al clicnte huc dÉbdéuminislra¡ rnás modedaü por ejemplo, si (MP = Si),

, , ,,so,rarclve el erta&t A y ¡.to¡icita ¡l oliente qre Ingrcce moneda6, Si (MP =.. No)'¡e pa¡a al tstado D do¡rdc ¡e ircguntá si la qnridad ingesada es igual

q rnayor que el precio (PrEcb) .

nsu¡i 6.la Cara ASM dcl @nt¡olador dé le máqüiha"d. r.Ée5c.

Page 177: Manual VHDL

170 VHLri | | d,e Je pr .sr ' ,nd, { r ¡Td. J.d. , . rc.

Estado D. En esre estado se pregunta si la canridad ingresada es Igual al pre-cio. Si lo es (Precio = Si), se pasa al estado E domle se activa la salida Sirve,que oto¡ga el servicio. En el estado E la señal Listo servicio (LS) se utilizapa¡a indica¡ al cont¡olador que el sensor ha detec¡ado que ya se entregó elrefresco: (I^S : Sr, en caso conlrario (LS = No), se repite la perición de ser-vicio. Si éste ya se brindó, la carra se transfiere al estado F para captura¡ eldinero (Cap) y luego al estado G para limpiar el sistema (Limpia).

Al volver al estado D se observa que si Precio = No ',equivale a deci¡ queel precio es mayor al valor del reliesco"; en consecuencia, el algoritmo debedcvolver cambio a rravés de la señal Cambio en el es¡ado H.

Estado H. La señal Listo cambio (LC) se utiliza para indica¡ al controladorsi el sensor ha derectado que el cambio se dio (LC = Si); en caso contrariot/LC - NoJ, 'e repr¡e ld pericrcjn Je (ambio.

Estado I. La función de la salida Decremedta (Dec) es indicar al módulo derecolección de monedas que se entregaron cinco pesos de cambio, con el ot.jeto de que compare y determine si con el decremento de cinco pesos la can-tidad abonada por el producto ya es igual al precio o sigue siendo mayor (Jb-se¡ve cómo el camino de enlace de estado I ret¡oalimenta al estado D en quise p¡egunta si el pago por el producto es igual o mayo¡ al precio.

Como puede observarse, para describir conrrolado.es se requiere conL!cer a la perfección el Éincionamiento de cada uno de sus subsistemas asl co-mo Ia función que realizan sus sensotes.

Ahora, la inscrucción Case en VHDL puede ayudar a simplilicar lo qu.sucede en cáda uno de los esrados; de igual manera, el uso de IF o ELSIIpuede auxilia¡ a manejar con simplicidad los rombos de decisión.

En el listado 6.1 se observa la programación del algoritmo anterio¡.

-- ProgEám de 1a úáquiú dééDaihaiüfa ¡jte lefies@E

uae ieee,std loqic :1164.aU;

átlty @quina i6 rbrr (

CLK, MO¡!'EDA, Mp, IRECIO, LC, LS: in std_logic;

CAP, LIMPIA, SIR\,'E, cA],BIo, DEc: dt std 1oqlc);

üdtlit4ture a¡qtuq of mqiina is

type -> 'odo Ia A.B. .D.- , - , , I

ai9E1 edoj¡es, edo fur: esradós;

Conl¡núa

Page 178: Manual VHDL

Dbeño de (.n,,ol¿do¡r. dlcl,¿le. med'dnre, ¿r¿. AcM v VHDI l7l

p-estados: grocéss (ealojres, MONEDA, MP, IRECIO, LC, LS) b€gln

caae edoj les 1s

sb€¡ A => CAP<= 0, LIMPIA <= 0; SIR! 'E <= 0; CAMBIO <=

0;DEC<= 0;

lf MONEDA = 1 tbén

edo fut <= Bt

edo ful <= A;

vhd B => caP<= 0 ;LIMPIA <- 0 r SIR\¡E <= 0 ; C-¡\¡'IBIO <=

0;DEC<= 0;

lf MONEDA = 0 then

edo-fut <= c;

edo,fut <= B;

vb@ c ->cAP<=,o, ;LIMPIA

<= 0 r SIR! 'E <= 0 ; CAMBIO <=

0;DEC<= 0,

I f MP=0 Ehen

edo iuL <- D;

edó-fuL <= A;

vbén D => CAP <= 0 ; LIMPIA <- 0 , DEC <= 0 ;

if PREcIo = 0 the¡

edo-fut <= H; CAMBIO <= L ;

edo,fut <= E; sIRl'E <= 1 ;

rhen E => LIMPIA <- 0 ; CAMBIO <= 0 ; DEC <= 0 ;

srRvE <= 1 ;

l f LS=0 th€n

edo iuL <= ! ;

eE¿l if;

vben F => LIMPIA <= 0 ; SIRVE <= 0 ; CAMBIO <= 0 ;

DEC <= 0 ; cAP <= 1 ; edo_fui <= G;

wt¡@ G ->CAP<= 0;SIR\,B<= 0; CAMBIo <= 0; LIMPIA <= 1;

DEC <= 0;

etto-fut <= A;

qheE H => cA! <= 0 ; sIRvE <= 0 ; LIMPIA <= I ;

cAt4Bro <= 1 ;

Conünúa

Page 179: Manual VHDL

172 VHDL: El a¡re de prcehnar s$temas dicit¿tes

H; CAMBIO <= 1 ;

I ; DEC <= I ,

¡¡ib€{¡ I => oqlr <= l] ; SrR!E <= O ; LIMPTA<= 0; DEC <= 1, .

edo_fur <= D;

l f LC=0 then

€¿¿l Dlocéss p_es raalos;continua e1 proq¡ea

- 1nrc1a sesundo procesop_¡e1ój : Droc6.6 (cLK) b€qi t r

l f (c lk evenr ar ld ct_K= 1,) tben iedoj¡es <= edo_fut;

iend i f ;

lend Drocés! p_¡eloj;

Ié¡¿l arqmaq;

I

ILbt¡do 6. I De.rnp.on de l¿ cartj ASM deJ ,^rFo¡ddor de t, mdquino J*pa.had{" Jr I' ¡e 'e ' l

De manera general. en eldiseño de canar ASM p.dem." pr,nrualirr. los I\rgulente5 aspecros:

IL Para cada combinación válida de variables de en¡rada, solo ouede I

exirú una sálidal esro e5, no es posible presentu. do, u".e. l, mir_" Isirua(idn, debido a que habria dos

"al ida. dferenre". I2. Si es necesario ¡erroálimentdr una q¿lida, esLo debe hacer.e ante, Jel I

esrado v ño en ésre. Il . Un bloque puede rener varios caminos en p¿r¿lelo que l leuen a h I

mi.ma .al idá y más de uno puede e\tar acrivo al misrno riempo. ICuando se tienen caminos en paralelo. "e

pueden dibu¡ar en torma Ide

"erie sin afect¿r el rerultado; " in

embargo, un diagrama en parule- |lo puede hacer la carra más compdcra rn,.nrrr. quJun,l i"grr-, * |serie r¡ene menos probabil idades de l levar ¿ Lransiciones de."tado

Iambisuas (Fis. ó.1 51. I

IIII

I

Page 180: Manual VHDL

Di*ño de co¡nolado.es digitale6 medianr! ca!¡as ASM y \TIDL 173

FiguÉ 6.15 .) Estructura en paralelo de una cana ASM. b) Estructu¡a en serie de unacarta ASM.

Pa¡a ¡eafi¡mar la programación de controladores, consideremos el ejemplomostrado en la figura E6.4.

1,3,6,0,9,10,11,12,13,14,15

Contador 0 al3 D€codiricador

Fisua Eó,4 Di¿ctma a bloques del sisrena de segundád

Page 181: Manual VHDL

174 VHDL: El arle ¿e ptusmna¡ sisrem¡s disiialcs

Como puede observarse, en el diagrama se presenta cada uno de los mó-dulos que integran un siste¡na electrónico. Este sistema está diseñado paiaabrir una caja de seguridad basada en una clave de acceso: si la clave decuat¡o números decimales inrroducidos en secuencia a través del teclado esla correcta, el controlado¡ origina una seiial de salida denominada Activa.ción, enca¡gada de abrir la caja; en caso contrario, activará una señal de sa,lida denominada Alarma. Con base en lo anterio¡ la descripción detalladade cada módult¡ se¡ía:

L Controlador Es la unidad que sincroniza cada una de las acciones de losmódulos para automatizar el sistema de segu¡idad. A continuación se expo.nen las funciones de sus selales de eDrrada/salidd.

. Salida Reset. Inicializa el contador y lo coloca en el cstado ,:le conteo

. Salida Incrementa. Señal utilizada como reloj pa¡a incrementar enuno el contador dei 0 al J.Saüda Activación. Activa la aperrura dc la caja de seguridad.Salida Alarma. lndica que la clave introducida fue incorrecta.Ent¡ada FX. lndica si el núme¡o decimal inrroducido forma parte dela clave correcta.

Si FX = I el núme¡o introducido es correcro, si FX = 0, se rrata de unnumero tncor¡ecto.

Entrada Cont,l. Señalde aviso que indica a t¡avés de Cont4 = 1 quese ha tecleado el cuarto número,Enrada Botón. Indica que se ha p¡esionacto una tecla.

En la figura E6.5 se observan las señales de ent¡ada/salida del controlador

Figu¡a Eó,5 Descnpción de las señalcs de en¡rada^alida del coni¡otado¡ d€ t¿ c,ia de sesurd¡.

Page 182: Manual VHDL

Diseño de conrolado¡cs disitalcs nediante caras ASM r VHDL 175

La relación de los mtJdulos mostrados en la 6gura 86.4 y el conrroladorse describe por medio de la carta ASM co¡¡espondienre (Fig. E6.ó).

Clave cotrecta

Estado A. En un inicio el cont¡olador envla la señal de salida Reset, con elobjero de colocar al contador en el estado cero (Q1=0,Q0=0). Con estacondición de salida del contador, el decodiffcador coloca en estado alto la sa-llda S0 (S0 : l), al mismo tiempo la salida Cont,/ adopta el valor de cero(Cont,l : Ql Q0).

Estado B. En esre estado nuestro cont¡olador está en espera de que se pre-sione la tecla correspondiente al p¡imer número de la secuencia de la clavecorrecta.

Fkura Eó.ó Carta ASM dcl sistcma de seguridad.

Esrado C. Supongamos que la clave correcta está formada por los números (4,?, 5 y 2), de sue¡re que al principio el primer dígito tecleado será el 4. Cuandoesto ocurre, la señal de botón roma el valor de uno. Observemos que la entra-da a la compuerta OR está definida por el número binario equivalente al dígi-to decimal,l (0100): (Figura 86.7). Note que este valor binario permite a suvez seleccionar la enrrada E4 deimultiplexo¡ la salida FX toma el valor de uno(FX = 1), haciendo que el cont¡olador se transliera al estado D. Es importan-te observa¡ la figura E6.7, en la cual se puede apreciar que inmediatamente

Page 183: Manual VHDL

176 VHDL: tl 'fte

dc f¡orDmar s(t€n.s disú¡les

Jc"pué. J. ¡r e,r"nar cl nrirn.rr 4. ,c , i leccr.,rr¡ tr cnr ral | . uat ru del mul ir l( .vor. enrr¡d¿ c, ,n. , ra. l ¡ , l r . .L l ¡ S0del JeruJi l r t¿Jor haci .nJo;ue l . r r 'un.cit'rn FX sea igual a uno.

Figu¡a tr6.? funcn,r¡r:icDro Jc la seDat FX del n,urF,cxoi

Estado D. En estc estado el controlador pregunta si el usua¡io aún tien.presionada la tecla correspondicnte al número 4 ( Borón : Si ) o si la re_cla ya fue soltacla (Borón =N¡).

Estado E. Se evahia el valor de Ia señal de entracla Conr4, la cual, como sc¡ecordará, en este momento dene ei valor de ce¡o C.rnr4 = No. L¡ ante¡it:ocas(ma quc el controlador transficr¿r su secuencia al cstado f; dondc se ac-tiva la señal ¡.le salida de increnento. Cuya fLrnción es envia. un pri.,, o Lcntrada de reloj del circuito contado! incremeDtando su cuenta e; uno.

Ohse¡ve en la carra ASM que el conrrolaLJor va clel esta,.lo F al esraclo Fen espera de que el usuario tcclee el siglriente Dúmero de la clave correcra \ruego repcí¡ la secuencia anterior

E¡tado E t u¿nJo. l conLrdor l leBr al , , , r r r r , , de rrc, ,e l_ / , e0 _ l / , l r . .nrl Je cnl r.rdn ( on¡.1 aJunl I el r ¡ ior Je rrnu rl-. ,nr4_- Jir. cun lo quc el . ¡n.ftolador past al esrado G y se ge¡re¡a la seiial cle salida Activación. Dich,,en, l ¡ l - rc lJ puer." . le l . r . cmr dc.egund;J r hr .c.1uc. l \ r ! ¡ rnrd sr r rbn..t ¡ r r ¡ r t ,c.rJJo inrc i ¡ l lA). en e.per¡ Je que el , r .u,r¡orrrrr , ,dr¡_.¡Jenr.cr . L

Clave incorrecta

Ahora.conside¡emos el caso en que se introduce un número íncorrecto comaclave de ent¡ada. Por ejempio, i¡raginemos que nos encontramos en cl estad,A coIr las siguientes condiciones: el contador se halla en el conteo tle cerL.

Page 184: Manual VHDL

Diseno dc ()nholadores disirales hedian¡c cams ASM ! VHDL 1jj

la señal Conr4 es igual a ccro y la salida ac¡iva del dccodificador S0 igual auno (-\0 = 1). En ese rnomento (estado B) presionamos una tecla equivoca-da, supongamos que es el número seis "6". Cono puede observarse, la entra-da E6 delmultiplexor esrá conecrada a rierra; cs deci¡ E6 = 0 (Fig. Eó.4); enconsecuencia, ¡'X : 0. Según se tdvierte, con este valor de FX la car¡a ASMse dirige hacia el estado H.

Estado H. Al igual que en el caso del esrado C, el conrrolado¡ r)licira que sele confirme si cl botón ya no está presionado; si es así, pasa al estado I.

Estado L Aquí se evalúa la señal dc entrada Cont4, la cual como ya semencionó- tiene un vakrr de cero, Cont4 : No. Esto ocasiona que la car-ta ASM se dirija al esrado J y active la señai de incrementa, la cual sirve pa-ra aumcntar en una unídad el conrador exre¡no.

Estado K. En cs¡e momento cicontrolado¡ está en espera de que se ing¡eseotro número. Obseñe que sin importar la ci6a que se presione (Botón : Si),la carta sc t¡ansfiere al estado H "retroalimentación necesaria para que elcontrolador no se salga de ese ciclo y srllo espere el con¡eo de Conr4 = Sipara activar la alamla del sisrema".

Er cl listado 6.2 se obse¡va el código VHDL cor¡espondienre a esteejemplo.

uEé 1eee. sLd loqic- l164. a1f;éñt i ry . a ia¡ma i6 Do!E(

c1k, tx, conr, l , boton: in std_lo! :J ic;

arma: out std loqic) ;

a.chitectule arLalarma of c aLa¡ma 18t l f )é esta. losl 1É (A, ts, C, D, E, F, C, H, r , . r , K, L) ;s lgra1 eoo_c¡es, - -do tur: esta. tcs:L;

p est¿.losl: p¡@eaa ledo_Jres, .1k, fx, conL4, boron) besincasé eoo pres ls

!¡t@ ¡ -> ¡eset <= I ;rnc <= 0 ;acrj\a <= 0 ,a1m¿ <= O ;edo tu: <=:;

'üE ts => resel <= 0 ;i.. <= 0 ;activa <= 0 ;alam <= C ,

if 5oto. = :L Éhér

ed._f ! t <= C;

edo ful <= B;

rbér c => feset < 0 ; inc .= 0 ;a.r iva <= o. ;aLarna < l ] ;

Continúa

Page 185: Manual VHDL

fia VHDL: El sne de p¡oe¡2¡M sts|erss disirate!

I f fx= 1

tib.¡ D => ieser <= 0 ;inc1l boton

- 1' t¡.Dedo_fut <= Dt

edo_fuE <= E;

D;

rü6 E => leset <= 0 ; inc <= 'O ;acblva <= ,0, ;a1ar¡É <=Il cont4 = 1 tben

edo_fut <= c;

edo_fut <= F,.oil If;

rüd F => reset <= ,0 ;aetiE <= O ;atalm <= ,O ; inc.=. edo_fut <= B;

tihe c => reser <= ,0 ;acliva <= ,t ;irc <= ,0,; a1alrna <=edo_fuc <= A;

the I ] => reset <= o, ; inc <= ,o ;acr iva <= ,0, ;a1ar¡ lE <=lf boton = 1 tb.¡

edo-fut <= H;

edo_fut <- r;.¡¡l If;

t¡he I => !6er <= 0 ;inc <- ,O ;aciiva <- ,0 ;atanla <=l f conr4 = '1 tb.Dedo_fut <= Ir;

edo_fur <= ,i;c!¡al f!;

ibeJ => reser <= '0 ;i¡c <= I ;acti% <= ,O ;alare <=edo_fut <- K;

rbr!¡ K => reset <= ,0, ; inc <= O';acr iva <= O,;atalm <=tl boton = 1 tb€!edo_fut <= H;

edo_fut <- K;

r . lE L => reset <- 0 , inc <= '0, ;act iva <= O,;alatra <=edo_fut <= A;

Page 186: Manual VHDL

Di*ño d€ co¡tbldtr '

dicit¡h¡ ñ6dianr. ertas ASM y ViIDL 17.,

reloj: Droc.rr (clk) b.tt¡ I :

tf (clk event and clk = '1 ) ther

edo--preE <= edo-fut;.!rit tf;

.Dtl D!oc...;' ¡¡d ¡rrcLlt.ctur. arq-alarÍ¡a;

l¡.r.do 5l D6cripción dél @ntrclador del !i!t m dc rcPuridad.

Como he¡rris podldo notaq el diseño de ca¡ta¡ ASM depende en gran

medida del cortocirntento que el diseñador tenga de cada uno de los subsis-

temas que inteetan r¡na aplicación.

Page 187: Manual VHDL

180 VHDL: El are de phsnñ¡¡ s¡tcmas dtstrús

Ejercicios

Esttu t¡¡n¡ ü ua Coúa ASM

ó.1 Realice una tabla y describa el compor'tamiento de las siguientes cartasASM.

b)

CaftAs ASM corLba úáCuitú1s de esa4¿o

6.2 Obteqa los diagramas de estado para cada una de las siguientesASM-

Page 188: Manual VHDL

D!.ño dc connolsdoG, dlsiteL! nodi¡ot cqt¡. AsM y VHDL Uf

Page 189: Manual VHDL

tE2 VHDL: El a¡te de prcsEmar sistemas disitáles

6.3 übuje la conespondiente carta ASM del siguiente diagrama de estados.Fieura ó.3

Díseño d¿ canttoladrnes '''naÁia¡t

cartas ASM

6.4 Dibuje la conespondiente ca¡ta ASM del siguiente diagrama de estados

Page 190: Manual VHDL

Disctu dc coDr¡olado,es di8irales ne.li.n¡e cartas ASM r VHDL 183

6.5 Se requiere llenar un f¡asco con 3 diferentes ti¡rs de pastillas. Cacla unade estas pastillas está almacenada en tres recipientes dife¡entcs clenomi-nados A, B y C; el llenado debe ¡ealiza¡se de fo¡ma secuencial. es decirprimero las pastillas del recipiente A, posteriormente el B y finalmenteel C, tal y como se observa en la siguienre ngura.

.w,Í

.w.¡l

.w

- -Fl t l

-

Controtde

',"":1,:lri:x""En cada frasco deben introduci¡se l0 pastillas de cada tipo por lo que el ali,mentador de pastillas de cada recipiente debe derenerse cuando.l senso¡ co-rrespondiente haya detecrado que el número de pastillas es igual a lO, en esemomento el.moto¡es encendido y hace que la banda transportadora despla_ce el fiasco hasta el siguiente alimenrado¡ de pastillas, el cual repire el ;ro-ceso anterior y transfiere al frasco hacia el rercer alimentado¡ el cual alte¡minar su conteo de pastillas correspondiente activa la banda y hace queel f¡asco se transfie¡a hacia otra parte del proceso.

a) Identilique variables de entrada y salida del controlado¡b) Diseñe la carta ASM que automatice el proceso

6.6 Diseñe el controlador de una contesradora telelónica cuyo funciona-miento se describe a continuación.

Inicialmen¡e el teléfono se encuenrra activado por el usuario para quesea contestado de forma manual o a través de la con¡estado¡a (Este estadode activación se muestra con el encendido de un LED incorporado al apara_to) El usuario tiene la opción de contestar el teléfono en el primer,r, segun_do o tercer ring , la contestado¡a debe¡á acti.,arse si el usuario no desc.r.lgala bocina al tercer ring y activa la grabación cuyo mensaje es:

Page 191: Manual VHDL

184 vH, 'L LI ' ' .

Jr ¡ ,o . , .d. . , . e,n . o, i , . . , .

"Muy buenos días, integración de sistemas elect¡ónicos a sus órde-nes, en este mohento no podemos atende¡le. Deje su mensaje dcspuésde la señal. bip,bip,bip,..En csre monrenro l" p".",,^r. q"" liilr-;.;r:lmensaje(duranre el tienpo que dura el mensRje se ilumina en la contestado,ra un.tlispiay que dice grabando) al temrino def ,".,r."i. ." .t..".iir:" io .,,r_testadora en su nrodo de grabación y r.uelve a su estado nicial.

r l lJenr i l ro,rc v.r i ¡ l - l r . Je rn,r ,J¡ , . . r l r ¡ ¡ dei . . ,n.¡ ,1.J. , .h l Dl rnc l rcarrr AiM. lue aur. ,mJrLi r , l r , ,cc\r

6.? Diseñe un controlad¡rr digiral que permita controlar las luces traseras .leun autonovil .Hay tres luces en cada latlo y operan en secucncia p:rr.:mosua¡ la dirección en que se va a dar vuelta .La sccuencia que se va .:encender depende dc 1á intención del conductor paro d,rr vt,eka ,r lo r_,quierda o a la,:le¡echa a conrinuacirin se r¡uescra Ia secuencia corr€!,pondiente.

. , ) IJelr6qr. v. , r i rh lc, Jc en,r¿J¿ v.r l iJa Jcl . , ,nn, la l , , r

h l Di5cñi la L a r AjN.4qu.. I ¡ r , , rnar i .cr l pruce., ,

6.8 Se requiere diseñar el conrrolador de un ratón electrrinico cqufejpara grabar dc las 12:00 pnr a las 5:00am,si existen personas dentro jtlas oficinas de la compañía ACSA CORPORATIOñ S.¡. O¡ CJ irafón en su modo de enccndido siempre se encuenüa g¡abanLlo, la ir:ma en la que el ¡a¡ón se desplaza dentro cle las instalaciones ,:le ¡an rnportante compañía es la siguiente:

El ratirn debe maniobra¡ girando cuando cntre en contacto con un ol_¡¡ácuio, la nariu del ¡arón riene un sensor cuya salid¡ es X= I en caso conr.:rro, srempre quc se cncuentre en contacto con un obstáculo e s x=0,

El ratón liene algunas líneas de control, enrre ellas Z1=l,que gira -ratón hacia la izquierda, 22:1 que gira el ratí¡r haci¡ ia derccha.

R] R2 RI

Page 192: Manual VHDL

Diseño de contrcládores dkitáles medtante canas ASM y VHDL 185

Icz

Cuando el ratón encuent¡a un obstáculo deberá gitar hacia la derechahasta no detecta¡ obstáculo alguno, la siguiente vez que detecte algo similarel ratón deberá girar hacia la izquierda hasta que no haya obstáculo y asl su-cesivamente.

Cuando el tiempo de gtabación ha transcuñido, el mtón enviará una se-ñal inalámbrica al puesto de control y permanece¡á en estado de alto hastael momento en el cual el inslrector de seguridad lo apague y lo recoja.

a) Identiffque variables de entrada y salida del confioladorb) Dseñe la carta ASM que automatice el proceso

6.9 Se requiere diseñar un sistema de cont¡ol para el circuito mostrado enla siguiente frgura.

El sistema debe calcular el valo¡ de la suma o diferencia a¡itmética de dos nri-meros binarios de n bits. Especlficamente queremos calcular las sumas y di.ferencias a * b, a-b,-a * by-a b. El mecanismo por el que estos núme-ros se int¡oducen en los registros a y b no se muestra en la figu¡a.

Todos los registros y el sumado¡ acomodan n bits. El registro de com.plementación e inc¡ementación (CI) se conecta al sumador, el sumador alacumulador y el acumulador se vuelve a conectar al sumado¡. todas las

ZM

Page 193: Manual VHDL

186 VHDL: tsl ¡rte de F¡os.,na¡ sisten¡s d¡slrales

concxiones se ¡ealizan con n lín€as. Ya que estas conexiones de n bits estándedicadas, es decir cada una sirve para una sola función de transmisión (no

Existe un bus de n bits al y del cual podemos transferir los contenidosde los registros A y B . Esra transferencía, facrible de dos fo¡mas, se indicapor una flecha bidireccional. A todos los registros se aplica una señal de re-loj común, qüe no está indicada. Cuando Wa = 1, en el flanco de disparo dereloj se transfiere una palabra del bus al registro A ; es deci¡, se cscribe unapalabra en el registro. Cirando Ra = 1, se lee una palabra del registro al busAlgo sinrilar se aplica a la respuesta del registro B mediante las señales Wly Rb .Cuando lVacc = 1,la salida del sumador se registrará en el acumula-dor y cuando Racc = l, el contenido del acumulado¡ se colocará en el bus

La descripción de la secuencia que debe de seguirse se muestra en l¿siguiente tabla.

Zzlcc ,Bom el ¡esis¡¡o acunulado¡ de cual-

quie. Dúmero que púeda haber qued¡do en una

operación Fievia y Z col6a las salidds del resl-

üo de complementación en ce!o.

Lee el Jdto del resist¡o A en eL bus '

escribe la

p¡l¡br¡ del bus al rcg¡sr¡o Cl

Contenido de CI p¿sado por el sunador (la ottr

cntr¡da del sumado¡ es ccro) y reg$rrado en

Contemdo de B rlansfe.ido ¡ CI

Conrenido del Acc ¡¡ansfe¡ido dl resisrro

'[¡bla d€ tuftioMmiento

a) Identilique variables de entrada y salida del controladorb) Diseiie la carta ASM que arrtomatice el proceso

Diserño de cartas ASM media¡te \4IDL

6.10 En la fígura siguiente se muestra el diagrama de un controlador de ¡:llo, diseñado para acrivar en or,:len secuencial las señales de salid.r L

5

ó

tu,\ü

Rb,v

R, \fl¡cc

Page 194: Manual VHDL

Di*ño de conrrclador$ disitales mcdianre ca¡ras ASM y VHDL tEil

Rx, W & Wa, B¿, lrlíx, Ra mediante el valor de I lógico. El valor de ini.cio se obtiene mediante la señal de en¡¡ada X , este valor debe i¡se des-plazando en cada pulso de reloj,

Obtenga el diagrama de estados del conr¡oladorRealice la programación correspondiente en VHDL

6.11 En la ffgura siguiente se muest¡a la carta ASM del controlado¡ de una¡emachado¡a electrónica. Obtenga el programa en VHDL para dichaca¡ta.

a)b)

Page 195: Manual VHDL

188 VHDL: El áne de prosmú si3t '@

disiralg

ó.12 Realícc un programa para la carta del ejercicio 6.5

6.13 Realice un programa para la carta del ejercicio 6.ó

ó.14 Realice un progama para la cana del ejercicio 6.7

6,15 Realice un programa pata la carta del ejercicio 6.8

ó.1ó Realice un programa para la carta del ejercicio 6.9

ó.17 Para el ci¡cuito mostrado a continuación.

a) Realice el pmgrama del circuito conuolador de tal manera que seutilicen 5 displays para visualüar un mensaje alfanumérico, cuyos códigos de caracter se encuentran almacenados en el bloque denomi-nado como memo¡ia.

b) Agregue a su progama las insüucciones necesarias para que el men-saje pueda Ererecer de fo¡m¡ intermitente.

A continuación se describen los elementos y señales de control:

LOCICA DE DIRECCIÓN Proporciona la dirección del caracter que se va avisualiza¡ en el dísplay corres¡rondiente. .

MEMORIA C,ontiene los ca¡actcres visualüar en los dirplays

SELECIOR DEL DISPI"{Y Habilita el display en el que se visualiza el cancte.

CONTROL.{DOR Ci¡cuito que sincroniza las operaciones de la ló-gica de dirección

SINC Señal que reinicia el bar¡ido de la memoria.

Page 196: Manual VHDL

Diseño de conroladores disirales h.dianre cartas ASM )' VHDL r89

Diraño de c¿rtdr ASM nw¿íútcWIDL

6.18 Implemente un circuito que utilice 5 displays para visualizar un mensajecuyos cdigos de ca¡acte¡ se encuenFan almacenados en memo¡ia. Elcontrolador deberá se¡ tal que el mensaje se desplace a la üquierda o a hderecha. A contimración se desc¡iben los elem..,to. y.eñ^1". d" corrtJ

LOGICA DE DIRECCIóN Determina la dirección del primer caracte¡ a se¡DE DESPLAZAMIENTO lefdo dependiendo sí el de"ilazamiento es hacia

la izquierda o hacia la derecha.

LoGIcA DE proporciona la dirección del ca¡acre¡ que se va aDIRECCIóN mostrar en el display correspondienre.

MEMoRIA contiene los ca¡acteres a mostrar en losdisplay.

sELEgfoR DE DlSpt"Ay Habilita el display en el cuál se muest¡a elca¡acter.

coNTRoLADoR Circuito que sinc¡oniza la operación de laslógicas de dirección de desplazamiento y de di_¡ecclo¡.

Page 197: Manual VHDL

190 VHDL: El ¿.re de prccramar sisremas digitales

LDI

IZQ,DER

UP

DWN

LD2

CLRI

Señal que habilita Ia carga de la dirección dondese encuentra el último caracter a tlesplazar haciaIa derecha o izquiercla.

SeÁal que inicia la lógica cle dirección para quelea cl ¡r imrr .¿racrer ¿lma.enalo en memr¡rLécuando el meruaje se despla?a hacia la izqLrierda.

Scrial que controla el dcsplazamiento hacia ta i:,quierda o derecha clel mensaje.

Señrl que inrremrnr r l¿ Jrre.cr, in quc (onn.r ria lógica de dirección de desplazamienro cuandcel mensaje se desplaz¿ a la izquierda.

Señal que decremenra la dirección que contienela lógica de dirección de desplazamiento cuandiel mensaje se desplaza a la derecha.

Señal que habihra a la lógica de direcciórr par:ca¡gar la dirección que propo¡ciona la lógica Llrdirección de desplazamienro.

Señal que pe¡mite se reinicie el barrido de me-m¡ria al leer el ul lmu cdr. icter del nren,aj..

CLRz

c- señal aL rivd en bato. que hcbil ir , la n,cm,ri, ¡ .ra una ope¡ación de lectura o esc¡itura,

SefuJ que conrroLa la lecrur¡ n exnrura Jc mem.n-

ú = 0, escritu¡aV = l, lectura

Señal de reloj para el controlador

A rravés de este bus viaja la direcciirn de la loc;-lidad de memoria a leer

A t¡avés de este bus üaja elcaracte¡ leído de m..moria y a visuali"ar en el display con-espondiente

A lravés de csre bus viaja la dirección delpnmc:(¡racr(r d leer cuando .e redh_r un Je.¡la:.mienrc de mensaje a la i:quierda o de¡echa.

INTERMITENTEfUO Señal que controla la visualización inrermi¡en¡.o fija del mensaje mostrado.

!t/

SINC DZP

BUS DE DIRECCIONES

BUS DE DAIOS

BUS DE CARGA

Page 198: Manual VHDL

Diseño de co¡troladdes disirales mediánre cárras ASM y VHDL 191

Bus de

Diseña de cartos ASM rrcdíañte WIDL.

6.19 Se desea diseña¡ un sistema t¡ansmrso¡_recepto¡ de datos serie comoel most¡ado en la ffgura siguiente. La descripción de 1..

"1";;;-;señales de conttol correspondientes al trasmi.o. ," ,nu".,."r, u ._oir,ilnuaclon:

Page 199: Manual VHDL

192 VHDL: El úc de lmeE¡,a¡ s$tefrar Jisirárcs

MEMORIA

LOGICA DEDIRICCIONAMIENTO

CONTADOR DE DAIOS

REGISTRO DE DATOS

En cste dispositivo se encuentran alm¡cenados losdatos que serán transrniridos.

Le Írdica a la memo¡ía la loc¿lidad espccífica endónde se encuent¡a ¡lmacenado el daro que se ha,:1etrans¡nltr.

Dispositivo rlue indica el núne¡o de dattx quc schan transmitido.

Disposirivo quc almlcena temporalmcnte el datr,que se va a trarun tir. El dato contenido en este re-gr.rru,rde\plarap.,r . re, l rz¿r la rrrn,mtr , .n rn.ene

Le inJr. . r l . . , r ' t ru l ,dor Luanlo, Jr . f lJr . ,n, ie l r , , .ha realizado el registro de datos.

Coordina las funciones que deberán de realizarr por ea-da uno de l¡ elementos quc fo¡man el sisrema.

Indica a la lógica de direcciona¡niento de nemon:que debe cargar la di¡ección inicial a partir dc l;cual se encuent¡an almncenados lcx datos que vara ser t¡ansmitidos.

Seiral de irc¡emenro de la di¡ección de "."ut,.para leei el siguiente dato a t¡ansmitir

Habrlr¡¿. i . in Jc la mernoria p.rra la. , 'p.raLi. 'ne. i .lectura o escriru¡a.

Señ.rl que en e'raJ,, ¡ l t , rndic" n l¿ mcm,,r i¡ ¡ruoperación de iectura.

Indica al contador de daros en qué momento del.er"comer"ar a contar el númeto de datos transmiridc¡

lncrementa el contador de datos cada vez que u:dato ha sido transmitido.

Le indica al contador de desplazamientos err qurnumenro Jrherá empezar . i (ontrr cl r 'ul l .er -cbits que han sido rransmitidos.

Incr.menta el conr¿Jor J. Je.pl 'zamrenro,

., :rvez quc un bit ha sido transnritido.

CONTADOR DEDESPLAZAMIENTO

CONTROLADOR

CARDIR

INCDIR

CS

\t

]NICTADA,

INCNUMDAT

INICTADZP

INCNUMDZP

Page 200: Manual VHDL

Dneñ{, J€ conúoladores dqatales ñediant€ c¡rt¡s ASM r VHDL 193

CARDAI Le intlica al regisno de clatos en tlue momento car-gar el dato que se encuentra en el hus ,:le datos ,:1e lamemoria.

DZP Señal que habilita al rcgisrro dc datos pa¡a despla-za¡ (rrasmítí¡) el dato conrenido en é1.

FINCAR Seial que indica cu¡n.lo un dal) ha sido trasmitidocompletarnente.

l- lNUAl Jerrrr - lue l |ror\¡ \rrrnoo t|n nro.]ue oe odto\ nr n-do trasmirido.

INI Señal que indíca al sistema en que momento se ini-cia la t¡ansmisión de da¡os.

TX Línea a través de la cual viajan las señalcs de comu-nicación del ftansmisor hacia el recepto¡

RX Línea a rrar'és de la cuRl viajan las señales de comLr-nicación del receptor hacia el transmisor

La parte correspondiente al receptor se explica a continuación:

MEMORIA En este disposirivo se almacena¡án los datos que sevan a ¡ecibír

LOGICA DE Le indica a la memo¡ia la localidad especílica enDIRECCIONAMIENTO donde se almacena¡á el dato a recibir

CONTADOR Dispositivo que indica cl níroero de dacos que seDE DATOS han recibido.

RECISTRO Dispositivo que almacena tempo¡almente el datoDE DATOS que se va a recibi¡. Este registro desplaza el bit que

se encuentra en su enlrada serie, para la realizaciónde Lr re.c¡ . rón.er ie.

CONTADOR DE Le indica al cont¡olador cuando un dato ha sido ¡e-DESPLAZAMIENTO cibidoporcompleto.

CONTROLADOR Coordin¿ las funciones que deberán realizarse porcada uno de los elementos que forman al sistema.

CARDIR lndica a la lógica de dircccionamiento de memo¡iaque debe carga¡ la direcció¡ inicial a parth de la cualse almacena¡án los datos que van a ser recibidos.

Page 201: Manual VHDL

194 VHDLj Ela¡re de Frosrana¡ sntenhs dislt¿lcs

INCDIR Señal de incremento de la dirección tle memoria,para almacenar el nuevo dato recibido.

CS Habilitación de la memoria para las operaciones delectu¡a o escritu¡a,

!7 Señal que en estado bajo indica a la memo¡ia unaope¡ación dc escritura.

INICTADM Indica al contador de datos en que momenro debe_rá comenzar a contar el número de daos recibidos.

INCNUMDAT Incrementa el conrador de datos cada vez que undato ha sido recibido.

INICTADZP Le indica al contador de desplazamienros en quemomento deberá empezar contar el número de bitsrecibidos.

INCNUMDZP Inc¡emenra el contador cle desplazamiento cada ve:que un bit ha sido recibido.

DZp Señal que habilira al registro de datos para despla_zar (recibir) el bit que se está transmitíendo.

FINCAR Señal que indica cuando un dato ha sido recibido.

¡¡¡¡¡1 Señal que indica cuando un bloque de daros ha si_do recibido.

TX Línea a t¡avés de la cual viajan las señales cle comu_nicación del receptor al transmisor. Estas señales son:

LSTREC Listo a Ia recepción, indica que ei sistema recepro:está listo para recibir un darl).

CARREC Dato recibido, el sistema recepto¡ ndica que el da-to que ha sido trasmitido fue recibido sin error y h=sido almacenado.

ERROR Esta se¡al se activa cada vez que ocu¡re un e¡¡o¡ deparidad cuando un daro ha sido recibido.

RX Línea a través de la cual viajan las señales de comu_nicación del trasmisor hacia el receptor.

ERROR Señal que en es¡ado alto indica al controlador quehay un error de paridad (pa¡ o mpa¡).

PARIDAD Señal que indica el tipo de paridad que deberán rene:Ios datos recibidos.

Page 202: Manual VHDL

Diseño de cónt¡dado.es digitales mediante carto ASM y \aHDL 195

Bibüografía

FloydT.L.: Fundamenms de Sistemas Digitales, Prentice-Hall, 1998.Stephen Brown, Zvonko V¡anesic: Fund¿menr¡¡k of DígitalLagic \XlitchVHDL

Design, McGraw,Hill, 2000.FJ. Hlll and Peterson, Computer Aü l,ngical Desi¿n Wirch Ern¡iusrt on VLSI,

4Th ed, llitey, 1993.C.H.Roth Jr, Fmlamenrals o/I-og?¡ DestSn, Vest,1993.VP Nelson, H.T Nagle, Digitd l¡gic Cicuit Anai¡rsis and Design, Prentice-

Hall,1995.Charles H. Roth, Jr, Digitai Slsrems Design Using VHDL, P!(/S publishing

Company, 1998.Perry Douglas,VHDL, 2ed, New York,.McGraw-Hill, l994.Herbert Taub, Circliro s Digitales y Mitroprocesadores, McGraw-Hill, 1981.

Page 203: Manual VHDL

4apítulo /

Diseño jerárquico enVHDL

El diseÁo jerárquico es una herranienta de apoyo que permite la programaciónde exte¡sos diseños mediante la unión de pequeños bloques; es decir, un dise-ño je¡árquico ag¡upa varias entidades electrónicas, las cuales se pueden anali-zary simular de manera individual con facilidad, para luego relacionarlas a travésde un algoritmo de integración llamado Top I-evel (Fig. 7.1a).

La conceptualización del diseño Top kvel diliere de la p¡ogramación de lossistemas digitales, integrados en una entidad (Cap. 5). En este caso nose crata de integtar dos o mrás módulos electrónicos individuales (Fig. 7.1b),si no diseña¡ cada módulo por separado y luego coordinar su funcionamiento através del algoritmo de programación 'Ibp l-evel.

Una ventaja impottante del diseño jerárquico en la programación de gran-des diseños es la facilidad para trabajar al mismo tiempo con otros diseñadores(paralelismo), ya que mientras uno puede diseñar una parre del sisrema, otropuede desarroüar un bloque distinto para unirlos en un solo proyecto miis tarde.

wqffiFI, r ' \

l@l] lF6¡lla)

r¡sü.¡ ?.1 a) EsÍuctur¡s jeú¡quicas. b) I¡resración de enridades.

Page 204: Manual VHDL

198 VHDL: El a¡tc de posuD¿¡ sisremas digirales

7.1 Metodología de diseño de estructuras jerárquicas

Una metodoft;gía que se recomienda al progranrar extensos diseños es lasrgulente:

1) Analizar con deralle el problema y descomponer en bloques indivr_duales la estrucrura global.

2) Diseñar y programa¡ módulos individuales (componentes).3) Crear un paqtrete de componentes4) Diseñar el programa de al¡o nivel (Iop Level).

Con el fin de describir y detallar la metodología empleada en el diseñcde esrructuras jerá¡quicas, consideremos el circuito AMDZ9O9. Este disposr_tivo es un secuenciador de 4 bits desarrollado por la compañía AdvanceJ Mi-c¡o Devices, cuya función es t¡ansferi¡ a su bus de salida [,) una de enoecuatro fuentes internas y externas ,:1e daros. En la figura ?.2 se muest¡a la eetiuctura externa del circuito y en la tabla 2.1 se indica la función de cada rer,minal.

Figu¡a 7.2 Secuencia¡lo¡ de cu,rro bits AMD2909.

vccGNOYO

Y3

PUsH/PoP l.oE l -

crN 'l contolñl

Page 205: Manual VHDL

D*ño jerárquico en VHDL 199

Terminal Rmción

Entradas de registrc RJ-Ro

Entrada! dir€ctas D3-D0

Ent¡ada ER

Ent¡ada /FE

EntÉda CIN

Entrada ,/i:)E

Entnda PUSHrcP

Entmd¿ó S0 y Sl

Salidas Y3,Y0

Salida COUT

Consenan el estado prcente m una función de ¡oü o

So usan como entrada! del secuenciador para indica¡ uncambio de dirección en la lógica d€l programa.

Habilitación del resistro R.

Hebilitación del punte¡o de pila Gtack pointe¡. ST).

Habiliración de salidas.

Señalcs pan brinc y retomc de subrutina.

Llneas d€ selección que detemimn u¡a de cuaro 6¡entesdferentes de entrada.

Salid¡s del secuenclador.

Alim€ntación del circuito.

T¡bl¡ 7.1 Descripció¡ de las señals d€ cnrnda y salida del secudciadoi

Descdpción del circuito AMD2909

El secuenciador de 4 bits tiene entrada pa¡a un bus de datos extemo D (DJ- D0) , un registro R (R3 - R0) , un apuntador de pila de una palabra ST y unsumado¡ de 4 bits, que fi¡nciona como contado¡ de programa (Fig. 7.3).

Flsur¡ ?,3 Dercnpció¡ intema del circuito *cuenciadú AMD2909 [tl.

Page 206: Manual VHDL

200 VtiDL,ll¡rt€ Je pNerá¡úf sisrcm¡s digiral.s

Las elt¡a,:las di¡ectas D sc utilizan para can¡lizar las direcciones decarga descle una memoria ,:1e progranra y/o control hacia cl secucnciado¡de microprogranu. En alguna de 1as arquitecru¡as, las entradas R sírven pa-¡a alnaccnar elestado presente en una funcirin cle /roiJ o ¡etén. El contado¡de microprograma, PC, incrcmenta la salida en PC-+ 1, siernpre y cuando elacarreo de ent¡a.la CIN sea íguaL a 1. Esto permitc rceLizar una instroccirinde c,.rcnta o almacenar en la pila la siguiente dirección cuanclo se hace un lla-maclo a subrurine, por lo que al salir dc ésta la dirección se obtiene dc lapila y se canalízt hacia el bus,.le salida Y. Po¡ írltimo, ci ci¡cuito conricnccuatro multiplexores de 4:1 que seleccionan u¡ra de sus cüatro ent¡adas PC-'ST R y D, a cravés de sus líneas de seleccnin S0 y SI.

7.2 Anáüsis del problema y descomposición en bloques individualesde la estructura global

Como se mencíonó, el diseño je¡árquico basa su fortaleza en la descorrposi-cióD o división de un diseño. Lo Rnte¡ior permite analizar los dife¡en¡es sul..sistcnras que lo lorman y unirlrs más tarrle a través de un programa denominaclo Top Level.

En la figura 7.4 se muestra la in¡erconcxión i¡rtcrna dc cada rrno dc l,¡sbloques y las señales rle conüolque interactúan en cada uno de lLrs subsiste.rna. tn 'u l r ip l . r ' r J. . r lc . . r , ln. .onr,Jor Je rnr.rrprrqrnmo. reqr ' r ru \ dtr , I rrador de pila) del circuito AMD2909.

+ PUS|-I/POP

clN

s1

Figura 7.4 DirFJm. q.n.r . lJL J".ñ , .

Page 207: Manual VHDL

Direño jerá¡quo en VHDL 201

Diseño y programación de componentés o unidadés del circuito

El primer paso de diseño consiste en progama¡ de mane¡a individual cadauno de los componentes y/o unidades del circuito. Un componente es la oar,te de un programa que deffne un elemenro fsico. el cr,al .e puede urnr. enotrcs diseños o entidades. Con base en la figura anterior, iniciaremos la pro-gramación de cada uno de los bloques que forman el ci¡cuito AMD2909.

Diseño del registo (R)

En la figura 7.5 se muestra el registro R y las señales de control asociadas aé1, mieotras que en el listado 7.1 se puede observar el código VHDL corres-pondiente a esta enridad.

_..-..Tr:,=.::_z_ ,

Figur¿ 7,5 Resis¡.o de 4 bits.

Diseño del resistro R

u.. ieee. std_1osic_l164. al l ;.¡tlty resisrro 16 Dort (

R: in srd losic_veclor(3 dounro 0);ER, CL(: ln std_loqic;

REG: l¿out std_loqic_weclor ( 3 atolrnto

archit€ctü!é arLreg ot regisrro t.béglu

9loc€ss (cLK, ER, REG,R) begt¡lf (cLK év6!! a¡al cLK = 1 )!hea

REG <= R;

REG <= REG;eñdt lf,

€nal If;

0)) ;

Lbt¡do 7.r Proeramación de un qisno de 4 bits.

Page 208: Manual VHDL

m2 VHDL: El á¡te de prosÉMr sGreñs drsirales

Dieeño del multiplexor

Este componente es simplemente un multiplexor cuádruple de {:1, con dosllneas de selección (S0 y SI), cuatro entradas (R, ST D PC) y una salida (F)de 4 bits (Fic. 7.6).

Fisur¿ ?.6 Multiplexor dé selección.

El código de este componente se muestra en el listado ?,2.

-- D:seño de_ mrx qre selecciom una operación

ura ieee. srd_1ogic-1164. d1;@tltt¡ mr)l4 1. ¡¡oÉt (

D,R,ST,PC: h -std_logic_vecEor (3 dloloto 0);S: lD std-Iogic_veclor{L dloEro 0);Y: q¡r sqtogic_vecror (3 ¿brEro 0));

d M_4;

üc¡l,t€ctu¡€ arqJu o! rux_4 1sb.glD

ülth S ¡.LactY <= R vh.o "10 ,

s1r lba '01' .PC nh6 "00' ,

D r.bá!¡ otl¡a!á ;

l

Sa¡iia (Y)

l¡r.do ?.2 Codieo del muloplao¡ de rle(ión.

Page 209: Manual VHDL

Diseño jerárquico e¡ VHDL 203

Contador de microptograma (PC)

En esencia, la función de este bloque es incrementa¡ la dirección de entradacuando CIN es igual a uno. El diagrama correspondiente se encuentra en la¡rgura /. / .

Figuá 7.? Contado¡ de microprognma.

En el listado 7.3 se aprecia el código que describe el funcionamiento delcontador de microprograma.

Como puede observarse, la mane¡a más sencilla de programarlo es a tra.vés de la arquitectura funcional, considerando el circuito sumador y el con,tador como una entidad de diseño, con entradas y salidas generales. El fun-cionamiento es muy simple: cuando el acarreo de entrada (CIN) tiene elvalor de '1' y el reloj del sistema está en la transición de '0' a '1', la direcciónY se incrementa en uno y su valor pasa al bus de salida PC. En caso contra-¡io, cuando CIN : '0', se asigna a PC el valo¡ de Y sin cambios.

Diseño deL bloque de cuenla (contador de nicroproqra¡na)

use ieee, std logic_1164. aLl ;

use work. std_ar i th, a l l ;

entity npc ls 9ort (

CIN, CLKi 1n std loqic;

Y: inout std- losic wecLor( l atoMro 0);COUT: ouE std_]o_oic;

PC: l ¡ou! std logic_vector(3 downto 0) ) ;

Conlinúa

Page 210: Manual VHDL

204 VHDL: El a¡te de procnmr sistenas digitales

alcbll€ctu¡e a¡q,rrpc ol rpc ls

b€Et¡groc€8a (cL(, Y, CrN) b6gin

lf (CLK €vcot .¡d CLK = 1 ) tb.n

1! (cIN = 1) Eh€¡¡

PC<=Y+1;

e1s€

€fd lf;

€r¡it tf;

€!¡a¡ Droc€ra ;

cou¡ <= (c lN á¡d Y(0)a¡d Y(1) á¡¡d Y(2) . rd Y(3)) ;

oat arLry)c;

Li.tado ?,3 Di*ño del co¡tado! de miüoprosEma

Apuntador de pila (Stack Poi¡¡ter)

La pila {stack) de la ñgura 7.8 está disenada para almacena¡ un dato de {bits, de modo que cuando en un progaama se hace un llamado a sub¡utina,la siguiente dirección (PC + l) se almacena en la pila, por 1o que al salirde la subrutina la di¡ección se toma de Ia pila y se envía al multiplexor de se-lección, el cual la canaliza al bus de salida (Y),

Pan poder introducir y almacenar un dato en la pila, se debe habilitarprimero la señal FE (habilitación de pila) y la señal PUSH (FE : '0'yPUSH='l'), De esta forma, cuando la trarxición del reloj (CLK) sea de'0a '1', el dato que se encuent¡a en PC se int¡oduce y almacena en la pila has'ta que la señal PUSH se deshabilite (PUSH = '0). Para sacar el dato se ha-bilita la señal POP (POP : '0), con 1o que el dato se canaliza al bus desalida ST.

*effii:*-cLK €"i fl

A4

Figuñ 7.8 Pla de uno palab¡a de 4 bus.

Page 211: Manual VHDL

DiÉñot.rátquico 6 VHDL ?M

En el listado t,,l sc r¡ü¡csra e[ prcgra¡¡a que indicá el ñúcimamienrode la entidad co¡¡espondiente a la pila (stack).

. - Drseño de úa pi l¿ de u¡a pa-tat¡ra c le 4 b:rs

llbtary i eee;

u¡. i eee. std--ogic_I I64. aI I ;

u!€ work. srd-¿r i th. a l l ;

GDtl ly sLack Ia Dort (

CLK, FE, PItSt, .POP: lE std_logic;

PC: lD Étd_losic_vector (3 ¿iowtrto 0);

STr ,.!art 6r{logic_vector (3 dlordto 0));

énd stack;

trcblt€ctur€ arq_slack of slack l.

,1.!ra!1 var: std*losic-weclor (3 Éohto 0)i

. b.glE

Drocer¡ (FE, Clrt, PUSH, POP, PC)

v¿rldbl€ x: srd-logic,vector (3 ¿lol'Áto 0);

D.!rlE

l! (clK'.vc¡t a¡it CLK = 1 ) rh.¡

I f (FE E '0 ) tbó

tf (PVSfl = '1 ) th.¡

x <= Pc; - alñacena dalo

wa¡ <= x;' c l . l f {POP = '0 ' ) th.a

SI <- R; - saca daLo

.I . .

€n¿l lf;

e¡ó t i ;.ndt lf;

.D¿ D!oc.'';.¡dl a¡q_stack;

¡¡¡do 7.4 Di6.ño de rm pila d€ uM pabbm de 4 orts.

Page 212: Manual VHDL

2n6 VHDL: El arte dc Froglama¡ sis¡enas disirales

| 7.4 Creación de un paquete de componentes

Una vez que se ha diseñado cada m<'rdulo que forma la arquitectuta gene'ral, se crea un programa que contenga los componentes de carla una de lasentidades de diseño descritas con anterio¡idad. Para esto es necesario iden-tifrcar prime¡o el paquete en que se almacenarán los diseños (lfnea 4). Ennuestro ejemplo el paquete recibe el nombre de comps_sec (el usuario es-coge dicho nombre).

Como puede observar, en el listado 7.5 se ilust¡a la mane¡a de decla¡arcada componente de un paquete llamado comps_sec. Note que cada compo-nente se declara como üna entidad de diseño. con Ia omisión de la oalabra¡eservada is y agregando la cláusula cornponent (llneas 5,11,18 y 24).

- .é e- del '

, . t . ) ) ) l?

3 use ieee. std Logi ._1164.al l ;

4 rEckase comps_sec t3 -- declaración del paquete

5 cc4)qrent registro Dort (

6 R: in std Losic vector(3 alc 'dr to 0);7 ER,CLK: in std loqic;

8 F¡c: it@t sLd_logic_ve.tor ( l tlohEo 0));

10

11 cc4)o¡eat rpc Dorl ( decLaración del contador

12 CIN,CLK: i ¡ sLd_logi . ;

13 Y: i¡ std logic_vector(l ¿lrhto 0);

14 coUT: i¡@t sid_lógi.;15 rC: iDout sld_logic_vecloi (:l domlo C));

1i1 €rat cc.ponen!;

11

18 cq)on@t stack !F.t ( decLaración del stack

ló . ' . - f ,D .DOD: ln-o 09 j

20 ?C: j.lor¡t std logic vecto¡(3 alc¡rt¡to 0);21 sr: i ¡or¡ ! std lo€r ic vector(3 doin¡to 0)) ;

23

24 cqpt)@t mu_4 llorl { -- deelaración oe1 nultiplexo:, D," .^ D-: t ! d oq .é o.r a¡row¡lo

26 s: i ¡ std loqic vector( l a lo imto 0);21 t : tuf fer sLd losic vector 1l a losnto 0)) ;28 éüd cc(rDdrdt;

29 end conps sec;

Ustadó ?.5 ( ,cr ¡ n dc p. . l -cr . lu¡ . ¡nh.n, 1". , ,n,p.n. , ' . .oel .e.u"a.hd.r

Page 213: Manual VHDL

Diseño jerá¡quico en VHDL 207

75 Diseño del programa de alto nivel (Top Level)

Po¡ último y como señalamos desde el principio, el algo¡itmo que une cadabloque o componente de diseño inte¡conectado a través de señales o busesrntern,rr ce dennmina T'p Level tFig. Lo,

a)

FiguÉ 7.9 Rogram¡ de ako nivet (Top L¡vel).

El programa de alto nivel que realiza esta función se muest¡a en el lis,

En la parte inicial del programa se llama a la librerla amd (llnea 1). Éstacontrene et paquete comps_sec, que cuenta con los componentes que se uti-lü¿rán en el diseño (cre¡( iün de l ibrenar).

Diseño de los conponenres det secuenciador 2909

1 Ubrary ieee, md;2 use ieee. std 1oqic,1164.at¡ ;3 usé work.std ar i rh. a11;4 uE€ md.conps_sec.all; - paquere creado m ta tibrería md5 er¡tily md2909 i€ r,orr (6 R: tn srd_1ogic_vecror (j akMÉo 0);7 D: ln srd_loglc_vector G ato,raro 0);8 ER: i¡ srd_roqic;9 cl,K: l.¡ std_loglc;10 s: ln srd_tosic_vecror (:L ¿torEto O);

E sccr rogac;12 FUSH: i ¡ std toqic;1l RIP: i¡ std_toqic;14 CIN: i¡ std Loqic;15 COLn: ftI(,tt! srd-logic;t6 Y: ¡r.¡ffe¡ std tosic-vecror (3 ¿tmro 0));:17 €¡d dd2909;

ContintE

Page 214: Manual VHDL

208 VHIjL [J rne Jr pn,grrmrr.Fre n¡ JLrñ¿[\

19 archiEecture a¡(Larnd of and2909 is2C Éignal REer s i . l loqic vecrcr ( l domro 0);21 Bisnal sr : std loqic vector ( l dohto 0);22 signal !C: s l ]d iogic vector ( l downto 0);

2l besln

2/\

25 in i . ia in lé icoú.:x ió¡ de los corponenres26

27 !1i regis:ro pol t MD 1CrI l =: a l ( , En => ¡R, REC => Rx6, R ,> Pl i

28 u2: mpc Dolt rlaD lcII=>atN, coil'=>c¡l]T, clr->cr,(, y=>y,

)r

l0 ! l ; s tack !é! t @p (c i l ->a-,11, sE => sE, Li ls i l=>PusH, FoF , . ) l - -

l l P0:, Mtc => ¡ I tc, s: => sr) ;

.12 :4: mu¡ I Dol t nat i :=>D, R=>L, S1=>¡T, !C=>PC, S.>S, ¡=>!r ;

l4 eld arlslc,

Listado 7.ó C¡eacmn d.l pfosranr. ¡i¡incipal.

La cnridad se decla¡a asignando las terminales de entrada y salida del sÉ-cuenciado¡, la! cuales se nomb¡an tal como están referidas en su módulo (l:-neas 6 a 16). A conrinuación las señales que interconectan cada uno de lirmódulos se declaran dentro Lle la arquitectura (líneas 20 a 22). Note que ertas señales no tienen asignada aLguna terminal del clíspositivo.

La segunda parre del código hace referencia a la conexión de los disnrtos cornponentes utílizando la cláusula port ñap (líneas 27 a 32). Aderná-ru1, u2, u3 y u4 se denominan etiquetas de asignación inmediata. En ca¿asignación, el símbolo = ) se usa para asociar (map) las señales actuales rardecir las que conforman la entidad amd2909) con las locales (los puertos qu.componen cada módulo de dlseno). Una vez que se conecta cada módulo. ¿diseño se compila, generando un archivo.jed, que contiene todos lo cor:.Ponentes creddos.

Es importante resalta¡ en este prog¡ama la función de las terminales;ent¡a,:1a/salida (inout). Éstas se urilizxn para acoplar los dife¡entes bloquñ.debido a que son salidas de un bl4ue y entradas a un bloque diferente.

| 7.6 Creación de una librería en Warp

Como se puede apreciar, en el lisráclo anrerior (liscado 7.6) se otilizó una:-bre¡ía llamada ¿md, la cual se creó para almacena¡ el paquete comps_sec q-E

Page 215: Manual VHDL

Diseño jer:iqui.. cn VHDL 209

contiene los componentes del diseño. Cabe mencionar que el ur) de las li-brerías auxilia al programador en la reutilizacirin de código; es decir, en lacreación de un lugar para ai¡racenar sus diseños, de modo que puedan servirpara forma¡ pa¡te de oüos diseños.

Ahora, con el fin de que pueda crear una librería de trabajo con facili-dad, presentamos este apartado donde mostramos los pasos que se deben se-guir con Ia herramienta Galaxy (Warp R4, Cypress Semiconductor).

3.

4.

5.

2.

t . Primero se genera un proyecto exclusivo para guardar los programasque forrnarán el diseño, o los que desean inrroduci¡sc cn la librería.Este proyecto (considerado como un archivo) debe llevar un nombreasignado po¡ el usuario y la ruta (incluyendo la unidad de disco) enque se almacenará.Para crear cl proyecto, escoja del menú p ncipal la opción project-> new y, de acue¡do con nuestro ejemplo, asigne los siguientesparámetros:

c:\ejemplo\diseño

donde dise¿o es ei nombre del archivo en que se almacenarán todoslos diseños.

Una vez creado, debe aparecer la ventana del proyecb en que se in-clu án los diseños. Para esto elija la opción File -> Add del menúprincipal y los programas que formarán dícha aplicación (multiplexo¡rcgistroj pc y stack).

Si todos los rliseños apa¡ecen en la ventana de proyecro, tendrá quecrear la librería en que se alt¡acenarán, Para esto, seleccione la op-ción Lib¡aries del menú File desde el menú principal. Esto abre lapantalla llanrada Manejador d.e Libreñas en GaIa4,

Con la venrana del manejador de lib¡erlas abierta, selecci(ne Createlibrary desde la opción File (del menú principal). En la pantalla que seabre esc¡iba el nombre con que identificará dicha librería -en nuest¡ocaso tecleamos drLl-. Ptesione Ok para aceptar los cambios.

Al llegar a este paso, el nombre de la librería creada debe aparecer enel cuad¡o libra¡ies del manejador de librerías. Presione el botón Donepara almacenar dicho nombre en el proyecto.

6.

Page 216: Manual VHDL

210 VHDL, El arte de programar sistehás dicitales

7. De nuevo en la pantalla principal, elija la opción Select all, del menúFiles. Luego presione el botón File situado dent¡o de Synthesis op-tions, con lo que aparecerá una ventana como la mostrada en la figu-¡a ?.10. El nombre en la parte superío¡ de esta ventana debe se¡ el delarchivo seleccionado de la Lista de diseños de la ventana de proyec-to. Aquí eiija la opción other y la librerla de trabaio que ha creado(amd). A continuación presione Ok, Hay que repetir esta secuenciacon cada uno de los diseños del DrovecL(].

Permile slecci@ar €l disño dé

fD.sliñaton L¡brary -

tr olhe,

F@lwdkII lI lt l L l

L

f ok-l f¡""""r1

Err.d. de Las L¡b@r6<-- lp€seniadas por wa.p y

lras creadd po, é! usuaro

FiguÉ 7.10 AJchivos compilados dent¡o dc la lib¡erü ¿nd.

8. Una vez que se encuentren todos los diseños en la lib¡eúa, esccl.Save del menú File para ásegurar que se gua¡den los cambios realizadcti

9. El siguiente paso es compilar los diseños en la librería. Para esto se Fresiona el botón Smart de la ventaja de proyectos (project). Con es=opcíón todas las unidades de diseño y su paquete correspondiente ..compilan en la librería.

10. Para comprobar la compilación de los diseños en la libreía, se eLrglibraries del menú ñ1e6. Esta opción abre el manejador de librerías eGalaxy. Aquí veremos que los diseños creados se encuentran den-ide la librería amd.

Page 217: Manual VHDL

Diseño j€rárqu@ en VHDL 2ll

Para reaffrmar la programación de las es¡ructuras jerárquicas, considere,mos el siguiente ejemplo.

Us€ el diseño je¡árquico pa¡a diseñar un micropiocesado¡ de 4 bits como elde la ñgura E?.1.

fi¡rm f,7.1 Mr¡oprcs¿do¡ { birs.r

Descripción del mictoptocesador

En la ffgua E?.1 se aprecia cada uno de los bloques intemos del microoro-cesador. Su función es la siguiente.

. Gener¡do¡ de ciclo de m&ui¡ra. Este módulo es la unidad de connoldel microprocesador y su función es sincroniza¡ y activar la participa-ción de cada uno de los ¡egistros intemos del microprocesador.

. Coürado¡ de progr¿ma. El contador es un ¡egistro intemo del micro.procesador que ptoporciona la siguiente di¡ección de memoria, sea pa,ra introducir un dato o uña instrucción al microorocesado¿

t Uruiu.la Jó"é Mara. Mrrbpd ee,tñ, ptosrfun ¿rr^lü6.M{tuItú,w5.t4

Page 218: Manual VHDL

212 VHDL, El ane rle ¡mgramar sñtc,¡as ¡lisitalcs

Registro de instrucción, Almacena temporalmenrc La insfrucci(in quese va a ejecuta¡ en el microprocesador,

Descodiffcado¡ de insftucción. Es el elemento urilizado para interpre-ta¡ y ejecurar la instruccií)n que se requie¡e ¡eRlizar en la unidad arit-méticd y lógica.

Registro de datos. Ahlacena hx datrs que prc¡vienen de la mcmoria dep¡ograma y que requie¡e el nlicrcprocesador para efectuar una opcración.

Unidad aritmética y lógica (ALU), Es la parrc del microprocesa,:lordondc sc realizan las operaciones lógicas o arirméticas.

Acumulador temporal. Es el regisrro quc alrnacenir tenporalmente el¡esultado de las opcraciones realizacl¡s dent¡o ,.le la ALU.

Acumulador permanente. Es el ¡egistro que almacena el resultado dcla írltina operacií)n realizadl por el microprocesador.

Solución

I. Descomposición de la estructura global en bloques individuales

Programación del generador de ciclo de máquina. Este mól1ulo coordin¡los procesos .iue realizá el microprocesador; utiliza cinco señales de conrrol(A, B, C, Ll y E) que activan en orden secoencial los registros intemos delmicroprocesal1or: regístro de instruccíón (A), regrfro de d¿¡os (B), acunuld,lo¡temlxtal (C), ¿cwnulad(,r pernanenfe (D) y ct,nta,lar Lle pragrama (E). En la fr-gu¡a E7.2a) se rnuestra este módulo y el diagrama dc tiempo de las señales deactivación (E7.2b).

"*J Lfl-l_ft f tfli_L

, ]-L fL

Ficu.¡ E?.2 a) G€nerldoi de ct io de máqri,r¡ (ülM). b) Diaq¡¿rn¿ dc titnFos.

Page 219: Manual VHDL

uú€ño jcráqüico en VHDL 213

La prog¡amaci¿)n correspondiente a este bloque se muest¡a en el listadoE?.1.

Mód,ilo de gen.ración .ic1o .le rÉqu1ra

use r eee.sLc loqic:1164.a11;

u6e tro¡li. src-¡ri rh. all;

4llty qr is iFlt (

cLK, RfijFT: i¡ sr.l-loqi.;

a, r i , at , l , E: I tut : td 1ogi . ;

Q: i'ut srd_loqi. vecro¡ G at@rto t

üihlEoctue a g.m of q@ is

Prcc$s 1.1k, res.tl beqin

if l.Lk evert at¡d .1k = :L ) tlleD

o<=0,1,

i f (FEstT 1dQ= aL:LC ) !h4

Q <- laoa ;d¡¿l lf ,

Drccéss 10) begln

rhé¡ 0000 =>A<=:L;E< a;B<. 1] ,c<= 0;D<= 0;st¡eD C00:L =>A<= 0 , E < = :L ; B < . 0 ; c < . A;D<= t jEtB 0010 =>A<= 0; f t <= 0;B<=:L;arr= t ) ,D< 0,wh4'0011 =>A<= C,E<= 1;B<= 0;C<= 0, t . := 1] ;t i tEú crr lo =>a< ! ;E< c;B<- 0,C<= 1;D<= 1] ;rhdotheE =>A<= 0;E. l ] ; ts. (J;c<= 0;D<= 1.

Listádo E1.l fr.rAr¡nación del CCM.

En la programación de este bloque se integraron dos entidades: primero,la entidad de un contador del 0 al5, el cual genera un número binario quedetermina la señal que se accivará; en la segunda se define un circuito deco-dificador que al recibir el código bina¡io procedente del contador, activa unay sólo una de las líneas rle salida del generadoi ciclo de máquina.

Page 220: Manual VHDL

2t1 VHDLI El ür. de p¡oga$¡¡ sbté|a digitales

' P¡ograaclO¡¡ ¡lel rEgitfro de instn¡ccióe (RI). Este módulo almacenatemporalmente las inst¡ucciones p¡ovenientes de la memoria de progtama.

Su función es guardar el eódigo binarirc de la insttucciótr mediante la señalde habilitación (A) que envla el generadot de ciclo de máquina, En el lista'do E7.2 se muestra su gogramación.

Fh¡t E?J R¡gütro d. irut ¡¡..ió¡.

-- Módu1o regrisrro de instrucción

ll.bú.q' ieée;u- ieee. s Ed-l os i c-1164 . a].l ;@t1t!¡ reglins tá ¡|ct (

A: l¡g¡! std-Iosic;R0: tq¡t Et4-logic-vector (3 6dÉto ol.;

RI: lEÉ sr{logic-vecror (3 dmcq.o) );

d reg-ins;lrr¡lt atutr a-reg of res-ins js

b.qb

D¡oc..r {4,R0,RI) bd.at t (Aevent¡¡ l lA.1)tbo

.oal tt;

d a_:regt

I¡¡do E¡¿ P!q¡ú¡.ci6n dd rcgbtro d¿ iq¡t¡uetión

Page 221: Manual VHDL

DiFño je.á.quico.n VHDL 215

Programación del decodiffcado¡ de inotrucción (DI). La función deeste bloque es conve¡ti¡ el código binario proveniente del registro de instrüc-ción en una acción particular, la cual habilita una de varias operaciones 1ó-gicas o aritméticas dent¡o de la ALU. La programación de este bloque semuestra en el listado E7.3.

:r.+

" . ] . : - ' ' - ""- . :=*¡-Fisuñ 87.4 Decodilicador de inrrucción.

Móduto det decodificador

u8e ieee. s!d_1o9ic-1164. aU ;use wo¡k. s td_ari Lh. alL ;er¡llty deco ins ls po¡r (

RI: l¡rout sLd logic vecLorDI: lnout s td_logic_wec tor

then 0000" => DI <=t{trcn 0001" => DI <=*iE 0010 => DI <=tl¡lE '0011 => DI <=r*E 0100 => DI <=rtt¡€a 0101 => DI <=sben 0110 => Dr <=l{t|e¡ 0111 -> DI <=reh€r¡ others => DI <=

(0 to 7 )) ;

arc.hltecture a_deco of deco,ins la

Droc€ss (RI) beshcase RI ls

10000000 ; fúción and'01000000 ; - - f lnción 0100100000 ; - - función xo¡

'0001000! ; - frmción :lr@ diü€tica'00001000' ; füción il]¡Etir el a(m'00000100 ; función retén'00000010 ; función carera'00000001 ; fmción reseL'00000000' ; se i ¡habi l i ra el DI

Listado E7,, Pl"cfum,cion delde,od,Éc¿dor de rn-¡u.crón.

Page 222: Manual VHDL

216 VHDL El¿Íe de p¡osEmr.L,etus drcrlale'

Programación del regisco de ütos (RD). Este módulo almacerüI tempo-ralmente los datos provenientes de la memoria de programa. Su función esguardar el dato correspondiente mediante la señal de habilitación (B) que

envía el gencrador de ciclo de máquina, En el listado E7.4 se muestra su pro.

eramaclon,

Fig|m E?5 Resisto de datG.

-- Módulo del ¡e€rislro de datos

use ieee. std_losic_1164. at l ;

e¡tlty reg_dat Is Dort (

B: l ¡oü! std_1oqic;

árchlt€ctr¡¡€ a_dat of res_dat l.

b€gi¡r

Drocéag (8, RD, RI) b.lrla

I f (B event an¿l B = '1 ' ) t t ¡e¡

RD <= R0;

€¡ral i!;

e¡al 9rocess;

LEt¡do 87.4 Pmsmro.idn d€l regaro de d¿rd.

Page 223: Manual VHDL

Diseño le¡árqui.o cD VHDI- 217

Progamación del contador de prograrna (PC). Sin duda un micropro-cesador requiere peritéricos externos que le auxilien en su funcionamiento.En nucstro ejemplo, el contador de prograrna es un cremenro que gcnera etbus de direcciones, ya sca pa¡a direccionar una memona de p¡ogramatROM). unr nremola de J¡r ,^ tMlr4t , , rmha.. En la rrgur, , t7.n.c in,r . -tra el diagráma cor¡espondientc.

FiguE 87.6 Co¡qió¡ Je un, mcn,o¡ja exrern,.

Como puede observarse, el conrador se incrementa cada que se gcne¡a laseñal (E) p¡ovenienre del generador ciclo de máquira. La programacíón cleesta unidad se muesrra a continuacíón (lisrado E?.5).

-- ródulo có¡t¡dor de proqrama

use i . rce. std_loqic 1164. al l ;use wc-k. std_a¡ i t ¡ . af l ;4tity lcounL is Dolt (

E: i ¡ :d! std logi . ;DI: i¡:d! st.i lcAic_vectorPC: inct¡t sld logr._lector

alchltecture ¡__pc o! p.ounr ls

proc. :ss (E) begi¡i f ( ¡ even: á¡d F = 1)tner

PC<=PC+l;i f (DI = CCC0CCCT ) lher!

Pa <= c000 ,eltt if;

Listado D?.5 Prosram¡ción Jclconrado¡ ¿e Frc$ána.

Page 224: Manual VHDL

218 VHDL; El a¡re dé proelámr sistehas disitales

Prognmación de la unidad atitmética y lógica (ALU). Thl como su nom-brc indica" la función de este bloque es ¡ealiza¡ las operaciones ariunéticas y ló-grcas del micoprocesador, Según se aprecia en la ligura E7.6, la ALU de nues-tro ejemplo puede lleva¡ a cabo ocho operaciones, las cuales se refieren pormedio de un código de ope¡ación de cuatro bits (tabla E7.1).

Código de Operación Inst¡ucción

00000001001000110lm010101100111

T.bh E?.r DescrirEión de la operaciones del nioopi@sador

ffiFigua E?.? ALU: unidad antnética lósrca.

AND, el acumulsdor con el dato inmediaro

OR, el acumulador con el dato inmediaro

XOR, el acumulador con el dato inmediato

Suma aiitmética del acumulador con el dato inmediato

Inveni¡ el acumulado¡

Retene¡ eL dato {hold)C¡rear ún dato en el acumulado¡

l

Page 225: Manual VHDL

Diseño jerá¡quico en VHDL 219

Cabe mencionar que seis de las ocho operaciones que realiza la ALU re-quieren dos datos para l ncionar: uno se almacena con ante¡io¡idad en elacumulador y el otro proviene del regist¡o de datos. Observe que la únicaoperación que no requiere dos datos es la función de "invertir", ya que se ¡ea-liza invi¡tiendo el contenido del acumulado¡.

Note también que a la salida de cada bloque de operación (and, o¡ xor,etc.) se encuentra un buffer triestado activo en alto que, con ayuda del de-codificador de instrucción, habilita una de las siete salidas correspondientesa cada operación. Observe que el resultado de las operaciones se almacenade nuevo en el acumulador. En este caso utilizamos una señal auxiliar llama-da OP (operación), la cuai guardará temporalmente el resultado de dichaoperacióny luego lo canaliza¡á al acumulador remporal. El listado correspon-diente se muestra a continuación, listado E7.6.

u6e ieee. std-]oqic_:1164. al l ;uÉé work. std a¡ i th, a1l ;é¡ t l ty alu ia Dort (

D : inout d 1oq _ - . 0 t 'o r :

PD: i t rou! s d loq,c_ - o I ¿loElo 0) iAcC: inout std-1ogic vector (3 aloElo 0);oP: iaout std- iogic_ve.to¡ ( l d lownto 0)) ;

arcbiteclure a_alu of aLu is

ploceag rDI. AL(. KUr DeqlD

i f (DI = 1000Q000 ) thenoP <= acc and RD;

61€tf (Dl = 01000000 ) thetrOf <= ACC o¡ RD;

els l f {DI = 00100000 ) thenO! <= ACC xo¡ RD;

elgi f (DI = 00010000 ) !he!OP <= ACC + RD;

el ,á i f (DI = '000C1000 ) lheúoP <= not Acc;

el8i f (DI - Q0000100 ) thétr

of <= Acc; HoLD

OP <= RD; CARCAR ACL'MULADoR

Listado E?.6 Pros¡amación de la ünidad áritnétic¡ y lósica.

Page 226: Manual VHDL

t¿o \tIDL: El ¡i¡e.d. r'loS¡¡¡sr¡ sistemas digiráles

, Roprrnasión del acunul¡dor temporal (AOT). La función de estemódulo e¡ ¡lmacena¡ temporalmente el resultado proveniente de la ALU

" (OP) y después canalizarlo por medio de su salida (ACT) al acumuladorI .peÍnanente; esto dato se almacona mediante su seúal de habilitación (C)

proveniente del generador ciclo de:rnáquinar Eo el listado E7.? se muest¡ala progam¡ción dc erte módulo,

Fisu¡¡ E?.8 Decodifcadd de inrtru@ión.

--plrg¡amación deL acunulador tenporal

u¡€ ieee. std_logic_1164. ú1,

otlty acct l. Dort (

c: lü¡t std l@ici

oP: b.'tlt std-logic_vector (3 tlo*ato 0);ACT: ltrd¡t srd_1ogic_wector (3 dE @ro 0));

¡¡€lLt€ctu!! a_acct oú acct lr

b€g!¡

Dloce.r (C) t g{.a

lf (C eve.1l .oil c= '1 ) tb.!r

ACT <= OP;

d t f ;

@al D¡oc6á¡;

Li.t¡do E?,7 Acumula¿or rehporal-

Page 227: Manual VHDL

DFño Jerárqurco en VHDL 22t

Progtamación del acumuladot pemranente (ACC). La función de estemódulo es almacenar el ¡esultado ffnal de la última operación realizada porla ALU, ya sea para enviarlo como aplicación externa o tetroalimentar al mi,croprocesador. Este dato se almacena mediante su seial de habilitación (D)proveniente del generador de ciclo de máquina. En el listado E7.8 se mues-tra la programación de este bloque.

-1'

" v4

+t -¡!!úi¡s .|-]--J' acc[ . , , . 1q9.1. -a;

/a

-::=-1f::. ti13:::e:i:;=i:::::--:::

Fisun 87.9 Acunüládor

-- Módulo del acrlrulador pemnénte

Ilbranf ieeei

ulé ieee.std Loqic 1164. a1l ;drtlty acur' ls port (

D: l¡¡or¡t std Logic;AC : ll4t d__ ñ v-. o' ddñto 0' j

Acc: 1¡¡<¡¡t std_loqic_vector (3 do{r¡to 0));

alchftécture a acc of acur' Lg

Droc€sd (D) begi¡lf (D event aral D= 1 ) tb6¡

ACC <= ACT;€úd lt;

édd proccs6;

wListado 87.8 Prochna.ión del ácunul¡dor pemanente.

ü. Propamación del paquete de componeútes

A continuación (listado E7.9) se presenta el paquete que incluye los compo-nentes del sistema: genercÁor de cicb dc má4uina (gcm), registro de ürstruccinn

Page 228: Manual VHDL

222 \¡HDL: El a¡te de prosrama¡ sistemas disrtales

fteg_ins), ücoüfnaln de insmrcción (deco_ins), registro de datos (reg_dat),cmwdor de prograra (pcount), uni¿led aritnúticd hgica (alu), acwnula.dor tem'p,:¡ral (act) J acumulaáor (acum.)

use ieee.std Lógic_1164. al l ;

Dackag€ nicro¿ is

CLK, RESET: ln srd logic;

A, B,c, D,E: lnouE sLd togi . ;

Q. lnour std_loqic_vecto¡ (3 doÉto 0)) ;

€n¿l colrDo¡én!;

cdDonéa! ¡eg_rns Dorr {

A: inout std 1ógic;

P0: lnout srd_los ¿lMto 0 i

P | : Ircut 'td- oq --. c\ . o I doÉto 0' i

B: i t roul sLd logic;

P0: l rcut . d_ óq ._\é or 11 ¿IMto 0 ' :

FD: lnout . d_ os._\ . - 'or 1 ¿Ioúlo 0)) j

e¡d cdiEoént;

coq)onént deco_ins Dort (

RI: i t rout std logic vector (3 ¿lohto 0);

Da: i ,nout std Logic vecLor {0 Eo 7)) ;

eD¿t cd¡,on€ot ;

cdpo!€¡t aLu Dort (

Dl : túout . .d_loq:._\ec o! 0 !o ;RD: l¡out sr:d_1oqic_vecLo¡ 1l ¿lomro 0);

AC.: i ¡out s d loqic. / - . ' o. ' , dohro 0 ' ;

oP: i rcut std logic vector {3 ¿lo@to 0)) ;

c@9oE€nt pcount Dor! (

E: Ind! std_loqic;

Dl : t ¡out sLd_log:._ p. o¡ 0 lo j

PC: i ¡out std loqlc vector (3 ¿lomro 0)) ;

Continta

Page 229: Manual VHDL

¡',,|mot.squKom vHu! Z¿3

er¡Yñ.¡E accr Dort (C: lE¡t std_loqic;

OP: t¡our st{togic_recrorM1': le¡¡r st{togic_rector

cc4)@er acñ lbrt (D: Lü¡r s!{1oglc;

ACr: t¡.ur sE{logic_vecro! (3 ak6ro O),ACC: lldur sE{1ogic_vecror (3 atmto o) ) I

d ccq)6útt

U!¡do E?,9 Paqúete de compo¡enr$.

IU. P¡ograma de alto nivel

En el listado E?.10 se muestra el programa que conecta todos los bloques(Top Izvel). Ohserve que a diGrencia del ejemplo del secuenciado¡, el paque.te micro4 no s€ c¡eó en una lib¡erfa nue!€, sino en la librerla work, lo cualtambién es una acción pe¡mitida en VHDL.

u.. ieee,std_1oqic 1164.!11,u. . work. std_ar i rh. ! t 1;u. . wolk.nicro4,al t I.Átlty mp4 1. ¡Drt (

cLK,¡¡sRr: tD std_logic, - ¡étoj y ¡eeer paÉ el g@R0: la¡t sr{losic_reclo¡ (3 (toEto O), _dtraata ¿té alaroRr: t¡¡orlr 6td-togic_@cror (3 itmto O) ; __drraala ¿te insr

ACC: ttDut sr{losic_vecro¡ (3 ¿lmto 0) ) , __sauala det ataEo

e!chl!.c!ur. a np4 ot np4 t.31!u1 A, B, C, D, E: std loqic;. ls¡al Q,AcT,o! ,pc: s id_Iogic_vecto¡ {3 i toEro o),.LsM1 Dl: srd_loqic vecro¡ {o ro 7),,1sut RD: std_togic_vecto¡ (3 itñto O);

Coñtinúa

Page 230: Manual VHDL

zx VHDLjEI.r.. de p¡¡gr¡[!¡ si¡tdn¡r dtgit l,r!

lt1: @M ¡,crr ¡¡) (c¡J( .> cLK, REss¡ .> RESeT, A ->

A. B .> B, C ->

C,

D + Di 0 -r O)s¡.-U2: REG_INS Dott ¡ . ¡ , (A =' .A. R0 ='R0, RI => RI) t

.U3:¡EEG-DAÍ ¡F¡t ¡¡¡r (B ->,8,. R0 -> R0, RD => RD);

q4;, pECo_INs ¡ro! ! taD (RI :>,RI, DI -> DI) ;

u5: AL¡J ¡par r¡D (Dr .> Dl1.:lD a> RD"j ACC -> ACC' OP -> OP);

U6: PCOUNT ¡ptt r¡t (E => E¡ DI '>DI, PC -> PC);

U?: ACc¡ rort lat (C ->

C, OP -> oP, AcT => AcT);

u8: acu¡t ¡,or! ¡¡¡r (; :t D, ¡cr =; licf, Acc => Acc);

.na_'ii-¡p4 ;

l¡r¡do E7.r0 Proe¡ma dt alto nivcl.

l , l ' ' ' :

Page 231: Manual VHDL

Diseóo je'árquico cn VHDL r t<

EjerciciosDiseño ToP I*t'eI

7.I A continuación se desc¡ibe el funcionamiento de un sisrema global de uncont¡dor cle llenado de pastillas.l

Inicialización del sistema

Antes que nada el sistema debe inicializar para arrancar en los estados bina¡ioscorrecttx. En primer luga¡ el contador y los registros s€ deben poner a cero,para quc la cuenta ernpiccc a pa¡tir de cero. A continuación, el número depastillas (hasta 99) que se introducirá en cada bote, se introduce através del teclado numérico, el cual se convierte a BCD mediante el codifi-cador -v sc almacena cn el registro A. En la a) cl número decimal 75se introduce a t¡avés del teclado numérico, 1o que indica que en cadabote se introcluci¡án ?5 pastillas. Cada dígito tecleado se codifica en BCD yse enví¡n, Lrs 4 hits a la ve;, al regisno A, para ser almacenado. El códigoBCD de 8 bits sc coLoca en Las líncas dc salida dcl rcgistro y se aplica al de-codificado¡ el cual lo convierte de BCD a ctidigo de ? segmenros para ilumi-nar el display.

Simultáneamenre, el mismo código BCD se aplica al convertidor decódigo, cl crral lo convic¡te a bina¡io. El número bina¡io rcsultantc, 75,se p¡esenta a la ent¡ada A del comparador Aho¡a el sisrema está iniciaLiza-do y listo para empezar á contar pastillas.

El sistema en proceso

Ahora supongamos que el sistema ha contado un total de 50 botes (3i50pastillds) y se encuentra en e1 p¡oceso de contar pastillas para el bote cin-cuenta y uno. En realidad, cono indica el conteniclo del contado¡ de lafigura a), ha conrado 74 pastillas. Observc que el regisrro B mantiene la su-ma binaria anterior (3?50) que se ha pasado a BCD y luego a formato de 7segmentos para el displa¡ El registro B se actualiza cada vez que se llena unbote, pcro no micntras se está llenando,

La salida del comparador está a nilel bajo (LOW 0) , ya que las entra-das A y B no son iguales en ese instante. En la enrrada A hay urr 75 binario,y en la entrada B un 74 bilrario. La salida del sumado¡ siempre indjca lasuma más recicnte, cn csre caso, 1824, pcro este número no se almacena enel registro B hasta que el bLrte esré lleno.

r Sírc5(d.!¡ci'cuitosecrcrci¡ sírc..no, llL. fL.y'li &ndd,d&¡ ¿! S¡km\ D¿sr¿¡Li. Prcnti.c H¡11,199N,

f . t l9

Page 232: Manual VHDL

226 VHDL: El arte dc prcgranar sn¡cmas drsu¡l€s

En la figura b) se muestra el estado siguiente donde el contador ha alcan-zado cl valor binarío de 75, por lo quc la salída A : B del compa¡ado¡ pas¡a estado alto (HIGH, 1), lo que da logar a que ocurraD varias cosas sinul!á,neamentei se detiene el flujo de pastillas, permiriendo que la nueva suma bi-naria 3825 -ligura b) a la salida del sumado¡ se almacene en el¡egisúo B, yse inicia un avance de Ja cinta rransportadora para colocar el siguie¡re boteen posicir'rn. El número binario almacerado en cl registro B, que es ahora lasuma actual, se aplica ai convertidor de código BCD-? segmentos, y en for-mato de 7 segmentos se acrualiza el display con el valrr j825. Tán pronto co.mo se coloca el siguíente bote, el contador se pone a cero y el nuevo ciclo

a) Jerarquice el problema e identifique entradas y salidas de cada bloqueb) Programe mediante top level el sistema gencral

tommlñr ,2,

I co".i'd"' I \

I 6"",'*8.¡ l e¿o:t

a) Sistema de ernbasado de pastillas.

Page 233: Manual VHDL

Di*ño jerá.qui@ en VHDL 227

b) Sistema de embasado de pastillas (estado siguiente).

Li Elfi:g**E

Page 234: Manual VHDL

228 VHDL: El a e de proeraro¡ s¡iemás digit¡les

Bibliograffa

G. Maxinez David, Alcalá J. Jessica. Diseño de secuencia¡Jores integrados ltilr-Tando campos de lógica prograntrble FPGA. Congreso Inrernacion¡lAcadémico Elect¡o'98. México, 1998.

Skahill Kevin. VHDL For Programmable Logic. Addison Veslel', 1996.Mazor Stanley, Langslraat Patricia. A Guide to VHDL. Kluwer Academic.

199).TL. Floyd. Fundamentos de srs¡emds ¿gr¡dles. Prentíce Hall, 1998.Ll. G¡es; Y To¡¡oja; S. Olcoz; E. Mllar. VHDL, lengutje estándar de diseñc'

electr¡inic¡r. McG¡aw-Hill, 1998.David G. Maxi¡rez, Jessica Alcalá. D¡¿no de Sistemts Embebidos a ¡atés ,Jei

Lenguaje ¿e Descripción en Hardware VHDL. XIX Congreso Intemacio.nal Académico de lngenie¡ía Electrónica. México, 1997.

C. Kloos, E. Cerny. Har¿w,:1re Descñptiar Latrgudge dnd dtir .rplicd¡llrns. Sp¿-crfrcarion, Modelling, Verfrcation and Sydresis of Microelectronic S)stemsChapman & Hrll, 1997.

IEEE: T/re IEEE s¿nd¿ VHDLL.anguage Fcfe¡ence Maru.ral. IEEE-SId- 10?6.1987, 1988.

Zainalabedin Nav.rbi. Ana\sis and Moleling of DrgiralSysterru. McGraw-Hill.1988.

P J. Ashenden. The Designer's guide ro VHDL. Nlorgan Kauffman Publishers.lnc., 1995.

R. Lipsett, C. Schaefer VHDL Hard+rare Descñpt/on and Design. Kluwer Aca-demic Publishers, 1989.

J. R. Armstrong y F. Gail Gray. Structlred Desrgn uirh VHDL. Prentice HaLl.1997.

J. A. Bhasker A VHDL Primer Prencice Hall, 1992.H. Randolph. Applic¿iio¡¡s af VHDL t:) Circtit Design. Kluwer Ac¡tlemr¡

Publisher.

Re{erencias

[1] P Hayes John. Diserio de sis¡¿m¿s Jigüales 1 nrcroprocesodotrMcGraw-Hill, 1988.

[2] Jrxé María Uruñuela. Microp/ocesddores, Pnrgrdmdcijn e i¡üed¡lc.iMcGrau-Hill, 1990.

Page 235: Manual VHDL

Capírulo I

Sistemas embebidos enVHDL

lnffoducción

Los rnicroproccsadores tíenen un g¡an us() como componentcs fundamenta-lcs cn sistemas elect¡ónicos nodernos, ya quc ircrcmentan su capacidad yp¡oporciLnan una mejor ejecuci¿n en las rareas que se encomiendan ¡edu-ciendo su cos(). Cuando un sistema clec¡¡ónico incorpora un miero¡roccsa-dor, ofrece hcrramientas de conr¡ol adícionales con tan sól¡¡ un rncrcmentorclarivo en el costo de software de desarrollo. Debido a esro cacl¡ semala mi-llones de pequeños chips de compuradora salen de fribricas corno Motorola,National, Mitsubishi, ctcétc¡a y encuent¡an diversas y nuevas aplicacionesen productos de uso común com,¡ sistemas de transportc, producción de co-mida, defensa militar, sistemas de comunicación, ctcétcra.

8.1 Sistemas embebidos

Estrx sisremas clcctrónicos basados en nicroprocesadores y discirados paraaplicacioncs específicas se les ccrnoce como sistemas embebidos, es deci¡sc trata de un sistema cuvo hardware y sofrlr'are se diseñan específicánenteopdnizando su funcioramiento pa¡a resolve¡ uno o varios problemas coneficiencia. El término embebido se ¡efiere al hecho de que la microcompu-radora es encrpsulada en un solo circuito. Estos sistemas inte¡irctírxn conrodo lo que Lrs rodea y funcionan como el monitor o el control de algún pro,ceso. Este hardware suele diseña¡se a nivel de componente en un circuirointegrado o de tarjcra; por otra parte, el software que controla al sisrcma seprograma cn una memo¡i¡ de sólo lectura (ROM) y no es accesible para elusuario del JisF(Jsitivo.

Page 236: Manual VHDL

230 \ HDL El Jf t r Jr p¡ ' r turn¿' nne,n, \ L l 'er , . ,1. \

Los sistemas embebidr^ siempre están compucstos por nicroprocesador,

memoria, entradas y salidas a periléricos y un programa de aplicación dedi-cado. ¡u .rd"d" ¡crm 'ncnlen,el l r<

in la mrnr, ' r i , ' .Un programa de aplicación para un sislema embebido forma parte del sis.

rema y por lo gene¡al se ejecuta sin necesidad de un sisteDra operativo; por

rRnro, la aplicación del programa ha de incluir el software para conr¡olar e

interactua¡ con los dispositivos pcriféricos del sistema.En la actualidad estos sistemirs están p¡esenres en la vida diaria en hv¡.

doras, videos, televisores, calelácción, sistemas dc alarma, procesadores dc

alimentos, computadoras, etc. Atlemás, van de lo más simple a lo muy com'plejo, ya que controlan dcsdc las luces en kx zapatos tenis hasta los sistema¡

de cont¡ol cle los aviones milita¡es; asimismo, cuenfan con varias ent¡adas \

salidas a otros sistemas o periféricos que son dispositivos conectados al siste'ma principal y cont¡olados por el microprocesddor. Los microprocesadorc:que cont¡olan este tipo .le sistemes se puedcn dividir eD:

. Microprocesadores índíqidwrles. Sc encuentran en dispositivos comosensores de temperatura, cletecto¡es de humo y gas, inrerruptores d.

circui tos l1 l .. Coni¿.n¿os de mictoprocesadores sin fr¿nciones de reloj, Se hallan er:

conúolaLlores de llujo, amplilicrdores dc señal, sensores de posicirin

servomecanismos de válvula [ 1].. Coniutttos de micropwevdores can funcimes de reloi. Se encuentren er

eqLripos médicos de monitoreo, controladores, centrales telefónic¡s, siste-mas rle adquisición de tlatos (SCADA), sistemas de diagní)stico y tipo teal

. Sistemds compüfdri\er¿os usados en coítrol de Drocesos e ind¡rsfri(¡l.

Son compuradoras conectadas a equipos para controla¡los[].

Campo Función de ejecución del sistena

Hogar

L)cspcrtadorcs y ¡cl,jcs

Contcstdo¡ls iclcinic$

Control dcl ¡eua r clclo de !úos

Acepia i¿ señ¡l de l¡s reclai v nnndaFulr^ niiarrcjos ál sisrem base

Conrola eL tie¡po, l¡ aLa¡¡a I l¡

con¡roldel ba*tu dc n¡¡doúor¡i.l) 1 5alid, dc dco

Inter¡.tú¡.on el operador

Reprodúcio¡ de mens¡jes de s¡]id,iqmrda r organi?a nenrjct

TecL¡do de enn¡da, rnldo dc cnt¡r-da L salida, con nic¡ci¡in .o¡ l¡

thbla E.1 Aplc¡cores de los lsremas e¡rhcbidosl

rn, l .Jc ' , . t r ' \ !J1coúr

Page 237: Manual VHDL

Ssteñas cmbebidos e¡ VHDL 231

Campo Fmción de ejecucim del sisreDa

Sistcna de posición glob¡l

SGtemas de control de t¡áñco

CódEo de bar.as lecru¡a y

Opiihiz¡ el fren¿do y la era.nin de

Conúoh clencendido y la merclade los inyectores de cohbusrible

Orden programada de fotma dnecta

Detcrmina el punto exacto donde se

Detccta la posición del caro y con-üol¡ l¡ seóalúacnjD (semáforos)

ConÍola los motores para el !!tsi-cionaniento de b¡azos, e¡cére¡¿.

ConÍóia tareas a pdrtt de valoresdetectados por sensores

Realiza l€ctura de válo.es deenüadas de escliru¡a pan conÍoi dc

Monitorea fuhciones cardiacas

Có¡t.ola radiación, adninistraciónde sustancias qulñicas o.alü

Mili¡ar

Médico

Tablá 8. lb Continuación

sistemas embebidos

Pa¡a tene¡ una estructu¡a findamental común, los sistemas embebidos cuen_tan con un ciclo de desa¡rollo rep¡esentado por el p¡oceso en que se generóel sistema. En esre ciclo de desanollo se muesrran los avances en la ingenie,ría pa¡a maximizar la posibilidad de producir un sistema efectivo confiable yal que se puede dar mantenimiento.

Cada fase de ciclo de desa¡rollo se identilica mediante un bloque con unaactividad dominante y el resultado primario de cada fase se presenta en la sa_Iida de bloque. Cada resultado está representado por documentación quedesc¡ibe al sistema en esa etapá, Como consecuencia, se tiene una documen-tación completa y exacla de cada fase de desanollo y del sistema 6nal. El mis,mo ciclo es aplicable a un sistema diseñado para una persona o un equipo. Enla ffgura 8.1 se muestra el ciclo de desa¡rollo de un sistema embebido.

Tr¡taniento de cáncer

8.1.1 Diseño de

Page 238: Manual VHDL

VHDL: El an de prosrá¡rs¡ si¡ten¡¡ drgitales

Erp.cili€clóñ luncional

3

E pocillca4lón d€ .qun durr

E.p€clt¡:¡cion$ d. oúdulo65b

Fig|m 8,1 Ciclo de deidollo dc un 6bt ¡na intésádo.¿

I Tonado d. Sho(1.K.(1e98).

Page 239: Manual VHDL

sA¡cnr¡5 emLrcb u, .n V|IDL 233

El diagrama de la ligura 8.1 ilustra las fases que ocunen por separado o cnparalel), pero sólo una a la vezy en secuencia. En realidad, eldesarrollr dc la in-formación, los problernas encontrados y las decisicmcs tonadas dxrante algunafase pueden causar que la fase intc¡actúe con fases mteri()res Lr postenores, conlo que es posible la reactivación de las erapas previas. EI rcsrrlrado clel proceso esite¡ativo y seclrencial. A continuaci(in dcsc¡ibimos las fases del proceso.

Análisis de requerimientos

Este análisis represenra un ex:rmen a detalle cle las necesidades dcl usuanofinal; es cleci¡ el problema por resolver En esta etapa intervicne ei usuario fi-nal o cliente y süs necesidadcs, y|t que éstas se estudian a fin de determinarqué quiere el usuario o qué necesita que haga el sistema. Estos requerimien-tos se definen:r partir del punro de visra de este rikimo y sin refcrcncia algu,na pa¡a Fosibles soLuciones. Los rcsultarlos dcl an¿ilisls se rcgistran en ladefinición dc los rerquerinientos.

Especificaciones

Se basan en los requerimientos, funci()nes, oFeraciones y ia inte¡acci(m conel usuario. Definen al siscema y lo simulan para probarlo directamenac; cs de-ci! determinan la función del sistenra, no ctimo quedarri.

Arquitectura del sistema

Este concepto se reficrc a las especificaciones de software y hardware. En estafase se define qué tipo se vá a utiliza¡ y cada elcmento se.lescribe po¡ separa-do. Todo esro permite equilibrar elsofrware y el hardware, aspecto fundarncn-tal para la ejccución y el cos¡o del sistema. Esta etapa determind qué parte delsistema se implementa prime¡o en el softü,are y cuál en el hardware.

Diseño del hardwa¡e

Durante cste paso se definen las lunciones y la interfaz de entrada y salida; 1asprimeras en forma generaly la segunda rle manc¡a especlfica. Este diseño scpuede estabiecer a gusto del usua¡ío o siguicndo uno de los esránclares acep-tados por la industria. Esra fase incluye nombre de señales, funciones y ca¡ac-terísticas así como diagramas de bloques del sisrema.

Implementación del hardwaro

En esta erapa se eiigen los dispositivos (microprocesado¡ memoria, periféri-co, etc.) que van a inregra¡ el sistema; también sc llev:r a cabo un análisis dc

Page 240: Manual VHDL

234 VHDL: El a.tc dc prog¡¿har sisremás disitales

tiempo así como diag¡amas esquemáticos y diagramas de tiempo. Todo io an-te¡io¡ permite la construcción de un p¡ototipo.

Pruebas de ha¡dware

Esta etapa consiste en realizar pruebas individuales a los dispositivos para de-termina¡ süs especificaciones y el tiempo que precisan a fín de ejecutar un

Diseño del software

En esta etapa se diseña la ejecución del flujo de datos y se implementan lasftrnciones y procedirnientos de cada módulo para que interacrúen. L-o ante-rior pe¡mite je¡a¡quizar el funcionamiento de los módulos que componen alsistema.

IrnpleÍrentación del software

Consist€ en defini¡ los algoritmos a detalle y las estructuras de datos que sevan a desarrollar; además, el software se diseña de modo que pueda coner enotras aplicaciones -aunque siempre se diseña para una aplicación específi-ca-. La prog¡amación del sisrema se realiza mediante módulos independien.tes que más tarde se eruamblan o compilan. Tódos los e¡rores detectados secorrrgen en este momento.

Pruebas del software

[¡s módulos programados en la etapa de irnplementación del software seprueban en forma individual mediante la simulación. Después de esto se co-nectan para rener el programa completo y proba¡ cada estado.

Sistema de integración

Si las fases de software y hardware se ejecutaron por separado y todo funcrcrnó, es el nomento de integrar y prcbar el sistema de software y el prototi¡del hardware. En este momento se detectan y corigen los problemas encon't¡ados en la interconexión o en las intefaces.

Validación del sistema

Esta fase permite saber si el sistema funciona, si hay errores -los cuales ha-brá que corregir- y ¡ealizar modiffcaciones solicitadas por el cliente.

Page 241: Manual VHDL

Sisten.s embebidos en VHDL 235

Operación, mantenimiento y evolución

Es Ia fase final y en ella se implanta el sistema. Cuando éste ya se encuenraen servicio, se pucde modifica¡ para satisfaccr nuevas necesidades e inc¡e_mentar su calidarl. En esta etapa se puede dar sop¡rrte al usua¡io o conegiralgún error posterior.

3.1.2 Clasificación de los sistemas embebidos

La IEEE usa la clasificaci¿)n que veremos a continuación.

. Microp¡ocesadorcs individuales. Se pueden hailar en disposruvos pe,queños como senso¡es de remperatura, detectores de gas y hunro, crcur-tos de interrrrpción de corriente, etc. Ahora bien, conviene señalár quesu manejo ohece cierta dificulrad.

. Llneas de producción pequeñas, Se pueden encont¡a¡ en cont¡olado,res de flujo, amplificadores de señal, senso¡es de posici¿)n, accionado_res de válvulas, etc. Su operación interna depende de un reloj.

. Líneas de producción con funciones de tiempo. Son los dispositivosde distribución eléctrica como controles, cent¡ales telefómcas, srste_mas de monito¡eo y adquisición de datos, diagnóstico y sistemas decont¡ol en tiempo real, ent¡€ oúos. pueden ser elementos locales ensistemas más grandes, ya que proporcionan información de sus scnso-res; por ejemplo, en l()s sistemas de computación usados en la manu_factu¡a o en el control de ptocesos. Asimismo, pueden formar parre deLrna PC y comprender algunas bases de datos (como hechos). En €stoscasos la computadora se conecta a la planra o a la maquinaria para lle_var el control de éstas, Los sistemas de computáción se usalr para con_trola¡ y nonitorea¡ el proceso, A menudo este tipo de sistemas abarcaotros sistemas integrados que trabajan en conjunto,

8.1.3 Factores que se deben conside¡ar para el di6eño de un sisteúa embebido

Como puede advertirse, en el diseño de sisremas embebidos hay quc consi-derar diferen¡es factores, de los cuales menciona¡emos los más importanres acontinuación:

Costos de sistema que incluy€n entrenamiento, desarrollo y pruebas.Costos de material que comprenden parres y refacciones.Cosrcs de manufactu¡a que dependen del número y complejidad de los

Costos de manrenimiento que incluyen ¡evisiones para arreglar erroresy andlizar si es posible aumenta¡ o escalar el proyecro.

Page 242: Manual VHDL

236 VHDL, El lrc de proer¡¡ra¡ sn¡cnus Jisifules

. La memoria de sólo lectura (ROM) debe tenei el tamairo neces¿rio pa-ra soportü instrucciones y arreglos de datos

. La dimensión de la memoria de acceso rápido (RAM) debe ser srrfi'cíentc para soporta¡ vitriables glcüales y locales.

. La memo¡ia EEPROM tiene que aceplar ar¡eglos de consultas que es-rán en un arreglo configurable.

' Es deseable r¡ue tenga velocidad para ejecutar elsoftware en tiempo real.. El ancho de banda de los disposirivos de entrada/salida afecta Ia rapi-

dez de t¡¿insito de daros en la entrada/salida.. EL tamaño de 1os datos de 8, 16 y 32 brts debe coincidir con los datc¡s

que se van a proces¡r. Las operaciones numéricas como multiplicaciones, divisiones, srgnr, )

punto flotante.. Las funciones especiales como números complejos, Iógica difusa, mul-

tiplicación/acumuiador.

' Suficientes pue¡ros paralelos para manejar todas las señales digitales dcentrada/salida

' Suficientes puertos seriales para aceptar la interfaz con otra computa-dora o dispositivo de enrrada/salida.

. Funciones de tiempo para generar señales, mediciones de ftecuencra iperiodo de medicrones.

. Timaiio del circuLco.

. Fuentes disFonibles.

. Disposición de leng(rajes de alto nivel, compiladores y simuladores.

' Requerimientos de poder, i-a que muchos sistemas opcran con pilas

Además, la mayoría de lu sistemas embebidos incluye componentes que

miden y controlan pa¡ámetros del mundo rcal como posición, velocidad,temperanrra y voltaje. Debido a esto el diseño siempre incluye dispositivoscomo amplificadores, filtros y convertidores digitales

8.1.4 Diseño de microprocesadores VHDL

- Como vimos antes, los sistemas embebidos tienen una infinidad de aplica-ciones. Estos dísposirivos reali?an operaciones y cont¡olan oiros disposi¡i-vos, para lo cual reciben info¡mación y dan órdenes a fin de que los demáseiementos trabajen.

El diseño de los mic¡op¡ocesadores se facilita gracias a la divcrsidad deheramientas quc hay en la actualidtd. Según vimos en el capítulo I, cl len'guaje VHDL es una he¡ranricnta muy pode¡osa para cl diseño, pues ademá5de 'r f lcx bi lrJaJ p.rmrc dhúr rar cn I remp,) \ , , , irus.

Page 243: Manual VHDL

Sistems mhebidG e. VHDL 237

| 8.2 Diseño de un microprocesador

En la ffgura 8.2 se muest¡a el diagrama a bloques del microprocesador quevamos a diseñar. Cabe menciona¡ qüe entte sus principales caracterlsticas seencuentran un bus de direcciones de 8 bits(A0-A?), un bus de datos de { bits(D0-D3), tres líneas de interrupción ¡eser, IRQ1 e IRe2, una llnea de vali-dación de direcciones (VMA), una llnea para una señal de reloj, una líneade lectura/escritura y dos lfneas para la alirnenracron.

l - - - l 8

E#|;"*-"

tBol

CLK

Figu€ 8.2 Dia$amd a hlotues del hicrcp¡eesadoi

Como puede observarse en la figura 8.2, el microprocesador se cornpo-ne básicamente de 1l bloques, cada uno con una función especlffca. Enlo que resra del capíruh' se analizárá cada hl.4ue dc maner¿ Jeral lada.

hte tipo de microprocesador es de clase Von Newman; es deci! los datose instrucciones se encuentran en una memo¡ia extema y el microDrocesadorpor

" l sulo no rrabaianh. ra que requiere cieflo\ circuit(,5 auxrl iaie. para "uoDeración.

Page 244: Manual VHDL

,t6 VHDL: B ar. d. proglr¡d r¡tcmás digitalet

Cont¡dor de proStana {PC) , .- ,. ! ':

El contedor de prqgras¡a (PC) e¡ un regrst¡q de 8 bitt que contiene la direc-ciór¡ del siguiente regiotro donde s€ oncuenfta h di¡ecqi¡i'n (nibbi¿) de la ins-t¡ucaiór¡ que.se bqs€¡¡á e¡,la m9mo¡ia.ps¡a ou eieeuEión. El hecho que elcontador dG lrrqg¡agu ¡e¿ de E bit¡ gene¡a u¡t tat¡l de 28 di¡ecciones dífe'¡ente¡, es dec,i¡, 2l6.di{Espipnss únieq8, a lar cualgq el mic¡op¡ocesador debehabilia¡ c¿da una de ell+. El.bus d€ di¡€aqbr€s del !¡ic¡oprocesador es uni-direccional y sólo permite salidas del rnicroprocesado¡ hacia los dife¡entesdispositivos. Cada vez que se ejecuta una i$trucción, el contador de progta'ma se incrementa. Su diaerama se muestra en la ffqur¡ 8 3.

Eglr¡ 8.3 Cont¡dítr ó. p.odrána.

l

Il

El código en VHDL que describe la fu¡ción del contadot de programa se

e¡cuen$a'en el listado 8.1.

U.b!q¡ ieee;

üt. ieee.srd-1oqic_1164. all ;

u¡¡ uort. st¿ari lh. ¡ff ;

@tlty pc t¡ t cEt (

clk: l¡ std-loqic;

pconrrol: l¡ sld-logric-veclor (? ilmto 0);

cs: 19 eld-logic,-veclor(4 acEt.o 0),

r6$et:. l¡ Étd.-loglct

p a:. |[ stdjosiq-vgctor (? drylo o) ,pcout:. lflqt std,-logic-ve9t4¡ (7 óñto 0) ) ,

d.

rr€blt¡atr¡r¡ arqlrc oÉ pc b

Dqif¡

Connnúa

Page 245: Manual VHDL

239

pr@e8s (cLk, .s, rese. l

i.f resel = 1 rh@

p. <= !00000¡t ;

j : (c lk event dd cik = 1 )

caae cs i3

t h@ 11110 =>

wrE i ]111 =>

*b4 1t 101 =>

*tren ottErs ">erd ca8e;

eod if;

enal process;

nul l ;

p i la;

Listado E.l PÍ.sranació¡ del..nradorde Frcsrama,

Según la desc¡ipción anterior en VHDL, el contador del programa tienetres variables que lo hacen trabajar: cs, cllr y reset.

La variable reser sine pa¡a inicializa¡lo en la di¡ección "00000000", mis,ma en que el microp¡ocesador ejecuta la primera inst¡ucción,

La va¡iable cs inilica la funci(rn que se debe realizar Cuando cs es igual a"11110" la variable pco¡¡t es iguala la variable pcantol esta úhima señalproviene directamente de la unidad de cont¡ol-. Además, puede ser iguala la dirección de inicio, a una nueva dirección cuando se dio antes una ins-trucción de salto y a las direcciones de inicio de las interrupciones IRel yrRQ2.

Cuando la va¡iable cs del concador del programa es igual a ,'11 1l l" el va-lor de pcou¡ se incrementa una unidad. Esto ocurre cuando se está ejecutan-do la inst¡ucción presente y requiere un dato o la siguiente instrucción.Cuando cs es igual a "11 101", pcou¡ roma el valor que esrá almacenado en lapila. Esto sucede cuando el microprocesador arendió una petición de inte-rrupcuin (IRQI e lRQ2) y necesita regresa¡ a la dirección donde estaba enun inicio. Cualquie¡ orra combinaci¿)n en cs tiene un efecto nulo en el con-tador de p¡ograma.

La señal de cllc indica al microprocesador cuándo ejecutar cada una delas acciones ¡eferidas. En bdos los bloques del microprocesador, la señal cllctiene efecto cuando pasa de un bajo a un aho.

Page 246: Manual VHDL

an VHDL: El aft. d..prostlte¡. ¡úr.|@ disiteles

Regirt¡o de fudice

El registo de lndice (lX) es un reSi¡tro dc 8 trits que se usa para alrnacenaruna di¡ección donde cs Éatcible escdbir datos almacenados en el acumuladorA. Este ¡egisto se puede incementar e inicialüar a una di¡ección que el

usuario especifique.

El código en VHDL regisrto de lndice se encuentra e¡ el listado 8 2

11lr.|ry iee;u!. iee. s !d-losic-1164 . d¡. ;n.e€ üork. std-arilh. ¡11;

*.ttt)' indice l, Dott {c lk: l ¡ std-Iaqic '

pconlrol, l¡ std-1ogic-veclqr (7 atddtÓ 0);

cs: l¡ s ld-logic-vector ( 4 ¿ldñto 0);

reset: i¡ std loqic;ix. f.Dóut std-logic,vecto¡ (7 aktt¡tto 0)),

lúral, ' rii

rftült elu¡r árq,-ind-icé oC i-rdice l¡

D.sl!

¡E€c.t . (c lk, cs, ¡eseL)ba!'t!

lf reset = "1' trre .ix . . '00000000' ;

t! rclk .r,cr ¡!¡ clk . I ) r¡.!cr¡a c6 lr

- ÉF '11010' -> ix <= Pconlro] ;. ráe. ,11011.,=> ix <= ix + 1,

. i!4 otü.+ => E¡11;.óó c¡..;

.!ld If;d Ll i

d Dúocaa¡ ;d;: l

Li.a¡¡do 4.2 PrcgÉMció¡ del re8Gúó d.lndic-

Page 247: Manual VHDL

Sistemas enbebidos en VHDL 241

Las señales cs, cil y res¿r afectan el registro de lndice. La señal clk tieneel mismo efecto que en el contador de programa.

Cuando la señal de reset es igual a "1", coloca el contador de índice (lX)con la dirección inicial "00000000". Cuando la señal de cs es igual a "11010"el contador de índice es igual a ftonrrol. En este caso, el usuario determinael valor de pcontroi eo su programa. Cuando cs es igual a " 1 1011" el valor deIX se inc¡ementa una unidad. Cualquier 'otra combinación de cs tiene unefecto nulo en el regist¡o de índice.

Registro de pila (STACK)

La pila (sraci<.) es un registro de 8 bits que se usa pára almacenar la última di-rección del contador de programa cuando ocurre una solicitud de interrup,ción (IRQI y IRQZ): Est se ve en la f4ura &4.

-:::-::-::::.:!::::..::1-.:i:i::E-:F::=Figu6 8.4 Resisüo d€ pila G¡a.[).

Su código en VHDL se muest¡a en el lisrado 8.3.

use ieee- std_1oqic 1164.á11;use work. srd ar l th.aLl ;ontlty stack ls IDrt (

cLk. ln std losic;pcour: l¡ std_loqic_vector (? domto 0);

pila: l!ou! srd_loqic_vector (7 dMto 0) ;¡eset: l¡ std_losic;

cs. 1n srd tosic_vector {4 at i r ¡ lo 0)) ;

architecture arclstack oe stack 16b€cIn

Continúa

Page 248: Manual VHDL

2A VHDL, El a.te d€ proerama¡ sntemas dieitales

Dcea€ (c]k, cs, reset)a€riable q: srd-1oqic vecto¡ (7 domto 0);

tf reset = '1' tb€r¡piLa <= 00000000 ;

lf (clk event and clk = 1 ) t:bs

rü€n 11100 => piLa <= pcoul ;

stle¿ o¡herB => m:U;ena¡ case;

Lbtado 8.3 Proglamáción de la pila-

De acuerdo con la descripción VHDL del registro de pila, éste se ve afec'

tado por las señales cs, clk y reser. La señal clk funciona como ya se ha men-

cionado. Cuando la señal de reser es igual a "1", inicializa la pila con la dtec-

ción "00000000". Cuando cs es igual a "11100", el valor de la pila es igual alpcor¿¡, esto ocurre cuando existe una interrupción. Cualquier otro valor en cs

tiene un efecto nulo sobre el registro de pila.

AcumuLador A y B

El microprocesador contiene dos acumuladores (A y B) de 4 bits cada uno.que se usan como registros temporales. Contiene los operandos y el resulta-

do de las operaciones efectuadas en la unidad lógica aritmética.El código en VHDL del acumulador A se presenta en el listado 8.4.

use ieee. std-roqic-1164. aU;

en!1ty rega5 ts DorE (

cs:ln std-1oqic wector {4 ¿Ic't'tr¡to 0);

' k : lJ I s d- og ;

datoin:h sld-logic vector (l alo}'|rto 0);

teset: i ¡ sLd loqic;

a: i!@t sLüroqic-vector (3 alownto 0) ) ;

archl!éclur€ impedancia of resa5 13

Cont¡nb

Page 249: Manual VHDL

Sisrefr¿s embebidos en VHDL 243

Drocess (cs¡ clk, reser)

\¡¿ülablé ares:std-1ogic vecror (3 atoldnto 0);

1f reset = 1 üten

a <= 0000 ;etse

if (ctk ewenr and clk = 1 ) rtEca4 cs 1s

ld¡€rr '10001 =,

a <= daroin;

ut¡eD 11100

*hef¡ 11101 =>

eb€¡ ot¡ers

¡ruu;e¡d ca8e;

ef¡¿t if;

e¡ral if;erd Dru€s8;

List¡do 8.4 Proer¡hdción det acumulador A.

Las señales clk, reser y cs modilican el valor del acumulador A. El conteni-do de éste depende del usuario y del resultado de las operaciones efectuadas enla unidad aritmética y lógica. Cuando el reset tiene un valor de "1", el conteni-do del acumulador es "0000". l-a variable intema ares desempeña una funciónimportante cuando existe una inte¡rupción, ya que gua¡da el contenido delacumulado¡ mismo que devuelve cuando el microprocesador regresa de dichaintenupción para que la ejecución del prograrna principal no suíia alteracio-nes; en la descripción VHDL se ve con claridad qué combinaciones de cs rea-lizan esta función.

Además, la combinación de cs igual a "10001" permite almacenar un da-to en el acumulador para su p¡ocesamiento.

En el listado 8.5 se muestra el códieo en VHDL del acumulado¡ B.

use 1eee. std_1ogic_1164. all ;élrtity regb5 ls Dor! (

cs:i¡ srd_1oqic vecror (4 ¿kmto 0);c1k, reset: i¡ srd_Loqic;

daroin: i ¡ srd_1oqic vecror 1l a lcMlo 0);b: it@t srd losic vecror {3 alc4'¡rro 0) ) ;

Conl¡núa

Page 250: Manual VHDL

u4 VHDL, El arte de progmm¡ sistemas digitales

alcbltactro imped@cia otr reqb5 1á

D!e€86 (cs, c1k, reseL)@i¡b1e btes:std-1ogic-vector (3 d,mrto 0);

b{¡Inlf ¡eset = 1' üIea

b <= 0000' ;sl3r!t (c1k ev6t .¡d c1k = L ) llÉr¡

b <= datoin;ibE '11100 ='l r ¡es := b;rl¡e¡ 11101' ='

b <= brés;rth.r¡ olbB =>

fuu;@d ca6€;

e¡üt tf;éf¡al lt;

€¡,al Dlocr6a ;

List¡rb a.5 Prosnmación del acunulador B.

El acumulador B ¡ealiza una 6¡ncióo similar al acumulado¡ A. La únicavariación está en el contenido, que depende exclusivamente del valor que

asigna el usuario. Para ello la variable cs debe ser igual a "10010. La variable

ü'res tiene la misma función que la variable ares en e1 acumulador A

Regisüo Sel,Dato

Es un registro auxiliar que permite i¡troduci¡ datos al bus de datos intemodel microprocesador. Estos datos tienen como destino los acumulado¡es A oB y la unidad de control.

El código en VHDL de este rcgrstro se muestra en el listado 8.6.

Page 251: Manual VHDL

Sbr.@ mbebdor cn VHDL 2Al5

uré ieee. std_1oqic-1164. rU;dttty sel_dato t! Dort (

ctk¡ in srd_1ogic;

a¡arouL:l¡ srd toqic_vecror G atorraro 0);daróin: t.6¡r sral_togic_wecro¡ (3 dcioro 0);

operacion: l¡ srd_logic_vecror (3 do¡drro 0);cs:ln stuosic_vecror (4 ak ñro 0) ) ;

aichlreclllfe arq,sel_dato of sel_¿laro Éb.ct!

Droc4s (c6, clk)

If (clk'€vrllt a¡d clk = ,1 ) tlr.ric:iaá cs t6

{b.o 10110' => daroin <= darour;tü6 ,10101, => alatoin <= operacion,rtr€lt oths¡s => rn¡Ll,

e¡r¿t cáae;

e!:d 1f;

srd procé3s;

*ffi'a$..w

LirtÍlo 8.6 Rogtmación del ¡egúrrc Sel-dato.

Como se observa, en el código del Sel-Dato la variable rese¿ no tieneefecto alguno; en cambio, la señal c& tiene la función ya mencionada.

La señal cs determina el tipo de dato que se va a introducir Este datopuede ser extemo, de una memoria, y se presenta cuando cs es igual a"10110", o intemo, como resultado de una operación en la unidad lógica arit.mética. Esto último sucede cuando cs es igual a "10101". En slntesis, el re-gistro Sel-Dato no es sioo un multiplexor de dos ent¡adas con una salida.

Regi8tro ?i'Est

k un ¡egisto que permite sacar datos del microprocesador, los que puedense¡ el ¡esultado de una operación en la unidad aritmética y lógica. Cuandono está en uso este registro, sus salidas tienen un estado de alta impedancia.

Page 252: Manual VHDL

24 \4tDLj El áne de prcgE¡d sisremas digiraLes

En el listado 8.? se muestra el código VHDL correspondiente.

use ieee.sld- losic 1164..r1;

@rlty tri_esr l! ¡Ft! (

cs:b std-loqic-vector (4 (Lmto 0),

c lk: l ¡ std Logic;

operacion: i¡ std-1osic veclor {3 do!¡r¡to 0);

dalout:I¡¡d¡t std-1o€tic vector (l ¿ldetllo 0));

ücJ¡Ltectu!€ arqtri of l¡i-esr ls

b€gl¡

Dtecé8s (cs, clk)

tf (cLk'evEl .!d clk = 1 ) théú

case es is

¡ ibe 1r000' = d"cour <= ope'ác:onr

*Ler¡ ott¡€rs => daLo.rL <= zzzz'i

€!d c¡le;

dd 1t ;

dd ¡Eéss;

L¡lta¡lo 8.? Pro8¿roción del regisfto lii-E6r.

Como puede observarse, resel tampoco afecta al legistro Tii-Est y según

su descripción, se trata de un buffe¡ unidi¡eccional con estado de alta impe_

dancia, En conjunto, Ios registros Sel-Dato y Tii.Est dan al bus de datos delmic¡oo¡ocesador la caracteística de ser bidireccional.

Page 253: Manual VHDL

Sis¡eM .ñb€bü1o6 cn VHDL 241

Registio Set Dir

El registro Sel.Dr permite que las direcciones generadas por el contador dep¡ograma o las del regis$o fndice salgan del micoprocesador con objetode lee¡ o escribir un dato, según el valor de la señal \rV\I.

El código que describe al registro Sel.Dir oe encuentra en el listado 8.8.

ulG ieee. s !d_1ogic_1164 ..L1;antlty sel_dir is ¡EEt (

pcout: La s!{losic_vectorclk:lE s!d_]ogic,

i¡rt¡ st{loglc vecLordireccioir r d¡t sE{logic vector

cs: tD stülosic_vec to¡@ll sel_dir;.¡lihltéctut! arq-sel di¡ of sel_dir tsDcAÉ¡

¡,l.oc.¡a (cs, c1k)b€sl¡tf (c]k'.lndt aDd clk = 1 ) th€a

ihlo "11000' => direccion <= ix;

t|hs otblr! => direccion <- Fcout;

.oal 1f;

tntrdo E.E Prcg¡amación del regisrrc S€l-Dü

Page 254: Manual VHDL

244 VIiDL, El ár€ de ¡rcsran¡r sistends dlsr¡Les

La mayoría de las vcccs, cl rcgistr() Sel-Dir selecciona la direcci(in gene-rada por elcontatlor de programa, debido a que el microprocesador siempreestá leyendo datos o instrucci()nes y nada más cscoge la dirección del rcgt-tro índice cuando va a escribir un dato en la dirección quc éste señala. Aun-que cn cl código de VHDL de Sel-Dir no existe la señal dc resel, cuando és-ta es ígual a "1" el valor,:le direccíón es igrral a '00000000". Al iguaL que encl registro Sel-Daro, Scl-Dir no es más que un mLrlúplexor de Llos ent¡ades r

Registro Dir.Val

La importancia rle este ¡egisrro reside en que su s.rlída indica a los dispositivosperiféricos que latlirección presente e¡r cl registro Sel-Dir es válida. En opera'ción normal, la señal Dir,Val (VMA) se debc utilizar a fill de habilitar dispo-sirivos periféricos como memorias, dec(xlilicado¡es o algún otrc dispositivo d.ent¡ada/salida. Esta señal no es de trcs estados y cuando dene un valor de'lindica c¡rLe la dirección es \'álida; en caso contrario es unatlireccíón ro válida.Esto es así porquc durance algunas ope¡aciones internas el n crop¡ocesadorcoloca una LlirecciLin en el bus que no está usando en csc momento.

Su código en VHDL se mt¡cs¡ra en el listado 8.9

use ieee. std loqic, I164. al l ;

dtiEy dlr val is Dort 1úra: out srd Lcqic;

cs: i ¡ std-Logic vect . r r ( ,1 d(xnto 0l) ;

Dr@e6B (.s )

besitl

o( 1cs( l ) ár¡d rct (cs(2))

ertt procesE;

, ad. ard átd Ft .

ar¡d ¡o! ( .s(1)) a id not ( . : : ;Lolr l ;

Listado 8.9 Códisl) .1c1 ¡csisúo Dú-V¡I.

Page 255: Manual VHDL

.lL6¡rn6.rúebú]¡¿¡n'm'- ¡lh¡9

Conro puc<le o,bce*ar*, ehtc¡lsno Dir.Val es m circuito cornbinatorio conuna sallla única {VMA) y sliidk'r cs igual a "1" cua¡¡do se efecbla uns @e¡a.ció¡r delectura'b'iú¡itt¡¡a. E valér de VMA d4ende en todo momento de cs.

Uni.Ld ¡¡lrrrétic¡ y lógk+ (ALU)

La unidad artunética y lógica es,uru función multi'operación digital de lógi.c¡ combin¿cional. Puede r¿*iáPun coniuoto dc ope¡acionis a¡itméticas bá.sicas y otro de opeacione lógicas,

El código en VHDI" de l&ütüdád aritmética y lógica se encuentra en ellistado 8.10. ]:.;

u¡. ieee. std-1ostcj15¿?ttl ;r¡¡c' roifti:s¡u_arlrh, arl ¡ctLty a1u4 ,.a ¡¡rl (

c1k: t¡ srd_loEic;a,b:l¡ std-logic_wector (3 óñntó 0);

'cs:l¡ irt{toqic-vector (4 i¡rñto 0);"bperacio¡r t¡í¡t std-logic-r€ctor (3 ¿t iato 0);

rc: l-É.r¡t st{loqic_vecto¡ (3 d.i6to 0));

.¡rült.ctu¡! st]Irlar: oÉ a1u4 1t

.1¡BA1 c1: st{r¿üf¿-ve¿t6l (1 eñto 0);bqrt¡

¡,88..|t (clk) 'j¡ +-j

v!¡t¡bL cout : EL4-Iosi¡t'bql¡' '

t! lc1k'.llaa !¡al clk = 1 ) tb@selpc. io¡rá Lm ope!áción.

ca¡. cs Itr¡t"¡oooo1' =>cFeráclór1 <= (a + b);

c1(0)<-1a11) ad bfr l ) : d! i (Éi6) adb(0)) ar¡ l (a(1) )cb11))) ;c1{1)<=(a(2) arÉb(2}).r (c1(0) a'd (á(2) )@b{2))) tq.'.il:-1a{3) aalbIJl) ór (cl(xt d (a(3) )(o¡ b(3)));

Co¡tt¡núa

Page 256: Manual VHDL

t50 VHDL: El arre d. lfogr¡mfi si¡teñd disir¡lé!

iü@ "00010 ">operacion <= (a - b);t! (a >= b) tb

c1(0)<- '1 ' ;

c1(0)<- '0 ' ,.¡¡¡¿ 1f;

úd'00011'=>operacion <= (a .Dd b);

c l (0) <. '0 ' ;

iü- '00100'=>ap€racion <= (a (t b);Cou!.r 0 ' ;

. c1(0)<= 0' ;

fb ,00x01. =>cperacion <= (rDt a);Cout := 0 ,c1(0)<='0 ' tt l ibó'00110'=>op€.acion <= (a e b),cour r- '0 ' ;c1(0) <= 0' ;

ltüa 'q0111" =>

operacion <- (a l ¡d '1111') ,Cou! := Cou!;c1(0) <= c1(0) ;

ibo ot¡.r. =>

4ül ;oal c¡aa;no¿l 1f;

rc(3)<= cout rd c1(1); - - sobref lu jorc (2) <= lat (operacion (3) c operacion(2)

op€racion (1) or operacion(0) );-- Cerorc{1)<= opelacion(3) ; - -s is¡orc(0)<= coul; --Aca¡!eo

oal D€oc...;

Uúdo &lO tk*cripciúr dc I¡ uid¡d ¡rirmétíca y los&u.

Page 257: Manual VHDL

Sstems embebidos en VHDL 251

La unidad arítmética y lógica del micnrprcesador se compone de dc,s en-tradas de 4 bits cada una (contenido de los acumuladores A y B) y una salidade 4 bits fuperación) con aca¡reo. Puede realizar siete operaciones: dos aritmé-ticas (suma y resta) , cinco lógicas (AND, OR, NOT, OR EXCLUSIVA) y en-masca¡ar el contenido del acumulador A.

El diseño de €sta unidad aritmética y lógica supone la generación del re'gistro de códigos de condición (¡cc). Este regist¡o es de 4 bits e indica cómoes el ¡esldtado de una ope¡ación en la unidad aritmética y lógica; estos cua-t¡o bits indican si el ¡esultado es negativo (N), igual a cero (Z), si tiene so-breflujo (V) y si hay acaneo (C).

. Acarreo (C). t . te brr (bit 0l del regisrro de ccidrgo. Je conJrcr. in secohra en "1" si después de la ejecución de ciertas instrucciones hay unacameo del bit más significativo de la ope¡ación que se está ejecutan-do; de otra manera se coloca en "0"

. Sobreflujo (V). Este bir (bir 3) d€l regisrro de códigos de condición sepone en "1" cuando un sobreflujo en complernento a 2 resulta de unaoperación aritmética; se coloca en "0" si el sobrcllujo no ocurre en esetiempo. Por lo general hay sobretlujo cuando la última operación resul-ta ser un númerc mayo¡ que :t 7 de un ¡egistro de 4 bits.

. Ce¡o (Z). Este bit (bit 2) del registro de códigos de condición se colo,ca en "1" si el resukado de Ia operación lógica o a¡itmética es cero; deotra manera se pone en "0".

. Negativo (N). Este bit (bit l) del registro de códigos de condición secoloca en "1" si el bit 4 del resultado de una operación lógica o arirmé,rica es igual a "1", de lo contra¡io se coioca en "0".

Aunque son pocas las operaciones que se pueden realizar con esta uni,dad aritmética y lógica, no hay que olvidar que al combinar esras operacio-nes básicas el número de éstas c¡ece de mane¡a importante y así es posiblerealizar decrementos, incrementos, corrimientos a la izquie¡da o derecha, co-rrimientos adtméticos, funciones NAND, NOR, etcétera.

En lo que se refiere a las señales que conftolan la unidad arirmérica y ló-gica, el valor de cr determina qué operación se va a llevar a cabo en dichaunidad y la señal de clk marca en qué tiempo se ¡ealizará.

Unidad de control

La unidad de control (CU) sincroniza cada una de las acciones ¡ealízadaspor el microprocesador; asimismo, determina en qué tiempo, hacia dónde semandan los dacos o de dónde vienen, decodifica cada instrucción y revisaque se ejecute,

Page 258: Manual VHDL

,<7 VHDL: Ela¡te de progranar sistehas disi¡áles

El código de la unidad de control se presenta en el listado 8.11.

u€e ieee. std_1o!ric_1164. al1 ;u€e rc¡k. s.d a¡ i th.a]1;slity conrrol ia ¡pr! (

feset,c lk: i ¡ std logic;irq: i! s¡d losic vecto¡ (1

ñ: il@! std Logic;datoin: i¡ sLd_Loglc_vecror (l

rc: in std,loqic-wector (3

pcoút: in std_logic_vectór (7 tl@to 0);

cs: bd¡t std-loqic_vecto¡ (4 ¿tdnto 0));

üchitecture arLconL¡ol of control i,sE! ' ¡É estados is (d0, d1, .12, d3, d4, ds, d6, d?, d8, d9, dl0,dl1, d l2, d1l , d14, d15, dl6, dt7);6igMl edojresente, edo_futuro: esrados;sigMl f: srd_Logic_vector (7 domto 0);

p¡ocesol: D¡ocess (edojresente, irq, reset)

besinif reseL = 1 tlE

édo_futuro <= d0;pcontrol <= 11111111 ;

f l <= ,0 ;

Conünúa

Page 259: Manual VHDL

Sist€ms embebidos en \4lDL 253

cs <= 11110 ;

c¡€e edotresente lsetm d0 =>

lf i¡q = '10 thencs <= 11100 ;edo_iuturo <= dl;

e1€if irq = 01 rhe¡cs <= ,111Q0 ;edo_iuluro <= d1;

edo futuro <= dl;cs <= 11111 ;

lib€o d1 =>

if irq - 10 ttEpconrrol <= 0:1000000 ;edo fururo <= d1;

' etsif i¡q = 01 thenpcontrol <= 10000000 ;edo_futuro <= dl;

cs <= L1110' ;edo_futuro <= d3;

edo_futu¡o <= d5;

cs <= 10:L:10 ;n<= 1;

edo_futuro <= d4;

ry<= 0;If datoin = 0000 lhe¡

cs <= 00001 ;edo futuro <= d2;

elstf datoin = 0001 cher¡cs <= 00010 ;

edo_futuro <= d5;

Cont¡núa

Page 260: Manual VHDL

254 VHDL: EI aric d. pros¡?úú¡r ¡¡stema! disitálei

.bll dlroin = '0010" rh,

cs <= .00011' ;

ealc-ñ¡tu¡o <= d5;

.l¡tf daroin - '0011' t¡d' - cs <- '00100.,

edo-fuEuro <= d5;

al¡tf datoin = 'o1oo" tbcs <. '00101' ;

€do-fuluro <= d5;

.I¡lt dÁtoin = '0101' rhccs <= '00110' ;

edo_futuro <= aI5;

.Irlt alaroin = "0110' tbo: cs.<='11111' ;

edo-futu¡o <- d6;

.ltlf daloin = "0111' t¡o

cs <= "11111' ;edo_fururo <= d7;

.1.1! alaroin = '1000' t¡6, cs <= '11111",

edo_futuo <= il8;

.Llf daroi¡ = '1001' t¡d. , cs <= '00111' ;

edo_futuo <= d9;

.lrtf ¿laroin = '1010" rhdf, ca <= i11011' ;

edo_futxro <= doi

.I¡lt datoin = '10u' then

cs <= "11111' ;

Conüni.

Page 261: Manual VHDL

SúteM embebidG en VHDL 255

i f rc (0)

<= d10;

el.If datoin = "1100' rhecs <- '11111 ;

I f ¡c(2) = 1 thdedo_futuro <= d10,

edo futuro <= d0;and l!;

€13If daroin = .1101. rbecs <= '11111 ;

t r rc(1) = 1 tü€aedo-futuro <= d10;

edo_futu¡o <= d0;élr¿l If,

e ls i f datoin = "1110' lhe

cs <= '11111 ;l.f rc(3) = I t¡€!¡

edo futuo <= d10;

edo_futuro <= d0;@d f f ;

cs <= ,11101.;

edo_futu¡o <= dot

cs <= .10101 ;edo_fuluro <= d11;

cs <= 1011Q ' ,m<= L;

edo_futuro <= d12 t

Cont¡núa

Page 262: Manual VHDL

2¡f VnDL. ¡¡ üi'dn,prlslmrd.t tna¡ disit¡ld

.e ' . ' j ¡ lbd d7 =>

cs <: '10110' ,ü <- 1"

-. '€do-fuluro <- d11;

i i t , ¡b

rabo d8 =>unJ , j_3. i : , cs <. .10L10,;

' ' rw <- l ;: edo-furuto . d15;

:i iy,j rA- d9 _>

cs <= ,11000,;

¿dó-futuro <- d0;

' 'irüo d1o ='

. | : . . . cs <= ,10110 ;nú1.

' rw<='1 ii édo_fuluro .= d15;

1: I ¡? '

taG d:I =>

c5 <= '10001' ;n <= '0 ' ;

.) {tt lr edo-fuluo <= d0,

!bü d12 =>

cs <= '1.1111 ;m <- '0 ;

t. r}:J pconlrolio) <. alatoin(o);pconrrol (1) <= il¿toin(1);

aat, pconrrot(2) <= daroin(2),' pcodt.ol(3) <= datoin(3);

pconlrot (4) <= Pcontrol (4) ;

Pconlro L ( 5 l <. Econt lo](5, ;pco.ltro1( 6 ) <= pcontrol(6);

Pconlrol (7) <= Pcontrol (7);

Aoñütda,

Page 263: Manual VHDL

I Sitt@.! .mb.bidd m VHDL al

eilc_fuluio <- d13;

' . cs <- '10110' ;rw <! ,1 ' t

edo_iuturo <= tL14;

ü at14 =>

.qr <= 0l ;cs <= . '11010.;

Pcontro] (0) <=pconllolll) <-pcont{,91(2) <=pcontrol (3 ) <=

Pcon¿ror(4) <=

¡rcgnüor l5) <=

Pcontrol (6) <-pcon!ro1(7) <=

edo_futulo <- dot

ib¡n dl.5 =>

cs <= '10010,,!1¡ <- 0;

edo-futuó <= d0,

daloin (2) ;daroin(3);

nüéó d15 =>' ' cs, '<= '10000"; '

' f (0)<- datoin(0);r{1)ke d¿to1¡(1);E(2)<" ,datoinl2);f (3)<- '0 ' ,f , (¿)<- ,0 ' ;f {5)<. . '0 ;f (6.)<- 0 ' ,f (71<= 0' ;

Í daroin(3) =, 0 t¡e

Pcontrol <= pcort + !;edo_fururo <= d17r.elaa

Écontrol ;= Écout - f;edo_futúó <= d1,7 |

' ort r!;

rb df.?, .>

. i ,

Conlinúe

Page 264: Manual VHDL

258 VIIDL, El arte de ¡ro¡rana¡ sistends dlcitales

.s <= 11110;

edo futuró <= d0;

e!¡d case;

etd tf;

e¡at D@eaa procesol;

proceso2: t focess ( . lk , reser)

if lclk ereñ! áíd rilk = L ) t¡er¡

if feset = 0 th4

edoj¡esente <= edo_flruro;

eld p!@eEa proceso2;

Li¡tádo 8.1I Descripción de la uniJad de coDtrol.

De acuerdo con el código en VHDL, la unidad de control es una máqui-na de estados liniros. En ella se ütiliza un proceso combinacional para descri-bir la función del próximo estado, las asignaciones de salida y un proceso

secuencial pa¡a describir las asignaciones sobre el ¡egistro de estados en 1etmruición activa de la señal de reloj.

La unidad de control genera la señal cs pxra cada bloque. Esta señal lesmarca la función que van a realizar y en qué tiempo deben efectuarla; deigual forma, genera la seial de lectura/esc¡itura, la señal de pcontTo¡ que vadí¡ectamente al regístro del contador de programa que gene¡a las di¡eccio'nes. Las señales ciJq reset, IRQI, fRQ2 y rcc son selales de enltada; la últimaresulta de las operaciones realízadas en la unidad aritmética y lógicá e indicea la unidad de cont¡ol cómo es el resultado.

Al inicio del código en VHDL, las interrupciones tienen una lunciírnpreponderante porque indican al microprocesador dónde leer la primera ins'

La interrupción de nrayor impo¡tancia es res¿i, pues inicializa al micro'procesador empe2ando por la misma unidad de control, coloca alpconftolconvalor de "11111111" y le dice al contador de programa que se incremente.Después de reser puede haber dos inrerrupciones IRQI e IRQ2. En caso dep¡esentarse alguna de ellas el ¡control se modifica, pero antes el microp¡oce-sador guarda el resultado de los dos acumuladores y de la última direcciirn(del contador de programa). Si se da una lRQl, el pcr-'ntrol es igual a

"10000000"; si se p¡esenta üna interrupción lRQ2, el valor de pconrrol es

Page 265: Manual VHDL

S6re¡n¡s ehbebidos cD VHDL 259

igual a "01000000". Ambas direcciones indican dóndc iniciar las ¡utinas deintcr¡Llpción. Al terminar las rutinas, los acur¡rrladores vuelven a su valororiginal, al igual quc el valo¡ del cc¡ntador de programa. En caso de no exis-dr alguna interrupción, el microprocesaclor genera Ia direccíón "00000000" yla seÁal F,IVV se va a "1". Con esro el microproccsado¡ lee el contenido dc es-ta di¡ecci¿)n, que es una instrucción, e iniciR la secuencia de ejecución.

En la figura 8.5 se pue,.1e observar un diagrama que indica el flujo de laoperación que sigue el microproccsador al momento de empezar a trabajar yel camino que toman las intcrrupciones,

La unidad dc cont¡ol está compuesta por 17 estados, cada uno con unafunción cspecífica. Los estados "0" y "1" se encargan de ias tres interrupcio-nes que existen. Se llega al estado "0" después de un reset o luego de correria última instrucción.

En el estado "0" se da la orden para incrementar el conrador de p¡ogra-ma (cs = "11111"). Del estado "0" se va ¡l estado "1", a menos que enrre unrese¡. En éste ia unidad de conrrol comprueba si ha entrado una inrcrrupción.En caso positivo cambi;r el contador dc programa y pasa al estado "3", en ca-so contrario pasa de igual forma al estado "J". En cste estado la unidad deconrrol lee la in.rru.cr , ln. l , r , e l lo l , ' .er ' ' . , Ie, r W v VMA . . vrn " l ,yLseñal crs es igual a "10110".

Este valor de cs indica al registro Scl-Dato que ,:leje pasar el dato extemoalbus de da¡os intemo del microprocesador (¿¿r)ln), para que sea analizado enla unidad de connol. De aquí se va directamentc al estado "4", que es el másimpo¡tante, ya que cunple las funciones de decodiffcatlor de instrucciones ydetermina el camino que se debe seguir en la ejecución de las i¡rstrucciones.

]J

- ;* ;* t

t;t G-

EiCüE 8.5 D,¡sr¡,,'¡ Je l,4o Je rnt.rru¡c nes

Page 266: Manual VHDL

260 VHDL, El a¡¡e dc r¡)s¡¡mar sistet¡s digi¡¡lcs

L.n ei estado "4" sc ricnen l6 combrnaciones ,:1e h señaldatrrin y cada unaf eprescnte una instrLLcción.

Las l6 i¡rsrrucciones se dividcn en las síguientcs categ(rrías:

NúnE¡o de instrucción

I

Cúsr cn a.umulaloi i ,c. t dücc.ión

Rekr¡o dc ntcrruF.o¡

Más ¡dclante se r-la un¡ lista de¡allacla de las 16 instruccíoncs que puede

ejecutar el microprocesador.En el estatlo'4'noda más se ejecutan las instruccioncs lógico ari lmóti-

cas y sc indica a la ALU el tipo de funcíón qrre se va a ¡eallzar. Pa¡a este ti'po de insúucciones se pasa:rl estado "5",tlonde la unidad de contrc¡l coloc¡

el resultatlo de la operacitin en el bus de datos ínlerno. A contiluilción se ra

¡l esrado '11", donde el rcsulta,:lo se almaccna en el rcumrrlador A. Po¡ últi-nlo se pasa alestado "0" dondc ¡odo comíenza de nuevo.

Para llegar al esrado '6" es neccsario que en cl estallo '4" el valor ,-1e

datoin sea igual a "0110". Este dato corresponde e la insfrucci(in de cargaruna di¡ecci(in en el regis¡ro índice. En el csrado "6' la unidad de cont¡ol dala orden para introducí¡ un dato. De aquí sc pasa al esrado "12", clondc

el dato que se introdujo en el estado ante¡ior cor¡esponlle a la parte baja

de la duección que sc va a cargar en el regisúo índice En el estado "llse da 1¡ orden de introducir un segunrlo daro y en elestetlo "L4" esretlato pa-

sa a formar Ia parte alta de la dirccciírn y desde cscc estado se carga esta di'

rccciírn ya formada cn el registro índice. De aquí sc va al estado "C" para

ejecutar la siglLiente insr¡ucci(in.Para lLegar al estado "7", cn el estacio "4' el datrin clebe ser igual a "01i l

Este rlato corresponde a la inst¡ucciírn de ca¡gar Lrn dafo en el acumulado¡ A

En el estado "T" se introduce ei dato que se quíere cargar. De ahí sc pasa

al estado 'l1", don.le la unidad de control coloca el dato en el acumuladorA. Para finalizar se va al estado '0" a esperar 1.1 siguiente ilstrucciírn.

Para llegar al cstado "8', en el es¡ado "4" el valor dc datoin rlebió scr igual a

"1000". Este való¡ corresponde a la instruccií)n lle cargar un.lÍto en eL

acumulador B. En ei estado "8" se introduce cl dato que se va a carg$ Dcahl se va rl estado "15", .londe 1.r unidatl .le conüol coloca .licho daro en el

acumulador B y po¡ último se pasa al estado '0"Cuando en el estadc¡ "4" el datoin es igu.rl a "1001', esto signitica que h¡r

una inst¡ucció¡r de alnacenar el dato del acumulador A en la cli¡eccírin conte'nida en el regisrro írdice. En este estado la umdad dc control coloca cl valrr

Page 267: Manual VHDL

Sisr.m¡s enbcbiJos en VHDI- 261

del acumulaclrr A en el bus de datc¡s in¡emo. Luego se pasa al cstaclt¡,'9,,,tlonde la ,.lirección del índice se cohr¡ cn el registro Sel-Dir y el regisrro Tii_Est cs habilirado para sacar cl vaftrr del acumulador del microprocesador Deaquí se salta al esrado '0".

Las siguientcs cuatro irstruccilrnes son de hifurcaciírn _r trrlas pasan por losnismos estados. La única dilerc¡rcia es la condición quc denen que comp¡obarpara validar ia condición,:1e salto o no. Si en el estado '4,se da alguno de hrssiguienfcsvaloresded¡r¿otn:"1011","1100", ' ,1101'y,1110",serrarade1ains-t¡ucción de saka si hay acffreo (C = 1), salta si es igual a cero (Z = 1), salresi es nega.ivo (N = l) v salra sí hay sobreflujo (V = 0), respcctivamente. Encl mismo estado "4" se comprueba si la con,:1icir,rn de salto cs ve¡dadera. Si csfalsa sc pasa al cstado "0" y en caso contrario se va al esrado ,10,,, donde sc in_trodLrce el dato que ,:letermina cl vahrr del salro; de aquí se pasa al estado ,,16,'.

Estc salto puetle ser hacia dcl¡nte o hacia at¡ás y su val(n máxi¡n cs :t ?direccioncs a parrir de la direcci(')n que contiene el dato r¡re detemina su lon-gitud. El sigro del salro se Lletermina a partir dcl valor del ¡e¡cer bit clel dato:si es íglLal a '0" es positivo y si es igual a'1 cs negaü\.o.

A continuación se pasa al esrado 'l ?", donde Ia nueva Llirecci(rn se colt>ca en el contador de programa. Parr finalizar sc va al estado ',0,'.

Cuando en el esrado "4" se ¡iene un valc¡r ,.le Jaroin igual a ,,1010', csro

significa que hay una instrucción de inc¡encnta¡ elvalor del regisrro ín.liceen el mismo estado "4" -la unidad de control realize esra operació¡r . Deaquí se regresa al estado '0".

La írltin¿ instrucción se urili:a cuando ha habido previamcnre una inte_rnrpcnin ( lRQl e jRQ2). Si en el cstado'4' , el r ,alor, : le daroin es igual a"llll", csto significa quc la rutina de inre¡rupciLin ha rcrminado y que elmicroprocesador tiene qLre regresar a las condiciones previas a la inrernjp-citin. Para ello la unida(l de cr¡nt¡ol saca la dirccción ah¡acenada en la pila,la coloc¿ en el contador de programa v el valo¡ original de los acumuladoresse cirrga de nuevo. Enseguid¿r se va al estado "0'.

8.3 Diseño jerárquico

Cc¡mo se mc¡rcionó cn el capítulo 7, cldiseño jerárquico es una herramientade apoyo que permite la programación de extensos diseños mediante la intc_gración de pequeiros bloques, Ios cualcs se pucden detalla¡ ), simular por se-parado con suma facili.la,:l.

Una vc: es¡udiado cada uno de los blLrques que clrnforman al microFro,cesádor, cs necesa¡ío aclarar que de acuerdo con la programacirin en VHDLes neccsano crca¡ dos p¡ogramasj uno que Llefina cada uno Lle esros blo.luescomo componentes y otro -dcnominado de alto nivcl que cncarlena ca-da uno de csros cornponentcs y los hace trabajar en clrnjuDto.

Page 268: Manual VHDL

262 \ HDI : Fl ¿,tr de procram"r ni.Ts J,{d¿1..

8.3.1 Creación del archivo de com¡ronentes

El archivo que deñne cada uno de estos bloques como componentes apareceen el listado 8.12.

uée ieee. sLd_1osic 1164.at l . ;

Dackagé cnicro i3

coq)or¡€6! a1u4 IErt {cLk: i ¡ std logic;

a,b:h sLd-l.sic vecto! (3 at Mto 0);

cs: l ¡ std_logic vecior 14 at(mto 0);

olEraciú: iú¡l std-L.sic-v€tor (3 akt¡¡¡to 0) ;rc:irE¡t std-1cEic-v€ro¡ (l d@to 0))r

ccq)drEt rega5 Por! (

cs:j¡ std loqic-ve.tor (4 akarto 0);

reset:i¡ std lolric;

c1k: i ! sLd logic;

d¿toin:l¡ sLd-1ogic vector (3 ¿t(hto 0);

a: inout sid-Losic vecto¡ (3 akhto 0));

cq)onea! regb5 IbrE (

resel: l¡ std-loqic;cs:l¡ std-loeric vecror {4 domto 0);

clk: i¡ std-1oqic;daroin:i¡ sLd-1oqic_vecLor (3 aloúto 0);

b: ilnt std loqic_vstor (3 aLirlto 0) ) ;

cor@onen! se1_dato lbrt {cLk: l¡ std logic;

datout:l¡ std logic vector (l ¿lcwto 0);

daioi¡: lnout std Logic vecto¡ (3 timto 0);

ope¡acion: i¡ std-loqic-vecror {3 at(mto 0);

cs:ir std lcsic-vecLor (4 ¿kmto 0));

ccqEdt t¡1 es¡ DorE (

Continúa

Page 269: Manual VHDL

S¡temas ehbebidos en VHDL 2ó3

cs:l¡ srd_1osic vecror (4 d.m!o O);ope¡acioni h std_toslc_vecror (3 dr\Mto 0);

datour: lnout srd_1osic vecror (j d.Eto 0));

cq)one¡t pc Dort (

c1k: i¡ std_togic;¡eseE: 1! std logic;

Dcdtlol/ pila: i¡ srd_logic-vecror (7 aloMro 0);cs: ln s¿d_loqic-Bror(4 akrero o);

rEorr: ilst srd losic_vecror (r aknoto 0) );

cc4)c'f¡@t sLack IEE (

c]k: t¡ srd_1ogic;pcour: lf sr{Losic_vecro¡ (7 dmlo 0);reset: h s!{losic;

pila: lu¡t srd_logic,recror (? ¿tó¡Ero 0);cs: j¡ srd_logic_vecLo¡ (4 dloe.ato 0));

conponst indice po¡t (

clk: Lfr srd_roqic;pconrrol: la srd_Logic vecror (7 d@rto 0);

reset: t¡ srd_Logic;cs: i¡ s td_Losic_vec ror (4 ¿t<Eto 0);u: i¡s¡r sLd loqic_reccor (7 abr.¡ro 0));

con¡ponent sel dir Do¡t (pcouti!¡ srd_toqic wector (7 don¡¡ro 0);

clk:i¡ std_]osic;

u:t¡ std Loqic_vector (7 aldr¡rto 0);di¡eccion:ou! srd logic_vecro¡ {7 d¡,nato O);

cs:i¡ srd_loqic_vecto¡ (4 alortrto o));

c(q)dlet di¡_vat Dort. (rm:cü! srd_logic;

Cont¡núa

Page 270: Manual VHDL

264 vhLrL El afc de Froerrmar rnem¡i orgtrirc(

c.: i ¡ std loqic-ve. tor (4 akmEo 0) l ;

cdrDdre¡¡t control Dof! (

re¡r-é1, cil: i.! sid_loqic;

:rq: i¡ std 1oEr.-vector (l ¿lMto l-rl ;

m: 1!dt std .gr.;

datoin: ln std logic vecror (l düoúlo 0);

pcont¡o1: itMt sid-'ogi. vecLor (7 ¿lowElo lll

¡c. i¡ std lcsi.-ve.tor 1l akmto 0);

pcout: 1¡ sLd-logic ve.tó¡ {r (lotúto 0);

.s: ilgt srd_l.¡lic ]@¡or {4 tldrto 0ll,

@d cdr¡Df¡eÍt ;

Listado a.12 Creación de los conFrnentes del diseño

De acue¡do con el código anterior, cada componente se decla¡a de ma-

ne¡a simila¡ a su entidad de diseño y cada uno se almacena en el paquete ll¡-

mado cmicro.

Creación del archivo de alto nivel

Según se mencionó en el capltulo 2, en VHDL es posible diseñar en forma ev

tructural; es dech, uniendo componente por componente, Esta metodoiogía

es ia base del diseño jerárquico, además cada bioque o componente del dise'

ño se interconecla por medio de señales o buses intemos, los cuales se decla-

ran y asocian medianre cláusulas propias del lenguaje. Con ellos se completael diseño de bloques funcionaies que interconectados fo¡man sistemas

comPlejos.La declaración de la entidad consiste en todas las te¡minales de ent¡ada

v salida del mic¡op¡ocesador, las cuales se nomb¡an tai como se encuent¡anreleridas en su módt¡lo. Las señales que inrerconectan cada componente se

declaran en la arquitecrura.El código en VHDL del a¡chivt¡ de alto

trabajar en conjunro a todos los bloques dell istado 8.11.

nivel (high level) que pe¡milemicroprocesador aparece en e1

Page 271: Manual VHDL

Sisl.tM enbc¡idos en \,'IJDL 265

llbrüt' ieee, diseno;ur. ieee. std_logic_1164. cll;us€ rcrk. s rd_ari Lh. !.11;

ua6 diseno..¡t;.dttty ¿¡Í¡icro 1! Dólt (

c lk,reset: i ¡ sd_roglc;direccion: ci¡t st{Loqic vector (7 tlmto 0);

\¡na: c|¡t std 1ógic;alatouL: tüor¡t srd_1oqic_vector (3 donr¡to 0);

tu.l¡d¡t er{1osic;irq:i! sld_logic,wector (1 ¿ld$r¡ro 0));

.¡chltcctulc arq_amicro of arúdcro ls

6Lg!1 a: std_loqic_vector (3 ó!ñro 0);

st9!a1 b: srd_1ogic_vector (3 dLrmto 0);

.I9!¿1 datoin: stalloqic_vecto¡ (3 ¿lotdlto 0);

dgl!¡ü operacion: std_1oqic_vector (3 d.r,trto 0);

.19Íá1 rc: std_1oqic_vector (3 ¿ton¡to 0);

3i9ú¡1 cs. std_loqic_vector (4 almto 0);

319Dat pcontrol: std_loslc_vector (7 a¡o|rnto 0);

sI9!¡1 pila: srd-loqic_vector (7 ó.r¡nto 0);

' .Ic¡tl. pcoul: ÉtCLloqic vector (7 ¿t i.r¡to 0);

tt!trtü ix: std_losic_wector (7 dorEto 0);

bql:¡u l : á lu4 rort D¡D rc-R..cIR, .s >-s, ope-¿cron=,opeld:on, ¡ . . ' . ,

u2: regras porl t!¡¡) (cs=>cs, datoin=>daloin, a=>a, clk=>c1k);

u3: resrb5 Do¡t ¡¡D (cs=>cs, datoin=>dátoin, b=>b, c1k=>c1k);

Continta

Page 272: Manual VHDL

266 VHDL: El arte dc prosrahar sistems dlcitales

u4¡ sel cLato pors rr¡p (cs=>cs, datoin=>datoiD, datout=>datout, ope-

racion=>operaci.on, clk=>clk) ;

¡¡5¡ tri,esr porc lap (cs=>cs, opelacion=>operacion, datout=>clatout) i

u6. pc port oap (clk=>clk. pcontrol=>pcontrol, cs+cs, !,cout=>pcout,pila=>pila) i

u7¡ indice port úap (cs=>cs¡ clk=>clk, Pcontlo1=>Pcontrol, ir>ix);

u8¡ stack Port DaP (cs=>cs, c1k=>clk, Pcout=>Pcout, Pila=>pila);

u9: sel_di! rrort @p (clk=>c]k, pcout=>pcout¡ ix=>i:(. direccion=>di-

recclon, cs>cs),u10¡ di¡ val ¡,orl oaP {i4na=>vna. cs=>cs)t

u11: cont¡ol porl naP (clk=>clk, reset=>reset, ilq=>irqr !f>¡w, da-

toin=>datoin, pcontlol=>pcontrol, rc=>rc. pcout=>Fcout. cs=>cs) t6!di

Li6tado a.l3 Pros¡ana de alio nivel.

Li8ta de i¡rstn¡cciones

El microprocesador contiene un conjunto de 16 instrucciones, dichas opera-ciones pueden ocupar l, 2 o 3 nibóles segun el tipo de operación que se va aejecutar En la tabla 8.2 se puede observar el conjunto de inst¡ucciones. Allinal de dicha tabla se describe cada uno de los símbolos que se utiliza en ésta.

Codico der¡strucc¡ón Mnemónico - # ñ'ic .p"..*

A+B-A ABA 6 I 00m(0) Suma los acumuladoresy guarda el¡esultado en A.

A- B-A SBA 5 I m01(1) Rdt¿ los ácumuladores y guarda elresult¿do en A

A and B-A ANAB 5 I

A or B-A ORAB 5 I

not A-A NEG 5 I

A xor B-A EOAB 5 1

suarda el resultado en A.

T¡bla 8.¿ Lb,3 dc, turru, . , rn^ J. ldr r .p,ú, ( .adol

0010(2) AND lóeica enrre acumuladores y eu¿¡d¿el resultado en A.

001i{l) OR lógicd enÍe acumuladores } euarua e-resultado en A.

01m(4) Invierie Aysualda el resultado e¡ A.

0101(5) XOR lósica entrc acunuladot"" y

Page 273: Manual VHDL

S6reñas enbebidos en VHDL 267

I'bru..¡ón Mnmónico - # Rcc^ codigo de comentarioNlv|! opqacon

A -M STTA 4 I llli 1cr01(9) Aln¡cena el ontenido de A en ladirección del lndi.e.

X+ l 'X INX 3 I liil 1010(A) lnúenenta en uná unidad et valot,lelregisr¡o fndice,

c = "r ' Bcs 3,6 z 1:11 1011(8) sakaslc = '1 ' .

z- '1 ' BEQ 3,6 2 11:1 l lm(C) sái iasiz=' l ' .

N = '1" BMI 3,6 2 t i : l 1101(D) sai tasiN =' l ' .

V="1" BVS 3,6 2 J l :1 11r0(E) sal tasiv=' l ' .

Pll4*Pcoui RTI I I llil 1111(F) tusresa de una inrerlupción.

M-X LDXM 1 1 :111 0110(6) Ca¡ga elíndi@ con la dirección dememona inmediata.

M-A LDDA 5 2 r1 0tl1(7) Cárga elácunulador A con elvalorinmediato.

M*B LDIIB 5 2 .T 10m(8) Cáigá elacumuladot B con elvalorr r rr inmediato,

Tabh a.2 Listá de ituttueiones del hi.roprdesádoi (On,¡n@irn )

Desc¡ioción de los símbolos utilizados en la tabla 8.2:

) - Tiansfe¡encia a. ) RCC Registro de códigos de) . Se pone en "1" si es cie¡to y en condición.

caso contra¡io en "0" ) # Número de mordiscos(nibb¡e.i)) A Acumulado¡ A. ¡equeridos por la inst¡ucción.) B Acumulador B. ) - Cantidad {e ciclos de reloj) X registro de índice. empleados po¡ la instrucción.) C lndica si hay acarreo. ) M Dato de una di¡ección de) Z Señala que el dato es igual memoria o una direcclón

de memo¡ia.) V Indica si hay sobreflujo. ) j No afectado.) N Señala que el dato es negativo.

De acuerdo con la tabla 8.2, el usuario sólo puede manipular los acumu,ladores y el regist¡o de índice, además de utiliza¡ el registro de códigos decondición pa¡a conocer el resultado; no puede modifica¡ el resto de los ¡egis-tros del microprocesadot

Page 274: Manual VHDL

26a \Hr ' r l l . i .p, . . , , . , I m , . - l

Ejercicios

Ptogta;¡nación de sisteLmos embebi¿os

8.I A continuacirin se describe el sis¡ema cnrbcbido 14500 de Motorolal, quees un procesador programable dc un bit i:lerclo para construir sistemasdc con¡rol ¡ela¡ivamente sencilhrs, en Lrs clue preferenfemcntc sc rc-quieren decisiones lógicas en vez de cálculos numéricos. Una lFlicaciúrtípica del 14500 cn cl conrrol de procesos industriales es el conectaro desconectar algunos dispositivo! como respuesta a cambios en el me-,.1io. Por cjemplo, si el conmutador Sl de la almentación principaLcstáconectirclo, un conmutador 52 limitador dc movimiento está tiesconec-rado y tarnbién csrá desconectado un conmutaJo¡ te¡mostlitico SJ, en'¡onces debe conecta¡se el motor M. Operaciones de conrrol lógico dceste estilo h¡ce unos años se realizaban frecuentenrcnfc con círcuítosde relés electromecánicos )', más rccicntcmente, mediante circuitos l¡>gicos cableados o no p¡og¡ilmables, con clispositivos SSIMSI. El 14500y sus circuiros de apoyo estiú Fensados para proporcionar una alterna-tiva cle bajo costo a ltx circuiros lógicos cablcados cn apLicacíones indus-triales del estilo anterior Por esta ra:ón el 14500 se conoce com0unidad dc conrrol industrial (lCU) en las referencias de los fabricantes.

Descripción del circuito

El 14500 es básicamcnfc l.r unidad E ,.1e un microprocesador sencillrde 1 bit. Dado sLr tamaño de palabra tan corto y el conjunro relarivamcntcpequeño de ínst¡ucciones (s(rlo se utilizan 16 instrucciones), el 14500 se pue-de encapsular con solo 16 patas. En ia figura 8.1. se muestra su estructu¡ainterna. El principal elemento pa¡a el procesámiento de datos en ICU es launidad lógica LU, que conespomle a la unidad aritrnéticológica dc los pro-ccsadores convencíonales. Cono rellejo de las aplicacioncs para las que estriiLleaLlo, el 14500 tiene insfruccioncs Ligicas, pero no ínstnLccíones ¿ritméti-cas explícitas. La LU recibe sus oFe¡andos Lie entratla ,:1e un acumulador ACdc 1 bit (realmente un tlip-flop D) y de una línea dc da¡os bidireccionaldenominacl¡ DATA; esta línea ac.íra conro principalbus de datos cle la lCU.Los resultados ohtenidos por la LU se almacenan en AC, de doncle se pue-den transferir a cualquicr destino externo a t¡avés,:1e la línea DATA.Los ccn¡cnidos dc AC están disponíbles continuamente en la pata de saLidadenominada RR. (RR quiere decir registro dc rcsultados, que es el nontbteque Motorola utiliza para cl acunn¡lador). Además de LU y AC, el 1,f500 tie-

L Jlnú P Hrrc\. D¡rdt, ¿! ii\r¿z\ ¡Ilnrdlr¡ Ln.mtm.{¡J¡rer. Pr.nri.. H¡ll. táBs. 405-+09.

Page 275: Manual VHDL

Sis¡c¡ras embebnlos en VHDL 269

ne un rcloj, un regist¡o de irstrucción IR dc 4 bits y circuuos Llgicos que ge-ncran üna varie.l:rd de señales de conrrol y de temporizaci(in utilizadas paracomunicar con lcx disposirivos extemos incluyendo la unjdaLl l, la ¡nernoriaprincgal v dis¡rosirivos de E/S.

EL 14500 riene 16 rerminalcs o patas ,.1e E/S, cuyas funcLones se dcfincnen la tabia 8.1. Las opcraciones a realizar por la ICU sc cspccifican ¡nedian-te una ins¡rucción de 4 bits que se aplica a las paras de entrada I0 a 13. co-mo rcloj del sistema se puede ucilizar una señal .le ¡eloj que se tiene en lapatr cle salida X1; también la ICU puetle esta¡ controlada medianrc una sc-ñal de reloj extcrna conectada a la pata de entrada X2. Para el 14500 se uti-liza tccnología de circuitos CMOS, quc requic¡e una pata par¡ alimentación(*5V) y otra para tierra. Una seiraLdc reset, RSll sirve para poner todos losregistros ¿ sus vaiorcs iniciales. Se utíliza la señal de salida WRITE para ha-bilitar la memoria cxtema r:lurante la ejecución de l¿s instruccíones de alma-ccnar Típicamente las cuatro señalcs ,.le control JMI RTN, FLGO y FLG!'se transmiten a la unidad cxtc¡na I durante la ejecución de las instmccioncsde control del programa. La tempod?aci(in de ias instrucciones es muy sim-pie. Una vcz por cada ciclo tie reloj las señalcs cn l0:l3 se úansfieren a IR; acontinuación se decodifican y ejecufan.

y tiena T 2

AC

,0, '"*@

- l

JUMP -l

FTN

FLGO

BST Ii:?:ff)lif sry;1;-1

Page 276: Manual VHDL

210 VHDL: EL arte de prósranar sistemas dsrrales

Considenndo a este microprocesador como un sistema embebido,

a) Prog¡ame a través de una serie sücesiva de procesos para carla enti-dad individuallr, ,grame mediante una integración glohalPrograme mediante top level

b)

Tipo Nombre

DatN DAIARR

Inrrucción l0:lll

Alimen¡ación Voovss

x2

Línea bidi.eccbnal de.latos pa¡a entrada y salidaLlnea de salida desde el acumulador (resistro de resúltado)

Llnea de enrrada de inr¡ucción (4 bits)

Tiena (0 V)

Señales de cónÍol del sisrena cenerada Fo¡ el 14f00AX2 se puede @nectar üna señaL de reloi exrema-I;ftbién püede conecrase una ¡esis¡encia ent¡e X1 r X2para fijar la frecuencid del reloj inremo.

Señal activada pq las iturucciones de almacenamieno.Utilüada para habili¡a¡ la esc.itula de hehoria extemaSeñal activada por la inr¡úcción de sal¡o. Urilü¡da !-,cargar un conrador de prlgrdtu exte¡no como una dúec-

Senal activáda pór la insúucción de re¡omo desdc la su-

Utilüada pam habilirar u¡a opemción de cxtracción enuna pila de inst¡ucciones extemá.

<enalde rc 'et ur i lD¿d, pr,¿ p, ner r cero,oJo lo. ¡esi .

\IRITE

JMPRTN

RSTSeñales indicadoras activadas por Las iñsÍucciones de noope.ación NOPO y NOPE respectivamente. Varn^ posi

ILOGO,ILGH bles usos deÉnidos po¡ el usua¡o.

Page 277: Manual VHDL

sistenas ehbebidos en VHDL 271

Bibliograffa

Ganssle Jack. Thc Art ol Designing Enbedded Systerns. Etl. Newnes. USA,t999.

Valvano \(l Jonathan. Embedded.Microcomputer Slstems Real Time InterfacingEd. Brooks/Cole. Ca. USA, 2000.

Powel Douglass. Real Time IIML Deueloping Efficient Objects for Embed.d.eds)ite¡¡r. &1. Addi.on.!le.let. 1998.

Kenneth L. Short. Emb¿dd¿d Microprccessor Slsrems Design. Ed. p¡enticeHall, 1998.

G. Maxinez David, Alcalá J. Jessica. Drseño de secuenciadores inteyados utili,zanda calnpos d.e lógica progratwble FpGA. Congreso InternacionalAcadémico Electro'98. México, 1998.

Skahill Kevin. VHDL For Progan:nabb Ingic. Addison llesley, 1996.Mazor Stanley, Langstraat Patricia. A Gui¿e tD VHDL. Kluwer Academic,

1992.T.L. Floyd. Funümenns de Srsremas Drgiraies. prenrice Hall, 199g.Ll. TeresY Torroja; S. Olcoz; E. Villar. VHDL, lenguaje estándar d.e disei,o

el¿dr¿i¡rco. McGraw-Hill, 1998.David G. Maxinez, Jessica Alcalá. Diseno de Sistenlas Ernbebi¿os d traltés del

Lzrguaje de Descripcíón m Hardwme VHDL. XIX Congreso Internacio_nal Académico de Ingeniería Electrónica. México, 199?.

C. Kloos, E. Cemy. Hardware Descriptíon Language aú the¡ A2lications. Spe,cificati.on, Modeling Yeification atd Slnthesrs o/ Microelecronrc Sysrerns.Chapman & Hall, 199?.

IEEE, The IEEE stanlad VHDL Langage Ret'ere¡ce M¿n¡¡¿/. IEEE-SId_1076-1987. 1988.

Zainalabedin Navabi. Arwllsis and. Modeling of Digual Sysrerx. Mccraw_Hill,1988.

P J. Ashenden. The De signu's gide m WDL Morgan Kauf6nan publishen,Inc., 1995.

R. Lipsen, C. Schaefe¡ VHDL Hardwme Descriptían and Design. KluwerAcademic Publishers, 1989.

J.R. Armstrong y E Gail Gray, Srrucrlred Design withyHDL. p¡entice Hall,t997.

J. A. Bhasker A l4lDL Primer Prentice Hall, 1992.H. Randolph. ApblXatians of YHDL n Circti Desr¿n. Kluwe¡ Acatlemic

Publisherwww.imagecmft,comwww'cce.utexas.edu/-valvano,book.htmlhttp://ü.ww2.unam.edu.ar/subprograma/metod anexl.htm

Page 278: Manual VHDL

Capítulo 9

Redes neuronalesartificiales v VHDL

Introducción

Las ¡edes neuro¡r¡¡ies ¿rtifciales son modelos de comportamiento inteligen-te que pueden se¡ construidos como sistemas artificiales inspimdos en elsistema nervioso de seres vivos. Las aplicaciones de sistemas basados en ¡e-des neuronales han permitido diseña¡ redes con propósitos especlficoscomo el reconocimiento de pat¡ones. Este esquema es novedoso en el áreade la computación y es muy interesante dado que una computadora digital,aun la más sencilla, supera la velocidad y precisión del cerebro en la rela-ción de operaciones numéricas; aunque las operaciones como ¡econoci-miento de patrones, memoria asociativa y en general todas las relacionescon el comportamiento inteligente parecen imposibles de alcanzar mediantelas concepciones computacionales tradicionales de la computación inclu-yendo el campo de la inteligencia arificial.

Estas similitudes de los modelos de las ¡edes neuronales y el 1i.rnciona-miento del cerebro parecen sugerir que la posibilidad de conocer más sobre elcomportamiento de sistemas inteligentes - -{ más ambiciosamente, la repro-duc.ión de cicrLa5 propieJade. de la inrel igencra en "cerebro. arri fci¿lej 'mediante ¡edes neuronales artificiales. El desarrollo de sistemas a¡tificialesinteligentes se puede obtener no sólo con algoritmos más perfeccionados, si-no con cambios más o menos ¡adicales en la concepcir5n básica de las escruc-turas computacionales.

Existe una gran cantidad de problemas de ingenieía ¡esueltos con dise-ños de redes neu¡onales a¡tiliciales capaces de emular en mayor o menormedida algunas funciones realizadas por el sistema nervioso de los se¡es vi-vos, como la discriminación de patrones. No obstante el éxito obtenido po¡l¿. redes nerrronale, art i f icr¿le:. no e¡rá comprobado qr,e e*ra ,rquirecrura

Page 279: Manual VHDL

274 VHDL: El a¡te de lrocraM¡ sistemas disitales

computacional cumpla con el test de Tirrín y que, por consiguienre, sea la so-

lución al problema de la generación de verd¿dera inteligencia artificial. Des-

de el punto de vista filosóffco, las arquitecturas dístribuidas y paralelas, conxr

las redes neuronales, no son más que muchos procesadores t¡adicionales;desde esie punto de vista, no poseen alguna propiedad nueva que evite las

objeciones del test de Türin.Sin embargo, una gran canddad de grupos propo¡ciona evidencias de que

estas redes poseen nuevas p¡opiedades, algunas muy similares a las que tiene

el funcionamiento básico del ce¡ebro.Para demostrar que las redes neuronales son capaces de aprender y, en 1in,

tener un 6rncionamiento qüe se aprcxime al comportamienlo de la mentey ser la base de la inteligencia artificial, se aplica la prueba más importante ba-.ada en el cono. imient. de que nt ba"ra

"er c, 'mo un cerebro. (n (u¿nto d l¿

arquitectura se refiete, sino que hay que comportatse como tal para emularsus propiedades básicas. Esto significa que la red debe funcionar también en

forma análoga a como lo hace el sistema neñioso. En esta línea de pensa-

miento se han dado pasos trascendentales que se han materialüado en mic¡o-

chips, algunas aplicaciones inspiradas en las estruc[uras de sistemas biológicoique realizan funcíones de visión o auditivas como la retina artiffcial y la suv

titución de la función parcial de la cóclea con circuitos integrados.Las redes neuronales a¡tiffciales inspiradas en el funcíonamiento del siste-

ma nervioso de seres vivos han permitido a las computadoras modernasemprender bien deffnidas mediante algoritmos de redes neuronales, como aux-iliares auditivos y transductores de visión de amplio espectro Las compurado'ras digitales de arquitectura t¡adicional abordan ese tipo de tarea con mayores

dificultades que las de arquitectu¡as de ¡edes celulares neuronales (CNN) que

pueden ser diseñadas con arreglos de bloques en VHDL. Esta diferencia ha rne

tivado a las comunidades ciendficas a estudiar sistemas neuronales biológicos

en un esfuerzo por diseñar sGtemas computacionales con capacidades semejan'

tes a las del cerebro. Así, la tecnologla de ci¡cuitos integados modemos está

ofreciendo su potencialidad para consrruir redes paralelas masivas con base en

elemenros sinples de procesamiento. De esta manera, la disciplina formal del

estudio de ¡edes neuronales, la neurocomputación, sienta las bases necesariaspara programar y coordinar el comportamiento de dichos elementos de proce-

samíenlo.Los modelos de redes neuronales están ofreciendo nuevos enfoques

para resolver problemas, mismos que pueden simula¡ en máquinas de pro'

pósito especílico, aceleradores de hardware con a¡quitectura neuronal in-

cluso en computadoras convencionales. A fin de alcanzar velocidades dep¡ocesamiento máximo pueden utilizarse arreglos con base en tecnologíade procesamiento óptico o en VLSI de silicio. El aspecto fundamental reside

en utiliza¡ el modelo neuronal de procesamiento palalelo en tiempo real

con una enorme cantidad de procesadores sencillos

Page 280: Manual VHDL

Redes neuronalcs ar¡iiclales J' VHDL 275

9.1 ¿Qué es una red neuronal artificial?

Las redes neuronafes artiffciales son sistemas basados en una representaciónsimplilicada de estructura y funcionamienro del sistema nervioso, ya sea simula-do en software o cor¡truido en hardware. Se deben entrenar mediante ejemplosconocidos hasta que son capaces de asociar patroncs de entrada corr rc;pucsrasdefinidas sin necesidad de una programación explícita para un patrón en parn-cula[ Esra ca¡actetística permite a las redes iexrlver problemas nuevos clonrleincluso se c¡ean nuevas categorías de patrones para los crnles no es posible di-señar algoritmos de solución, con L) cual pueden en6entar con éxito casos enque no es posible de6ni¡ una relación cntre las causas y los efecros.

Las redes neu¡onales son modelos de cómpub paralelo que se conocenen ingenierla con el nombrc de ¡edes neuronales arrificiales. Oliecen una al-ternativa de procedimientos a problemas cuya solución por técnicas tradicio-nales rcsulta de difícil apiicaciín en la mavoría de los casos.

9.1.1 Funcionamiento de la red

El principio de funcionamiento dc las ¡edes neuronales artificiales es, en tér-minos generales, el de un convcrtido¡ vectorial. La info¡mación codificada enfó¡m¡ de vector de entrada controla la red y después de cie¡ra cantidad de in-tentos de compa¡ación entie patrones ésta p¡oduce un vectx de salida, quees Ia mejo¡ solución que encuentra en la conversión del vector de enrrada.Así, las distintas respuesras de la red dependen dc su arquitectura, de sus pro-piedades de conectividad y de las reglas algorítmicas explícitas en el paso deinfo¡mación de una capa de neuronas a las síguientes. El mejoramiento de lasrespucstas generaLlas por la red depende del entrenamiento de ésta medianteel cual cambia ----€n función de un algoiitmo de aprcndiz¡je o rerroalimenta-ción, también depende de la forma en r¡ue pasa la info¡mación encre las neu-¡onas de ia ¡ed y entre las capas de éstas.

De este modo la red realiza algunas funciones elementales similares a lasque ¡eali"a el cerebro en tiempos ¡azonables aunque no en tiempo ¡eal. Sinembargo, la implementación aún es similar a la de la inteligencia artificialclásica, pues fodas estas ¡edes se inslalan cn computado¡as secuenciaies conalgoritmos que se ejecutan paso a paso y no de manera simultánea como ocu-¡ri¡ía en una arquilectura cn pa¡alelo donde cáda ncu¡ona de la ¡ed ¡esuelveindependientemente la ftmción que lrene asignada.

Símílitudes entre una red. netm>nal artificíal y ma netrana biológíca

Para comprender mejor qué son las redes neu¡onales a¡tificiales, es necesariohace¡ una b¡cve ¡efe¡encia de la relación y similirudes que tienen éstas conlas neuronas bíológicas.

Page 281: Manual VHDL

276 \LlDl . l l , , I r ' r n¡ r ¡ ,L I

El iuncic¡namicnto de l¡s ¡edes neLrronales se basa en el del sistema ne¡-

vioo. En generel, las criaturas vivientes ticncn recepto¡es quc urilizan para

ver, olcr, oír y sentirCon basc en el .lesar¡ollo de las rcdes neurc¡nalcs, sc han construído cir-

cuir()s electrónicos qLre pueclen aprendcr de rnanera simila¡ a como lo hircen

los scres vivos. El fun,.1.rmcnto del aprencli:ajc cstá en el ftrncío¡ramicDto Lle

la celd.r ncn'iosa básica cle la rreurona bioirigica. Esros pcqueños bloques o cs-

tructu¡as rle tc¡dos los sistemas vivientes, fanto del cerebro colno del sisteme

ncrvio*r Je casí cualquicr ser vivo, es posibLc modelarlos median¡e un filtro

transvcrsal cuyos pesos varían.r se:rdaptan cLrando han alc.rn:.r,.1o cl apren-

dizaje descado. A esta est¡rLctu¡a sc le conue tambión corno filtro ¡¡ansver-

sal arlaptable.En la figura 9.1 rencmos el nx)Jelo de dos neurones bíológicas La neu-

¡ona del sistcma Dervloso está compuesta po¡ ulr cucrpo celuldr y sus prolon-

gaciones (dendritas y axón). Esto es, una neurolrit dene muchas ent¡adas y

una sali:1a. Lasllend¡ites cn la neLrrona cquivalen a los reccptores de infór-

mación proveniente Je ot¡a ncurona. Dích¡ informacitin llega al cuerpo

celular y dc ahí se envía por mcdio del axirn hacia otras neu¡onas Esfc pro-

ceso de comLrnicacií¡n entre neuronas sc llana sinapsis.

FiBü¡a 9.1 Mod.lo dc un¡ neu.o¡a biológica.

La entrada de una red neuronal biok'rgica pucde estar comptresta por unconjunto de scnsores que desempcñan la función de receptores de datos Llelpatrírn, Lx cuales proporcit¡nan los estímulcx provenientcs del extedor al rn-

rerior de la re.l; díchos cstímulos estiin reprcsentaclos por impulsos eléctrícosque se encargan de transnitt Ie inform¿ción hacia el sistena nervioso cen-

rral, ¡rovocando efecros de respuesra humana que sc puede expres¡r cn un¡gran varieda.l de acciones. Al igual que en la neurLüai en los circuitos elec-üónicos cxiste un estado bajo o al&) (0 o l), las ent¡adas a los circuriLrs sc

Page 282: Manual VHDL

Redes ncunnr.ler artidci¡le5 y VIIDL 277

acumulan y luego se procesan por medi() de Lrn¡ función de acti\ ccrun qucdetermina la respuesta ,.1e la neurona. Para la t'unci(m de acrivación suere un-lizarsc una funcirin matemática qüe va¡ía en forma conrinua con un perfilsigmoidal. La salida de la neurona o rango dinámico cambia entrc los lími-tes .le 0 y L Esto signiiica que la neu¡on¡ transnitirá i¡rfo¡mación cuando clnivel 1 cs sobrepasado pero no para valorcs inferi()rcs, pues es un slster¡a detodo o nacla en su respuesta.

Tirnro en Ia neu¡ona bioltigica v en los ci¡cuiros elcctrtinicos la comu-nicaci(')n sc csrahlece ¡ncdiante un pulso eléctrico. En la cé1u1a nerri,r;r po.dernos me,:li¡ el voltaje de la ¡nenbrrna, qlte es cercano a 0.1 volt. En losalamb¡es conducto¡es también se puede medir e1 voltaje cuanclo circula 1acorríente el¡cr¡ica. La transnisión Llel impulso nervioso se propaga enla célula a una veltr idad que osci la entre Z7 y 112 lnctros por scgun. lo. Asítambién l¡s corricntes en los alambrcs conducfores se pueden tropagar(por efectos cle la accirin dc los campos) a una velociclad ce¡cana a la de laluz (300 000 km/seg).

9.1.2 Aplicaciones de redes neu¡onales artiffciales

Las rplicaciones ,:1e las re,.les neu¡onales y de la computación son muyabundantcs. De en¡¡e ellos se desracar en el campo de proccsan entLr deseñalcs o reconocimiento dc patroncs, la extracción de características, lainspecci(in indust¡ial, el pronóstico de negocios, la clasificación de crédito,la selección de segurida,.1, el cliagnóstico médico, el procesamicnro rle voz,la comprcnsión rlel lctrguaje natural, el control de robots y la adapración ,.1eProcesos de confrol .

Elementos de una red neuronal

Las rcdes neuronales a¡tificiales constan de clementos de procesamientoy conexi(in dc pesos. La cantidad dc éstos dcpencle de la implenrcntación ydiseño de la red. Otros elementos que intcrvienen dcpendiendo de la apli-cación scm las funciones preesrablecidas de Lrs vecto¡es de cntrada y loslectrxcs de sal ida.

Elementos de entrada y salida

Acerca de los componentes de una ¡ed neuronal a¡tificial es convcnientedar a conocer la re¡minología que se utilizará en la dcscripción de cada

En la figura 9.2 sc observa la estructura de una ¡ed neuronal artificiai.Consta de nírcleo o nodo, enrratlas y salidas. h entrada es una señal dc voke-je aplicaLla a un nodo, la cual puede ser una salida. Esta última es la respuesta

Page 283: Manual VHDL

278 VHDL: El arte de proeramd ssiemas digiful's

de la neu¡ona artificial. El núcleo o nodo suma las seÁales de entrada, las plo-

cesa y da una respuesta.

tig!6 9.2 Red nruroñ¡l Jtifc,¿l

En la ffgura 9.3 tenemos la estructula básica de una neurona a¡tificial

Las entradas se denotan con las variables rt y i(2. En algunas ocasiones se

puede urilizar la notación vectorial x, que representa un vector con valo¡es

(xr xz).

Figuo 9.J L. , ru, ur" b ^t ,

d, un, reur.n¿ ¿¡r t i - '

La salida se denota con y Si bien en este caso sírlo se tiene una salida, en

una red neuronal se pueden tener diferentes salidas. Si esto ocurre, se deno-

taconunvecto¡J = () i +12 + )Los pesos conectadcr enre los niveles de la red neuronal sirvenpara mo-

dificar los valores que circulan en las conexiones y son aLmacenados en un

nrreglo mctricral denumlndd,' matrü de ponderaciones o pesos por lo ge

neral representada por la lerra w. En la figura 9.3, la mat¡iz de pesos es un

vector (un caso particular de una matriz) w con valores (w1 w2)

Page 284: Manual VHDL

Redes neunnalcs amr,cr¿le, ! VHDL 279

'.9.2 Aptenüzaje en las neuronas a¡tiñciales

9,2.1 Neurona hebbiana

r=o+¿\. \x,=b+w.x

l+ 1i s i I>0- [ -1; s i I<o

wre!¡ = w¡or lno +yx

Ft¡B 9.4 Ecuaciones carac¡ertsticas y modelo de una neurona Hebbiana

En 1949, Donald Hebb mencionó la primera regla de aprendizaje para unared neuronal arriffcial, la cual establece que cuando una neu¡ona estimula aotra, la conexión entte ellas se refue¡za.

i '

En la ffgura 9.4 se tienen las ecuaciones generales y el modelo de unaneu¡ona hebbiana. El Í¡ncionamiento de ésta es muy sencillo. La neuronaartificial calcula la entrada ponderada I.

I = b +iw,x, =b+w.x

Donde w es la matriz de pesos, x es el vector de entrada y b es una cons-tante iniciali?ada en l.

Si el valor de la ent¡ada ponderada es mayor o igual a cero, la salida dela neurona es igual a + 1; si es menor a ce¡o, la salida es -1.

f+ l ; s i I>oV-i'

l -1; s i I<0

'Ibda red neu¡onal se debe entrenarpara que responda como se desee. Enotras palabras, es necesario calcular el vecto¡ de ponderaciones (pesos) wque le permita compo¡ta¡se de acuerdo con la información de ent¡ada.

El proceso de entrenamiento para una neu¡ona hebbiana es muy simple.Basta cambiar el vector de ponderaciones w, por cada patrón de entrena-miento, de acuerdo con la siguiente regla hebbiana:

! f f ras = wrbof +yx

Page 285: Manual VHDL

280 VHDL: El ane de prcsúMr sistend dicitalcs

hiciaLiza¡ el veclo¡ de ponderaciones w en cero.

Para caala palrón de e,nlrenaniento:

{Iquatar el wecto¡ de enlraala r. con el patrón de enlradiento

Iqualar la saLida y con la salida deseada;

Ajusta¡ el vecto¡ de Pondetacioñrevo e - antei.ror rr + ¡ Y;

Nue/o b dLFr. io ' b + Y,

)

Entrenamiento de u¡a neu¡ona hebbiana

Ngoritrno de entreftanierta Wd la n4notú l&bhiüú

Solución

Para el prímer vector de entrenamiento (1, l), tenemos:

¡= (1, 1) ,x1 =1, xz=1, Y= 1,w0= (0,0) 'b0= I

calculando el siguiente vector de ponderaciones de acuerdo coo la ecua-

ción 9.2:

1¡ '1= w¡ + xy: (1, 1)

bl=bo+y=2

ffifufuf* Entrenar una neurona hebbiana para teconocer la compuerta AND'

Entnda Salida( xl xz\

l t I

- l I -1-l -1 -l

Page 286: Manual VHDL

Redes neurcnales arilicialcs y VHDL 281

Para el segundo patrón de entrenamiento (1, -l ):

x= (1,-1),xt = 1, x2=-1, y=-1,wr = (1, 1)

.e c¡l .ul¡.1 . iguienre recror de p,,rnJeracione.

w2= wl+xy: (0,2)

b2= b¡*y=1

Para el tercer patrón de entrenamiento 01, 1):

x = (-1, 1) , xr = -1, xz: 1, y = -1, w2 : (0,2)

se c¿lcul¡ el . iguiente vector de pondera.ione.

wt = w2 +xy: (1, 1)

b3=b2*y:0

Para el último patrón de entrenamiento (-1, -1):

x = (-1, - l ) , x1 = -1, x2 : -1, y: -1, wj : (1, 1)

re (alcula el . iguicnle vecrur de punJe¡aciL'nes

w4 = wl + xy = (2,1)

b4=br+y=-1

El lisrado 9.1 es el programa en VHDL para el entrenamiento de unaneurona hebbiana.

1 use std. ter t io. á11;

2

I EtalfÍ hebb IS Ei¡D;

4

5 ¡Rc¡rrTacToRE neurona ctF helü rs

6 F¡IiE archivo ent¡ada: TEs! oPEN RBAD_!@DE rS patron.rn ;

7 FrLE archivo salid¡: tEa! oPBi¡ 9{RIlIrE ¡@DE rs pesós.óut )

8 BEGIN

9 PROCESS

Continúa

Page 287: Manual VHDL

282 VHDL: El altc dc prcsi,mar sistems disit¿les

10 v¡¡lAB¡rE blf jn, buf,out: LIiIE;

lL VAR¡¡Bir,E x1,x2,y: iDtege. ranse I to l;

12 I?RIABLE w1,w2: integer : = J;

:Ll V¡¡IABLE b: intéger : = 1;

14 BEGIN

15 r{ll¡LÉ not endf:Le(archivo ent¡ada) r¡OP

:16 readiine (¿r.hivó_enLrada, buf inl;

17 read(buf in, x l ) ;

18 re¿dibuf i ¡ , x2) ;

19 readlbuf in, y) ;

20 wl := wt + x1*y;

21 q2.= ) t2 + x2* j t i

22 b:= bry;

2] Ei¡D I¡OP;

2¿ úire(buf_oui , w:L ) ;

25 Ei :e (buf o! t , ) ;

26 úire(buf out, w2);

2l Í r i re (bul_oüL, ) ;

28 Mite(buf out, b) ;

29 Mitel inela¡chiwosal ida,buf,out) ;

:O 9BIT;

]:L END PROCESS;

Listádo 9.1 Pro{am¡ en VHDL ¡ará enirenar u¡a neurona hebbiana.

En la llnea 1 se carga la librería texrro. Como es un programa de simula,ción, la entidad no contiene puertos de enúada o salida. En la línea 6 se de-clara el a¡chivo del cual se leen los pesos y en la 7 el archivo donde se escribirán los pesos ffnales.

En las líneas 9 a 31 se declara el proceso que se ejecutará durante la simu,lación. Es importante hacer notar clue el proceso no tiene lista sensitiva, po¡ loque <. nerc.ano Je.lar¿r l , i rn.tru(cron t,rdr! p¡rJ ! lur rermrne.

En las líneas 10 a 13 se declaran las variables que se van a usar en el pro-grama, como pesos (u,1, tr7), I y b.

En la línea 15 se tiene un ciclo para lee¡ del archivo de entrada los patro-nes de enüenamiento ¡1, x2 y la salida esperada y; al mismo tiempo se calcu-lan los nuevos valores de los pesos y de la corutante b.

Finalmente de la llnea 2zl a 29 se mandan escribir los pesos al archivo desalida mediante las instrucciones ü,ri¡e y {rri¡el¡ne.

Page 288: Manual VHDL

R€des ¡euronal€s aniffciáles y VHDL 283

ffitffi Se desea que la neurona hebbiana reconozca y r€alice la ope¡ación lógicaAND.

Soft¡ción

El archivo de ent¡ada p¿rron,in contiene:

1-1 - l111

El archivo de pesos pesos.out contend¡á:

z z- l

Uso de su ¡lewom hcl¡bia¡t

Algolitrno Wa unÁ fleurma hebbiana

Iniciatizar w

Inicializar b

Leer 1a enrrada x

calcular La a¡lrada ponderada I

s i l>-0, er ] r ronces

salida es isual a +1

Si I<0, entonces

saliala es ignral a -1;

Este prog¡ama inicializa los pesos w y v con los valore! encontrados en elalgoritmo anterio¡. Se calcula la entrada ponderada con la ecuación 9.1 y secalcula el valo¡ de la salida y.

ffi Demuest¡e Ia ted hebbiana para el ejemplo 9.1.

Solución

Del ejemplo 9.1 se obtuvo w - (2,2")y b : -1. Para el primer patrón

(1, l) tenemos:

x: (1, l ) ,xr=1,x2=lpor lo tanto,I = x1w1 *x2w2*b=( l ) (2)+(1)(2).1 =3,comol > oentoncesy = 1.

Page 289: Manual VHDL

2U VHDL, El srte de p!o€r@ü 5i5tem.r disitale!

Para el p¡i¡ne¡ patrón (1, 1) tencmos:x = (1, - l ) , x1 =1, xz=- lpo¡ lo ta¡to,I =x1w1 *x2w2*b:0)0) + FlX2) - l = -Lccrm I < 0entore¡y = -1.

Para el primer patrón (1, l) ¡enems:x: (-1, 1), ¡r = -1, xz: Ipor lo tanto,I = x1w1 * x2w2 + b = (-l)(2) + (l)(2) -l = -1, como I < 0 enton-

Para el primer patrón (1, l) tenemos:x -

( -1. - l ) , xt = -1, x2 = - lpor lo tanto,

. l=x1w1 * x2w2 + b = (-1)(2) + (-1)(2)-1 = -5, como I < 0 enron-

Con lo que las entradas se clasÍican co¡rectameote.El listado 9,2 es el programa en VHDL pa¡a utilüar una ¡eurona hebbia,

na con wl = 7,w2 = Iy lp¡v = .! ,

I Ef,IÍll hebb IS2 PORI (x1, x2: ¡N ¡lfllCIA. Rl¡@ -1 m 1;

3 y : @ll t¡rlrE@. &i¡XG -1 1A 1) ;4 E!¡D;

5

6 ¡AC¡¡¡IEC¡ltRl neurom G hebb üt7 BECTTI

8 lROClaa (x1, x2)q Cligl ¡t! u , v¿: ¡¡ü¡E@ : . ;¡ 0 @tltqr¡fr b. I¡tll(R : = -1;11 Vrr¡lBr¡! f. DlllqR;

12 BIG¡tf13 I := b + x1*!r1 + ) .2r !¿¡

14 ¡! I> = 0 ll!¡15 y<=1,'16 E¡!

17 y< . -1,t8 E@ ;19 llD P¡OC!8A;

20 llD !|ula!,

Ltttado 9.2 Proc¡a@ pa¡a uM neurona hebtiana enrrenada pan reoneer [email protected] lósica AND

Page 290: Manual VHDL

Rcdes ner¡oúles adffciales y VHDL 285

De las líneas I a la 4 se decla¡a la enridad del programa; aquí sc mani-fiestan como señales de entrada las variables xl y 12, que se dan como en-teros entre -1 y 1. La seial de salida es y, que también es un enrero enrre-Iv l .

Dentro de la arquitectura, encontramos el proceso que se activa con lasseñales de entrada x1 y x2. En la línea t hallamos la declaración e inicializa-ción de los pesos. En la línea l0 se tiene la decla¡ación e inicialización de laconstante ó. El cálculo de la entrada ponderada I se realiza en la línea 13.La decisión de activar la neu¡ona se da a t¡avés de la condicional en las¡1nea5 l ¡ ta l / .

9.2.2 Perceptrón

Var¡en S. McCulloch y Walter Pitts desarrollaron la red neuronal percep-t¡ón en 1943 proponiendo las ecuaciones generales y el diagrama de lafigura 9.5.

, = {tji

r=É-, , , =w."

l+ 1; s i I>d' [ - 1; s i I<d

sl la fespuesla es cor¡ecta

sl ra respuesta es tncorrecta x2

w",""" =w,^," .""+lyr

ffiFig¡m 9.5 E uacio¡es generoles y modelo del percepnón.

El funcionamiento del perceptrón es muy simple. La neurona suma lasseñales del vector de entrada x, multiplicadas por el vector de ponderacio-nes (pesos) w, lo que da la entrada ponderada I.

Page 291: Manual VHDL

286 VHDL: El ane de programa¡ sstemas digitaL€s

La ecuación compara la señal con un valo¡ de ümbral 0 Si es mayor, lasalida es + 1. De Io contra¡io, es -1.

Pa¡a entrenar la red, se escogen valo¡es de x como entrada, llamadospatrones de entnenamiento. Por cada patrón de entlenamiento se calculasi la salida del perceptrón ) es correcta o incorrecta, con lo que se obtiene B.

- f+1; si larespuesia escorrectab=<' 11; s i la respuesla esrnconccta

Po¡ cada iteración el vector de ponde¡aciones w cambiará de acuetdo

con la ley de Rosenblatt.

w ",e,a

= w.",..", +pyx

Entrenamiento del perceptrón

Algontmo de entterwmie o del pelceptron

[+1; s i I >dl = l - t ;

s i I<a

I cal.ular 1as entradas r;

calcular La satida de1 perceptrón y;

si es correcta¡ entonces

i si 1a respuesra es +1, entoncespor on o- s

sr 1a ¡espuesla es L¡ enlofces

nuevo w = anterior w el patrón de dtrad¡ actúL;

)

{ si 1a respuesLa es +1, entonces

nuevo w = dlerio¡ w e] I¡t¡ón de entrada actEl;

si ]a respuesta es 1, entonces

nu*o w = é¡terior w + e1 patrón de ent¡ada acLúl;

Page 292: Manual VHDL

Redes neuionales ¿rtilici¿l.s r VHDL 247

Eiemplo 9.4 Entrene un perceptrón para reconocer la compue¡ta AND.

Entrada( xr xz)

I tl -1

-1 1- l - t

Sali¡la

I- l- l-1

Para el primer vector de entrenamiento (1, 1) tenemos:x: (1, l ) ,xr = 1, xz = 1, wo= (0,0),d= 1I = wlwl + wzxz = (0)(1) + (0)(1) :0, como I ( oentoncesy: -1.La respuesta esperada es incorrecta; por lo tanto, B = -1, entoncesw¡ = w¡ + Byx = (0,0) + (-1)(- l ) (1, 1) : (1, 1)

Para el segundo vector de entrenamiento (1, -l) tenemos:x = (1, -1) , x l = l , x: : -1, wl = (1, l ) , 0: 1I = w¡x1 * w2x2: ( l ) (1) + (1)(- l ) :0, como I < 9entoncesy: -1.l-a respuesta es conecta, por lo que p = 1, entoncesw2 = wl + Év * : (1, 1) + ( l ) ( -1)(1, -1) = (0, 2)

Para el tercer vector de entrenamiento (1, -1) tenemos:x = (-1, 1) , x l : -1, x2 : I , wr = (0,2), A = II = wrxl * w2x2: (0)(- l) + (2)(1) = 2, como I > 0entoncesy = +1.l¿ respuesta es inc¡mecta (se espera obtener -l); ¡nr lo tanto, p = .1, .rratr.ow2: wr+ Byx = (0,2) + (-1)(1)(-1, 1) = (1, 1)

Para el último vector de entrenamiento (1, -1) renemos:x : ( -1, - l ) , x l = -1, x? = -1, wr = (1, l ) , I = 1I=w1x1 *w2x2= (1)(-1) + (1)(- l ) =-2,comol< áentoncesy=-1.La respuesta esperada es correcta, así que p : + 1, entoncesw2 = wr + pyx = (1, 1) + ( l ) ( - l ) ( -1,-1) : (2,2)

El listado 9.3 es un programa en VHDL para entrenar un perceptrón condos ent¡adas (x1, x2) y una salida (y). El programa lee los patrones de entre-namiento de un archivo pd¡ron.in y escribe las ponderaciones (pesos) ffnalesen un archivo pesos,o¿¿.

Page 293: Manual VHDL

288 VHDL, El arte de prcltamar scremas dieiralcs

1 nsB std. texLio. a l l ;

2:l Er¡rrTf perceptrón rs END;

4

5 ARCBITEeTURB neu¡ona OF percept¡on IS

6 FILE ar.hivo entrada: TE¡cr OPEN READ,TÁODE IS patron.rn ;

7 F¡LE archivo-salida: Ttl¡! OPEN !{RITE-¡{ODE Is pesos.out ;

I] BEGIN

9 PROCESS

10 VARIIBI;E buf-iú, bu: our: LINE;

11 vaRlABtE zl,x2,y: inEeqer range 1 to L;

12 VARIABI¡E w1,w2: lntéger : = 0;

:L: V¡RIIaBLE I: integer ;

pesoe in ic ia les

:14 VARIABT,E respuesta: l¡l€ger rdge L to :l;

15 CINS¡¡ñI theta : iDleger : = :L;

16 BEGII{

1? I'¡HILE not e.dfile{archivo eDt¡ada) I¡OP

18 readline (arcbivo,entrada, buf,ln) ;

19 ¡eao (buf_in, x1) ;2a read(buf- i r , x2);

2l read(buf- i r , Y);22 r : = w1*x1+v2*a2;

23 IF I> = lrheta !¡I{EN calola La ¡espuesta de1 pe¡ceptrón

24 ¡espuesta: = 1;

25 E["SE

26 respuesta: = 1;

2' END IF;

2829 rF y = respues:a TIIEN si 1a respuesLa es correcta

l0l112

rF respuesta = 1 ltlEl¡

dl : = w1+x1;v¡2: = N2+x2 ¡

]7 ELSE --si La respuesta es rncot¡ecta

3] ELSE

34t5l6

38:19.10

41 EÍ,SE

424l

01: = w1 x1;

'ñ2: - w2-/ ,2;END IF;

IF respuesta = 1 TIIEI{

rL: = wI z1;q2. = \ ¡2 .2¡

wl: = w1+x1;

w2t = 'n2 x2;

END IF;

END IF;

Continúa

Page 294: Manual VHDL

Redcs neurcnale. ¿r,l(Dles v VHDL 289

Listado 9.3 Proerátu e¡ VHDL pament¡ena! elpercepr¡ón.

Ahon se analizará el algoritmo en seudocógico que se presentó. En laslíneas 22 a 2? se calcula la respuesta del perceptrón dados los diferentes pa-trones de ent¡ada.

La modificación de los pesos, si la respuesra es correcra, se encuentra enel fragmento:

Si 1a ¡espues:a es correcLa, entónces

{ si ]a respuesta es +1, entoncesnuevo s = ar€rior w + e] parfón de e¡r¡dda act@l;

s1 ]a respuesta es -1, enroncesnuevo w : anre:1or w eL paL¡ón de enrrada acr'rat;

el cual se encuent¡a en las llneas 29 a 16.Si la respuesta es incorrecta se halla en el código:

{ si 1a respuesra es +1, entoncesnuevo s = ate¡io¡ r e] parrón de enrradd dctual;

sr 1a respuesta es 1, entoncesnuero e = drerior w + et patrón de e¡t¡ada acrual;

l

Y esrá codiffcada en las llneas 38 a 45.

biempio 9,5 Se desea que el perceprrón reconozca y realice la operación lógica AND.El archivo de entrada pat¡on.in contiene:

46 n¡D lcop;4? l f i le(buf_out, w1); se esc¡ ibe lós pésós f inales48 l r i :e(buf our, ) ; en - .1 archivo de sal ida49 MiLe (buf out, w2);50 wri re l ine (ar.hivo_sa1ida, buf our l ;51 IAIT;52 El¡D Drcceas;

- l - l - l- t l - l

l -1 -1111

Page 295: Manual VHDL

2m VHDL: El art€ d€ programa¡ sctem dieitales

El archivo de pesos pesor.orit contemlrá:

2.2

Solución

Uso del perceprón

El algoritmo para un perceptrón es muy sencillo. A continuación se muestra

en seudocódigo.

Algoriano Pdrd 1ñ Perceqtrótr

in i . ia l izar theLa;

lee¡ La entrada r;

calcula¡ 1a entrada ponderada I;

s i I> = 0, dtonces

salida es iquaL a +1;

si I<0, entonces

salida es igual a 1;

Compruebe que el entrenamiento del ejemplo 9.4 sea co¡recto.

Solución

De los ejemplos 9.4 y 9.5 se obtuvo w : (2,Dv e: IPara el primer patrón (1, 1) renemos:x: (1, 1) ,x l =1, xz= Ipor lo tanto,I =xrwl * x2w2 = (1)(2) + ( l)(2) = 4, como I > 0, entonces y :

Para el segundo patrón (1, -l) tenemos:x = (1, - l ) , xr = l , xz: -1por lo tanto,I = xlwl + x2w, = (1)(Z) + (-1)(2) = 0,comol < á, entoncesy:

Para ei tercer parón (-1, 1) tenemos:x= (-1, 1) , x i = I , xt=- lpor lo tanto,I = x1w1 * xzw:= Gl)(2) + (1)(2) :0,como[ < 0, entonces y =

Para elcuarto patrón (- 1. .1) Lenemos:x: ( -1, - l ) , x l : 1, xz = - lpol lo tanto,I = x lwl + x2w2: ( l ) (2) + (-1)(2) =,4,comol<oentoncesy =

Con lo que las diferentes ent¡adas se clasiffcan cor¡ectamente.

t .

.1.

-1.

-1.

Page 296: Manual VHDL

Red6 ¡eur@les artificiales y yHDL 291

El programa que clasiñca los diferentes patrones de una compuerta ANDmediante w1 = 2, w2 = 2 y theta = I se encuenfia en el listado 9.4.

1 A+flfr perceptron 182 P@T ( x1,x2: IrI ¡tlE@, R:rE -1 rO 1;3 y, Ott¡ IT{IIEGER Rr¡{@ -1 '¡O 1);4 END percept¡on;

56 r¡CEfiEqgnl neu¡ona OF peicepLron rS7 941¡i¡

I IROCISA (x1,x2)

9 CO¡9¡AFI w1: I¡tIEG¡k : = 2;10 Cq¡s¡AF¡ w2: Iltlll@ : = 2;11 Cla¡tt!¡tt¡ thera : IIi¡EqER : = 1;12 \¡A¡lIñ¡if¡E I: ¡I[II(¡BR;13 EEG¡¡|14 I: = xI*t¡1+x2+w2 i15 f¡ I> = theta l'EEr¡1,5 y<

- I;1? E¡G18 y< = -1;19 EID fF;20 EID PREESS;21 EfD !€rE@.;

tnbdo 9.4 P¡osamá én VHDL para el pctceprór eotrenado paa monocer unacompuena lógicá AND.

| 9.3 Aprendnaje por error mlnimo (la Adaline)

Es un sistema que utiliza la técnica del mfnimo e¡¡ot cuadrático, desanolladoen 1960 por Bemard Widrow y Téd Hof[ de la universidad de Sta¡ford. OÉe-ce la primera neurona mn un enüenamiento supe¡visado; es deci4 toma encuenta el posible erro¡ cuadrático mínimo obtenido al calcula¡ la salida de laneurona. El nombre proyiene de olaltiue livar eiement (elemento lineal adap.tativo) y en la frgura 9.6 se muestra su modelo y ecuaciones.

Page 297: Manual VHDL

TN \4IDL: El ane de prosÉma¡ silteh* digitales

¡ = i*,',[+t ; s i l>o

' L - l ; s i I<0

BExw = w

-."-+ !i-:- = w-** + awlxl-

E = <Saüda deseada> - <tuAd,- aú&I>;es el e¡ror

P; es la constant€ de aprendbaje(0.9.1)

Fisüia 9.6 Modelo y ecuacir¡és cdacrelstics de l¡ adaline.

La ¿deline, al igual que el perceptrón, tiene un¿ salida bipolar. É5ta ge-

nera en su salida * 1, si la entrada ponderada I es mayor que cero, y -L si la

ent¡ada ponderada es menor o rgual a cero. La salida se compara con la sa'

lida deseada calculando el e¡ror de la adaline E.

E = <salídt deseada> - <sahda acual>

fu evidente que el enor sólo puede tomar los valores *2, -2 o cero. Una

vez calculado el erroq se puede utilizar para ajusta¡ las ponderaciones w, uti'

lizando la regla delta.

Donde p es la constante de aprendüaie y puede tomar un valor entre

ce¡o y l. E es el e¡ror ya calculado, x es el vector de entrada ( x1, x2 ) y w es

el vector de ponderaciones ( w1, w2 ).

FEx

l*l'

Acluálizac¡ón

Page 298: Manual VHDL

Redes neuronáles a¡¡iliciales y VHDL 293

Ent¡enamiento de una adaline

El proceso de entrenamiento consiste en calcular el error para cada patrónde entrada. Si el e¡ror es diferente a cero, se modifrca el vector de pondera_ciones, pe¡o después se debe regresar a los patrones anteriores para ¡evisarque se siga obteniendo la salida deseada.

Algoñtmo de entratamiento para Ia adaliv

Para cada patrón de enrrenarienró{ calcular 1a entrada r;

.aLcula¡ la salida de ]a adaline;calcular e1 error E;si E es diferenré de 0, entonces

{ para todos 1os lÉrro.es dteriores al parrón acrual h¿cer{ calcular La enrrada I;

calcula¡ 1a sal ida y;calcula¡ el e¡ror E;mentias E es diferente de 0 hacer{ ca1.u1a¡ L = x2

para cada élemenLo

I c&¡l¡ia¡ dk¡

w¡=F¡+dq

)

L;

calcula¡ la ent¡ada

s1 I > 0 útonces

salida de La

si I<=0enronces

saLida de 1a

calcular el er¡o¡ !;

I con e1 nuevo w;

Uso de una adaline

Algoifmo para fita d¿nlbw

inicializar el vecror de pesos !leer 1a eritrada x;calcular la ent¡ada ponderada I;s i I>=0,entonces

sal ida es iqxal a +1;si I<0,en.onces

salida es isual a 1;

Page 299: Manual VHDL

294 VHDL: El ste de pbg¡amar sisteMs disir,lcs

9.4 Redes asociativas

En las redes asociativas los patrones se almacenan asociándolos con otros pa,t¡ones. Existen varias clasiÍicaciones para las redes asociarivas; por ejemplo,pueden ser autoasociativas o heteroasociativas. Una red autoasociativaalmacena los patrones asociándolos con ellos mismos. Una red heteroasocia,tiva se utiliza para asociarlos con otros patrones,

Una red asociativa tiene la est¡uctura de la ffeu¡a 9.7.

r -S-. , , X1 Y1

x2

Xn

Y2,, = {_1,si I>0

si I=0

si I<0Ym

Fieüm 9.7 E uaciones caracteísricas y nodelo de la ¡ed as@iariva.

El funcionamiento de la red es el siguiente: se calculan las ent¡adas pon-de¡adas a cada una de las neuronas,

I,

l1; s i I>oI

) =10; s i t=0I

[ -1; s i I<0

Si las salidas son de tipo binario, se puede utilizar una función como lasiguiente:

. , - f l ; s i I>0'- lo; s i lso

s

La función de transferencia para este tipo de redes está dada po¡ la si-guienre ecuación si las salidas son de tipo bipolar:

Page 300: Manual VHDL

Redes neuronales drtiliciales y VHDL 29s

Ley de Hebb para asociación de patrones

La ley de Hebb es la regla más simple y el método más usado para determi-nar los pesos de una red asociativa, Se puede usar con pat¡ones ¡epresenta-dos por vecto¡es bina¡ios (0, 1) o bipoles (-1, l). En este caso se denotan lospares de vectores de ent¡enamiento como e: s. Donde e es el vector de en-trada y s es el vector de salida esperado para el vector de entrada.

Entrenamiento de una red heteroasociativa mediante la ley de Hebb

El algoritmo para entrenar una ¡ed heteroasociativa es muy sencillo: para ca-da uno de los patrones de entrenamiento se utiliza la ley de Hebb ya mencio-nada, Cada pesu

"e almdcenr en unr m¿tnz,

Algoitmo de eí,trenamiento para wra re¿ heteroasociatiua ñediane Ia leJde Hebb

hic ia l izax 1os pesos rü = 0;Para cada patrón de entrenaniento e : sI Hace¡ 1as srradas de activacrón iEral a1 par¡ón de enrrada de

x¡=eiHacer Las salidas de acLivación iqrat al parrón de sarida de en

V=3JAlusLar Los pesos:

wj (nueva) = wt(mterior) + x¡y¡

)

Entrene a una red heteroasociativa mediante la ley de Hebb. Suponga que elvector de enttada e = (e1, e2, e3, e4) y el vecto¡ de salida s = (sl, s2) son:

el eZ el e4 sl sz

1000l0l001010001

10100l01

Solución

La topología de la red heteroasociativa se muest¡a en la ffgura 9.8.

Page 301: Manual VHDL

296 VHDL: El arte dc proera¡¡a¡ scrcmas dieitales

Figúa 9.d R.J here,o.-,,a' vr ¡ ',d rl r<mplo o.7

El resultado de aplicar el algoritmo anterior es el siguiente:

Inicializar los pesos en cero.Para el primer par de vectores de ent¡enamiento e : s, (1 0 0 0): (1 0)xl=1,x2=x:r=x4:0

Yr= 1,Y:=0nueva wu = anter ior w11 +xtyt=0+(1)(1) :1

los demás pesos se mantienen en cero.

Para el segundo par de vectores de entrenamiento e : s, (1 0 I 0):(l 0)x1 = 1,x2 =0,x3:1,x4=0

Y1 : l ,Y2:0nueva wll = anterio¡ wl1 *x1 y1 : I + (L)(1) :2

nueva w:lt = anterior w31 * x3 y1 = 0 + (1)(1) : Ilos demás pesos se mantienen en cerc.

Para ei tercer par de vectores de ent¡enamiento e : s, (0 1 0 l):(0 1)xl=0,x2=l ,x l=0,xa=l

Yr: O,Yz = Inueva w22 = ante¡ior w22 * x2 y7 = 0 + (1)(1) = 1nuevaw4t = anterio¡w42 * x4y2 = 0 + ( l)(1) = Ilos demás pesos se mantienen en ce¡o.

Page 302: Manual VHDL

Redcs nc!¡onales artificiales y VHDL 297

Para el último par de vectlr¡es de entrenamiento e : s, (0 0 0 1):(0 1)xl =0,x2=0,x1 =Q,x. t :1

nueva w42 = anterior w42 + x4 y2 = I + (l)(l) = 2los demás pesos se mantienen en ce¡o.

Rrr lo tanto, la matriz de pesos queda de la siguiente forma:

El listado 9.5 muestra un programa en VHDL pa¡a entrena¡ una red hete-¡oasociativa. El programa lee los patrones de enrrada de ün archivo pdíon.in yescibe la matriz de ponderaciones en el archivo pesos-or¿t.

t i

1 t lsE std. text io.al l ;

: E+TITY heteroasoci¿tiva ¡S END;4

5 ARCIIIECIITRE red OF hete¡óasociativa IA5 FILE archivo_enCrada: !!Eir¡ OPEI¡ READ I'!oDE rs ,patron,in ;? FILE archivo_salida: !AlK¡ OPEN I{RITE_!@DE IS pesos,out ;8 TrPE ponderaciones rs ¡|RRAY (0 10 l, 0 TO 1) oF rñTEGER;9 TYPE CñI¡AdA IS ARMY (O TO ]) OF IÑ:¡EGER;1O TIPE SA1ldA IS ARMY (O TO 1) OF INTEqE]R;1L BIISIN12 PROCESS1.1 1,!RIABI¡E buf_in/ buf our: rJrNE;14 VARIABLE w : ponderaciones : = ((0,0), (0,0), (0,0), (0,0)) ;

15 VARIABLE x : ent.ada;16 I¡ARI,ABLE y : salida;t118 BEGINto ar[r,E or é df é

"! .hi o -r

. .d" r¡op20 readline (archivo enLrada, buf_ir);21 POR i IN O TO .] I¡OP22 tead(buf in,x( i ) ) ;2l Ei¡D taoP;24 ¡ead(buf in,y (0 )) ;

Cot¡núa

Page 303: Manual VHDL

298 VHDL, El arte ¿e p¡oc¡amar sistemás dieitales

25 ¡ead(buf_in,y(1) l ;

26 FOR i rlr 0 m .l I¡oP

2? t@ j D.r 0 fo 1 r¡oP

28 v{ i , i ) : = v l r , j ) +:( i ) rY( i ) ;

29 END IOOP;

]O END I¡OP;

31 EI1¡D ¡¡OP;

l2 ¡oRi lN0!o3r@P

ll FoR i ¡N 0 '¡o :L r¡oP

14 ur i re (buf,out, w( i , l ) ) ;

15 dr i te (buf out, ) ;

36 E¡D I¡OP;

3? mitel ine (archivo sal ida,but out) ;

38 END I¡OP;

]9 ¡{AIT;40 END PROCBSS;

41 Ei¡D red;

LiÁta.lo 9.5 P¡og.ama en VHDL para entrenat una red hetcbasoci¡tila

El listado anterior es un prcgtama interesante, ya que se muestia por prl-

mera vez el uso de aÍeglos en una y dos dimensiones en VHDL.Para declarar un arreglo en VHDL es necesario deffnir un tipo de dato

de tipo aneglo mediante la palabra ¡eservada TYPE.La forma de declarar un a¡reglo en una dimensión es:

TYPE nombre_arreglo IS ARRAY (No 1 TO No 2) OF tipo-dato;

El aneglo es una representación en un lenguaje de alto nivel como

VHDL de un vector. En este caso se declara un vectoi con nombre nom-

bre_arrefo con dímensiones del No. I al No. 2 l-os datos que puede almace-

nar son los declarados eítipo dato.Un arreglo de dos dimensiones se decla¡a de la siguiente forma:

TYPE nombre_aneglo IS ARRAY ().1o.1 TO No 2,No.3 TO No.4) OF tig¡-dato;

En este caso el arreglo tiene dos dimensiones, una de tamaño del No l

al No. 2 y la otra del No. 3 al No. 4 El aneglo en dos dimensiones es una re-presentación de una matriz.

Una vez deffnido el tipo de dato, se debe usa¡ para declarar el arreglo. En

esra declaración se puede utilizar VARIABLE, CONSTANT o SIGNAL

Page 304: Manual VHDL

Redes neuronales a ificiales y VIIDL 299

En las líneas 8,9 y l0 se definen tres tipos de aneglos'

8 TYPE póndera.rónes IS

9 TYPE ENL¡AdA IS ARRAY

10 TYPE salida IS A¡¡ü1Y

A¡¡AY (O TO ], O TO :) OF INIEGER;(O TO ]) O¡ INTEGER;

(O TO :L) OF I¡¡TEGER;

En la línea 8 se define un arreglo para represenrar la matriz de ponde¡a-ciones (pesos) que tendrá las dimensiones de cuatro renglones po¡ dos co-lumnas; además, podrá almacenar enteros

La línea 9 define un arreglo para los patrones de entrada, el cual tiene di-mensiones de cu¿tro localidades. Po¡ último. en la llnea l0 se deffne un vec-tor de dos localidades para ¡ep¡esentar la salida de la ¡ed.

En las líneas 14, 15 y 16 se declaran los arreglos.

14 VaRIABLEw: ponde¡aciones: = ( ( 0 , 0 ) , ( 0 , 0 ) , { 0 , 0 ) , ( 0 , 0 ) ) ;15 VARIIABIiE x: entrada;:16 \A¡IABIE yr salida;

La línea 14 declara una variable u que es del tipo ponderaciones, el cuala su vez está definido como un aneglo de dos dimensiones. Es importante ob-se¡var en la línea 14 que también se esrán inicializando los valores para lamatriz l,,

En la línea 14 y 15 se declaran los arreglos para las entradas x y las sali-das 1.

A lin de lee¡ los patrones de entrenamiento del a¡chivo de entrada, seusa la inst¡uccion FOR. Ésta se ejecuta cuatro veces y en cada ocasión se leeuna de las r de entrada.

2A

2722232425

readline (ar.hivo_e¡t¡ada, buf rn) ;FORiI¡ IOI lO3T¡OP

read(buf in,x( i ) ) ;E¡D I¡OP;read(buf_in,y(0)) ;read(bui_rn,r(1)) ;

La línea 22 muestra cómo accesar una localidad del arreglo. Esto se ¡ea-liza anorando el número de localidad entre paréntesis (r(i)); es decir, la pri,mera vez que se ejecute el FOR, se almacenará lo que se lea del archivode entmla en la primera localidad del arreglo x. La segunda vez que se eje-cute el ciclo se almacenará en r(l), la siguiente vez en x(2), etcétera.

Al terminar de ejecutarse el FOR, se leen los dos datos para elvector desalida v.

Page 305: Manual VHDL

300 VHDL, El an€ d€ prosEmar sistenas digitales

Para 6¡raliza¡ se calculan los valores de la matrú de pesos con ayuda dedos ciclos anidados, como se muestra a continuación:

La fo¡ma d€ tener acceso a una localidad de un arreglo de dos dimensio-nes se aprecia en la llnea 28.

Uso d¿ úw rcd hete¡os¡xiatic)a

Algo¡itmo para utiliza¡ la ¡ed hete¡oasociativa

hic ia l izar los pesos.

Para cada patrón de a.rLrada hacer

{Hacer x igual al.patrón de entraala;

calcular la enlr.ada ponderada a cada una de las neuronas

Deleminar ]a activación de las salidas

2627

2a2930

FORiINOTO3I¡OP

FORjrN0rol l ,ooPw(i , j ) : = w( i , j ) + x(r)*y( j ) ;

Bi'D I.OOP;

B{D I,OOP;

si l>0

si l=0si l<0

Pruebe que el ejemplo 9.7 funciona para las entradas dadas en el problema.Utrlice la función de activación o transferencia:

l r . s i t 'ou'=10; s i lsoSolución

Según el ejemplo 9.7, la natriz de ponderaciones es:

-r

n-LIn | |w= t ; : lp2l

'=1t',

Page 306: Manual VHDL

FeJa ncu¡,n11€. ¡r , Íu¿te5 r vHDL Jol

Para el primer patrón de entrada,x= ( l 000)I1 =x1wl¡ * x2w21 +xlwj l +x4w4r : ( l ) (2)+(0)(0) +(0)(1) + (0)(0) :2I2 =xtwl2+x2wzr + x3w:r ' +x4w42= (1)(0) + (0)(1) + (0)(0) + (0)(2) =0Por lo tanto,Yt=l ,dadoquel>0Yr=0,dadoquel=0La respuesta cs correcta.

Para el segundo patrón dc entrada,x= (1 010)Ir : xrwlr + x2w2r + x.rw]r + xlwar = (1)(2) + (0)(0) +(l)( l) +(0)(0)=3I) = xlwr? + x2w2z + x3w12 + x4w42 = (1)(0) + (0)(t) + (1)(0) + (0)(2) =0Por lo tanto,v1 : l ,dadoquel>0y2:0,dadoquel=0La respuesta es correcta,

Para el tercer patrón de entrada,x= (0 101)11 :x1wrr *x2w21 + x]wrl + x4w41 : (0)(2) + (1)(0) + (0)(l) + (1)(0) =012: x1wr2 + x2w22 + xlwlz + x4w42 = (0)(0) + ( l)(1) + (0)(0) + (1)(2) =lPo¡ lo tanto,y¡ :0,dadoqueI=0y2 : l, dado que I >0La respuesta es correcta.

Para el cuarto patrón de entrada,x= (0 0 01)11 =x¡w1l * x2w21 + xlwl + x4w4l = (0)(2) + (0)(0) +(0)(1)+( l ) (0) :012:xrwl, + x2w22 + x3w:r2 + x4w12 = (0)(0) + (0)(1) + (0)(0) + (t)(2) =2Por lo canto,Yr:0,dadoquel=0Y2 = 1, dado que I >0

La respuesta es corecta,

Ehrltplo 9.9 Demuest¡e la ¡ed heteroavrciativa del ejemplo 9.6 para una enrrada similar alpat¡ón de entrenamiento.

Solución

Page 307: Manual VHDL

302 VHDL: Elaite de prosramar ¡is¡emas distialcs

Ptuebe el vector (0 0 I 0), el cual diliere del vecto¡ de entrenamiento (1 0 I 0)en un solo bit.

Sea,x= (0010)lr = xrw + xzwzr + xrw31 +x4w4r = (0)(2) + (0)(0) + ( l)(t) + (0)(0) =1

12: xrwi? + x2w22 + xrwr2 + x4w42: (0)(0) + (0)(1) + (1)(0) + (0)(2) =0

Por lo tanto,yt=l ,dadoquel>0y1 :0,dadoquel = 0

La red asocia al vecto¡ (0 0 I 0) con el vecto¡ (l 0), a pesar de que el vec-to¡ de ent¡ada difie¡e de los entrenados.

Ejenplo 9.10 Demuest¡e la red heteroasociativa para una entrada completamente diferente,i lo. pdtrone. de entrenamienro.

Solución

Pruebe el vector (0 1 1 0).

Sea,x= (0 110)11 =x1w11 *x2w21 *x3w31 * x4w41 : (0)(2) + ( l ) (0) + (1)( l ) + (0)(0) =1

12 = x1wl2 + x2wt2 + xlw:r2 + x4w42 = (0)(0) + (1)(1) + (1)(0) + (0)(2) :1

Por lo tanto,y¡ : 1, dado que l>0y2 : l , dado que I>0

La ¡ed asocia el vecto¡ (0 1 1 0) con el veccor (1 1), el cual no se encuen,tra en los paÍones de ent¡enamiento, La red responde coÍectamente al noencontrar similitud con los patrones de entrenamiento; por lo tanto, contestacon un vector diferente.

El programa en el listado 6 muestra una fo¡ma de programar la red heteroa-sociativa para el problema anterior.

1 E¡rrTY heteroaso.ia.iva ¡s

2 PORT (x1, t2,, v3, z4 : lll I¡i¡TBGER RArGE 0 TO 1;

I y1, y2 : OUr DüIEGER ¡Ál¡GE 0 f¡O l)t

4 EIi¡D;

5

6 ARCflTIECÍORE red OF heteloasociativa rs

7 rYrE póndera.iones rg ARRAY (0 1!o l, 0 To 1) o¡ lq¡EsER,

IJ BAGIII

Continúa

Page 308: Manual VHDL

Rdq nemMle' a¡túciaL' y VHDL 3ü3

9 PROCISA (x1, x2, x3, x4)10 Vr¡¡¡¡ú¿lw: ponderaciones: =11, it¡¡¡U¡I¡E 11¡ 12: ¡lÍ1lqB,;12 Eq¡N13 I l : - x1*w(0,0) + x2*w11,0) +14 12 := x1*w(0, 1) + y2.*wla, l )15 M1>0 1r¡8!l16 y1< = 1;17 EéI18 y1< = 0;19 E'D ¡!;20 t! I2>0 tll|Ba2l y2< = l ;22 s-&23 y2< = Al24 EID ¡!;25 E¡D PROCEAS;26 !D red;

({2,0), {0, 1) , (1,0), (0,2) ) t

x l*w(2,0) + x4*w(3,0);+ x3*w(2, 1) + x4*w(3, 1),

Li.r.do 9.6 PrcBmm .n VHDL paÉ urilizd lá Rd herer@Gt¡nvá.

9.4.2 P¡oducto de vectoree pata a.eociación d€ frahoneo

los pesos encontrados por la ley de Hebb se pueden obtener a través de pro-ductos de vectores.

Sean dos vectores

e = ( e1, e2, ., . , e. )

s = ( s1, s2, . . . , sm )

EI producto ent¡e e y s es el producto entre la matriz E = eT y la matrüS:s.

f ' lte. t .Es=l ' l tt ' lle" l

fe,s, e,s, ...

.-r=l "i'' ",r .Le"s¡ , : ]

srS: '

Page 309: Manual VHDL

30¿l VHDL, El üte d! pros¡úú sst€ms digitales

La matriz ES almacena los pesos encontrados ent¡e un pa$ón e y una sa_lida s. Para halla¡ la mátriz de ponderaciories (pesos), es necesario sumar lasmatrices de los patrones de enftenamiento.

w=!r,S=)ers

ffi** Utilice el pmducto de vectores pam encontr¿¡ la mÁtriz de pesos del ejemplo 9.?,

Solución

Pam el priñe¡ vectot de entradae: (1 000), s=(1 0)el producto entre vectores es,

Para el segundo vector de entradas= ( l 010), s = ( l 0)el p¡oducto ent¡e vectores es,

Pa¡a el terce¡ vector de entradae=(0 l0 l ) , s= (0 1)el producto entte vectores es,

lii'l'll

|l]" li ll

iil''ltll

Page 310: Manual VHDL

Red€s neu¡onales aftificiales r" VHDL 305

Pa¡a el tercer vector de ent¡adae= (0001), s= (0 l )el producto entre vectores es,

La mat¡iz de pesos se obtiene al sumar todas las mat¡ices resultantespara cada patrón de entrada.

que es el mismo resultado obtenido a t¡avés de la ley de Hebb.

Aplicación de la red hete¡oasociativa en reconocimiento de ca¡acteres

Las ¡edes heteroasociativas se han aplicado con éxito en el reconocimien-to de caracteres. Como ejemplo se puede utilizar la red para asociar dos pa-¡es de vectores. El vector x tiene 30 bits de entrada, y el vector y, 15 bitsde salida.

li]'Iil

l'iliiil[;]liilliil

x,,,xx. . .x

xxx

x.,.x

x...xx...x

xx.

xx.

Un vecror de entrada y salida se puede converri¡ en una señal binaria (0,1) o bipolar (-1, 1). Por ejemplo, el vector de salida,

,x,

x,x

Page 311: Manual VHDL

306 VHDL: El ané ¡le proc¡aMr sisteM digitales

se puede expresar como un vector binádo donde las x representan ceros y losountos denoran unos:

(010 101 1r1 l0 l l0 l )

Después de entrenar la red, se puede probar con entradas que tengan rui.do para ver cómo las asocia con vecto¡es conectos. Algunos ejemplos dondese inffodujo ruido son los siguientes:

# es un bit que toma el valor de 1 cuando debe¡la ser 0.o es un bit que toma el valo¡ de 0 cuando debería ser 1.

Entrada #.x.#.x.x. Salida

xxxxx

x...x

x.x

x.x

Entrada

Entrada

)oo(xxx,#.x

#x.x#oxxxxx...x

x...o

..x..

.x.x#xxoxx

o...x

Salida

Salida

x.x

x.x

.x,x.x

x.x

x.x

x.x

EntradaSaüda

Page 312: Manual VHDL

.'.,, ¡bd.r.¡rÉürü*4rdfúi'¡¿a '

vtFt Íif

Ent¡ada ¡oxx.x...o Salida xx,x...x x.xooxx. xxxo,..¡ x.xx...x xx,

Page 313: Manual VHDL

308 VHDL, El a¡¡e de pfusnn¿r sñtemas Jisitules

Ejerciciosl. Entrena¡ una red hebbiana para reconocer una compuerta lógica OR

Use un programa en VHDL.2. En¡¡enar una ¡e,:l hebbiana para reconocer una compuerta lógica XOR.

Use un prograrna en VHDL3. Entrenar un perceptrón parx ¡econocer LLna compuerta lógica OR.

4. Entrenar un perceptrón para reconoc€¡ una comprrerta lirgica XOR.

5. iRrr qué no es posible programar una compuerta XOR con los tipos de

neuronas anteri()resJ6. Elaborar un programa en VHDL para ent¡enar la adaline

?. Redactar un programa en VHDL para utiliza¡ la adaline.8. Realizar un prograrna en VHDL para enrrena¡ una ¡ed heteroasocia¡iva

que acepte paüones de entrada bipolares (-1, 1).9. Redactar el programa en VHDL para usar la ¡ed heteroasociativa de la

pregunta 110. Elaborar un programa en VHDL para encontrar 1á matriz de pesos de una

red hete¡oasociariva, utilizando el método de productos de vectores.1 1. Encontra¡ 1¿r matriz de pesos para ei problema dc reconocimiento de ca-

racteres. Debe reconoce¡ las letras A y B y asocifflas con su ¡espectivopatrírn de salida. Use un programa en VHDL.

Page 314: Manual VHDL

Reds neúrdmles artiÉciales v VHDL 30!)

Bibüografta

Maureen Caudill, Charles Buder (1997). Und¿¡sta¡tdine Neural N¿¡o,mls.Corrp tar expkÍatirñ:. Volumen l: Basic Networks. A Bradfo¡d Book.The MIT P¡ess,

James A. Freeman, David M. Skapura (1991). Reda newonales. Ngotitnws,aplicatbrcs 1 tlcnica de yoganwci6n. Addison Vesley/Diaz de Santos.

R. Beale, T Jackson A99q. Ner$al Conlfittiñg: An húrodü.tiott. Insritute ofPhysics Publishing,

Timot\ Masters (1993\. fuactiral Neural Necwori<s R¿cipes in C++. Acade-mic Press.

Sthephen T Welstead ( 1994). Neutal Netatzk and Fuz4l¡gic Arylicatio¡c inC/C++ Viley Professional Computing.

Page 315: Manual VHDL

Apendice A

Herramientas de soportepara la programación en

VHDLSi bien ya rnencionamos co¡r anterioridad las ventajas que presenta el diseñode ci¡cuitos ASIC medianre dispositivos lógicos programables, conviene re-cordar que una de las más importantes es el bajo costo de los elemenrosrequeddos para el desarrollo de estas aplicaciones. Estos elementos clesoporte básico son: una computadora personal, un grabador de dispositivoslógicos programables y el software de aplicación.

4.1 WarpR4, el softwa¡e de aplicación

WarpR4 es una herramienta para el diseño con lógica programable creadapor Cypress Semiconducto¡ la cual procesa varios tipos de enrrada de datos(captura esquemática, compilador estándar de VHDL y la combinación deambos) haciéndola muy flexible y funcional.

En la actualidad es uno de los estánda¡es más usados en la industria, yaque presenta la caracterí3tica de optimizar los diseños con rapidez y precisiónutilizando tan sólo una pequeña área del circuito; además, ofrece una inter-faz grif ico lCalaxy) amigable con el u:uario.

En la parte conespondiente al hardwa¡e, \la¡pR4 permite la grabación endiferentes iamilias de dispositivos lógicos programables; por ejemplo, PLD(22V10, 20V8 v 16V8), CPLD (de la serie Cyp¡ess FLASH370ft), CPLD (dela familia MAX340|M) y FPGA (de la familia FPGA-pASIC]80 rM) .

El so6vare \larpR4 es grátuito para univelsidades y sólo se requiere soli-citarlo a:

Cypress Serniconductor Corporatftrn3901 North First St¡eetSan Jose, CA 95134408 943 2600hrm : //ww!r'.cvp¡gls.raq

Page 316: Manual VHDL

3t2 VHDL: !l a¡te Je ¡rcgranrr sist€¡ús disi¡,lcs

Distribuidores en México

' Unique GchnLrlogiesuuu.,rnrql le rr , hnulucrc ' . . ' .m

' Integracíón dc sistemds elecr¡ónicosTels. 26 82 ?l 03, 51 2A 27 31y 57 65 28 72

Para cualqrrier iníormación adicional puede conunícarsc con los duto¡es([email protected],[email protected])

A.1.1 Para iniciar WarpR4

A fin,-1e usar la her¡amíenta,.1e trabajo \üy'arpR4, hay,:lue tencrla instalada.

En la figura A.l se muestra esta condicirin ¡ como se observa, en csfe soft-

w:rre se cncuentra la irrrerfaz gráfica (Galax-r), el simulador (Nrrua), las notasrécnicas (Reledsd No¡er)y la barra de herraruicntas (Warp Toolbar)

E}Q Pragra¡nasÉ I fvarp Ra

. lJ ua¡a¡ryQ Nova

: -8 Relasd'lotesi -A war! Toolbat

4.1.2 Galary:

Figurá A.l softw¿¡c {le solorr€ varpR4.

interfaz gráñca del usuario

Galaxy es la irrcrfaz que permile la interacción cntre el usuario y La heÍa-

mienra de trabajo. En ella se realíza la edici(in, compilaci¿)n v síntesis de los

archivos escritos en código VHDL.Para iniciar Galaxy es nccesario ent¡a¡ al menú c{e VarpR4 y seleccionar

Galaxl Otra posibilidatl es ejecurarla desde la barra,:1e herramicntas, la cualpuedc estar fíia en la pantalla. La seLccción cle Galaxy abre el menú gráficrr

mosrrado en la flgura A.Z.

I

Figu€ A.2 Men I snÉ. J( Cdl¿)\ .

Page 317: Manual VHDL

AF¡¡dicc A Heir¿nrGnt¡s dc ri|¡nr t¡ra... 313

Creación inicial de un p¡oyecto

Para iniciar un proye(o (Projecr) es nccesrio elegir la opciórr Project. Aquíse presentirn r rs casos: primero, al scleccionar Project por Frimer¡ vc? rpere-cerir una panralla sinilal a la rnosrraJa en la figura A.3. En ella clprograma srrlicita la ruta cn,que se guarderán hrs plryccros (en nuestro c¡so: Ejenplt, asíconn) clnombre que se asignar./r alarchno (diseños) en qtrc se .inacenarán losp|ogramas que gencrcmos.

Fisura A.l Craoón Jc un fn.l'e.!,.

Segundo, si ya se riene un proyecto, al selcccionar Galaxv aparecerhpantalla de Ia t'igura A.,{.

rg-)rj:i ' !¡P¡ii!:rl

1.,

Figur¿ A.4 PrN.cnr.rer¡! d, al¡hxi:

Page 318: Manual VHDL

314 VHDL, El arte de proc¡am' sE¡em6 dslt¿les

En la pantalla anterior podemos observar la presencia de un menú pa¡a

Galaxy y otro para Project. En este último está el bloque Edit, que da Ia po-

sibilidad de escoger un diseño almacenado (Select) o editar uno nuevo conla opción New. Con ésta aparecerá la pantalla de edición que sc ilustra en la

figura A.5.

FiguE A.5 Editor de Gaiar"y.

Para proseguir con el análisis, consideremos el listado del comparador de

igualdad de 2 bits de la ñgura 4.6.

ffiFisuo A.6 CompaÉdo¡ de icúaldad de 2 bits.

Ahora obsewemos la pantalla donde se edita el código VHDL, el cual

corresponde al circuito ilustrado en la figura anterio¡ (Fig. A.?).

Page 319: Manual VHDL

Apéndice A. Heramienras de sopolte pÍa... .t15

ficun A.7 E¡tición de un piogÉma.

Una vez que el programa ha sido editado, es necesario almacenarlo me-diante la opción File;Save as, la cual se encuentra en el menú de Galaxv(Frg. A.4). Note cómo de torma dutomática el programa aerega la exre¡. idn,vhd (compara.vhd). El diseño así generado debe almacenarse p*." ,u uropñ.tcrior. Esra oper¿(icjn se re.r lrza medran¡e el menú de Calara, coman-do File-Add. De e"ta m¿nera el nuevo drseño apareceÉ lisratio en ú venranade Project (Fig. A.8).

Figm A.8 Para aÁ¿dir uD diseñó nüevo a u¡ orcvecro.

td ÉL rn ¡d '*

d !. g;.;

Page 320: Manual VHDL

31ó VHDL, El ar¡e de prcgmtui sisremas disitales

A.1.3 Compilación del diseño

La función de un compilador lógico es procesar y sintetiza¡ el diseño, gene-rando el a¡chivo JEDEC (conocido como mapa de fusibles), el cual esreconocido por el grabador de dispositivos lógicos programables. Como unaventaja adicional, este tipo de compiladores detecta los er¡ores de sintaxisy semántica, los cuales impiden la generación del archivo JEDEC.

Selección del dispositivo

Antes de compilar un diseño, es necesario elegir el dispositivo en que se gra,

bará la aplicación. La selección se realiza en el bloque synthesis options delmenú Project (Fig. A.8). En éste se escoge la opción dispositivo (deüce) ycomo ¡esultado se abre la pantalla mostrada en la ffgura A.9.

En la parte superior izquierda de la pantalla se observan las opciones De.vice y Package. Entre las varias familias que oftece Deüce, se elige la corres-pondiente al dispositivo que se va a utili"ar (en nuestro caso, la familiaC3?2I). En la opción Package se exhibe una lista de los dispositivos dispo-nibles en la familia seleccionada; en ella se encuentra el tipo de encapsuladodel dispositivo elegido, en este caso es el CY7C372L66JC.

Otra de las opciones es la rcferente al voltaje de funcionamiento, el cualpuede ser de 3.3 o 5 volts, segrln el dispositivo que se va a utilizar. En nues,tro caso, el circuiro CY7C372I funciona con 5 volts (consulte las hojas téc-nicas en el aoéndice D).

ffiFi8un A.9 Elección del dBposirvo.

Page 321: Manual VHDL

A¡¡nJicc A. Her¡rnicnr¡s d. s.porte p¡rr... 317

Tccnología del dispositivo

La tecnología dcl llispositivo (Téch Mapping) se refiere a las opciones qlreperDriten la náxima oprimización del circuiro cLegido, la cual se relacionacon la estructura dc srl a¡quitectur¡ infcrna-

' Selección de tiPos de Flip-Flops

Esta opcíón (Choose FF Types) se eplica en la síntesis de sistemas secucncia-les. Con ella, el r.liseirador puede escogcr los diferentes ripos dc tlip-flops quese urilizan en h oFtimi?acnin dc un diseño. La opción Opt es la reconenda-da, ya que permite al programa elegir de forrna automática el flit-flop quemejo¡ se adecue a cada diseño.

. Consawación d.e Ia polaridad,

Cuando esta opción (Keep Polariq) se habilita, ei usuario ticnc la posíbilidadde elegir Ia polaridad deseada para cada salida. Cuando ¡ro está selecciona-da, el programa asigna de manerR automática la poiarida,.l que consi:lera másadecuadA.

. Tetminales y nodos aariables

Durante el proceso de sínresis del programa, Wa¡p genera diversas scñales in-ternas en el dispositivo, las cuales permiten realizar las concxiones necesariaspara cl óptimo funcionamiento ,.1e1 ci¡cuito. Estas seiiales conoci:las conr,¡terminales J nodos variables (Float pins, Floar nodes) se pue.len ignorar almomento cle implemcntar lt Ligica produci.la po¡ ft)s procesos dc súrresis yoptimización. Por lo gene¡al esta opción no se activa y esfos cambios quedaDsujetos al c¡iteri() del programa,:1or

. Factor lógico

Es una opción (Factor Logic) aplicable írnicamentc a la fellliiia M,{X340 dela compáñía Altera. Esre módulo pernitc le implementaci(in Ligica cn trcsniveles en lugar del mo,:lo normai dc dos niveles (surna de produ*os).

. Nodos

Nodos (Nodc cost), permite sinrcti?ar eldiseíro de tal mancra que sea com-patiblc con Lrtro. El vaior recomendado es "10".

Page 322: Manual VHDL

3f8 VHDL, El arte d€ p.ocraMr sGten* disitales

. Oqciones de simulacíó¡

Esta opción (PostJEDEC Sim) sólo se aplica a PLD y CPLD. Corsiste en unmodelo de simulación que pe¡mite al usuario simular el diseño con informa-ción periódica). El menú PostJEDEC Sim exhibe una lista de simulado¡es dis,ponibles. En nuestro ejemplo la opción no está seleccionada (<none>).

Opciones genéricas

En la opción Generics (Fig. A.10) se consideran diversas ca¡acterísticasrelativas a la compilación.

ffiFisü¡a 4.10 Opciones cenéncd.

. Ni)eI dt o,tímizdción

Esta propiedad (Optirnization) se utiliza para indicar el nivel al que se quiereoptimizar el diseño. El nivel exhaustivo permite una optimización que abar-ca diagramas de estado y condiciones no impo¡ta.

. Retencirn de XOR

Esta opcíón (Retain XORs) hace que Warp retenga los operadores XOR quese encuentren en el diseño con el ffn de lograr una implementación más ade,cuada en el dispositivo.

Page 323: Manual VHDL

A¡éndicc A. Heranien¡as de sopo.re p¿¡a... 319

. Sínúeiü da cdmpos

Con esta opción (Goals) el usuario puede seleccionar el camino que segui¡ála síntesis del diseño. Ahora bien, es importante hacer notar que sólo es re-comendable para usuarios expe¡imentados.

. Máximo ü efiores y de condiciates de ríesgo

Ambas opciones (Max errors, Max Vamings) se utilizan p¡incipalmenrecuando los diseños son largos. Su función es que el usuario especifique el nú-me¡o máximo de errores y condiciones de riesgo (warning) que se prese¡ra-rán en la pantalla.

. ReqoÍe detallaÁo

Esta opción (Detailed Report) muest¡a un repo¡te detallado de la compila-ción de un archivo. No es recomendable habilitarla en diseños largos, debi-do a que el reporte que produce serfa muy exrenso.

. Conqrobaci'n de kt lüfd ser¡iifi{d

Como su nomb¡e lo indica, esta opciírn (Sensitivy List Checking) tevisa lasva¡iables que forman la lista sensitiva de los procesos que se incluyen en losdiseños. Si el programa no presenta proccsos, csra opclon no es ¡ecomen-dable.

Inicio de la compilación de un diseño

Antes de comenzar a compila¡ el diseño, es necesa¡io ql¡e dent¡o del menúdel proyecto se seleccione y enseguida la opción Set top, ya que ésta permi,te la compilación de dicho diseño (una vez realizado esro, el nombre del ar-chivo debe aparecer ¡esaltado en la pantalla).

Ahora bien, consideremos que hay dos caminos para iniciar la compila-

1) Seleccionar de la ventana de proyecto el archivo que se desea com_pilar

Se presiona Selected pa¡a iniciar la compilación.

2) La opción smart también pe¡mite compilar un diseño; pero se usacuando se traca de programacíírn top ieuei (alto nivel) y hay que com-pilar vari6 archivos al mismo tiempo.

Page 324: Manual VHDL

320 VIIOL: El¡tr.,1. FrosDnr¡, ide¡,a\ dLgtr¡lcs

Una vc: cornpiledo cl diseiro 0ncdiante la opci(ilr l), sc genera una p¿n-

trlla que trxcscnra, entrc orrtrs pultosi el resuLt¡tio de hx ¡ljvcrsos Lrrlrccsospo¡ los que aüaviesa el discño para su compilaciLi¡ adecuada (Fig. A.Ll)

A.1.4 Nova

I'igura A. I I ReJtrJo" .le l¡ .o¡rfil¡.ia)n.

Si el diseiro tiene errorcs, éstos ilpa¡ccen en Ia vent¡na de compilacíón'

L¡ mencra más sencilla de locali:ar un er¡or cs presiLrnando elbotón Locate

e.."r Ql , ya q". esta opcióD indica en qué lirea y c'olulnna se encuentra

cada uno de los errores del círdigo.

Una ve¡ te¡minada la cLnlpiLación sc pueden guardar Lx mcnsajes en

un a¡chivo. Para esto lan srilo se cscoge la opcia]ll Save asrnombre-

Nov¡ (cl s imulador) es la he¡ramienta . lue perni te simular el comporta-

miento dc un cliserio L.asado en el rraz:rJo cle fo¡mas de onda La nTancra

dc entrar ¡l simulaJc¡¡ Nov:r es por mcclio de l¡ l'arra cle her¡amientas o

dcsde el menír tle \larp. La pantalla principal se mucstra en la figrrra A.l2

Dicha Fentslla c(ntiene utr menú con lirs opclrnes File, Edit, Simula'

te, Vicws y Options, Observe quc cn la secci(ir i:r¡uierda de la pantalla

hay una columna dc botones en los cualcs se inrlíca el núlrrcrc¡ de termilal(Fin) y cl número de no,:losl av¡ciatlos con las señ¡les .lue sc si¡lularán(Fig. A. l2).

L tin i.,1.., rn árer Jel rir.nú. nu..¡¡¡cf¿ ü¡. ¡ n.]\ Fr¡r.6 il¡¡l¿ ¿l $LxÍ, !r¿.1. ú¡r¡r rnr \enrl

Page 325: Manual VHDL

Aréndicc A. Heüamienras de soporte l)ara.. 321

FiEura A.l2 Simuhdor Nova.

Á¡ea de trazado

El á¡ea de trazado muest¡a los valores de las señales y rodos listados en la co_lumna izquierda de la pantalla.

Para iniciar la simulación se debe asignar un valor a cada señal cle en-trada. Esto se ¡ealiza en la opción Edit, ya que contiene los diversos valores

_que puede tomar una señal (alto, bajo, señal de reloj y un pulso de reloj). Ca_

da valor se asigna seleccionando prime¡o el botón correspondiente a la señaly luego se indica un valor opcionai (Fig. A.lJ).

%Figm A.1l Asisnación de v¡lores a señales.

Page 326: Manual VHDL

¡ t t VHDL: El arte ¡le ptoeramar sistems digit¿les

En nuestro ejemplo asignaremos el valor de "1" a las señales de ent¡ada(a-0, a-1,b 0yb l ) .

A continuación se simula el diseño eiecutando el menú Simulate-+Ejecute, el cual exhibe los resultados presentes en la figura 4.1'f.

Figuñ A.l4 Simuláción de ún rchivo.

Note que la señal de salida c toma el valor de "1" porque los bits de en-trada son iguales.

A.1.5 Archivo de rcporte

La compilación del diseño trae consigo la generación de un archivo de repor-te (extensión .rpt), el cual presenta información importante del diseño y dela forma en que se implementa¡á en el dispositivo. Para analLar el a¡chivode reporte, se regresa a la pantalla principal y se elige el menú Info Reportffle, el cual abre una pantalla como la que se presenta en la figura 4.15.

Fieur. A.t5 Archivo de rcporte.

Page 327: Manual VHDL

Apéndice A Hernmienras de soporte para.

Debido a que el archivo de reporte es muy extenso, expondremos b¡eve_menr. cod¡ una de la. parre\ (Fre. A. lo). 5e recomrentJ.r ; rrc prrc m.j \ , r in-f . rrmacrcin ,e con"uhe el manual dc ururrro de \Xarp l2l .

- t

l -Itar! rr'llDl slnthesis cómpi ter: r.rersiotr 4 rR x95Copyr iqht (c) I99I , .1992, \993,19t4, I9t5, I9t6, I99t , :1998 CrEjess Ssrú:rouc.o¡

vlo Ll . l - : i ¡ r . rc l r2r b.Jc .o¡rp. . t¿

I

co¡pillq: cdrF.vhd.¡taons: q el0 !i100

"-"/ L

c: \_@rp\bn\v¡d1fe. se r¿ t¡ r95: !1lDL *r"..L-Fr i Jul :10 :18:47:21 1999

I

Lib¡ary tro¡k => dr¡ecrory L.l?2iLrntiirq C: \waqr\ l ib\.@on\m¡ti\..!press . vi fL1b¡¡rl/ icee => dir4rort¡ c: \w¿ rp\lib\ ieee\@rki,rnliinq c: \wa]l]\ 1ib\ ieee\m¡k\ sLdloqic. vi f

C: \ualp\bi n\ vt¡d1f e, *e:

C: \kéip\bi¡\ tovi f .*e V4

F¡l J l t 30 18:47:26 1999

x!5: Hiqh level slnrhe

L:rhi¡q c: \raI1)\1ib\cl)lmn\rc¡k\.\,press.viIr.in;úrq C:\mqr\1ib\iee\@¡k\srdtoqic,v:f

C: \úar!\bin\túi f,exe: No e¡¡o¡s.

Fisura A.ló Archivo de ¡ep{r¡te.

En esta sección del reporte, conocida como t{rr¡ end, se rnuestran losdatos generados por la herramienta VHDLFE, la cual ¡evisa los erro¡es de sin-taxis y semánrica que se pudieran presentar en el diseño. Otra de sus funcio_nes es trasladar elarchivo VHDL (por mec{io dc simples ecuaciones yregistros)a la siguiente fase, conocida como síntesis y opti¡nización.

Page 328: Manual VHDL

324 VHDL: El arte de p'osamr sistem¡s di¡litaies

En la figura A.1? se ilustra la parte del reporte generada en la sección de

optimirdcijn. En términos generales se presentan las ecuaciones que rigen el

compo¡tamiento del diseño. La notación ulilizada para representar dichas

ccua. ione. e" del Lpo suma Jr producl, ' ' { la rcpr..enta unc n.g¿ción el *

una funcitin AND. el * una función OR). Cada ecuación impresa en este

archivo espera ser introducida en una macrocelcla de un bloque lógico en

particular

pr¡ oFrl¡jze¡ softwe: m{¡JoPr.E¡ 11/NOV/9? [v4 02 ] 4 rR x95

CPTTMIZATION OPIIONS

Infómatron: opti¡izinq B¿¡le.l P¡eseL/Reset ¡equrfÚents

!¡ro: Cou¡t = 0 Nar¡ing Count = 0

Complered SuccessfuLly

/a-1 +/a0+/b-:L+/b-1r

a:L +/a-0+b1 +/b0

/a:L + a-0 + /b: l+b0

a-1 +a0 + b- i + b-0

conpleted successfully

Fi$e A,r? Proceso de optimi.ación del diseño

Una vez obtenidas las ecuaciones, el paso siguiente se denomina Filrng; o

sea, la fomla de implementa¡ en el dispositivo la lógica producida por los pro-

cesos de lntesis y optimización. Por lo general este té¡mino describe el p¡oce-

so de asignar recursos en arquitecturas del tipo CPLD.En la figura A.18 se puede observar la realización de las ecuaciones p¡o-

ducidas en la etapa antedor, las cuales se int¡oduci¡án en las macroceldas

cor¡espondientes a uno de los bloques lógicos con que cuenta el dispositivo(elCPLD CY372l).

Page 329: Manual VHDL

Añndicc A. Herámie¡ras de soprtc l)ara... 3Á

BI,OCK A IIACN,IB]I

I I I7I1 ) I I I222 ) .222222a.31111 |1144444¿4444555r,5555556666566666r | i7rr_rrr_ lf121456I i901234r,6739012345a,1a901711\É189A1234!6?39012145573U¡1,- :1456.ae90)2145a1a9

]¡GIC BI,OCK A ,tr,.r,r', f. ¡.";1) -

YrX¡¡++++++++r+++., , . . . . .

1 ,"Í\rlrsE¡

Fku.¿ A.l8 Inplemenració¡ de las ecu¡ciores cn et bloqüc tógico.

En este bloque podemos observar que la primera columna indica el nú-me¡o,:le la mac¡ocelda dencro del bloquc lógico, donde la ,,X" representa unp¡oducto de rérminos (PT) y el signo * un espacio dentro del arreglo de pTque no está ocupado en esta macrocelda pero puede se¡lo en ot¡a.

Otra de las partes incluidas en esta sección se ¡efiere a las estadísticas, lascuales se incorporan porque presentan diversa información relativa al bloquelógico, como la cantidad de productos de términos tealizados, Ias señales decontrol usadas, el porcenraje de urilización del bloque, etcérera (Fig. A.l9).

Total coút of outputs piacedTotal coút of úlque P¡óducr T--i¡sToiai Próducr Ten. ro be ¿ssigne.l¡4¿x Froduct rers used / available

codtrol siqrals fó¡ Logr. Block

CLK pi. :LlCLK pin :5PRESETNE¡IToE0cEtaE2oEl

144/ 80

Figu¡a A.r9 Esradúri.as prcsenrad¡s por bloquc tósco.

Page 330: Manual VHDL

3?Á VHDL, El arte de pro€ramd siste¡na6 disitdes

Otra de.las partes que incluye e[ archivo de reporte es Ia corespoodien'

re a la distribqción de terminales del dispositivo (Fíc. 4.20).

Package: cY7c3?21-66Jc

: aiD

@Fisün A.20 Asienació¡ de re¡minales pm el CPt¡ C3?2i.

En el apéndice D se muestra la hoja técnica de este dispositivo. Recor-

demos que el programa asrgna automátrcamente las te¡minales (pines) con

base en la distribución de ptoductos de términos dentro de cada mac¡ocelda'

Por últirno, se presenta la información correspondiente al mapa de fusi'

bles $EDEC), el cual se genera p¡imero pa¡a cada bloque lógico y luego

pata el archivo de salida JEDEC (comp.jed), el cual 6nalmente se instala en

el dispositivo elegido (Fig. .A.21).

;

3

4

5

6

7

8

9

10

11

t2

13

L4

15

I6

71

18

19

2A

2t

22

GIiD

\cc

23 : GND

32 . aa

33 : a_1

34 : 6¡D

44 : vCC

Page 331: Manual VHDL

AÉndice A. Heiramien¡as de soporte p¿¡a 327

.J!]IIEC ASSETIBLI (18:47i5r)

Pro.essing JEDEC

P¡ocessinq JEDFC

.IEDEC output file

fo¡ Loqi. Block 1,

tor Logic Block 2.

for Loqic Blocl L

for Loqic B1o.k 4.

'c(rf9. jed, creared,

E¡ror CounL = 0

cofrpleted SuccessfulLy ar 18:¿7:51

wa¡ninq CouL = 0

Figua A.2 I Generació¡ del archivo JEDEC.

.4.1,6 Uso del programador ISR

Uno de los aspectos más importantes que hacen de un PLD un dispositivo di-námico es la capacidad de poder borrarlo y reprogramarlo sin necesidád de bo-rradores ult¡avioleta. Algxnos disposifivos lógicos programables se puedenbonar electrónicamente o mediante Ia opción Reprogramabilidad en sistema(lSR: In Sysrem Reprogrammable), donde la función se introduce desde la in-tefaz en paralelo de la computadora hacia el conecto¡ ripo se¡ial JTAG. Esreprogramador permite borrar, revisar y/o leer uno o varios dispositivos que em-pleen el estándar fTAG.

Catacterísticas del programador ISR

El archivo que se utiliza para programar CPLD se llama isr.exe. Ent¡e sus di-ve¡sas lunciones convierte el archivo con extensión .jed generado por \larpen el archivo con extensión .bit que se g¡abará en el CPLD. Para programaruna aplicación se recomienda segu l()s siguientes pasos:

Page 332: Manual VHDL

328 VHDL: El a¡te de prosanar silrelM disirales

1) Copia¡ el a¡chivo is¡exe en el directorio elegido, por ejemploz:

C: >md isrC: > cd is¡C: \lSR> copy a: \istexe

2) Una vez que se tenga el archivo .jed generado en Warp, se usa el edi-to¡ de MS-DOS para generar un archivo con extensión .dat. Porejemplo,

C' VSR>edit ejemplo.dat

3) En este a¡chivo se deben de llenar los siguienres campos,

nombre_dispositivoIopción] larchivo. jedl ;

. El nombte-dispositivo se refre¡e al cúcuito integrado en que se quie.re realiza¡ la grabación.

. En el campo de opción se pueden declarar los siguientes parámetros:p - para programat el CPLD con elarchivo IEDv - a ffn de comproba¡ si lo que hay en el CPLD es el archivo .JEDr - pata lee¡ lo que hay en el CPLD y colocado en el archivo JEDe - a ffn de bonar lo que hay en el CPLD

Existen otras vatiantes que se pueden consultar en el manual de ISR [3].

. El campo archivo,jed es el lugar en qüe se declara el nombre delarchivo (co¡ exteniión .jed ) que ¡e va a grabar

I-a forma en que debe edita¡se dicho archivo se muest¡a en la 6€u¡a A.22.

Figur¡ AJ

? Pda lo cul * utilnan los om,¡dos bá¡i.G d¿ ¡istm opéntivo, S! s) en'Vi¡do* tu e eJpe.iica m €sé

Page 333: Manual VHDL

A#ñd@ A Her6i.nd6 d...Dorte púf . ,:W

4) Al te¡minar la edición, este archivo d$e.guardarse n¡ü ¡ndl#did;tinuar con la siguhnte secucncia:

. ConocEr cl p¡ogr¡sl¡do¡ rxdianrc ¡u,inte¡fqt con el puerto paralelode la PC.

. Con€ctár el p?otrmadü a Ja b¡¡o donde |c e¡cüanÍa el disposirivo.

. tblarüar .l dirE¡liró CüLD cm p¡¡'fircn¡,o de 5 volts.

5) Ejecuta¡ el siguiente <i¡mthiloá el d¡nbploCétrsf¡tema,

c; l ¡€e1¡[email protected]! ' -

Si no hay problemas dura¡te,l* tr¡bá¿ñer 3¡flograma-entrcgará un rc.

r . . , t : ta l

, .I r po¡te en quJ lndi€a¡á la auser¡cirad€,enoeot pq¡g,la apllcación s€ encuentrainstalada en el disposirivo.

Page 334: Manual VHDL

331) VHDL: El {te de prcs¡"@¡ si6lemü digitales

Bibüograffa

David G. Maxinez. Amplifuación de Se¡ales,ITÉSM-CEM, 1993.Cypress Semiconductor Corporátion. Appü¡ddons Hald Book. Clpress, Semí-

conductor Corp., 1994.Cypress Semiconductor Co¡poration. Programnable l.rtgic Daw Book.

Cypress, Semiconductor C,orp., 199ó.

Refe¡enci¡¡

{ll Cypress Semiconductor Corp. Softrare WarpR4. 3901 Fi¡st Street, SanJose Califomia, CA 95134. Tel. (800)858-1810. Fax 408-943-68-48.Página \üy'eb w*'l'.cyp¡ess.com,

[2] Clpress Semiconductot Corporation. Th€ User's G¡id¿. Cypress, Semi-conducto¡ Co¡p., 1996.

[3] Cyp¡ess Semiconducto¡ C,orporatíon. An lntroút túm 1b In SystemReytogranniíg wiú FLASH37O. Cypress Semiconducto¡ Corp., 1996.

Page 335: Manual VHDL

Apéndice B

Instalación delSoftware Warp

'llarp se puede insralar en PC y plataforma Sun. Los requerimientospara cada uno .e encuenÍan a ( Jnunuacton:

Requerimientos Windows PC Estaciones d€ trabajo Sun

Procesador 8048ó nlnimo CPU SPARC

RAM 16 Mb míni,¡o 16 Mb

Espacb en disco duro 60 Mb mlnimo 60Mb

Sistem¡ oper¡tiyo \i/indows ].1 en:tdelanre Sün Os 4.1.1 r porteriores

Instalación en PC

Una vez que se han revisado los ¡equerimientos anteriores, se siguen los si-guientes pasos:

l) Cerrar todos ias aplicacioncs antes de correr el ptrgrama de insta-lación.

2) Insertar el CD y ejecutar el archivo pc\serup.exe (en el caso de unacomputadora personal).

Si se requiere tener acceso a la documentación en línea, es necesa¡io ins-talar el programa Acrobat Reader, el cual se encr¡entra en ese CD-ROM.Para instala¡lo existen dos formas:

Page 336: Manual VHDL

332 VHDL: Ill drte de prog¡anar sútefr¿s dLeitales

a) Durante la instalación de \larp, aparece una pantalla con un men-saje que pregunta si se desea instala¡ Adobe Reader Seleccione laopción yes y el progama lo instalará.

b) Ejecute el archivo pc\acroread\ar32e30.exe y dé doble clic en estearchivo.

Plataforma Sun

Pam instalar Warp en Plataforma Sun (con sistema operativo SunOs 4 1 1Sola¡is 2.5 en adelante) o HP 9000 (setie 7000) se necesitan seguú los si-guientes pasos:

Sr¿Os 4.1.¡

Una vez int¡oducido el CD-ROM se ejecutan los siguientes comandos pa¡a

c¡ear el directorio /c¿romnkdi¡ /cdrommoúrt -rt hsfs /dev/sro /cdtom

En Solo¡is 2.5

Se ejecutan los siguientes comandos para crear el dúectorio /cdrom:mkdi¡ /cdromrnount -F ufs -¡ /dev/dsk/c0t6d0s2 /cdrom

E¡ HP.UX lO.lO

De igual forma que los anteriores, se eiecutan los siguientes comandos para

cr€ar el di¡ectorio /cdrom:mkdi¡ /cd¡ommount .o ro /dev/dsk/c0t2d0 /cdrom

Page 337: Manual VHDL

Apenclice C

Identificadores, tiposy atributos

Al igual que otros lenguajes dc alto nivel, VHDL uriliza diversos conccptosque son rmpoÍanres al momcnto de realizar Lrs prograrnas, ya sca para facili_tar ia descripción del diseño o para simplilicar las líneas de código utiliza,:las.Entre los conceptos más impo¡tantes sc encuentr:rn los idendficadores, tiposde daros y arributos, los cuales sc tratan en este aparrado.

Identiffcadores

l¡s identificadores son los nombrcs o etiquetas que se Lrsan para referir varia_bles, constantes, señales, procesos, etc. pueden ser números, lct¡as y guionesbajos ( ) que separen caraceres. Tidos hrs identificado¡.s deb.r, resp.rr.ciertas especiffcaciones o reglas para que se puedan compilar shr errores; porejemplo, el prirner carácter siempre cs una letra, la cual puede ser minúsculao mayúscula (solo en el uso de iclentificadores).

VHDL cuenta con una lista de palabras reservadas (apéndice E) que no sepueden utilizar como identiñcadores porque son de uso exclusir.o del compilador

Objetos de datos

Un objeto en VHL)L es un elemento del lcrrgua;e que rlene un valor especr_lico; por ejemplo, un valor dcl tipo bit. En esre lenguajc hay cuarro clases ,:leobjeros: crnstanres, serinles, archfuos y turiables.

Ctmstafltes

Son objetos que mantienen siempre un valor fijoprograma. De manera general, las constantes se

c{urante la ejecuciírn delusan para comprender

Page 338: Manual VHDL

VHDL: El aÍe de pros¡anrdr sbtehas dig,talcs

mejo¡ el códieo, debido a que pcrmirc¡r idcn¡ifica¡ con más facilidad el valo¡que se les ha asignado.

La sinraxis para declarar una constante:

conslant idenr16L,rdor: rrpo . exprc.rnn.Ejemplosconstant Vcc: real ,= 5.0;constant cinco: integer:= 3 * 2;constant tiempo: time :: 100 psiconstant valoresr bit_vecto¡ := "10100011";

Como se puedc observar, las constantes ¡equíeren un identificador (nom,bre), un tipo de l1atos y una expresión que indique el valor espccifico quc sele asígna.

Al monento de programar, las constantes son válidas sólo en la unidadde diseño en que se declaran; po¡ ejemplo, una constante defini:la en unadeclaración de entidad es visible sólo clentro de la entidad; cuando la cons-tante se decla¡a en la arquitectura, nada más es visible en la arquitecnrra, vcuando se define en la región de declaraciones de un proceso, sólo es visible

Señ¿les

Son objetos utilizados como alambrados que permiten simular la intercone-xión de componentes dentro de la arquitectura de diseño. Estas señales per-miten ¡ep¡esentar entradas o salidas de entidades que no rienen una re¡minal exte¡na (patilla) al dispositivo.

Como ejemplo observemos el diagrama de la ligura C1.

Terminal

Figura C.l Ubicaci(ln dc scñalcs cn un dn.ño.

Se puede apreciar que las señaLes eriquetadas como x0 y x1 no tienenasignada una terminal en la entidad de diseño, ya que sólo funcionan comoun medio para inrcrconectar las compue¡tas lógicas del circúto.

Page 339: Manual VHDL

Apéndice C. IdentiÉcadores, tipos y atributos 33s

La forma de declarar una señal es la srgurenre:signal identiffcador: tipo:[rango]1;Ejemplossignal vcc: bit: '1';signal suma: bit_vector (3 downto 0);

Vmiables

Una variable tiene asignado un valor que cambia continuamente dentro ¡lelprog¡ama. Estos oblecos se utilizan para manejar dabs aleatorios o que notienen un valor especifico.

La forma en que se declara una va¡iable es:

variable identiffcador(es): tipo[rango]:[expresíón];Ejemplosvariable contador: bic vector (0 to /);variable :. , y: rnr.ger:

Las variables no pueden proyectar formas de onda a su salida, debidoa que su valor cambia constantemente, de modo que es imposible establecerun valo¡ en cierto insianre de tiempo.

Archioos

Un archivo es un objeto que permite la comunicación del diseño con su en_tomo exterior, ya que por medio de ellos se pueden leer y escribí datos cuan,do se hacen evaluaciones del ci¡cuito. Aqul cabe mencionar que un archivoes de un tipo de datos determinado y sólo puede almacenar datos de ese tipo.

La sintaxis para declarar un archivo es:

file identilicador: ripo_archivo is [dirección,,nombre";]Ejemplosfile ope¡aciones : Archivo_Ente¡os is in ,datos.in',;

ffle salidas : Archivo_Enteros is out ,datos.out";

Tipos de datos

Un tipo de datos se utiliza para definir el valo¡ que un objeto puede tomar,asl como las operaciones que se realizan con ese objeto. En VHDL hay dostipos básicos: compuesto y escalar, los cuales ag¡upan va¡ios subtipos.

L Lr pa¡áne.os indicados é¡ft¿ corchetes I 1, sn v¡tdes o!f,1o¡aks.

Page 340: Manual VHDL

336 VHDL: Elarc dc prosraúar úlemas disitalcs

A continuación se muestran estos tipos de datos y la forna en que se en-

cuentran ciasilicados:

Tiposde

I s." .0""1* n,"E*"1*" ¿ Pucden tomr un solo

I r¡ ior ¿, momsto oe

,^I son aquerlos que

Cofnpu""ro" f Pueden tomr JÑcrsos

I simulat el diseao

Tipos ffsicos

Se clasiffcan en dos:

Tipos areslosTipos ¡egistros

a) Tipos escalares

En esta sección se descríbe a dctalle ios cuatro lipos cscalares que existen enVHDL; también sc muestran algunos ejemplos que permiten comprender

TiPos etumeradas

Este tipo se usa para lisrar los diversos valores que puede contener un obje-to. Se llaman enumerados debido a que listan todos y cada uno de los valo-res qüe forman el !ipo.

La sintaxis para declararlos es:tlpe identificador is deffnición tipo;

Como se puede apreciar, la declaración del tipo contiene un nombre, elcual permite hacer refe¡encia a él en el programa; también cuenta con el pa-

¡ámetro llamado deffnición del tipo, el cual coüesponde a los valores que sele asígnan.

Ejempiostlpe nornbres is (Ana, Ma¡io, Julio, Cecilía);type máquina is (edo,presente, edo futuro, estado) ;tlpe let¡as is ('a', 'b', 'x', 'y', 'z');Los tipos bit y bcnleano se clasifican entre los tipos enumerados, debido

a que pueden tomar más de un valor:type booleano is (ve¡dadero, falso);type bit is ('0', 1');

Page 341: Manual VHDL

A¡endLe C ldrnhlcJd.rc, üpu\ \ rhburo\

Tipos enteros y tipos reales

Como su nomb¡e indica, los tipos enteros y reales sirven pa¡a rcp¡esentar nú,meros enteros y ¡eales (fraccionarios), respectivamente. VHDL sopo¡ta va-lores enteros en el inte¡valo de 4,147,483,647 (-2l l- l) hastaZ,l4?,483,647 (1)I -l), y números reales en el intc¡valo de - l.0Elg a 1.0E18.

Ambos tipos €nteros y reales- siguen la misma sintaxis:

object identilicador : tt?e range fvaloresl;

Un rango (range) es una palabra reservada por VHDL y se usa para de_finir un conjunto de valores. Cabe destacar que no todas las her¡amientas enVHDL manejan valores con signo. En nuestro caso el compilaclor utilizado(Warp) sólo mancja valorcs sin signo.

Tipos lísicos

Se ¡efferc a ltx valo¡es que se usan como unidadcs de medí¡la. En VHDL elúnico tipo físico que se encuenrra predelinido es time (riempo), el cual con_tiene como unidad primaria el femtosegundo (fs).

La mane¡a de definir un tipo físico:Type rime is range 0 to 1E20unitsfs;p5 : 1000 fs;ns = 1000 ps;us : 1000 ns;ms = 1000 us;s = 1000 rns;min = ó0 sec;h : 60 min¡eno urutsi

VHDLpermite la crcaciti de otros tipos flsicos como met¡os, gramos, ctc.,sólo que en el diseño digital es diflcil utilizar cstos parámetros. por esta ¡az(innada más sc muest¡an los tipos prcdefinidos, sin profunclizar en el tcma.

b) Tipos compuestos

Como ya sc mencionó, los tipos compuestos puedcn tener valores múltiplesen un mis¡no tiempo al momento de sc¡ simulados. Este tipo esrá fonnadopor los arreglos y ¡egistros.

Page 342: Manual VHDL

338 VHDL, El drte de p¡osramar sisrcm¡s disit¡Les

'Iípo areglo

El tipo arreglo está formado por múltiples elementos de un ripo en común.Estos arreglos se pueden coruiderar también como vectores, ya que ag¡upanva¡ios elementos del mismo tipo.

La sintaxís urilizada para declarar tn arreglo es'

tt?e identificador is array (¡ango) of tipo_objetos;

Como se puecle observar, en ambas declaraci()nes es necesario utili?ar unvalor (rango) que determine el conjünto de valores que va a tomar el tipo.En este caso el rango no se ha especificado, pe¡o debe tomarse en cuenta queal momento de asignarlo se ¡oma como un número ente¡o positivo (númcro

L'r e.rardrre. lFtE 107ó ) l l04 Jefrncn do..rregl" . rmtuf lar , rc ' , l l ¡mados bit_vector y std_logic_vector, los cuales forman parre de los tipos biry std,loglc, respectivamente. A continuación se puede obse¡var Ia fo¡ma enque se declaran esk)s arreglos.

type bit_vecto¡ is array ( rango) of blt;type std_logic_vector is array (¡ango) of std_logic;El tipo std logic es mas versátil que el ripo bit, debido a que incluye 1os

valores de alta impedancid ('Z') y no impo¡ta (-\.Como ejernplo observemos las siguientes declaracioncs de arreglostype Jrgir,* is array {o downto 0) of inlegellrype hyre is a¡¡ay t7 dormto 0) of htype dirección is array (10 to 62) of bit;

Otrc aspecto al utiliza¡ arreglos es ia faciliddrl que presentan para creartablas de ve¡dad:

type tabia is array (0 to 3, 0 to 2) ofbir;constant ejemplor tabla :: (

"00_0","01_0,,"10 0"," l I 1") ;

El arreglo declarado en este ejemplo es de dos dimensiones, ya que tieneun valor para el número binario que t()man las entradas (de 0 a 3) y otro pa-ra el número de bits de entrada y salida (dos bits de entrada y uno dc salida).Los guiones colocados ent¡e los bits separan las ent¡adas (lado izquierdo) dclas salidas.

Page 343: Manual VHDL

Apé¡di.e C. ldcDrilc¡Jorcs, ripos _v arribuk,s 339

Tipo archiao (record)

A diferencia de los arreglos, los tipos archivo están fo¡mados po¡ elementosde diferentes tipos, los cuales ¡eciben el nombre de carnpos. Cada uno cle cs_ros campos debc tener u¡r nomb¡e que permita identificarlos con facilida(ldentro dei tipo.

Es ímportante ,:lestaca¡ que el nomb¡e de ¡egistro no tiene nada que vercon un registro en ha¡dware utilizado para almacenar valorcs, ya que alrnquclos nombres son similares, en VHDL se rom¿n como conceptos distintos.

La íorma de declarar un tipo archivo es:

type idenrificado¡ is reco¡dIdentificador I tipojend reco¡d;

Manejo de archivos en VHDL

Los archivos en VHDL son necesarios para lee¡ info¡mación o almacenara¡chivos durante una simulaciírn cn VHDL. De hecho, su uso se resrringeen la práctica en simuiación.

. .Un archivo puede almacenar cuaLquier rjpo cle datos VHDL, aunqLre ladeclaraciri¡r de a¡chivos es diferentc en VHI)LSZ y VHDI_93, como se muevtra a confinuación:

rYPE ¡d¡br{ti1¡ rS F]LE o! jnreqer;

FILF norre: n {ire. ripo rS ltu].rl .r..rLiro, rrr ; sóló -i".lltL,E?¡Il,F rú¡re: mü¡e ri!¡ [Opflr n:d.] :S d.hirc.r¡,- ; só,o 1r1irl,9i

El modo en VHDL87 puedc se¡ IN o OUT pa¡a VHDI_93 es \IRITE_MODE, READ_MODE O APPEND_MODE.

Con objeto de leer info¡mación de un a¡cbivo se declara una variabiede ripo LINE. En ella se almaccna la información de totla una línea delarchivo de texto. Cuando se quiera leer la infornacitin de la siguientelínea, se guarda en una va¡iable delmismo tipo. Esta acción se realiza me-diante la liamatla funcii¡n:

readline(nombre-archivo salida, \,ariable tipo-line)

Después se debe lecr información de la variable tipo LINE, utilizando lafunción READ.

Page 344: Manual VHDL

340 VHDL: El art€ de prognmar s6ieñd dieltales

read(variable-tipo line, variable)

Una función muy útil xl t¡abaja¡ con archivos es: endfile(nomb¡e) La

cual regresa una variable booleana TRUE si se encuenrra el fin de archivo y

una FALSE en caxr cont¡a¡io.El proceso de escritura es opuesto al prxeso de lectura. Prime¡o se debe

n,andar la información deseada a una variable tipo LINE mediante la si'guienre tunción:

write( variable_tipo_line, variable)

Luego se escribe la línea al archivo de salida

Writeline (nomb¡e archivo-salida, variable-tipo-line)

Las funciones para trabaja¡ archivos se encuentran en el paquete textio,qrre se localiza en la librerla std. Recuerde que la librería std se carga siem-pre que se compila un programa en VHDL.

Ejemplo: diseñat un programa para leer datos de un archivo y escribillosen un archivo de salida en lorma inversa.

El archivo de entrada puede tener

baskethockey

En e1 archivo de salida se genera5.500000€+00 454345 soccer6.700000e+00 512466 basket5.600000e+00 847389 hockey

454345 5.55324ó6 6.7

84?189 5.6

l I tsE std, text io.aI I ;

2

3 EITfTY IEXI IS END;

5 ¡RCIIITECTTRE sinple @ rext IS

6 Frr,E archivo ent¡ada: fÉc¡ oPBN READ lóDE IS datos ln ;

? FiI¡ drchivo-saLida: ¡BT OPEI¡ llRIlE.üÓDE lS dalos.out ;

8

9 BEGIN

10 PROCESS

Page 345: Manual VHDL

Apéndic. C. Idenriffcado.es, dpc y ar¡ibütoG ul11 !¡a¡I¡tl¡¡! brf_in, buf_out: &¡¡tt,12 vüUra¡¡ nc'llb¡e: g¡¡a!Ít (X ro 2O);13 '\¡¡¡¡j¡At¡! mnr lttMR;14 v¡¡ur8!ü aLato: R!¡¡.;L5 g¡oor

16 rGIL! tol¡ endfi e rdr chivo_er L rdatá )11 ¡oqP18 fFodl irr { ¿ rchj vo_enrrada, bu¡_in);19 rpáo buf_in, nollbre) ;20 read (irfjD. ruñ);21 read (buf_ln, alato),22 l i re(buf_our,dato);23 mire(buf_óur, , " ) ;24 Mile (buf_our, n!In) ;25 Mibe(buf_our, ) ;26 write (buf_our, no¡üre ) ;27 , rfi ret ine ( archiwo__rsat ida, buf_our ) ;28 EID ¡'OP;29 l/.|FI i30 EtD P'OC!g8;31 EID si¡rplet

En la línea ó se decla¡a el archivo de lectura y en la lfnea 7 el de escritu_¡a. En la llnea 11 se declaran dos va¡iables de tipo LINE para maodar escri_bir y leer de ellos.

En las llneas 16 a 28 se encuentra un ciclo, el cual se ejecutará mient¡asno se encuentre el carácte¡ de ffn de a¡chivo de d¿tos.in.

La línea 18 lee una k¡rea de archivo de entrada y la almacena en la va"riable 64l_in, que es de típo LINE. Posteriormente se leen diferentes datos deba/ ín y se almacenan en la¡ rariables nomür¿ , num y dnto,

Po¡ último se mandan escribir en forma invers a ála varíable htf_uu uti.lizando la función WRITE.

En la llnea 28 se e¡críbe eo el a¡chívo d¿ros.oIrt la información de á*f_olt

Page 346: Manual VHDL

Apéndice D

Hojas técnicas delCPLD Cy7C372i

Ca¡acterísticas del circuito

64 nac¡oceldas distribuidas en cuatro bloques lógicosJ2 rerminaies de entrada / salide6 entradas dedicadas, incluycn,-1o 2 rerminalcs de relojReprogramlble en sistema (lsRrrR)

TLcnolrgía flashlnterface JTAG

Alta velc¡cidaclF¡1a¡ = 125 MHzTp¡ = 10 nsTs:55n"T.¡ = 6.5 ns

Tótairnenr. cumporrl- le .on lt IDisponible en encapsulados PLCC de 44 rerminales y CLCCCompatibilidad en rc¡minales ct¡n el Cy?C37li

Descripción funcional

El ci¡cuito CY?C]72i es un disposirivo lógico programable complejo (CPLD)reprogramable en sístema (lSR) y es parre de la familia FLASH.ITOiMR deCPLD de alta funcit¡nalidad y alta velocitlad. Como ¡odos los miembrosde la familia FLASHITOi, el Cy?Cj72i está diseña,:lo para brindar un fáciluso y elta funcionalidad.

Como todos los dispositivos de la famitia FLASHI?Oi, el Cy?C37Zi escléctrica¡nente borrable y reprogramable en sistema (ISRMR), lo cual introdu_ce en una misma arquitcctura, tanto ai circuito como al grabador, reduciendo

Page 347: Manual VHDL

344 VHDI-: El ,rtc de procr¿mr¡ si$emas digital.s

costos significalivamente. La función ISR de Cyp¡ess, cs implemeniada a t¡¡-vés de 4 terminales de una interface scrial. Los datos son desplazados y

maneja,:los (entrada y salida) a través de las tcrminales SDI y SDO tespecti-

valDc¡rte, usanJo la rcrrninal clel voltaje de prograr¡aci¿)D (Vpp).

Las 64 macroceldas dentro del circuito CY7Cl72i están divididas en

cuatro bloqucs lógicos. Cada bloque íncluye 16 macroceldas, a 72 x 86 arre-glos de productos de términos.

Los bloques Ligicos den!rc de la a¡quitectura FLASHIT0i, son conecta'clos a t¡avés de un iecu¡so extremedamcnte rápido llamado PIM (Matriz deInterconexión Programable).

Como todos los miemb¡os de la familia FLASHITOi, el CY7Cl72i es

rico en recursos. Cada dos nac¡oceldas en el dispositivo cuentan con termina-les de E/S, resultando un rotal de 12 terminales de E/S del circuito. Aclemás d€

cuatro entradas dedicadas y ,.1os cntradas de relolFinalmente, entrc las caracte¡ísticas del CY?Cl72i se encuenrra un sen-

cillo modelo de tíempos. Conro en otras arquitecturas de CPLD de alta fun-

cionalidad, no presenta g¡andes ¡etardos en la velocidad del circuito, así

cono efectos fanout, retardos de inte¡conexiítn o ¡etardos de expansión.

Dependíendo delnúmero de ¡ecursos utilj?ados o del tipo de aplicaciírn, losparámctros de tiempo en el CY7Cl72i suelen ser los mismos

Page 348: Manual VHDL

Apéndicc D. Hojas técnic¡s del... 345

Guía d" seleccíón

Conñguración de terminales

E/Ss / SCLK

E/S6

EO

E1¡r'pp

GND

CLKO/E2

US8

E/S9

E/S27 /SD1

E 526

Els24

cLKl/15

GND

I4

T3

Els22

E/S21

9P R$3 s

$ü=DD

e¡,

üu-

?c)7 21- r25 7C372i, 100 ?c3?21- a3 7C]72i-66

Ml¡imo Ser-up rs (ns)

Tiehpo máxnno Jc salidáde la señal de rel(i tcr:)

ic

5.5

6.5

2E0

12

ó.0

ó.5

l5ir

15

li

8

25!.

20

lc

10

250

l0

l0

t0

115

: 's*9" ' laqaqQ

76

8

9

10

1l

'12

f3

38

36

35

34

33

32

31

17 18 19 20 2.1 2? 23 24 25 26 27 2A2g

Page 349: Manual VHDL

u6 VHDL: El ¡re de procanar sis¡em¡s digilles

Descripción funcianal

Bloques lÁgícosEl número de bloques lógicos distingue a cacla niembro de la familía FLAS-H l70i. El circuito CY7C372i incluye cuatro bloques lógicos. Cada bloque esconstruido de un a¡reglo de productos de términos y 16 macroceldas.

Arteglo de Prodrctos de t&ninos

El arreglo de productos de términos en los bloques lógicos de la familiaFLASH37Oi incluyen 36 ent¡adas desde el PIM y 86 s¿rlidas de los p¡oductosde términos al producto de térninos localizador. Las 16 entradas del PIM es-tán disponibles en polaridades negativas y positivas, haciendo un a¡rcglo de72 x 86. Es¡e ar¡eglo tan lá¡go en cada bloque ltlgico permite que una fun-ción compleja sea implemenrada en un sencillo pavr dentro del dispositivo.

Producto de términos localizado¡

El producto de términos localizador, es un recurso dinámico y configürableque desplaza p¡oducros de términos a las macroccldas que los requieren. Cual-quier número de productos de términos entre el0 y 16 pueden ser asignadosa cualquiera de las macroceldas contenidas en los bloques lógicos (esto es lla-mado ...). De aquí que los productos de términos puedan se¡ mezclados enm(rltiples macroceldas. Note que la implcmcntación de los productos de tér-minos en las mac¡oceldas son rcalizadas por el softwrre y son trarxparcnrespara el usuario.

Herramientas de desarrollo

Ei software de desarrollo para el CY7C3?2i está disponible en las ve¡sionesde Cypress Varp2MR, VarpZiMR, y \larp3MR. Todos estos producos se basanen el lenguaje esrándxr VHDL. Cypress rambién cuenra con el soporte paraotras herramientas tales como ABELNIR, CUPLVR, y LOGIC MR.

Rangos Máximos de opención

Temperatura almacenada 55'Cr+150"C

Gmperatura ambienle con porencia aplicada

dc funcionamiento o

Voltaje DC de entrada

ie DC .le

-55'C a +125 "C

{.5V a +7.0V

-{.5V a + ?.0V12.5V

Page 350: Manual VHDL

Apénclice E

Palabras reserYadasEN VHDL

A continuación se muestra una lista de las palabras resewadas enVHDL. Como se mencionó en el apéndice C, ninguna palabra resewada sepuede usar como identificarlor de señales.

AliasAAnd

At¡ibuteBeginBlockBodyBufferBusC¿seCompoenntConfigutationConstantDisconnectDownroElseElsifEnLlEntit)

ExitFileForFunctionGene¡areGenedcGroupGuardedIflmpureInInertialInoutIsLabelLibraryLindageLite¡alI-oopM"pModNand

NextNo¡

NotNullofOnOpenO¡OthersOutPackagePo¡tRrstponedProcedureProcessPu¡eRangeReco¡dRegiste¡RejectRem

RetumRolRo¡SeiectSeve ty

SharedSlasllSraSrlSubrypeThenTi)TiansportTl.peUnaffectedUnitsUntilUseVa¡iableWaitVhenVhiieWirhXnorXor

Page 351: Manual VHDL

VHDL, El arte de proermú sistems disirales

La lírta de palabras resewadas por el lenguaje se tomó del estánda¡ IEEEStd 10?6 -1993 del Monunl de Referencia del Lenguaje l4lDL, impreso por elInstituto de Ingenieros Eléctricos y Electrónicos en 1994.

Sección E2: Oper¿do¡es deñ¡idos en VHDL según su orden de pre-cedencra

Page 352: Manual VHDL

Apenclice F

Operadores definidos enVHDL según su orden de

precedencia

Operador DesÜiplion Tipos de operandos Rcsultado

Entcro operador cnrcroReal operador entcrcr

Bir, boc¡Leano, vecrores ile brts

Real op físico

Numérico op nunérico

Nu'¡énco op numérico

Elemento op clemento

EntcroReal

Ídem opcrando

EnteroRealFísicoFisicoFísicoFGico

EnreroRealFísicoFísicoFísico

Entero

Ídem operandos

Mod

Dirisiarn

&

Continúa

Page 353: Manual VHDL

350 VHDL, El a¡re de prcerámr sistemas digitalcs

Opemdot Descripción Tipos de ope¡mdos Resukado

sll

srl

¡ol

Dcsp. t¡sico izquierdo

Despl. Lósico derecho

Despl. Arit. izqüierdo

lgual que

Mayor o igual que

y Lógica

o lógica

y lóCica negada

or exclusiva nesada

Vecto¡es de bits op entero

Vector dc birs op ente¡o

Vector .lc bits op enrero

Vector de bits op entero

Vector de biti op entero

No archivo op no a¡chilo

No archivo op no a¡chivo

No archivo op no erchivo

No archivo op no archivo

No archivo op no archivo

No árchivo op no archivo

Bir,booleano, bit vector opbit, booleano, bit vector

Bit,booleano, bit vector opbit, booleano, bit vector

Bit,booleano, bit vector opbit, boole¡no, bit vector

Bit,booleano, bir vector opbit, booleano, bit-vector

Bit,'booleano, bit_vecror opbrt, booleano, bit vecto¡

Bit,booleano, bit vector opbit, booLe¡no, bir vector

Vector de bits

Vector de bits

Vcctor de bits

Vector de bits

Booleano

Booleano

Booieano

Booleano

Booleano

Booleano

Íd.* op..andos

íd.m opera.'do"

íd.* operandos

Íd.- opetatrdo,

íd.m ope.a.rdn"

íd.m ope.atrdot

Fuente de infornación: The IEEE Esránda¡ VHDL Language Referencc Manual. IEEE Std1076-1987, 1988.

Page 354: Manual VHDL

Indice analítico

A¡chivos xxir', l 19-14IArquitcctura (¿r.n¡¡c.¡"r¿), 46-55

esr¡uchtral 5lfuncioDal,47,49

¡o. flüjo de Llanr,49,52est¡u.rür¡ I ,5 l

(dü¿r), 298.299de cob¡ue¡ras pn)sranables, l-4,15.18,21ló8ico genérico (cAL), 4,9,19

Asien¿ciones dobtcs, 8?Búfier t.!erado, 71C¡ita ASM

oe\.ñpcr 'n j L j /

diseño ¡rediatrte VHDL, 166-171en.omparacLón con máqüi¡a de esr¡do, 159

Uircuito AMD 2909descripcñn, 199-200diséño y p.ogran¡cian de conponenres, 201.208

codiffcado.cs, s?-88Compardor de rnagnuud, 70,?1Conpilación de uñ diseño, lló-l19Compii¡dores lósicos, 20Compo¡ente (.d¡o¡e¡r, 5),20r,2a6,162.264Configura.ñn (cdl¡8!'¿.Dn, J?Coitadore$, 101-104

.o¡ ¡eser y.fga e'r p¡raleto, 101Conúoldores, 15'l-151

¿lgorit¡ros.lc, 1ó5¡liseño, 162,166

CPLD !éase disposLrivos lóercos progtamables

secuenciales, 4ó, 50, 69-75Decodificadores, 8 l-8 7

BCD a decimal, 8J,85BCU a disF]¡y de sierc sesme¡tus, 85-8?

Dseño jc.árquico, 51, 197-208, 261-2 ?0MerodologÍa .le ¡lisciio, 198

Disposirivos lógicos prosramables, 2,8,11Dispositivos lógicos pros.amables

cohplejos. 2.4,1 l -15,21Eclac¡ones boole¡nas, 5 1E¡tidad (e¡rb),.17.46

decla¡ación de,40discÍro uriliz¡ndo vecto¡es, 42diseño urilirahdo librerlrs y paqüetes, 44integración de, 121-12?

Eve¡tos (¿o€nr, 96, 100flip-flop, 94,98FPGA uéase arreglos de conpuetrus progranables

CAL !¿dse aregLo l¿)gico eenéricoG¿fua,312,315lde¡tificadores, 42, ll3ISR proeramador, 127-J29Lenguaje Je descripcnín en hardware

VDHL,25,28,37

desventajás, 27.28en la ¡ctualidad, 28lentajas,2ó-27

HDL,25

ce,ción de, 208-210declaración de,45

anbienre de desaÚolb, 18-19canpos de aplica.ión, 2l-24cohÍ'añías de soporte, 28-11,12

hé¡odo ú¡dicional de diseño, 20,22M¡crcceld¡s, 12,14Máquina de cstado ASM, 154-159

bloque de estddo, 154nrrque oe oe.rrun, l ) )diseño con VHDL, 166

Page 355: Manual VHDL

j52 indre ¡¡lr¡co

Mic¡op¡Gesadorcs, 210-11 Redes 6ociarivas,294-29?prcgramación de, 211-224,23ó-2ól tusirn(}s, 98-100

Modos, l9 Repo¡re, archivo de, J22-327buÍlet,39 Sem¡-custom, 3ir,39 SeñaI Gisn¿l), 54írcut,39 Sínresis, l2ltu'39 Sisrena secuencial, 9l-94

MuliiplNrB, 75 sl¡rcrono, 105or¡os (oósrt, 75 Sisrema €mbeb¡do, 229.23?tipos tósicos estánda¡ 7ó clasiffcación, 235-236

Ne¡l¡r¿, 53 diseño, 2ll-235No inpo¡ta (dorr car¿) o¿ase valores no impona, Sumadores ?8Nova simulado¡, 120 tc¡oloslas de fabr¡caciónObjeros de datos, l3l'.135 de circuiros intesradG, 3

archivc, 135 Tipo de daros, 36, 39,40constantes,333 archivo. Geco¡d),variables,335 ' arcglo,.l38

Operadores bír,4Aaútméricos, 82 bit-\)et¡ot, 40, 42, 43 . ..r!::;lósicos, ó3 b@hr¡,4Arelacionales, 73 compuesros,336

Optimización, 323 """-".*f,

tOA,:¡¡PALASM,2I escala¡ 13ó

Paquet€ (¡¿¡..l¿8e), 37, 44, l2Z lísicos,331cuerpo del, 3? ht cer,4Adeclaración,44 reales,33?n¡¡ne¡n_s¡4 46 Unidad€s d€ di¡eño, 32¡.rern bit, 46 p.ima¡ias, l?r¡¿_dn¡n, 46,83 ecundarias,l7

PLD @a! dispsitivs i,isico! pros¡anabl€s Valores no inpona (¿n¡ c¿ie), 97Prdeso (p@6t, 48, 69 Variables, 335Proerama de alto nivel (top l&eL) , 197 , Zú, 207 VHDL véae lenguaje de desripción en ha¡deú€

dileño del 198,223,264.26ó VarpR4, 3ll-312P'oiecr,3l3 Instalación, li 1-332Puenos, J9Redes neuronales arriñciales, 27.1-279

aprendiaje en las,

Esl,a obm 3€ tenninó de imprinir en ¡bril del 2006' e¡ 16 taller€s d€ Fusión Swicloc Gtáiico€

Miguel Ne8Éle No J4 ' 40-Col. NiÍo6 Héro€s C.P 03440 México D F