Está en la página 1de 128
tt —— > eat. VHDL El arte de programar Seat Cel Feil David G.Maxinez * Jessica Alcala (Fe a} ‘ Contenido Acerca de los autores . Prologo xi 1. Estado actual de la légica programable . 1 1.1 Dispositivos l6gicos programables (PLD)... 0242222000005 weed 1.2 Dispositivos l6gicos programables de alto nivel de integraci6n ........+. 13 . VHDL: su organizacién y arquitectura . |. Disefio l6gico combinacional mediante VHDL 1.3 Ambiente de desarrollo de la logica programable . 1.4 Campos de aplicacién de la logica programable . 15 La lgica programabley ls lenguajes de descripcisn en hardware (HDL) 25 1.6 Compatifas de soporte en hardware y software . i Ejercicios . 2.1 Unidades bésicas de disefio...... 2.2 Emiidad 13 Dedleraita de cidade ; 24 Disefio de entidades utiizando vectores . 25 Arquitecturas (architecture) Ejercicios 3.1 Programacién de estructuras bésicas mediante declaraciones concurrentes . 61 3.2 Programacién de estructuras bésicas mediante declaraciones secuenciales. . 69 Bjercicios .. . vi Contenido _, 4: Disefio l6gico secuencial con VHDL . 4.1Disefio Iégico secuencial .....-- 4.2 Flip-Flops cond femas secuenciales sincronos . Ejercicios ..... 5. Integracién de entidades en VADL ....... 1B 5.1 Esquema bésico de integracién de entidades . 1B 5.2 Integraci6n de entidades basicas ........ ++ 128 Ejercicios -147 6. Disefio de controladores digitales mediante cartas ASM y VHDL . «153, 6.1 El algoritmo de la maquina de estado (ASM) . «1S4 6.2 Estructura de una carta ASM ....... ; «+ 156 63 Cartas ASM en comparacin con las méquinas de estado = 159 6.4 Disefio de controladores mediante cartas ASM - 162 6.5 Disefio de cartas ASM mediante VHDL ++ 166 Bjercicios «22.2... eee eeeeeee cee - 180 7. Disefio jerarquico en VHDL « 197 7.1 Metodologfa de disefio de estructuras jerdrquicas . 2198 7.2 Anilisis del problema y descomposicién en bloques individuales de la estructura global. .....,. ++ 200 7.3. Disefio y programacin de componentes ‘o unidades del circuito +++ 201 74 Creaci6n de un paquete de componentes .- +++... 000sseeeeeeeee+ + 206 -207 7.5 Disefio del programa de alto nivel (Top Level) 7.6 Creacién de una librerfa en Ww ekve Ejercicios i 25 8. Sistemas embebidos en VHDL . .229 8.1 Sistemas embebidos ..... 229 4 8.2 Disefio de un microprocesador . - BT 8.3 Disefio jerdrquico ....... 261 Bjercicios 268 9. Redes neuronales artificiales y VHDL a 23 9.1 ¢Qué es una red neuronal artificial? 25 9.2 Aprendizaje en las neuronas artficiales . 19 9.3 Aprendizaje por error minimo 291 9.4 Redes asociativas ....-.-+ 294 Bjercicios ..... +308 Contenido Vii Apéndices A. Herramientas de soporte para la programacién en VHDL. .31 B. Instalacién del Software Warp 331 C. Identificadores, tipos y atributos . 333 D. Hojas técnicas del CPLD CY7C372i «2. 0200e000 eee ceeteeeeeeeeee 343 E. Palabras feservadas en VHDL 347 F. Operadores definidos en VHDL segtin su orden de precedencia .......... 349 Indice analitico 351 Prélogo Hoy en dia, en nuestro ambiente familiar o de trabajo nos encontramos ro- deados de sistemas electrénicos muy sofisticades. Teléfonos celulares, com- putadoras personales, televisores portatiles, equipos de sonido, dispositivos de comunicaciones y estaciones de juego interactivo, entre otros, no son mds que algunos ejemplos del desarrollo tecnolégico que ha cambiado nuestro es- tilo de vida haciéndolo cada vez mas confortable. Todos estos sistemas tie- nen algo en comin: su tamaiio, de dimensiones tan pequefias que resulta in- creible pensar que sean igual o més potentes que los sistemas mucho més grandes que existieron hace algunos afios. Estos avances son posibles gracias al desarrollo de la microelectrénica, la cual ha permitido la miniaturizacién de los componentes para obtener ast mayores beneficios de los chips (circuitos integrados) y para ampliar las po- sibilidades de aplicacién. La evolucién en el desarrollo de los citcuitos integrados se ha venido per- feccionando a través de los afios. Primero, se desarrollaron los citcuitos de ba- ja escala de integracién (SSI o Small Scale Integration), después los de mediana escala de integracién (MSI o Medium Scale Integration) y posterior- mente los de muy alta escala de integracién (VLSI o Very Large Scale Integra- tion) hasta llegar a los circuitos integrados de propésito especifico (ASIC). Actualmente, la gente encargada del desarrollo de nueva tecnologfa perfecciona el disefio de los circuitos integrados orientados a una aplica- cién y/o solucién especifica: los ASIC, logrando dispositivos muy potentes y que ocupan un minimo de espacio. La optimizacién en el disefio de estos chips tiene dos tendencias en su conceptualizacién. Prailogo La primera tendencia es la técnica de full custom design (Disefio total- mente a la medida), la cual consiste en desarrollar un citcuito para una apli- cacién espectfica mediante la integracién de transistor por transistor, En su fabricacién se siguen los pasos tradicionales de disefio: preparacién de la ablea o base, el crecimiento epitaxial, la difusin de impurezas, la implantacién de iones, la oxidacién, la fotolitograffa, la metalizacién y la limpieza quimica. La segunda tendencia en el disefio de los ASIC proviene de una inno- vadora propuesta, que sugiere la utilizacién de celdas programables preesta- blecidas e insertadas dentro de un circuito integrado. Con base en esta surgié la familia de dispositivos légicos programables (los PLD), cuyo nivel de densidad de integracién ha venido evolucionando a través del tiempo. Iniciaron con los PAL (Arreglos Logicos programables) hasta llegar al uso de los CPLD (Dispositivos Légicos Programables Complejos) y los FPGA (Arre- glos de Compuertas Programables en Campo), los cuales dada su conectiv dad interna sobre cada una de sus celdas han hecho posible el desarrollo de circuitos integrados de aplicaci6n especifica de una forma mucho nxés facil y econémica, para beneficio de los ingenieros encargados de integrar sistemas. El contenido de este libro se encuentra orientado hacia este tipo de disefio. Nuestro objetivo es. brindar al lector la oportunidad de comprender, manejar y aplicar el lenguaje de programacién més poderoso para este tipo de aplicaciones: VHDL. El lenguaje de descripcién en hardware VHDL es considerado como la méxima herramienta de disefio por las industrias y universidades de todo el mundo, pues proporciona a los usuarios muchas ventajas en la planeacién y disefio de los sistemas electrénicos digitales. Esta obra ha sido preparada especialmente pata aquellos estudiantes ¢ in- genietos que desean introducirse en el manejo de este lenguaje de programa- cin. El libro se encuentra redactado de una manera muy clara y accesible para guiar al lector paso por paso en los primeros cuatro capftulos. Para aque- Ilas personas que ya tengan conocimientos sobre el tema, hemos incorporado una serie de libros recomendados con mayor profundidad y complejidad. Uno de los objetivos del libro es proporcionar al estudiante y al ingeniero electrénico o de computaci6n una forma facil y practica de integrar aplicacio- nes digitales ‘tilizando el lenguaje de descripcién en hardware VHDL. Tam- bién esperamos motivar al lector para que comience el desarrollo ¢ integracién de sistemas electrdnicos a través este lenguaje, con la visién y oportunidad de crecer como microempresario en el desarrollo de sistemas miniaturizados, los cuales pueden ser facilmente comercializados, y generar asf fuentes de empleo en beneficio de la sociedad. Este libro es recomendable para un curso introductorio de VHDL, tanto a nivel técnico como a nivel universitario dado que para interpretar y entender los ejercicios sobre los que se realiza nuestra explicacidn sélo se requiere como antecedente un curso basico de disefto légico que involucre el conocimientos lea Prélogo Xi de los temas de compuertas l6gicas, minimizaciGn de funciones booleanas, cit- cuitos combinacionales y citcuitos secuenciales. Para nosotros es importante que los conocimientos que se adquieran en la lectura de este libro. puedan ser trasladados de manera inmediata hacia la prdctica o aplicacién. Por ello, hemos incluido algunos datos de orientacién para que el lector sepa cémo conseguir las herramientas de disefio y donde conseguir de manera oportuna los circuitos PLD para integrar sus aplicacio- nes (véase el Apéndice A). También hemos incluido demostraciones del pro- grama WARP en el CD que acompaiia al libro. Organizacién del libro En resumen, esta obra estd estructurada en nueve capitulos y cinco apéndi- ces. En el capitulo uno se describe de forma cualitativa el estado actual de la I6gica programable: sus antecedentes, ventajas, desventajas y perspectivas, ademas proporciona la informacién referente a las comparifas que brindan el soporte tanto en software como hardware, Este capitulo es completamente informativo y su finalidad consiste en familiarizar y adencrar al lector en es- ta érea de desarrollo. En el capftulo dos (VHDL: su organizacidn y arquitectura) se presenta la estructura bisica del lenguaje de descripcién en hardware VHDL y se anali- zan los médulos bésicos de disefio: sus palabras reservadas, los tipos de datos, asf como el manejo de las diferentes arquitecturas o estilos de disefio empleados en el desarrollo de un programa. En el capitulo tres (Diserio légico combinacional mediante VHDL) se des- cribe Ia forma de emplear declaraciones concurtentes y secuenciales dentro de un programa mediante la solucién de circuitos combinacionales indivi- duales tales como los multiplexores, los decodificadores, los codificadores y sumadores, entre otros. Es importante resaltar que en este capitulo y en los subsecuentes no se presenta la solucién éptima para un problema dado. Por el contrario, cada problema se aborda de diferente manera con el tinico fin de presentar al lector el uso cada vez mayor de nuevas palabras reservadas por VHDL en el entendido que la mejor solucién de un problema se da por sf solo y llega cuando el lector conoce més y més formas de programar. En el capitulo cuatro (Diserio logico secuencial con VHDL) se realiza una sintesis de disefio de los principales circuitos secuenciales: flip-flop, registros de corrimiento, contadores, manejo de diagramas de estado etcétera. Todos ellos se analizan por separado haciendo énfasis en las instrucciones encargadas de sincronizar los eventos que se desarrollan en estas entidades de disefio. El capitulo cinco (Integracién de entidades en VHDL) detalla la forma en que se unen diferentes bloques légicos, es decir, se describe cémo se integran dentro de una sola entidad varios circuitos, sean combinacionales y/o se- Prologo cuenciales, manejados en su programacién de manera individual o a través, exclusivamente de la relacién entrada/-salida. En el capitulo seis (Disefio de controladores digitales mediante cartas ASM y VHDL) se describe la programacién de algoritmos digitales (controladores), mostrando al lector la forma de como brindar soluciones a un problema dado a través del desarrollo y conceptualizacién de un algoritmo, cuya descripcién se realiza a través de la carta ASM. En este capitulo el lector echa mano de todos los conocimientos adquiridos en los capftulos previos, sorprendiéndose de la fa- cilidad con la cual se programan sistemas digitales complejos. En el capftulo siete (Diseri jerdrquico en VHDL) se presenta la forma de jerarquizar o dividir un problema en pequefios subsistemas que pueden ana- lizarse y simularse de manera independiente para posteriormente entrelazar- los mediante un programa de alto nivel denominado Top Level. Esta forma de programaci6n es muy utilizada en VHDL ya que permite crear nuevas li- brerias de trabajo, que el disefiador puede almacenar para posteriormente in- cluir en nuevos desarrollos. En el capftulo ocho (Sistemas embebidos en VHDL) se incluye la parte te6- rica de los sistemas embebidos asf como su ciclo de desarrollo mediante el di- sefio de un microprocesador, describiendo en detalle cada uno de sus médulos y la forma de programarlos mediante el disefio jerarquico o Top Level. En el capitulo nueve dejamos el contexto de programacién basica y abor- damos la investigacién realizada sobre la programacién en VHDL de las re- des neuronales artificiales. Esto tiene por objetivo bindar al lector una breve introduccién a un nuevo campo de desarrollo ¢ investigacién, debido a que actualmente es posible desarrollar sistemas inteligentes a nivel de hardware ¢ integrarlos en un circuito integrado, ya sea un CPLD o un FPGA. Finalmente, los apéndices del libro se encuentran estructurados de la siguiente manera: en el apéndice A (Herramientas de soporte para la progra- macién en VHDL) se describe el uso del software WarpR4 de Cypress Semi- conductor, utilizado en la simulacién de todos los ejercicios y problemas de este libro, ademas se incluyen los datos del distribuidor del software y de los circuitos integrados. El apéndice B contiene la informaci6n sobre cémo ins- talar el software en las diferentes plataformas tecnol6gicas. El apéndice C proporciona los principales identificadores, tipos y atributos que se manejan en VHDL, asf como la sintaxis utilizada en cada declaracién. En el apéndi- ce D presentamos los datos técnicos del circuito CPLD CY3721-66]C de Cy- press Semiconductor, en el cual fueron grabados los disefios presentados en este libro. En el apéndice E incluye una lista de palabras reservadas por VHDL con el fin de que el lector pueda identificarlas facilmente y, por tlti- mo, en el apéndice F se incluye una lista de operadores definidos en VHDL segiin su orden de precedencia. Capitulo 1 Estado actual de la légica programable Introduccién En Ia actualidad el nivel de integracién alcanzado con el desarrollo de la microelectronica ha hecho posible desarrollar sistemas completos dentro de un solo circuito integrado SOC (System On Chip), con lo cual se han mejo- rado de manera notoria caracteristicas como velocidad, confiabilidad, consu- mo de potencia y sobre todo el érea de disefio. Esta dltima caracterfstica nos ha permitido observar dia a dia cémo los sistemas de uso industrial, militar y de consumo han minimizado el tamafio de sus desarrollos; por ejemplo, los teléfonos celulares, computadoras personales, calculadoras de bolsillo, agen- das electrénicas, relojes digitales, sistemas de audio, sistemas de telecomuni- caciones, etc., no son més que aplicaciones t{picas que muestran la evolucién de los cireuitos integrados también conocidos como chips. El proceso de miniaturizacién de los sistemas electrénicos comenz6 con la interconexién de elementos discretos como resistencias, capacitores, resis- tores, bobinas, etc., todes colocados en un chasis reducido y una escasa separacién entre ellos. Posteriormente se disefiaron y construyeron los pri- meros circuitos impresos —aiin vigentes—, que relacionan ¢ interconectan los elementos mencionados a través de cintas delgadas de cobre adheridas a un soporte aislante (por lo general baquelita) que permite el montaje de es- tos elementos [1]. Mas tarde, el desarrollo del transistor de difusién planar, construide du rante 1947 y 1948, permitié en 1960 la fabricacién del primer circuito inte- grado monolftico. Este integra cientos de transistores, resistencias, diodos y capacitores, todos fabricados sobre una pastilla de silicio. Como es del cono- cimiento general, el término monolitico se deriva de las raices griegas 2 VHDL: El arte de programar sistemas digitales “mono” y “lithos” que significan uno y piedra, respeetivamente; por tanto, dentro de la tecnologia de los circuitos integrados un circuito monolitico es- té construido sobre una piedra Gnica © cristal de silicio que contiene tanto elementos activos (transistores, diodos), como elementos pasivos (resisten- cias, capacitores), y las conexiones entre ellos [1]. La fabricacién de los circuitos monoliticos se basa en los principios de materiales, procesos y disefio que constituyen la tecnologia altamente desa- rrollada de los transistores y diodos individuales. Dicha fabricacién incluye la preparacién de la oblea o base, el crecimiento epitaxial, la difusién de impu- rezas, la implantacién de iones, la oxidacién, la fotolitografia, la metalizacién y la limpieza quitnica [1]. La integracién de sistemas se ha ido superando a medida que surgen nite- vas tecnologfas de fabricacién. Esto ha permitido obtener componentes estdndares de mayor complejidad y que brindan mayores beneficios. Sin em- argo, el desarrollo de nuevos productos requiere bastante tiempo, por lo cual s6lo se emplea cuando se necesita un alto volumen de produccién. Una forma mas répida y directa de integrar aplicaciones es mediantela | logica programable, la cual permite independizar el proceso de fabricacién del proceso de disefio fuera de la fabrica de semiconductores. Esta idea fue desarrollada por Hon y Sequin [2] y Conway y Mead [3] a finales de los afios sesenta. | 1.1 Dispositivos légicos programables (PLD) Los dispositivos légicos programables (0 PLD, por sus siglas en inglés) favore- cen la integracién de aplicaciones y desarrollos ldgicos mediante el empaque- | tamiento de soluciones en un circuito integrado. El resultado es la reduccién de espacio fisico dentro de la aplicaciGn; es decir, se trata de dispositivos fa- bricados y revisados que se pueden personalizar desde el exterior mediante diversas técnicas de programacién. El disefio se basa en bibliotecas y mecanis- mos especificas de mapeado de funciones, mientras que su implementacién | tan sdlo requiere una fase de programacién del dispositive que el disefiador suele realizar en unos segundos (4). En la actualidad, el disefio de ASIC (circuitos integrados desarrollados para aplicaciones especificas) domina las tendencias en el desarrollo de apli- caciones a nivel de microelectrénica. Este disefio presenta varias opciones de desarrollo, como se observa en la tabla 1.1. A nivel de ASIC los desarrollos full y semi custom oftecen grandes ventajas en sistemas que emplean circuitos disefiados para una aplicacién en particular, Sin embargo, su disefio ahora s6lo es adecuado en aplicaciones que requieren un alto volumen de produc- cin; por ejemplo, sistemas de telefonfa celular, computadoras porttiles, cé- maras de video, etcétera. Estado actual de la légica programable 3 Los FPGA (arreglos de compuertas programables en campo) y CPLD (dispositivos légicos programables complejos) ofrecen las mismas ventajas de un ASIC, s6lo que a un menor costo; es decir, el costo por desarrollar un ASIC es mucho més alto que el que precisarfa un FPGA. 0 un CPLD, con la ventaja de que ambos son circuits reprogramables, en los cuales es posible modificar o borrar una funcién programada sin alterar el funcionamiento del circuito [4]. Categoria Caracteristicas Disefio totalmente ala * Total libertad de disefio, pero el desarrollo requiere todas las media (Full-Custom) _etapas del proceso de fabricacién: preparacién de la oblea o ba- se, crecimiento epitaxial, difusién de impurezas, implantacién de iones, oxidacién, fotolitografia, metalizacién y limpieza qui- rica [1]. Los riesgos y costos son muy elevados; s6lo se justifican ante grandes voldmenes © proyectos con restricciones (Area, veloci- dad, consumo de potencia, etcétera) [4] Matrices de puertas + Existe una estructura regular de dispositivos basicos (transisto- predifundidas (Semi- res) prefabricada que se puede personalizar mediante un cone- customégate arrays) xionado espeeffico que sélo necesita las diltimas etapas del proce- 80 tecnoligico. ‘= El disefio est limitado a las posibilidades de la estructura prefa- bricada y se realiza con base en una biblioteca de celdas preca racterizadas para cada familia de dispositivos[ 4) Celdas estiindares pre- © No se trabaja con alguna estructura fija prefabricada en particu- caracterizadas (Semi-__lat, pero s{con bibliotecas de celdas y médulos precaracterizados custonvstandard cells) _y especificos para cada tecnologia. * Libertad de disefio (en funcién de las facilidades de Ia bibliote- ca); pero el desarrollo exige un proceso de fabricacién completo 41. Légica programable + ‘Se trata de dispositive fabricados y revisados que se pueden per- (FPGA, CPLD). sonalizar desde el exterior mediante diversas récnicas de prograr macign. * El diserio se basa en bibliotecas y mecanismos especificos de ma- peado de funciones, mientras que su implementacién tan s6lore- «quiere una fase de programacidn del disposiivo, que por lo gene- ral realiza el disefiador en unos pocos segundos/4]. ‘Tabla 1.1, Tecnologias de fabricacién de circuitos integrados. 4 VHDL: El arte de programar sistemas digitales En la actualidad existe una gran variedad de dispositivos légicos progra- mables, los cuales se usan para reemplazar circuitos SSI (pequefia escala de integracién), MSI (mediana escala de integracién) e incluso circuitos VLSI (muy alta escala de integracié6n), ya que ahorran espacio y reducen de mane- ta significativa el namero y el costo de los disefios. Estos dispositivos, lama- dos PLD (tabla 1.2), se clasifican por su arquitectura —la forma funcional en que se encuentran ordenados Tos elementos internos que proporcionan al dispositivo sus caracteristicas. Dispositivo Descripeién PROM Programmable Read-Only Memory: memoria programable de sdlo lectura PLA Programmable Logic Array: arreglo ldgico programable PAL Programmable Array Logic: légica de arregios programables GAL Generic Logic Array: arreglo légico genérico crLp Complex PLD: dispositive légico programable complejo FEGA Field Program Gate Array: arreglos de compuertas pro- grambles en campo ‘Tabla 1.2 Dispositivos légicos programables. 1.1.1 Estructura interna de un PLD Los dispositivos PROM, PLA, PAL y GAL est4n formados por arreglos o ma- trices que pueden ser fijos o programables, mientras que los CPLD y FPGA. se encuentran estructurados mediante bloques logicos configurables y celdas logicas de alta densidad, respectivamente. La arquitectura bésica de un PLD est formada por un arreglo de com- puertas AND y OR conectadas a las entradas y salidas del dispositivo. La fi- nalidad de cada una de ellas se describe a continuaci6n. a) Arreglo AND. Esté formado por varias compuertas AND interconecta- das a través de alambres, fos cuales cuentan con un fusible en cada pun- to de interseccién [Fig. 1.1a)]. En esencia, la programacién del arreglo Estado actual dela Kgica programable —_§ consiste en fundir 0 apagar los fusibles para climinar las variables que no serdn utilizadas [Fig. 1.1b)]. Obsérvese cémo en cada entrada a las com- puertas AND queda intacto el fusible que conecta la variable selecciona- da con la entrada a la compuerta. En este caso, una vez que los fusibles se funden no pueden volver a programarse. Figura 1.1 Arreglos AND: no programado y b) programado. 6 VHDL: £1 arte de programar sistemas digitales b) Arreglo OR. Est formado por un conjunto de compuertas OR conecta- das a un arreglo programable, el cual contiene un fusible en cada punto de interseccién. Este tipo de arreglo es similar al de compuertas AND ex- plicado en el punto anterior, ya que de igual manera se programa fundien- do los fusibles para eliminar las variables no utilizadas. En la figura 1.2 se observa el arreglo OR programado y sin programar. b) = Figura 1.2 Estructura basica de PLD. De acuerdo con fo anterior, obsecvemos en la tabla 1.3 la estructura de los dispositivos légicos programables bésicos. Estado actual de la Kigica programable a Dispositivo Esquema basico La memoria programable de slo lectura (PROM) esté formada por un arreglo no programable de ‘compuertas AND conectadas como decodificador yun arreglo programable OR. El arreglo kigico programable (PLA) es un PLD formado por ‘un arreglo AND y un arteglo OR, ambos programables El arreglo logico programable (PAL) se encuentra formado por los arreglos AND programable YOR fijo con Kigiea de salida, ‘Tabla 1.3 Dispositivesidgicos programables. * LaPROM nose utiliza como un dispositivo légico, sino como una memo- ria direccionable, debido a las limitaciones que presenta con las compuer- tas AND fijas. En esencia, el PLA se desarroll6 para superar las limitaciones de la me- moria PROM, Este dispositivo se llama también FPLA (arreglo légico programable en campo), ya que es el usuario y no el fabricante quien lo programa, EI PAL se desarrollé para superar algunas limitaciones del PLA, como retardos provocados por la implementaci6n de fusibles adicionales, que resultan de la utilizacién de dos arreglos programables y de la compleji- dad del circuito. Un ejemplo tipico de estos dispositivos es la familia PALIE6R8, la cual fue desarrollada por la compafifa AMD (Advanced Mi- cto Devices) ¢ incluye los dispositivos PALI6R4, PALI6R6, PALI6L8, PALIORS, dispositivos programables por el usuario para reemplazar circuitos combinacionales y secuenciales SSI y MSI en un circuito. En la figura 1.3 se muestra la arquitectura interna del PALI6L8. Como se puede observar, esta arquitectura est4 formada hésicamente por circuitos combinacionales (compuertas AND, OR, buffers tri-estado e inversores), los cuales permiten la realizacién de funciones ldgicas booleanas de la forma su- ma de productos (SOP). Cada término producto especifico se programa en el arreglo AND, mientras que en el arreglo OR se realiza la suma légica de los términos que se enviaran a las salidas del dispositivo. 8 VHDL: Bt arte de programar sistemas digitales 'o 2g] Veo 78 (112 1516 1900 2304 2728 St 1,23) fi3] oO, Ta] v7 7] v6 16] vO5 (18) 7 [15] YO4 's 8 ia] vos ‘6 & 13] vo2 of fa] 04 af ly © vss [to 0-34 78 112 1516 1920 228 272 31 (6,9, 11, 13, 15,17. 19,21) Figura 1.3 Arquitectura interna del PALIOLS. Estado actual de la l6gica programable 9 1.1.2 Arreglo Légico Genérico (GAL) El arreglo légico genético (GAL) es similar al PAL, ya que se forma con arre- glos AND programable y OR fijo, con una salida logica programable. Las dos principales diferencias entre los dispositivos GAL y PAL radican en que el primero es reprogramable y contiene configuraciones de salida programables. Los dispositivos GAL se pueden progtamar una y otra vez, ya que usan la tecnologia E? CMOS (Ellectrically Erasable CMOS: CMOS borrabie eléctri- camente), en lugar de tecnologia bipolar y fusibles (Fig. 1.4). Entrada 1 => Entrada 2 C—> Entradan <=> Figura 1.4 Diagrama de blogues del arreglo GAL. Programaci6n de un arreglo GAL A diferencia de un PAL, el GAL esté formado por celdas programables, las cuales se pueden reprogramar las veces que sea necesario. Como se observa en la figura 1.5, cada fila se conecta a una entrada de la compuerta AND y cada columna a una variable de entrada y sus complementos, Cuando se programa una celda, ésta se activa mediante la aplicacién de cualquier com- binacin de las variables de entrada o sus complementos a la compuerta AND. Esto permite la implementacién de cualquier funcién (producto de términos) requerida, 10 VHDL: El arte de programar sistemas digitales re i H eet i Figura 1.5. Programacién del dispesiivo GAL. Arquitectura de un dispositive GAL Con el fin de esquematizar una arquiectura GAL, se toma como ejemplo el dispositive GAL22V10 (Fig. 1.6a)]. Este circuito cuenta con 22 lineas de en- trada y sus complementos, lo que da un total de 44 Iineas de entrada a cada compuerta AND (estas entradas se encuentran representadas por las Iineas verticales en el diagrama). La interseccién que forman las lineas de entrada con los términos producto (lineas horizontales), representa cada una de las celdas que se pueden programar para conectar una variable de entrada (0 su complemento) a una linea de término producto (Fig. 1.6b)], donde es posible apreciar la forma de obtener la suma de productos. wee oMf\2 ane ofVo wes of io °: Se: ee || est) Estado actual de la lice programable i Figura 1.62 Arguiteccura del GAL22V10. 12 VHDL: El arte de programar sistemas digitales representan las lineas iples de las puertas AND = ABC +ABC +BC + AB Figura 1.6b Realizacién de una suma de productos dentro de un GAL. Macroceldas légicas de salida. Una macrocelda légica de salida (u OLMC, de output logic macrocell) est4 formada por circuitos légicos que se pueden programar como I6gica combinacional 0 secuencial [5]. Las configuracio- nes combinacionales se implementan por medio de programacién, mientras que en las secuenciales la salida resulta de un flip-flop. En la figura 1.7 se ob- serva la arquitectura de una macrocelda del dispositivo GAL22V10, la cual cde manera general est4 formada por un flip-flop y dos multiplexores. Figura 1.7 Arquitectura de una macrocelda OLMC 22V10. Puede haber de ocho a dieciséis entradas de las compuertas AND en la compuerta OR. Esto indica las operaciones producto que pueden efectuarse en cada macrocelda. El érea punteada estd formada por dos multiplexores y Estado actual de la logica programable 13. un flip-flop; el multiplexor 1 de 4 conecta una de sus cuatro lineas de entra- da al buffer triestado de salida, en funcién de las Iineas de seleccisn $0 y SI. Por otro lado, el multiplexor de 1 de 2 conecta por medio del buffer la salida del flip-flop o la salida del buffer triestado al arreglo AND; esto se determi- na por medio de $1. Cada una de las fineas de seleccién se programa mediante tun grupo de celdas especiales que se encuentran en el arreglo AND. Los PLD de’alto nivel de integracién se crearon con el objeto de integrat ma- yor cantidad de dispositivos en un circuito (sistema en un chip SOC). Se caracterizan por la reducci6n de espacio y costo, ademas de ofrecer una me- jora sustancial en el disefio de sistemas complejos, dado que incrementan la velocidad y las frecuencias de operaci6n. Ademés, brindan a las diseriadores la oportunidad de enviar productos al mercado con més rapidez y les permi- ten realizar cambios en el disefio sin afectar la logica, agregando periféricos de entrada/salida sin consumir una gran cantidad de tiempo, dado que los circuitos son reprogramables en el campo de trabajo. 1.2.1 Dispositivos légicos programables complejos (CPLD) Un circuito CPLD consiste en un arreglo de miiltiples PLD agrupados como bloques en.un chip. En algunas ocasiones estos dispositivos también se cono- cen como EPLD (Enhanced PLD: PLD mejorado), Super PAL, Mega PAL, [6] etc. Se califican como de alto nivel de integracién, ya que tienen una gran capacidad equivalente a unos 50 PLD sencillos. En su estructura bésica, cada CPLD contiene miiltiples bloques I6gicos (similares al GAL22V10) conectados por medio de sefiales canalizadas des- de la interconexién programable (PI). Esta unidad Pl se encarga de inter- conectar los bloques I6gicos y los bloques de entrada/salida del dispositivo sobre las redes apropiadas (Fig. 1.8). 4 VHDL: El arte de programar sistemas digitales Figura 1.8 Arquitectura bésica de un CPLD. Los bloques légicos, también conocidos como celdas generadoras de fun- ciones, estn formados por un arreplo de productos de términos que imple menta los productos efectuados en Tas compuertas AND, un esquema de distribucin de términos que permite crear las sumas de los productos pro- venientes del arreglo AND y por macroceldas similares a las incorporadas en la GAL22V10 (Fig, 1.9). En ocasiones las celdas de entrada/salida se consi- deran parte del bloque légico, aunque la mayorfa de los fabricantes coincide en que son externas. Cabe mencionar que el tamafio de los bloques légicos es importante, ya que determina cudnta ldgica se puede implementar dentro del CPLD; esto es, fija Ja capacidad del dispositive. SS Figura 1,9. Bloque légico programable. Estado actual de la logica programable 15 d a) Arreglos de productos de términos. Es la parte del CPLD que identifica el porcentaje de términos implementados por cada macrocelda y el ntime- ro méximo de productos de términos por bloque légico. Esto es similar al arreglo de compuertas AND programable de un dispositive GAL22V10. b) Esquema de distribucién de términos. distribuir los productos de términos a las iante el arreglo programable de compuertas OR de un PLD. Los diferen- tes fabricantes de CPLD implementan la distribucin de productos de términos con diferentes esquemas. Mientras algunos como la GAL22V10 usan un esquema de distribucién variable (los cuales pueden variar en 8,10,12,14 0 16 productos por macrocelda), los CPLD como la familia MAX de Altera Corporation y Cypress Semiconductor, distribuyen cua- tro productos de términos por macrocelda, ademds de utilizar “productos de términos expandidos”, que se asignan a una o varias macroceldas. c) Macroceldas. Una macrocelda de un CPLD esté configurada inte; mente por flip-flops y un control de polaridad que habilita cada afin ‘cién o negacion de una expresién. Los CPLD suelen tener coi shire de entrada/salida, de entrada y ocultas, mientras que los PLD sélo tienen macroceldas de entrada/salida. La cantidad de macrocelas que contiene un CPLD es importante, debi- do a que cada uno de los bloques légicos que conforman el dispositivo se expresan en términos del ntimero de macroceldas que contiene. Por lo gene- ral, cada bloque légico puede rener de cuatro a sesenta macroceldas; ahora bien, mientras mayor sea la cantidad, mayor seré la complejidad de las fun- 1.2.2 Arreglos de compuertas programables en campo (FPGA) Los dispositivos FPGA se basan en lo que se conoce puertas, [os cuales consisten en la parte de la arquitectura que contiene tres elementos contigurables: bloques légicos configurables (cL, blogues de de los CPLD, la densidad de los FPGA se establece en ae equivalen- tesa cierto ndmero de compuertas. Por adentro, un FPGA esté formado por arreglos de bloques l6gicos con- figurables (CLB), que se comunican entre ellos y con las terminales de en- trada/salida (E/S) por medio de alambrados llamados canales de comunica- cin. Cada FPGA contiene una matriz de bloques légicos idénticos, por lo general de forma cuadrada, conectados por medio de Iineas metélicas que corren vertical y horizontalmente entre cada bloque (Fig. 1.10). 16 VHDL: El arte de programar sistemas digitales vases YO O00 0 0 a Bloques olla] {eo fe| fe | ew |e tp es olfelfel{el le] fel l@ ffo offelfeal{ealloa[{e lle Canales wozaniee offelfealfe| fo] {e [lo Bloques de es —O||e|{o}{o||o|{m[[e|fo o}fel{ellel le} le | ie lio oo 0 O00 Figura 1.10 SAvgulccord esica de un FPGA. En la figura 1.11 se puede observar una arquitectura FPGA de la familia XC4000 de la compafiia Xilinx. Este circuito muestra a detalle la configura- cin interna de cada uno de los componentes principales que conforman es- te dispositivo, Bensoeae 299005 Oooo $0599 > oO556 Interconexién 89950595 Bloques de programable jesseeees} entrada / salida 99905058 in 7 passsesss a Fy e565 onc Gea a = Bloques Iégicos Arquitectura FPGA Figura 1.11 Arquitectura del FPGA XC4000 de Xilinx. Los bloques Iégicos (Ilamados también celdas generadoras de fanciones) estan configurados para procesar cualquier aplicacién légica. Estos bloques Estado actual de la l6gica programable 17 tienen la caracterfstica de ser funcionalmente completos; es decir, permiten Ja implementacién de cualquier funcién booleana representada en la forma de suma de productos. El disefio Igico se implementa mediante bloques co- iiocidos como generadores de funciones o LUT (Look Up Table: tabla de biisqueda), los cuales permiten almacenar la lgica requerida, ya que cuen- tan con una pequefia memoria interna —por lo general de 16 bits— [6] Cuando se aplica alguna combinacién en las entradas de la LUT, el circuito la traduce en una direccién de memoria y envia fuera del bloque el dato almacenado en esa direccién. En la figura 1.12 se observan los tres LUT que contiene esta arquitectura, los cuales se encuentran etiquetados con las letras G, Fy H. C1..c4. gage B Pt Figura 1.12 Arquicectura de un bloque légico configurable FPGA. En un dispositivo FPGA, los CLB estén ordenados en arreglos de matri- ces programables (Programmable Switch Matrix 0 PSM), la matriz 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 0 CLB, o se pueden conectar por medio de vias 0 canales de comunicacién. En algunas ocasiones se pueden confundir los dispositivos de FPGA y CPLD, ya que ambos utilizan bloques logicos en su fabricacién. La diferencia entre ellos radica en el riimero de flip-flops utilizados, mientras la arquitectu- ra del FPGA es rica en registros. La CPLD mantiene una baja densidad. En la tabla 1.4 se presentan algunas otras diferencias entre una y otra arquitectura. 18 VHDL: Elarte de programar sistemas digitales Caracteristicas cPLD FPGA, Arguitectura + Similar 9 un PLD * Similar a Jos arregios de + Mis combinacional compuertas + Mas registros + RAM Densidad + Baja a media + Media a alta Funcionalidad + Trabajan a frecuencias + Depende de la aplicacién superiores a 200 Mhz (arriba de los 135Mhz) Aplicaciones * Contadores répidos + Excelentes en aplicaciones + Maquinas de estado para arquitecturas de + Légice combinacional ccomputadoras + Procesadores Digitales de Sefiales (DSP) + Diseftos con resistros SEERSEEESTIETT Basekrss ewes ‘Tabla 1.4 Diferencias entre dispositivos Iégicos programables complejos (CPLD) y los arreglos de compuertas programables en campo (FPGA). 1.3 Ambiente de desarrollo de la légica programable Una de las grandes ventajas al disettar sistemas digitales mediante dispositi- vos légicos programables radica en el bajo costo de los recursos requeridos para el desarrollo de estas aplicaciones. De manera general, el soporte basi- co se encuentra formado por una computadora personal, un grabadot de dis- positives ldgicos programables y el software de aplicacién que soporta las diferentes familias de circuitos integrados PLD (Fig. 1.13). Figura 1.13 Herramientas necesarias en la programacién de PLD. Estado actual de la légica programable 19 En la actualidad, diversos programas CAD (disefio asistido por computa- dora), como PALASM, OPAL, PLR ABEL, CUPL, entre otros, se encuen- tran disponibles para la programacién de dispositivos légicos (tabla 1.5). Compilador logico Caracteristicas PALASM (PAL Assembler: ensamblador de PAL) OPAL (Optimal PAL language: lenguaje de optimizacién para arreglos programa- bes) PLPL (Programable Logic Programming Language: lenguaje de programacion de l6gica programable) ABEL (Advanced Boolean Expression Language: lenguaje avanzado de expresio- nes booleanas) CUPL (Compiler Universal Programmable Logic: compilador universal de logica programable) Creado por la compafifa Advanced Micro Devi- es (AMD) Desarrollado Gnicamente para aplicaciones con dispositivos PAL ‘Acepta el formato de ecuaciones booleanas Usiliza cualquier editor que grabe en formato ASCIL Desarrollado por National Semiconductors ‘Se aplica en dispositivos PAL y GAL Formato para usar lenguaje de maquinas de esta- do, ecuationes booleanas de distintos niveles,ta- blas de verdad, o cualquier combinacion entre elas Disponible en version estudiantil y profesional (OPAL Jr y OPAL Pro) Genera ecuaciones de disefio partiendo de una tabla de verdad Creado por AMD Introduce el concepto de jerarqutas en sus disefios Fotmatos mltiples (ecuaciones booleanas, tablas de verdad, diagramas de estado y las combinacio- nes entre ést0s) Aplicaciones en dispositivos PAL y GAL Creado por Data YO Corporation Programa cualquier tipo de PLD (Versién 5.0) Proporciona tres diferentes formatos de entrada: cecuaciones booleanas, tablas de verdad y diagra- mas de estados. Es catalogado como un lenguaje avanzado HDL (enguaje de descripcin en hardware) Creado por AMD para desarrollo de disefios complejos Presenta una total independencia del dispositivo Programa cualquier tipo de PLD Facilita la generacion de descripciones lgicas de alto nivel Al gual que ABEL, también es xalogado como L | SS SSE “Tabla 1.5. Descripcién de compiladotes kigicos para PLD. 20 VHDL: El arte de programar sistemas digitales Estos programas —conocidos también como compiladores légicos— tienen una funeidn en comin: procesar y sintetizar el disefio légico que se va a introducir en un PLD mediante un método espectfico (ecuaciones boolea- nas, diagramas de estado, tablas de verdad) [5] Método tradicional de disefio con légica programable La manera tradicional de disefiar con légica programable, parte de la repre- sentacién esquemética del circuito que se requiere realizar y luego define la solucién del sistema por el método adecuado (ecuaciones booleanas, tablas de verdad, diagramas de estado, etc.). Por ejemplo, en la figura 1.14 se obser- va un diagrama que representa a un circuito construido con compuertas légicas AND y OR. En este caso se eligid el método de ecuaciones boolea- nas para representar st funcionamiento, aunque se pudo usar también una tabla de verdad. ao—e{ oo] bo beac a elaiiaata 89 ‘Figura 1.14 Obtencién de las ecu: Como se puede observar, las ecuaciones que rigen el comportamiento del sistema se encuentran derivadas en funcién de las salidas fl y £2 del circuito. Una vez que se obtienen estas ecuaciones, el siguiente paso es introducir en la computadora el archivo fuente o de entrada; es decir, el programa que con- tiene los datos que permitirén al compilador sintetizar la légica requerida. Tipicamente se introduce alguna informacién preliminar que indique datos como el nombre del disefiador, la empresa, fecha, nombre del disefio, etc. Luego se especifica el tipo de dispositive PLD que se va a utilizar, la numera- cidn de los pines de entrada y salida, y las variables del disefio. Por tilrimo, se define la funcién légica en forma de ecuaciones booleanas o cualquier forma- to que acepte el compilador. Estado actual de la I6gica programable 21 En la figura 1.15 se observa la pantalla principal del programa PALASM, en el cual se compilaré el disefio de fa figura 1.14'con el fin de ejemplificar la metodologfa que se debe segui Te TC TV [inout POS Fite Device PRLIGLE Fa edit PS \ weno Fo pmuesne F6 Software Set-to WiNooW FA View Deto FS Supplementary F9—DataBodk F10 Help | EY MovEMEMS > = not Field Sends) = last fel ‘mus < a1 ok Figura 1.15 Pantalla principal de PALASM. La forma de introducir el disefio se muestra en el listado 1. Nétese que las palabras reservadas por el.compilador se representan con letras negritas. ‘axe ‘EJEMPLO PATTERN BUEMPLO. POS REVISION 1.0 AUTHOR ‘JESSICA Encaherado company ‘UNAM DATE 90-00-00 cmp 3X PALLSLE 112 3.45678 910 Ne Nc NC NCA BC NC NC GND Declaractin de pines de entrada/salida :1112 13 14 15 16 17 18,19 20. NC NC FI F2.NC.NC NC NC Ne ver RQUATIONS Fl = (at Bo sare P22At B+ Bs IC cuaciones del dreuito SIMULATION TRACEON AB FL F2 sere /A /B /c CHECK /F1 /F2 SETP /A /B oe me Simulacién (condiciones ef) SET? A /B C cuRCK Pi /F2 ‘TRACE_OFF EUS FES ESSE TT TEARS ERSERE RATS POM EATS EESTI Listado 1.1 Archivo Fuente compilado en formato PALASM. 22 VHDL: El arte de programar sistemas digitales El siguiente paso consiste en la compilacién del disefio, el cual radica b4- sicamente en localizar los errores de sintaxis! o de otro tipo, cometidos durante la introduccién de los datos en el archivo fuente. El compilador pro- cesa y traduce el archivo fuente y minimiza las ecuaciones. En este paso, el disefio se ha simulado utilizando un conjunto de entradas y sus correspon- dientes valores de salida conocidos como vectores de prueba. Durante este proceso se comprueba que el disefio funcione correctamente antes de intro- ducirlo al PLD. Si se detecta algdn error en la simulacién, se depura el dise- fio para corregir este defecto. Una vez que el disefio no tiene ertores, el compilador genera un archivo conocido como. JEDEC (Joint Electronic Device Engineering Council)? © mapa de fusibles. Este archivo indica al grabador cudles fusibles fundir y cudles activar, para que luego se grabe el PLD (de acuerdo con el mapa de fusibles) en un grabador tipico (Fig. 1.16). Figura 1.16 Implementacién final del disefio en un PLD. Como se puede observar, ciertos PLD (PROM, PAL, GAL) se programan empleando un grabador de dispositivos légicos. Algunos otros PLD, como los CPLD y FPGA, presentan la caracteristica de ser programables dentro del sistema (ISB In-System Programmable); es decir, no hay que introducirlos al grabador, ya que por medio de elementos auxiliares se pueden programar dentro de la tarjeta de citcuito integrado. Como se aprecia, el método de disetio con légica programable reduce de manera considerable el tiempo de disefio y permite al disefiador mayor control de los errores que se pudieran presentar, ya qué la correccién se reali- za en el software y no en el disefio fisico. "La sincaxis se refiere al formato establecido ylasimbologiaurilizada para describ una categoria de funciones. Los archivos JEDEC estén estabilizados para todos los commpiladores lgicos exstentes. Estado actual de la Iégica programable 23 1.4 Campos de aplicacién de la légica programable La logica programable es una herramienta de disefio muy poderosa, que se aplica en el mundo industrial y en proyectos universitarios en todo el mun- do. En la actualidad se usan desde los PED mis sencillos (como el GAL, PAL, PLA) como reemplazos de circuitos LSI y MSI, hasta los potentes CPLD y FPGA, que tienen aplicaciones en freas como telecomunicaciones, atacién, redes, medicina, procesamiento digital de seftales, multiproce- jento de datos, microondas, sistemas digitales, telefonfa celular, filtros positivo para ejecutarse al mism Tempoleqvecenduceapocost retrasos. En la actualidad, los CPLD son muy utilizados a nivel industrial, ya que resulta facil convertir disefios compuestos por miitiples PLD sencillos en un circuito CPLD. Por oto lad, los FPGA. sou recomendables en aplicaciones secuencia- PGA desarrllados por la compafifa ATMEL offecen alta velocidad en cémputo intensivo, aplicaciones en procesadores digitales de sefales (DSP) y en ottas fases del disetio légico, debido a la gran cantidad de registros con los que cuentan sus dispositivos (de 1024 a 6400). Esto los hace ideales para su uso en dichas freas, Desarrollos recientes Existen desarrollos realizados por diversas compafias cuyo funcionamiento se basa en un PLD; por ejemplo, la figura 1.17 ilustra una tarjeta basada en un FPGA de la familia XC4000 de Xilinx Corporation. Este desarrollo permite el procesamiento de datos en paralelo a alta velocidad, lo que reduce los proble- mas de procesamiento de datos intensivo. Figura 1.17 Sistema basado en un FPGA. 3 Fuente de informacién: hepi/hwww.annapmicro.com 24 VHDL: El arte de programar sistemas digitales En la figura 1.18 se muestra otra aplicacién realizada en un dispositive CPLD de la familia Flex 10K de Aleera Corporation (nivel de integracién de 7000 compuertas). La funciGn de esta tarjeta es permitir diversas aplicacio- nes en tiempo real, como el filrrado digital y muchas otras propias del cam- po del procesamiento digital de sefales*. Tigura 1.18 Ejemplo de un disefo logico programable completo. Como ya se mencioné, el campo de fa légica programable se ha extendido on la industria en los diltimos afios, ya que compaiifas de nivel internacional in- tegran o desarrollan Idgica programable en sus disefios (vea la tabla 1.6) Compaiia Productos desarrollados con Igica programable Andiaka Consulting Group Procesadaresdigtales de sees (DSP) heirs net~randeaka/ing Comunicaciones digtales Procenadors Ge auioy video Cade Loge Lica configurable Ipithomesntckom coneodeoie! Contec embcbido Bown Line Modems de ala weld Iepiinwcrine com ‘Allo, vido, alguien de dates y procesamiento de seals en general Aplicaciones militares: Ciptogralla, seguridad en con aiicaciones, prayectorespaciales. Comit’s Services Revs opiteachones en protocolos TCPAP beepiwuccomitcory Mollimedia: Compresiin de AudioVideo Aplicaciones en tiempo real New Hosizonts GU Digialisdores, Citaras de Video (L20Moyresec) hupifwrwretcomuk.couk’—newberisindex, Video e tempo real her Puertcsparalelo de comunicacones pata PC Design Service Segments Dingo de micmpracesadorescomplejos Ieplinenesmartech 8? ispositves par telecomunicactones, DSP Aplicaciones en dsefos para contol industrial Tabla 1.6 Companfas que incorporan légica programable en sus disetios. + Fuente de informacisn: heep:wwwfypa.com Fatado actual de fa Ligica programable 25 | 1.5 La logica programable y los lenguajes de descripcién en hardware (HDL) Como consecuencia de la creciente necesidad de integrar un mayor nimero de dispositivos en un solo circuito integrado, se desartollaron nuevas herta- mientas de disefio que auxilian al ingeniero a inteyrar sistemas de mayor complejidad. Esto permitié que en la década de los cincuenta aparecieran los lenguajes de descripcién en hardware (HDL) como una opciéin de diseiio pi 12 cl desarrollo de sistemas electrdnicos elaboradas. Estos lenguajes alcanz: ron mayor desarrollo durante los aiios setenta, kapso en que se desarrollaron varios de ellos como IDL de IBM, TI-HDL de Texas Instruments, ZEUS de General Electric, etc., todos orientados al drea industrial, asi como los len- guajes en el ambito universitario (AHPL, DDL, CDL, ISPS, ete.) [8]. Los primeros no estaban disponibles fuera de la empresa que los manejaba, mien- tras que los segundos carecfan de soporte y mantenimiento adecuados que permitieran su utilizacién industrial, El desarrollo continué y en la década de los ochenta surgieron lenguajes como VHDL, Verilog, ABEL 5.0, AHDL, ete., considerados lenguajes de descripcién en hardware porque permitieron abordar un problema légico a nivel funcional (descripcién de un problema s6lo conociendo las entradas y salidas), lo cual facilita la evaluacién de solu- ciones alternativas antes de iniciar un disefio detallado. Una de las principales caracteristicas de estos lenguajes radica en su ca- pacidad para describir en distintos niveles de abstracci6n (funcional, trans- ferencia de registros RTL y légico o nivel de compuertas) cierto diseito. Los niveles de abstraccién se emplean para clasificar modelos HDL segin el gra- do de detalle y precisién de sus descripciones [4]. Los niveles de abstraccién descritos desde el punto de vista de simula- cién y sintesis del circuito pueden definirse como sigue: * Algoritmico: se refiere a la relacidn funcional entre las entradas y sa- lidas del circuito o sistema, sin hacer referencia a la realizacién final. + Transferencia de registros (RT): Consiste en la particisn del sistema en bloques funcionales sin considerar a detalle la realizacién final de cada bloque. + Légico o de compuertas: el circuito se expresa en términos de ecua- ciones I6gicas o de compuertas. 1.5.1 VHDL, lenguaje de descripcién en hardware En la actvalidad, el lenguaje de descripcién en hardware mas utilizado a ni- vel industrial es VHDLS (Hardware Description Language), que aparecis en 5 Fuente de informacidn: hus /fuwyelgpa.com, 26 VHDL: Bl arte de proyramar sistemas digitales la década de tos ochenta como un lenguaje esténdar, capaz de soportar el proceso de diseiio de sistemas electrdnicos complejos, con propiedades para reducir el tiempo de diseiio y los recursos tecnolégicos requeridos. El Depar- tamento de Defensa de Estados Unidos cred el lenguaje VHDL como parte del programa “Very High Speed Integrated Circuits” (VHSIC), a partir de} cual se detecté la necesidad de contar con un medio estandar de camunica- cién y la documentaci6n para analizar la gran cantidad de datos asociados para el disetio de dispositivos de escala y complejidad deseados [9]; es decir, VHSIC debe entenderse como la rapidez en el disefio de circuitos integrados. Después de varias versiones revisadas por el gobierno de los Estados Uni- dos, industrias y universidades, el JERE (Instinito de Ingenieros Eléctricos y Electrénicos) publicé en diciembre de 1987 el estdindar IEEEstd 1076-1987. Un afo mds tarde, surgié la necesidad de describir en VHDL todos los ASIC creados por et Departamento de Defensa, por lo que én 1993 se adopts el es- tandar adictonal de VHDL IEEE 1164. Hoy en dia VHDL se considera como un estandar para la descripeidin, modelado y sintesis de circuitos digitales y sistemas complejos. Este lenguaje cteristicas que lo hacen uno de los HDL mas utilizados presenta diversas car: en la actualidad. 1.5.2 Ventajas del desarrollo de circuitos integrados con VHDL A continuacién se exponen a cuitos integrados con VHDL: lgunas de las ventajas que representan los cir- + Notacién formal. Los cireuitos integrados VHDL cuentan con una notaciGn que permite su uso en cualquier diserio electriinico. + Disponibilidad publica. VHDL es un estdindar no sometido a paten- te o marca registrad ilguma, por lo que cualquier empresa o institu- cidn puede utilizarla sin restriceiones. Ademas, dado que el IEEE lo mantiene y documenta, existe Ia garantfa de estabilidad y soporte. * Independencia tecnoldgica de disefio. VHDL se disefié para sopor- tar diversas tecnologfas de disetio (PLD, FPGA, ASIC, etc.) con dis- tinta funcionalidad (circuitos combinacionales, secucnciales, sincro- nos y asfneronos), a fin de ‘satisfacer las distintas necesidades de disetio. * Independencia de la tecnologia y proceso de fabricacion, VHDL se cre6 para que fuera independiente de la tecnolagt y det proceso de fa- bricucion del circuito o del sistema electrénico. El lenguaje funciona de igual manera en circuitos disefiados con teenologia MOS, bipola- res, BICMOS, ete., sin necesidad de incluir en el disefio informacién Estado actual de la ligica programable 27 concreta de fa tecnologia utilizada o de sus caracteristicas (retardos, consumos, temperatura, etc.), aunque esto puede hacerse de mane- ra opcional + Capacidad descriptiva en distintos niveles de abstraccién. El proce- so de disefio consta de varios niveles de detalle, desde la especificacién hasta la implementactin final (niveles de abstraccién). VHDL oftece ka ventaja de poder disefiar en cualquiera de estos niveles y combinarlos, con lo cual se genera lo que se conoce como simulacién multinivel. * Uso como formato de intercambio de informacion. VHDL permite el incercambio de informacion a lo largo de todas las etapas del proce 80 de diseiio, con lo cual favorece el trabajo en equipo. + Independencia de los proveedores. Debido a que VHDL es un len- guaje estandar, permite que las deseripciones o modelos generados en un sitio sean accesibles desde cualquier otro, sean cuales sean las he- rramientas de disefio utilizadas. + Reutilizacién del cédigo. El uso de VHDL como lenguaje estindar permite reutilizar los cédigos en diversos disefios, sin importar que ha- yan sido generados para una recnologia (CMOS, bipolar, etc.) € imple- mentacién (FPGA, ASIC, etc.) en particular. * Facilitacién de la participacién en proyectos internacionales. En la actualidad VHDL constituye el lenguaje estiindar de referencia a ni- vel internacional, Impulsado en sus inicios por el Departamento de Defensa de Estados Unidos, cualquier programa lanzado por alguna de las dependencias oficiales de ese pais vuelve obligatorio su uso pa- ra el modelado de fos sistemas y la documentacién del proceso de disefio [11]. Este hecho ha motivado que diversas empresas y univer- sidades adopten a VHDL como su lenguaje de disefio. En Europa la situacién es similat, ya que en nuestros dfas la mayoria de las grandes empresas del ramo lo ha definido como el lenguaje de referencia en todas las tateas de disefiv, modelado, documentacién y mantenimiento de los sistemas electrénicos, De hecho, el ntimero de usuarios de VHDL en Eu- ropa es mayor que én Estados Unidos, debido en gran parte a que resulta el lenguaje mas comén en la mayoria de los consorcios. 1.5.3 Desventajas del desarrollo de circuitos integrados con VHDL Como se puede observat, VHDL presenta grandes ventajas; sin embargo, es necesario mencionat también algunas desventajas que muchos disefiadores consideran importantes: 28 VHDL; Bt arte de programar sistemas digitales + En algunas ocasiones, el uso de una herramienta provista por alguna compafifa en especial tiene caracteristicas adicionales al lenguaje, con lo que se pierde un poco la libertad de disetio. Como método alternati- vo, se pretende que entre disefiadores que utilizan distintas herramien- tas exista una compatibilidad en sus disevios, sin que esto requiera un esfuerzo importante en la traduccion det cddigo. + Debido a que VHDL es un lenguaje disefiado por un comité, presen- ta una alta complefidad, ya que se debe dar gusto a las diversas opinio- nes de los miembros de éste, por fo que resulta un lenguaje dificil de aprender para un novato. 1.5.4 VHDL en la actualidad La actividad que se ha generado en torno a VHDL es muy intensa, En mu- chos paises como Espafia se han creado grupos de trabajo alrededor de dicho lenguaje y se realizan periédicamente conferencias, reuniones, etc., donde se presentan trabajos tanto en Estados Unidos (en el VIUE, VHDL Internatio- nal User’s Forum) como en Europa (VHDL Forum for CAD in Europe), asf coma en el congreso EuroVHDL celebrado desde 1992[10 ]. La participacién europea en el esfuerzo de estandarizar el lenguaje se canaliza a través del proyecto ESPRIT, encabezado por SIEMENS-NIXDORF. En el proyecto participan précticamente todas las grandes compaiifas euro- peas del sector electrnico, como ANACAD, ICL, PHILLIPS, PGI y THOM- SON-CSF, ademas de diversas universidades y centros de investigacién. Otras empresas dedicadas a la microelectnénica se han ido adaptando poco a poco al lenguajc. Incluso en Japdn esta teniendo una gran aceptacidin, no obstante que cuenean con un lenguaje esténdar propio llamado UDL/I. El proceso de estandarizacién del VHDL no se detuvo con la primera ver- sién del lenguaje (VHDL‘87), sino que ha continuado con la nueva versién (VHDL'93) y constantes actualizaciones, mejoras y metodologias de uso. En- tre estas adiciones o actualizaciones se encuentra una muy importante: fa ex- tensién analégica (1076.1), que permite la utilizacién de un lenguaje Gnico en todas las tareas de especificacién, simullaci6n y sintesis de sistemas electré- nicos digitales, analdgicos o mixtos. |1.6 Compaiiias de soporte en hardware y software Existen diversas compaiiias internacionales que fabrican o distribuyen dispo- sitivos légicos programables. Algunas ofrecen productos con caracteristicas generales y otras introducen intnovaciones a sus dispositivos, A continuacién. se mencionan algunas de las ards importantes. Estado actual de la Wiyiea programable 29) Altera Corporation Altera es una de las compaiifas mas importantes de produccién de dispositi- vos Isgicos programables y también es la que mas familias ofrece, ya que ticne en el mercado ocho familias: APEX'Y20K, FLEX®10K, FLEX 8000, FLEX 6000, MAX® 9000, MAX7000, MAX5000, y Classic™. La capacidad de integracién en cada familia varia desde 300 hasta 1 000-000 de compuer- tas utilis tegrar sistemas complejos. Las caracteristicas generales miis significa son fas siguientes: bles por dispositivo, ademds de que todas tienen Ia capacidad de in: tivas de los dispositivos Altera * Frecuencia de operacién del circuito superior u los 175 Mhz y retardos pin a pin de menos de 5 ns. * La implementacisin de bloques de arreglos integrades (EAB), que se usun para realizar cireuitos que ineluyan funciones aritméticas como multiplicadores, ALU, y secuenciadores. También se aplican en micro: procesadores, microcontroladores y funciones complejas con DSP (procesadores digitales de seiiales) [12]. * La programacién en sistema (ISP), que permite programar los disposi- tivos montados en la tarjeta (Fig. 1.19). En la figura 1.19a observamos la programaciGn en sistema; es deci, no hay que retirar el circuito de la tarjeta para programarlo. En fa figura 1.19b se muestra lo contrariu: en este caso el tipo de programacién es similar a la grabacisn cotidiana que realizamos, debido a que se debe colocar y «juitar el dispositivo codas las veces que se quiera programar. = a) by Figura 1.19 a) Programacisn en siscema, b) Progtamacign en montaje + Mis de cuarenta tipos y tamafios de encapsulados, incluyendo el TOQFP (thin quad flat puck), el cual es un dispositive delgado, de for- era. ma cuadra ngular y plano, que permite ahorrar un espacio cons ble en la tarjeta. + Operacién multivoltaje, entre los 5 y 3.3 volts, par namiento y 2.5 V en sistemas hibridos ‘a indiximo fancio- 30 VHDL: El arce de progcamar ststemos digivales * Potentes herramientas de software como MAX+PLUS II, que soporta todas fas familias de dispositivos de Altera, asf como el software estan- dar compatible con VHDL. Cypress semiconductor La compaiifa Cypress Semiconductor ofrece una amplia variedad de disposi- tivos légicos programables complejos (CPLD), que se encuentran en fas familias Ultca37000™ y FLASH370i™, Cada una de estas familias oftece la reprogramacidn en sistema (ISR), la cual permite reprogramar los dispositi- vos las veces que se quiera dentro de la tarjeta, Todos los dispositivos de ambas familias trabajan con voltajes de operacién de 5. ode 3.3 Vy en sw interior contienen desde 32 hasta 128 macroceldas, En lo que respecta a software de soparte, Cypress ofrece su poderaso pro- grama Warp, el cual se basa en VHDL. Este programa permite simular de manera gréfica el circuito programado, generando un archivo de mapa de fu- sibles (jedec) que pnede ser programado directamente en cualquier PLD, CPLD 0 FPGA de Cypress o de otra compaiiia que sea compatible. Clear logic La compania Clear Logic introdujo en noviembre de 1998 los dispositivos li- gicos procesados por léser (LPDL), tecnologia que prove reemplazos de los dispositivos de a Compaiifa Altera, pero a un costo y tamario menores. La tecnologia LPLD puede disponer de arriba de un millén de transistores para construir alrededor de 512 macroceldas. Sustituye al dispositivo MAX 7512A de Altera y reduce el tamano mds de 60% respecto al chip original. Las primeras familias introducidas por Clear Logic son CL7000 y CL7000E, las cuales tienden a crecer en un futuro, Motorola Motorola, empresa lider en comunicaciones y sistemas electrnicos, ofte- ce también dispositivos FPGA y FPAA (Field Programmable Array Ana- log: campos progtamables de arreglos analégicos), Los FPAA son los peimeros campos programables para aplicaciones analdgicas, utilizados en las areas de transporte, redes, computacién y telecomunicaciones. Xilinx Xilinx es una de las compaiifas lider en soluciones de légica programable, in- cluyendo circuitas integrados avanzados, herramientas en software para di- sefio, funciones predefinidas y soporte de ingenierfa. Xilinx fue la compaitia que inventé los FPGA y en la actualidad sus dispositivos ocupan mas de la mitad del mercado mundial de los dispositivos Igicos programables. Estado actual cle Ia Kigica proyramable 31 Los dispositivos de Xilinx reducen de maner significativa el tiempo re- querido para desarrollar aplicaciones en las areas de computacién, relecomu- nicaciones, redes, control industrial, instrumentacién, aplicaciones militares y para el consumo general. Las familias de CPLD XC9500 y XC95OOXL proveen una larga variedad de dispositives programables con caracteristicas que van desde los 5 a 3.3 volts de operacién, 36 a 288 macroceldas, 34 a 192 terminales de entrada y salida, y programacié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¢in arriba de las 40 000 compuertas y programacién. en sistema. nd En lo que se refiere a software, Xiling desarrollé una importante herramienta llamada Foundation Series, que soporta disefius estindares basados en ABEL-HDL y en VHDL, Esta herramienta se ofrece en version estudiantil y profesional De manera general, existe una amplia y variada gama de dispositivos I5- icos programables disponibles en el mercado. La eleccién de uno u otro de- pende de los recursos con que cuenta el disefiador y los requerimientos del disefio. En [a tabla 1.7 se muestran de forma simplificada algunas paifas que ofrecen soluciones de I6gica programable, mientras que en la figura 1.20 se presentan sus productos. de las com- Futuro de la Logica programable Debido al auge actual de la légica programable, no es dificil suponer que se pretende mejorar a futuro las herramientas existentes con el fin de ex- tender su campo de aplicacién a mas dreas. Algunas compafifas buscan mejorar la funcionalidad e integracién de sus circuitos a fin de competir con el mercado de los ASIC. Esto mejoraria el costo por volumen, el ciclo de disefio y se disminuirfa el voltaje de consumo, Onra caracteristica que se pretende mejorar es la reprogramacisn de los cireuitos, debido a que su implementacién requiere muchos recursos fisicos y tecnoldgicos. Por esta razéin se busca cambiar las metodologias de disefio para incluir sistemas reprogramables por completo. Algunos desarrollos cuentan con meinaria RAM o micreprocesadores integrados en la tarjeta de programaci6n. La tendencia de algunos fabrican- tes es integrar estos recursos &N un Circuito. 32 VHDL: El arre de programar sistemas digitales Compania Productos de hardware Herramientas software Altera FPGA: Familias APEX 20K, FLEX. MAX + PLUS Il: Soports VHDL, 10K, FLEX 6000, MAX 9000, MAX Verilog y entrada esquemiitica 700, MAX 5000 y CLASSIC Chip Express LPGA (Laser Program Gate Array): CX3000, CX2000 y QuICk PlaceSeroute: Disesios en QYH500 hase a vectores de prueba (CTV, ChipExpress Test Vector) y VHDL. Clear Logic LPLD (Laser-processed Logic Device): CL7009, CLICOOE, Desarrollos basados en herramientas cL 7000s de Altera Cypress PLD: GAL22V10 Semiconductors CPLD: Ulera37000, FLASH370i—- WARP: Sopor: exquemsticos. VHDL, Verilog y FPAA (Field Programmable Analog Motorola Array): MPAAO20 Ensy Analog: herramienca de diseiio interactiva exclusiva para disefo con FAA. FPGA: Familias MACH4 y Vancis MACHA, MACHXL: VHDL y Verilog PAsic (Asic Programmable) y fa Quick Logic familia QL de FPGA. Quick Works: herramienta de soporte para VHDL, Vetilog y cap: tua esquemsicica CPLD: XC95COXL Series: soporta FPGAs Faia XCH00 y NCITCO.—_ABEL-HDL, VHDL y squemtcos lia XC95OO y ‘Tabla 1.7 Compatifas de Soporte de ligica programable. Figura 1.20. Dispnsitivos loyicos programables. Estado actual de la ligica programable 33, Ejercicios Ld 1.2 13 14 15 1.6 17 18 19 1.10 LL 1.12 1.13 114 LAS 1.16 Qué significa monolitico? iCuéll es el significado de las siglas ASIC? iCuélles son las categorias de tecnologias de fabricacién de CI? Describa en qué consiste el disefio Full Custom. Mencione las caracteristicas més relevantes del disefto Full Custom, iCusl es el significado de las siglas PLD? iQué tienen en comin los dispositivos PROM, PLA, PAL, GAL y los CPLD y FPGA? iQué es OLMC? iCual es el significado de las siglas CPLD y FPGA? Describa como se encuentra estructurado un CPLD. Describa la estructura de un FPGA en términos generales. iQué es un compilador légico? iCuél es el significado de las siglas VHDL? iQué significado tienen las siglas VHSIC? Describa tres ventajas de la programacién en VHDL. iCuéles son las compafifas més importantes en la fabricacién de dispositivos légicos programables? Capitulo 2 VHDL: su organizacion y arquitectura [Introduccién Tal como lo indican sus siglas, VHDL (Hardware Description Language) es un lenguaje orientado a ia descripcién © modelado de sistemas digitales; es decir, se trata de un lenguaje mediante el cual se puede describir, analizar y evaluar el comportamiento de un sistema electrénico digital. VHDL es un lenguaje poderoso que permite la integracién de sistemas digitales sencillos, elaborados o ambos en un dispositivo légico programable, sea de baja capacidad de integracién como un GAL, o de mayor capacidad como los CPLD y FPGA- 2.1 Unidades basicas de disefio La estructura general de un programa en VHDL est formada por médulos © unidades de disefio, cada uno de ellos compuesto por un conjunto de de- claraciones e instrucciones que definen, describen, estructuran, analizan y evalian el comportamiento de un sistema digital. Existen cinco tipos de unidades de diseiio. en VHDL: declaracin de en- tidad (entity declaration), arquitectura (architecture), configuracién (con- figuration), declaracién del paquete (package declaration) y cuerpo del paquete (package body), En el desarrollo de programas en VHDL pueden utilizarse o no tres de los cinco médulos, pero dos de ellos (entidad y arqui- tectura) son indispensables en la estructuracin de un programa. Las declaraciones de entidad, paquete y configuracién se consideran uni- dades de disefio primarias, mientras que la arquitectura y el cuerpo del pa- quete son unidades de disefio secundarias ‘porque dependen de una entidad primaria que se debe analizar antes que elllas. 38 VHDL: Elarte de programar sistemas digitales | 2.2 Entidad Una entidad (entity) es el bloque elemental de disefio en VHDL, Las entida- des son todos los elementos electronicos (sumadores, contadores, compuertas, flip-flops, memorias, multiplexores, etc.) que forman de manera individual o en conjunto un sistema digital. La entidad puede fepresentarse de muy di- versas manteras; por ejemplo, Ja figura 2.a) muestra la arquitectura de un su- mador completo a nivel de compuertas; ahora bien, esta entidad se puede representar a nivel de sistema indicando tan sdlo las entradas (Cin, A y B) y salidas (SUMA y Cout) def circuito: figura 2.1b). De igual forma, la integra- cién de varios subsistemas (medio sumador) puede representarse mediante una entidad [Fig 2.1c)]. Los subsistemas pueden conectarse internamente en- tre sf; pero la entidad sigue identificando con claridad sus entradas y salidas generales. a) SUMA Cour Compteto SUMA Figura 2.1 a) Descripcidin a nivel de compuertas. b) Simbolo funcional de la entidad; ¢) Diagrama 2 blaques representativo de la entidad. 2.2.1 Puertos de entrada-salida 2.2.2 Modos Cada una de las sefiales de entrada y salida en una entidad son referidas como puerto, el cual es similar wna terminal (pin) de un simbolo esquema- tico. Todos los puertos que son declarados deben tener un_nombre, un mo- do y un tipo de dato. EI nombre se utiliza como una forma de llamar al puer- 0; el modo permite definir la direccién que tomaré la informacién y el tipo define qué clase de informacién se transmitira por el puerto. Por ejemplo, respecto a los puertos de la entidad que representan a un comparador de igualdad (Fig. 2.2), las variables a y b denotan los puertos de entrada y la va- Tiable c se refiere al puerto de salid: a—-+| Lc (a=b b Comparador ( ) Figura 2.2 Comparador de igualdad. Como ya se mencioné, un modo permite definir la direccién en la cual el dato es transferido a través cle un puerto. Un modo puede tener uno de cuatro va- lores: in (entrada), out (alida), inout (entrada/salida) y buffer (Fig. 2.3). + Modo in. Se refiere a las seftales de entrada a la entidad. Este sélo es uni- direccional y nada més permite el flujo de datos hacia dentro de la entidad. + Modo out. Indica las sefiales de salida de la entidad. * Modo inout. Permite declarar a un puerto de forma bidireccional —es decir, de entradajsalida—; ademés permite la retroalimentacién de sefia- les dentro o fuera de la entidad. + Modo buffer. Permite hacer retroalimentaciones internas dentro de la entidad, pero a diferencia del modo inout, el puerto declarado se com- porta como una terminal de salida. In Out Inout In Butler moe oon Figura 2.3, Moxos y el curso de sus sefates. 40 VHDL: El arte de programar sistemas digitales 2.2.3 Tipos de datos Los tipos son fos valores (datos) que el disefiador establece para los puertos de entrada y salida dentro de una entidad; se asignan de acuerdo con las ca- racteristicas de un diserio en particular. Algunos de los tipos mas utilizados en VHDL son: * Bit, el cual tiene valores de 0 y 1 légico. * Boolean (booleano) que define valores de verdadero o falso en una ex- presion * Bit_vector (vectores de bits) que representa un conjunto de bits para cada variable de entrada o salida. * Integer (entero) que representa un néimero entero. Los anteriores. son s6lo algunos de los tipos que maneja VHDL, pero no son los tinicos.! |2.3 Declaraci6n de entidades Como se mencioné en la seccién 2.1 (Unidades bésicas de disefio), los médu los elementales en el desarrollo de un programa dentro del lenguaje de descrip- cién en hardware (VHDL) son la entidad y la arquitectura. La declaracién de una entidad consiste en la descripcién de las entradas y salidas de un circuito de disefio identificado como entity (entidad);-es decir, la declaracién sefala las terminales o pines de entrada y salida con que cuenta Ja entidad de disenio. Por ejemplo, la forma de declarar la entidad correspondiente al circuito sumador de la figura 2.1b) se muestra a continuacién: in de la entidad de un circuite sumador Declarat entity sunador is port (A,B, Cin: in bit; SUMA, Cout: out bit); end_sumador; Listado 2.1 Declaracién de la entidad sumador de la figura 2.1) "En el apéndice 6 s¢ lista los tips de datos existentes en VHDL. VHDL: su organizacién y arquitectura 4 Ejemplo 2.1 Los néimeros de las Iineas (1, 2, 3, 4, 5) no son parte del eédigo; se usan como referencia para explicar alguna seccién en particular Las palabras en negritas estan reservadas para el lenguaje de programacion VHDL; esto es, tienen un significado especial para el programa; el disefiador asigna los otros términos. Ahora comencemos a analizar el cédigo linea por linea. Observemos que la linea 1 inicia con dos guiones (-), los cuales indican que el texto que esti a la derecha es un comentario cuyo objetivo es documentar el programa, ya que el compilador ignora todos los comentarios. En la linea 2 se inicia la declaracién de la entidad con la palabra reservada entity, seguida del identi ficador o nombre de la entidad (sumador) y la palabra reservada is. Los puer- tos de entrada y salida (port) se declaran en las Iineas 3 y 4, respectivamente —en este caso los puertos de entrada son A, By Cin—, mientras que SU- MA y Cout representan los puertos de salida. El tipo de dato que cada puer- to maneja es del tipo bit, lo cual indica que slo pueden manejarse valores de ‘0’ y ‘I’ logicos. Por tiltimo, en la linea 5 termina la declaracién de entidad con la palabra reservada end, seguida del nombre de la entidad (sumador). Debemos notar que como cualquier lenguaje de programacién, VHDL sigue una sintaxis y una seméntica dentro del cédigo, mismas que hay que respetar, En esta entidad conviene hacer notar el uso de punto y coma (5) al finalizar una declaraci6n y de dos puntos (2) al asignar nombres a las entra- das y salidas Declare la entidad del citcuito logico de la figura E2.1 Figura B2.1 Solucién Como puede observarse, las entradas y salidas del circuito se encuentran de- limitadas por la linea punteada. En este caso, a3, b3, a2, b2,... a0, bO son las entradas y F es la salida. 42 VHDL: El arte de programar sisters digitales La declaracién de la entidad seria de la siguiente forma: 1 Declaracién de la entidad 2 Entity circuito is 3 port ( a3,b3,a2,b2,al,b1,a0,b0; in bit; 4 out bi 5 to Identificadores Los identificadores son simplemente los nombres o etiquetas que se usan pa- ra referir variables, constantes, sefiales, procesos, etc. Pueden ser nimeros, letras del alfabeto y guiones bajos (_ ) que separen caracteres y no tienen, una restriccién en cuanto a su longitud. Todos los identificadores deben se~ guir ciertas especificaciones o reglas para que se puedan compilar sin errores, mismas que aparecen en la tabla 2.1. Regla Incorrecto Correcto El primer caracter siempre es wa letra 4suma Sumad aytiscula o mindscula. SUMAS 5 S4 bits El segundo caracter no puede ser un gain S Abits abi bajo Dos gufones juntos no son permitides Resta_4 Resta Clear#8 Clear_8 Un identificador no puede utilizar simbolos ‘Tabla 2.1. Expecificaciones para la escritura de identificadores. VHDL cuenta con una lista de palabras reservadas que no pueden fun- cionar como identificadores (vea el Apéndice B) 2.4 Disefio de entidades mediante vectores La entidad sumador realizada en el circuito del listado 2.1, usa bits indivi duales, los cuales slo pueden representar dos valores légicos (0.0 1). De ma- nera general, en la préctica se utilizan conjuntos (palabras) de varios bits; en VHDL las palabras binarias se conocen como vectores de bits, los cuales se consideran un grupo y no como bits individuales. Como ejemplo considéren- se los vectores de 4 bits que se muestran a continuaci6n: vector_A = [€3, a2, Al, a0] vector_B = [B3, B2, BL) BO] vector_SUMA (33, $2, $1, $0] Bjemplo 2.2 VHDL: su organizacisn y arquitectura. 43, En la figura 2.4 se observa la entidad del sumador analizado antes, s6lo que ahora las entradas A, B y Ja salida SUMA incorporan vectores de 4 bits en sus puertos. Obsérvese ome la entrada Cin y la salida Cout son de un bit. Gin I> suma (3.0) AS0l ‘Sumador |—> Cout 8(S:0)k Figura 2.4 Entidad cepresentada por vectores. La manera de describir en VHDL una configuracién que utilice vectores consiste en la utilizacin de la sentencia bit_vector, mediante la cual se es- pecifican los componentes de cada uno de los vectores utilizados. La parte del cédigo que se usa para declarar un vector dentro de los puertos es el si- guiente: port (vector_A, vector B: in bit_vector (3 downto 0); vector SUMA: out bit_vector (3 downto 0)); Esta declaracion define los vectores (A, B y SUMA) con cuatro compo- nentes distribuidos en orden descendente por medio del comando: 3 downto 0 (3 hacia 0) los cuales se agruparian de la siguiente manera vector AQ) =A3 vector BG) = B3_—_ vector SUMA(3) vector_A(2)=A2 ——_vector_B(2) =B2 vector SUMA(2) = S2 vector_A(I) = Al vector_B(I) = BI vector SUMA(1) = SI vector_A(Q)=A0 vector B(0) = BO vector SUMA(0) = SO Una vez que se ha establecido el orden en que aparecerdn los bits enun- ciados en cada vector, no se puede modificar, a menos que se utilice el co- mando to: 0 to3 (O hasta 3) que indica el orden de aparicién en sentido ascendente. Deseriba en VHDL la entidad del circuito sumador representado en la figu- ra 2.4. Observe cémo la entrada Cin (Carry in) y la salida Cout (Carry out) se expresan de forma individual. 44 VHDL: Elarte de programar sistemas digitales, Solucién. entity suma port (A,B: cin: bit; Cout: out bit; SUMA: out bit_vector(3 downto 0)); Ejemplo 2.3 Declare fa entidad del circuito légico mostrado en la figura del ejemplo 2.1, mediante vectores. Solucién ~Declaracién de entidades mediante vectores entity detector is port (a,b: in bit_vector(3 downto 0); F: out bit)); end detector; 2.4.1 Declaracién de entidades mediante librerias y paquetes Una parte importante en la programacin con VHDL radica en el uso de li- brerfas y paquetes que permiten declarar y almacenar estructuras l6gicas, seccionadas o completas que facilitan el disefo. Una libreria o biblioteca es un lugar al que se tiene acceso para utilizar las unidades de disefio predeterminadas por el fabricante de la herramienta (paquete) y su funciGn es agilizar el diserio. En VHDL se encuentran defini- das dos librerias llamadas ieee y work (Fig. 2.5). Como puede observarse, en Ia librerfa ieee se encuentra el paquete std_logic_1164, mientras que en la li bretfa work se hallan numeric_std, std_arith y gatespkg. GE ieee | BG sta jogic_s164 2 work BQ numeric_std -@ sta_erth B- setesnig ‘i ore Figura 2.5 Contenido de las ibrerias ieee y work. VHDL: su organizacién yarquitectura 45 En una libreria también se permite almacenar el resultado de la compi- lacién de un disefio, con el fin de utilizar en uno o varios programas. La li- brerfa work es el lugar establecido donde se almacenan los programas que el usuario va generando. Esta libreria se encuentra siempre presente en la compilacién de un disefio y los disefios se guardan en ella mientras no se especifique otra. La carpeta otra mostrada en la figura 2.5 representa esta situacién. Un paquete es una unidad de diseiio que permite desarrollar un pro- grama en VHDL de una manera dgil, debido a que contiene algoritmos preestablecidos (sumadores, restadores, contadores, etc.) que ya tienen optimizado su comportamiento. Por esta razén, el disefiador no necesita caracterizar paso a paso una nueva unidad de disefio si ya se encuentra al- macenada en algin paquete —en cuyo caso basta con Ilamarla y especifi- carla en el programa—. Por lo tanto, un paquete no es mas que una unidad de disefio formada por declaraciones, programas, componentes y subprogra- mas, que incluyen los diversos tipos de datos (bit, booleano, std_logic), em- pleados en la programacién en VHDL y que suelen formar parte de las herramientas en software. Por ultimo, cuando en el disefio se utiliza algtin paquete es necesario Ila- mar a la libreria que lo contiene. Pata esto se utiliza la siguiente declaracién: library ieee; | Lo anterior permite el uso de todos los componentes incluidos en la li- brerfa ieee. En el. caso de la librerfa de trabajo (work), su uso no requiere la declaraci6n library, dado que la carpeta work siempre est4 presente al desa- rollar un disefto. 2.4.2 Paquetes + El paquete std_logic_1164 (estdndar légico_1164) que se encuentra en [a librerfa ieee contiene todos los tipos de datos que suelen em- plearse en VHDL (std_logic_vector, std_logic, entre otros). El acceso a la informacién contenida en un paquete es por medio de la sentencia use, seguida del nombre de la libreria y del paquete, respectiva- mente: use nombre_librerfa.nombre_paquete.all; por ejemplo: | use ieee.std_logic_1164.all; 46 VHDL: Elaree de programar sistemas digitales En este caso ieee es la librerfa, std_logic_1164 es el paquete y la palabra reservada all indica que se pueden usar todos los componentes almacenados en el paquete. El paquete numeric_std define funciones para realizar operaciones entre diferentes tipos de datos (sobrecargado); ademés, los tipos pue- den represenrarse con signo 0 sin éste (vea el Apéndice A). El paquete numeric_bit define tipos de datos binarios con signo o sin éste. El paquete std_arith define funciones y operadores aritméticos, como igual (=), mayor que (>), menor que (<), entre otros (vea el Apén- dice A). En lo sucesivo, se usaran a menudo las librerfas y paquetes de los progra- mas desarrollados en el texto. Bjenipls24)) En La figura E2.4 se muestra el bloque representative de un circuito multipli- cador de 2 bits. La multiplicacion de (X1, XO) y (Y1,YO) producen la salida 23, 22, Z1, 20. Declare la entidad de! circuito utilizando la librerfa ieee y el paquete std- _logic_1164.all. XO, xt Yo Yt Figura E24 Solucién 1 library ieee; 2 use ieee. std_logic_1164,all; 3 entity multiplica is 4 port (X0,X1,¥0,¥i; in std_iogic; 6 23,22,21,20: owt std_logic); [2.5 Arquitecturas end multiplica; Una arquitectura (architecture) se define como Ja estructura que describe el fucionatnterito de uid entidad, de tal fotitia que pertnita el desarrollo de los procedimientos que se Ilevardn a cabo con el fin de que la entidad cumpla las condiciones de funcionamiento deseadas. VHDL: su organizacion y arquitectura 47 La gran ventaja que presenta VHDL para definit una arquitectura radi- ca en la manera en que pueden describirse los disefios; es decir, mediante el algoritme de programacién empleado se puede describir desde el nivel de compuertas hasta sistemas complejas. De manera general, los estilos de programacién utilizados en el disetio de arquitecturas se clasifican como: * Estilo funcional + Estilo por flujo de datos ' * Estilo estructural EI nombre asignado a estos estilos no es importante, ya que es tarea del diseftador escribir el comportamiento de un circuito utilizando uno u otro es- tilo que a su juicio le sea el mas acertado. 2.5.1 Descripcién funcional En la figura 2.6 se describe funcionalmente el ciscuito comparador. Se trata de una descripcién funcional porque expone la forma en que trabaja el sistem; es decir, las descripciones consideran la relacién que hay entre las entradas y las salidas del circuito, sin importar c6mo esté organizado en su interior. Para este caso: si a= bentoncesc = | si, a * bentoncesc = 0 Figura 2.6 Descripcién funcional de un comparador de igualdad de dos bits. El cédigo que representa el citcuito de la figura 2.6 se muestra en el listado 2, 48 VHDL: El arte de programar sistemas digitales Ejemplo de una descripcidn funcional library ieee; 3 use iece.std_logic_11é64.all 4 entity comp is 5 port (a,b: in bit_vector( 1 downto 0); 6 c: out bit); 7 end comp; 8 architecture funcional of comp is 9 begin 10 compara: process (a,b) qi begin 12 if a= b then 43 © ae Figura B2.7 Solucién --Declaracién mediante ecuaciones boolenas library ieee; use icee.std_logic_1164.all1; entity © port ( a,b,c.d: in £: out std_logic); jemplo is d_logic; end ejemplo; architecture compuertas of ejemplo is begin <= ((@ or b) xnor (c and b)); 2.5.3 Descripcién estructural Como su nombre indica, una descripeién estructural basa su comportamien- to en modelos I6gicos establecidos (compuertas, sumadores, contadores, etc.) Segiin veremos més adelante, el usuario puede diseftar estas estructuras y guardarlas para su uso posterior 0 tomarlas de los paquetes contenidos en las librerfas de disefto del software que se esté utilizando. En la figura 2.8 se encuentra un esquema del circuito comparador de igual dad de 2 bits, el cual esté formado por compuertas nor-exclusivas y una com- puerta AND. Figura 2.8 Representacidn esquemstica de un comparador de 2 bits. En nuestro caso, cada compuerta (modelo légico) se encuentra dentro del paquete gatespkg,¢ del cual se toman para estructurar el disefio. A su vez, este tipo de arquitecturas estdndares se conoce como componentes, que al interconectarse por medio de sefiales internas (x0, x1) permiten proponer una solucién, En VHDL esta conectividad se conoce como netlist? o listado de componentes. Para iniciar la programacién de una entidad de manera estructural, es necesario la descomposicién légica del disefio en pequefios submédulos (je- rarquizar), los cuales permiten analizar de manera préctica el circuito, ya que la funcién de entrada/salida es conocida. En nuestro ejemplo se conoce la funcién de salida de las dos compuertas xnor, por lo que al unirlas a la com- puerta and, la salida c es el resultado de la operacién and efectuada en el in- terior a través de las sefiales x0 y x1 (Fig. 2.8). Es importante resaltar que una jerarqufa en VHDL se refiere al procedi- miento de dividir en bloques y no a que un bloque tenga mayor jerarqufa (peso) que otro. Esta forma de dividir el problema hace de la descripcién estructural una forma sencilla de programar. En el contexto del disefio légico esto es obser- vable cuando se analiza por separado alguna seccién de un sistema integral. 6 El paquete compusrea fue programado para este ejemplo, En el capitulo 8 se vers a detalle su desaralo, 7 Un nets se rfiee ala forma en como se encuentran conectados los componentes. dentro de una estruc- cura y las seals que propicia esta inrerconein 54 VHDL: El arte de programar sistemas digirales Enel listado 2.5 se muestra el cédigo del programa que representa al es- quema de la figura 2.8. library ieee; use iece.std_logic_1164.all; entity comp is port( a,b: in bit_vector (0 to 1); 5 er out bil 6 end comp; 7 use work.compuerta-all; \ 8 ructural of comp is 9 signal x: bit_vector (0 to 1); architecture 10 begin 11 UO: xnor2 — port map (a(0), (0), x(0)); 12 UL: xnor2 port map (a(1), b(1), x(1)); 13. U2: and2 port map (x(0), x(1), ¢); 14 end estructural; Listado 2.5 Descripcisn estructural de un comparador de igualdad de 2 bits. En el c6digo se puede ver que en la entidad nada mas se describen las en- tradas y salidas del circuito (a, b y c), segiin se ha venido haciendo (lineas 3 a la 6). Los componentes xnor y and no se declaran debido a que se encuen- tran en el paquete de compuertas (gatespkg), el cual a su vez esté dentro de la libreria de trabajo. (work), linea 7 En la linea 8 se inicia la declaracién de la arquitectura estructural. El algoritmo propuesto (Iineas 11 a 13) describe la estructura de la siguiente forma: cada compuerta se maneja como un bloque ldgico independiente (componente) del disefio original, al cual se le asigna una variable tempo- ral (UO, Ul y U2); la salida de cada uno de estos bloques se maneja como una sefial Iinea 9, signal x (x0 y xl), las cuales se declaran dentro de la arquitectura y no en la entidad, debido a que no representan a una termi- nal (pin) y slo se utilizan para conectar bloques de manera interna a la entidad. Pot diltimo, podemos observar que la compuerta and recibe las dos se- Hales provenientes de x (x0-y x1), ejecuta la opetacién y asigna el resultado ala salida c del circuito. VHDL: su organizacién y arquitectura 55 Bjemplo 2.8 —_Realice el programa correspondiente en VHDL para el circuito mostrado en la figura E2.8. Utilice descripcién estructural. {ap >. Figura E2.8 Solucién 1 library ieee; 2 use iece.std_logic.1164.all; 3 entity comp is 4 port( A,B,C : in stdlogic; 5 out std_logic); 6 end comp; 7 use work.compuerta-all; 8 architecture estructura of comp is 9 signal x: bit_vector (0 to 2); 10 begin 11 UO: and2 port map (B, C, x(0)); 12 Ul: and2 port map (C, A, x(1))i 13 U2: and2 port map (A, B, x(2)); 14 U3; or3 port map (x(0), x(1), x(2), F); 15 end estructur Comparacién entre los estilos de disefio El estilo de diseito utilizado en la programacién del circuito depende del dise- fador y de la complejidad del proyecto. Por ejemplo, un disefio puede descri- birse por medio de ecuaciones booleanas, pero si es muy extenso quiz sea mis apropiado emplear estructuras jerérquicas para dividirlo; ahora bien, si se re- quiere disefiar un sistema cuyo funcionamiento dependa sélo de sus entradas y salidas, es conveniente utilizar la descripcién funcional, fa cual presenta la ventaja de requerir menos instrucciones y el disefiador no necesita un cono- cimiente previo de cada componente del circuito. 56 VHDL: Elarce de programar sistemas digitales Ejercicios Unidades bisicas de disefio 2.1 Describa los cinco tipos de unidades de disefio en VHDL. 2.2 Determine cusles son las unidades de disefio necesarias para realizar un programa en VHDL. 2.3 Mencione las unidades de disefio primarias y secundarias. Declaracién de entidades 2.4 Describa el significado de una entidad y cual es su palabra reservada, 2.5 En la siguiente declaracién de entidad indique: library ieve; use iceestd_logic_1164all; entity seleccion is port ( x: in std_logic_vector(0 to 3); f out std_logic); end seleccion; a) El nombre de la entidad b) Los puertos de entrada <) Los puertos de salida a) El tipo de dato 2.6 Seale cuales de los siguientes identificadores son correctos 0 inco- rrectos, colocando en las lineas de respuesta la letra ‘C’ 0 ‘I’, respec- tivamente. Mégico Desp_laza con_trol__ N_ivel Pagina architecture Registro S_uma# 2Suma Res__ta 2.7 Declare la entidad para la compuerta AND del ejercicio 2.7: VHDL: su onganizacin y arquitectura 57 2.8 Declare la entidad para el siguiente circuito. 29 2.10 2.11 2.12 2.13 2.14 215 ; | DEMO |» Demo Declare la entidad para el circuito que se muestra en la figura. Uti- lice vectores. Az: B21 Promedio — |==>c/2:0) Declare la entidad para el siguiente circuito que utiliza vectores. Al] B(0:3]__, ==>C[0:3] Describa qué es una librerfa en VHDL. Indique el significado de la siguiente expresi6n: use iece.std_logic_1164.all; Declare la entidad del circuito multiplexor de 4:1 mostrado en la fi- gura del ejercicio 2.11 utilizando la librerfa: ieee.std_logic_1164.all; Eo e1—>| E2—+| £3 MUX. 41 tf so si Declare la entidad del multiplexor de 4:1 mostrado en la figura del ejercicio 2.11, si cada entrada esta formada por un vector de 4 bits. Declare la entidad del multiplicador mostrado en el ejercicio 2.2 utilizando vectores y el paquete std_logic_1164. 58 VHDL: El arte de programar sist mas digitales Arquitecturas 2.16 2.17 2.18 2.19 2.20 2.21 2.22 Mediante un estilo funcional, programe en VHDL el funcionamiento de una limpara para eédigo Morse que encienda la luz al presionar un botsn y la apague al soltarlo. Con un estilo funcional, programe en VHDL el funcionamiento del motor de un ventilador en que el motor gire en un sentido al presionar el bot6n ‘a’ y en direccién contraria al oprimir el botén ‘b’. Con un estilo por flujo de datos, programe en VHDL el funcionamiento de un panel en una fabrica de empaquetamiento de arroz. Este panel muestra el contenido de 2 silos (a, b) que tiene la fabrica para guardar el arroz; un sensor detecta cusin llenos estiin, cuando se encuentran al 100% de su capacidad, envia un ‘I Idgico’, y cuando tienen 25% 0 me- nos envia iin ‘0 légico’; si en uno de estos silos disminuye el contenido a 25% o menos, se prende una luz (c), si los dos sobrepasan ese limite se enciende otra luz (d) y suena una alarma (e). Mediante el estilo de programacién por flujo de datos, programe en VHDL el funcionamiento de un robot en una planta que espera a que se Ilene una tarima con cuatro cajas antes de llevarla a la bodega de al- macenamiento; para saber si la tarima esté lena cuenta con cuatro sensores, cada uno apunta a sendas cajas; si hay una caja marca un ‘1 logico’; si falta, marca un ‘0 légico’. Si falta alguna caja el robot no se puede ir, cuando estén las cuatro cajas el robot se leva la tarima. Con el estilo de programacién por flujo de datos, programe en VHDL el funcionamiento de una caja de seguridad cuya apertura requiere la presién simulténea de tres de cuatro botones (‘a', ‘b’‘c’ y '’). Los bo- tones que se deben oprimir son: ‘a’, ‘c’ y Mediante el estilo de programacién estructural, programe en VHDL el problema del apagador de escalera. La funcién para este problema es c= ab +ab, donde aes el interruptor inferior, bes el interruptor su- perior y ¢ es el foco. Con un estilo estructural, programe en VHDL el funcionamiento de tun motor que se enciende con la siguiente ecuacién: y=abtebtac. Capitulo 3 Disefio légico combinacional mediante VHDL [ Introducci6n En este capitulo se disefian los circuitos combinacionales més utilizados en el diseito l6gico a través del lenguaje de descripeién en hardware. Esto permite introdacir nuevos conceptos, palabras reservadas, reglas, algoritmos, etc, que muestran la potencia y profundidad del lenguaje VHDL. El desarrollo de cada una de las entidades de disefio descritas en este ca- pitulo se puede optimizar mediante el uso adecuuado de las declaraciones se- cuenciales, concurrentes o ambas, utilizando en esta descripcién cualquiera de los tres tipos de arquitectura —funcional, por flujo de datos y estructu- ral vistos en el capitulo anterior. Sin embargo y dade a filosofia que que- remos manejar en este texto, nos parece conveniente presentar soluciones que incluyan nuevas declaraciones, nuevos tipos de datos y nuevos algorit- mos de anélisis; es decir, no se pretende presentar la mejor opcién de disefio. para un problema; por el contrario, se propone brindar la mayor cantidad de soluciones (modelos) que le permitan deducir y construir sus estrategias de diserio para optimizar sus resultados. 3.1 Programacién de estructuras basicas mediante declaraciones concurrentes Como se menciond antes, las declaraciones concurrentes se encuentran fue- ra de la declaracién de un proceso y suelen usarse en las descripciones de flu- jo de datos y estructural, Esto se debe a que en una declaracién concurrente no importa el orden en que se escriban las seftales, ya que el resultado para determinada funcién serfa el mismo. 62 3.1.1 Declaraciones condix VHDL: El arte de programar sistemas digitales En VHDL existen tres tipos de declaraciones coneurrentes: * Declaraciones condicionales asignadas a una sefial (when-else) * Declaraciones concurrentes asignadas a sefiales * Seleccidn de una sefial (with-select-when) males asignadas a una sefial (when-else) La declaracién when-else se utiliza para asignar valores a’una sefal, determi- nando asf la ejecucisn de una condicién propia del disefio. Para ejemplificar, consideremos la entidad_mostrada en la figura 3.1, cuyo funcionamiento se define en la tabla de verdad. Bot] entidad Coe|__ Prueba abc |f 0.00 {14 oo 4 jo 04.0 ]/0 o1 4 ft 10 0 |o 10:4 10 +100)1 111 Figura 3.1. Declaraciones when-else, La entidad se puede programar mediante declaraciones condicionales (when-else), debido a que este modelo permite definir paso a paso el com- portamiento del sistema, segtin se muestra en el listado 3.1. 1 - Ejemplo combinacional bésico 2 library ieee; 3 use icce.std_logic_1164.al3 4 entity tabla is port ( in std_logic, out std_logic! 8 architecture ejemplo of tabla is 9 begin 10 f< "0" and be’ 0" else a wv 0” and bs else R 1) when (ae'1' and be’ 1’ else a "1/ when (a71/ and b=!1' else cr “03 end ejemplo: Listado 3.1. Descripcidn de la entidad mostrada en la tabla de la figura 3.1 Disefo légico combinacional mediante VHDL. 63 Notese que la funcién de salida f (linea 10) depende directamente de las condiciones que presentan las variables de entrada, ademés y dado que la ejecucién inicial de una w otra condicién no afecta la gica del programa, el resultado es el mismo; es decir, la condicién de entrada “111”, visualizada en. la tabla de verdad, puede ejecutarse antes que la condicién “000” sin alterar el resultado final. La ventaja de la programacién en VHDL en comparacién con el disefio loégico puede intuitse considerando que la funcién de salida f mediante Alge- bra booleana se representa con: f=abce+abcetabcetabe en el disefio convencional se utilizarian inversores, compuervas OR y com- puertas AND; en VHDL la solucién es directa utilizando la funcién Wégica and. Como ejemplo, observemos que de la linea 10 a la 14 las instrucciones se interpretarfan de la siguiente manera 10 asigna a “f” el valor de | cuando a = Oy b = Oye = Osino 11 asigna a “f” el valor de 1 cuando a = yb = 1yc =I sino 12. asigna a “f” el valor de 1 cuando a = 1yb = lyc =Osino 13. asigna a “f” el valor de 1 cuando a = Qyb= lye = Isino 14 asigna a “f" el valor de 0. Operadores logicos Los operadores légicos més utilizados en la descripcién de funciones boolea- nas, y definidos en los diferentes tipos de datos bit, son los operadores and, or, nand, xor, xnor y not. Las operaciones que se efecttien en- tre ellos (excepto not) deben realizarse con datos que tengan la misma lon- gitud o palabra de bits. En el momento de ser compilados los operadores I6gicos presentan el si- guiente orden y prioridad: 1) Expresiones entre paréntesis 2) Complementos 3) Funcién AND 4) Funcién OR Las operaciones xor y xnor son transparentes al compilador y las in- terpreta mediante la suma de productos correspondiente a su funcién ‘Como ejemplo del uso de opetadores logicos en VHDL, observemos la si- guienté comparacién: 64 VHDL: El arte de programar sistemas digitales Ejemplo 3.1 En VHDL qzateey or (wand y) yeatbectd y= noe (aor (dand net c} or d) Una funcién F depende de cuatro variables D, C, B, A, que representan un ntimero binario, donde A es la variable menos significativa. La funcién F adopta el valor de uno si el niimero formado por las cuatro variables es infe- rior o igual a 7_y superior a 3, En caso contrario la funcién F es cero. * Obtenga la tabla de verdad de la funcién F y realice el programa corres- pondiente en VHDL (utilice eseructuras del tipo when-else y operadores légicos). Solucién Primero analizamos el enunciado y estructuramos la siguiente tabla de ver- dad segtin las especificaciones indicadas. DCBA F 0000 0 ooo1 0 oo1o 0 oor o o100 1 o1rd01 2 orto 2 ortai oo. 1000 0 loo1r 0 a rori 0 1100 0 1101 0 lit 0 0 i ) A partir de la tabla anterior, se puede programar la funcién F utilizando de- claraciones condicionales when-else. El cddigo VHDL es el siguiente: Disefio légico combinacional mediante VHDL 65 1 Library ieee; 2 use iece.std logic_1164.al1; 3 entity funcion 4s port( 4 D,C,B,A: in std_logic: 5 Fr out std logic): 6 end funcion; 7 architecture a_func of funcion is 8 begin 9 Fee '1/ when (A = ‘0’ and B = '0' and C = ‘1’ and D = 0’) else 10 "17 when (A = ‘1’ and B= '0' and C= ‘1’ and D = ‘0’) else uu "1 when (A = ‘0’ and B= ‘1’ and Cs ‘1’ and D = ‘0’) else 12 1/ when (A= ‘1’ and B= ‘1! and C= ‘1’ and D = ‘0’) else 1B “9 14 end a_func; 3.1.2 Declaraciones concurrentes asignadas a sefiales En este tipo de declaracién encontraremos las funciones de salida mediante la ecuacién booleana que describe el comportamiento de cada una de las compuertas. Obsérvese que ahora el circuito de la figura 3.2 cuenta con tres salidas (x1, x2 y x3) en lugar de una El programa correspondiente al circuito de la figura 3.2 se muestra en el lis- tado 3.2. library ieee; use iece.std_logic_i16d.all; entity logic is port ( a,b,c,d,e,f: 4n std_logic: XL, x2, 93 out std_logic); end logic; architecture booleana of logic is begin xi <= a mor b; x2 <= (((c and d)or(a »mor b)) nand ((e xor f)and(c and d))); x3 <= (e mor f) and (c and d); end _booleana; Listado 3.1 Declaraciones concurrentes asignadas a seftales, 66 VHDL: Bl arte de programar sistemas digitales Ejemplo 3.2 Dada la tabla de verdad mostrada a continuaci6n, halle las ecuaciones X, Y, Z, de la forma suma de productos y programelas en VHDL, utilizando decla- raciones concurrentes asignadas a sefiales. A B Cc] xX Y¥ o o of t oO 1 o o t}]t too o 1 of 0 oO 1 o 1 ilt oo 4 1 0 oO] 0 9 0 1 oo t/o 1 0 rot oOo} 0 1 0 rororsr oe o Solucién Las ecuaciones de fa forma suma de productos para X, Y y Z se muestran a continuaci6n: ABC + ABC + ABC A ABC + ABC 3) 2= ABC + ABC + ABC Obsérvese ahora la fortna de implementar estas ecuaciones por medio de operadores Idgicos. 1 library ieee; 2 use ieee. std logic 1164.al1; 3 entity concurrente is port ( 4 A,B,C: in std_logies 5 X,¥,2+ out std logic) + 6 end concurrente; 7 architecture a.conc of concurrente is 8 begin 9 X c= (not A and not B and not C) or (not A and not 2 and C) 10 or (not 8 and Band C) oc (A and B ani Cc); u Y by a b) then 14 yee ‘1p 15 else 16 2 AG 17 end if; 18 end process 19 end arq_comp4; Listado 3,5 Descripcisn del comparador de 4 bits utilizando et estilo funcional. 72 VHDL: El arte de programar sistemas digitales Bjemplo3:4 —_Diseite un comparador de dos ndimeros A y B, cada ntimero formado por dos bits (Al AO) y (BI BO) la salida del comparador también es de dos bits y est representada por la variable Z ( Z1 20 ) de tal forma que si: A = Bentonces Z = 11 A < Bentonces Z = 01 A > Bentonces Z = 10 La tabla de verdad correspondiente a este comparador es la siguiente. Al AO BI BO| Z1ZO Beene ccccoco] HH HH ocoooHHH+-coce HH oonHcoHH-ocoHHoo HoH oH oor oHoHoHo Hee Hone Hoon cooe Hocor Hoon eH oe eee Las ecuaciones légicas reducidas mediante un mapa de Karnaugh para ZI y Z0 son las siguientes: Z1 = AO Al + BO Bi + Al_BO + AO BO + AO BI 20 = AO Ai +BOB1+ AOBI+ AOBO+ A1BO El circuito representativo de este comparador es el siguiente, figura E3.4. Ao | ae) A, | Bo, |——+ z1 B1__| ee Figura E3.4. Descripcién funcional de un comparador de igualdad de dos bits. Disefto l6gico combinacional mediante VHDL 73 La programacién de este comparador se muestra en el siguiente listado. library ieee; use iece.std_logic_1164.all; entity comp ds port ( A,B: in std_logic_vector(1 downto 0); out std_logic_vector (1 downto 0)); end comp; architecture a_comp of comp is begin process (A,B) begin if A = B then Zen "11"; elsif A < 8 then Ze= “01 “107; Operadores relacionales. Los operadores relacionales se usan para evaluat la igualdad, desigualdad o la magnitud en una expresién, Los operadores de igualdad y desigualdad (= y /=) se definen en todos los tipos de datos. Los operadores de magnitud (<,<=,> y >=) lo estén sdlo dentro del tipo escalar. En ambos casos debe considerarse que el tamaio de los vectores en que se aplicardn dichos operadores debe ser igual. En la tabla 3.1 se mues- tran estos operadores y su significado. Operador Significado Igual Diferente Menor <= Menot o igual > Mayor >= Mayor 0 igual es ‘Tabla 3.1 Operadores relacionales, 74 VHDL: Blarte de programar sistemas digitales 3.2.2 Buffers tri-estado Los registros de tres estados (buffers tri-estado) tienen diversas aplicaciones, ya sea como salidas de sistemas (modo buffer) 0'como parte integral de un circuito. En VHDL estos dispositivos son definidos a través de Ios valores que manejan (0,1 y alta impedancia ‘Z’). En Ia figura 3.6 se observa el diagrama correspondiente a este circuita, y en el listado 3.6 el cédigo que describe su funcionamiento. enable. map Figura 3.6 Butler tri-estado, library icee; use iece.std logic 1164.all; entity tri_est is port( enable, entrada: in std logic: salida: out std_logic) ; end tri_es' architecture arq buffer of tri_est is begin process (enable, entrada) begin if cnable = ‘0’ then salida <= 'Z'; else salida A (A@2), 4 SumalA@S@Cin__, Suma ye cout pane eo Acaroo do on Ts PD Sarco AB+ (A@BCin b) Circuito sumador completo implementado por medio sumadores Figura 3.10 Circuitos sumadores. Diseno ligico combinacional mediante VHDL 81 La programacién en VHDL del sumador completo se presenta en el listado 3.10. library ice; use ieee. std_logic_1164.al1; entity sum is port ( A,B,Cin: in std logic; Suma, Cout: out std_logic); end sum; architecture a_sum of sun is begin Suma <= A xor B xor Cin; Cout <= (A and B) or (A xor B) and Cin; end a_sum; Listado 3.10 Sumador Completo. Sumador Paralelo de 4 bits Segiin fo anterior, para realizar un sumador paralelo de 4 bits slo se requie- re conectar en cascada un citcuito medio sumador y tres sumadores comple- tos como se muestra en la figura 3.11 Figura 3.11 Sumador de 4 bits 82 VHDL: El arte de programar sistemas digitales A su ver, éste es un buen ejemplo para reafirmar el manejo de sefiales (sig- nal). En la figura 3.11 se observa cémo los acarreos de salida (CO, Cl y C2) se encuentran retroalimentados dentro del circuito, por lo que no tienen un pin extemo asignado. En el listado 3.11 se ilustra la programacién en VHDL. Como puede apreciarse, el intervalo utilizado dentro de signal es (0 to 2), debido a que sélo se retroalimentan los acarreos CO, Cl y C2. Por otto lado, con un poco de esfuerzo puede intuirse que cada uno de los diferentes bloques que forma el sumador se caracteriza usando compuertas xor (or exclusiva) library icce; vse iece.std_logic_1164.al1; entity sume is port ( A,B: in ogic_vector (0 to 3); S: out stdlogic_vector (0 to 3); cou end suna; architecture argsuma of suma is signal C: s' begin Llogic_vector(0 to 2); (0) <= A(O) xor BIO); (0) <= ACO) and BIO}; a ) mor B(L)) xor C(O); (2) <= (AQ) and B(1)) oF (C(O) and(A(L)xor B(I))); wor B(2)) mor C(1); and B(2)) or (C(1)and(A(2)xor B(2))); and B(3)) mor (2); B(3)) or (C(2)am@(A(3)xor B(3}}}+ end_arqsuna; Listado 3.11 Descripcién de un sumador de 4 bits. Operadores aritméticos. Como su nombre indica, los operadores aritmé- ticos permiten realizar operaciones del tipo aritmético, como suma, resta, mul- tiplicacin, divisién, cambios de signo, valor absoluto y concatenacién. Estos operadores suelen usarse en el disefio I6gico para describir sumadores y resta- dores o en las operaciones de increment y decremento de datos. En la tabla 3.4 se muestran los operadores aritméticos predefinidos en VHDL. Operador __Descripeién + Suma : Resta / Division . Muttiplicacién Ea Potencia ‘Tabla 3.4. Operadores aritméticos utilizados en VHDL. Diserio I6gico combinacional mediante VHDL 83 Como ejemplo, analicemos el disefio de un circuito sumador de 4 bits que no considera el acarreo de salida (listado 3.12). library ieee; use iece.std logic 1164. all; use work.std_arith.ali; entity sum is port( A,B: in std_logic_vector(9 to 3); Suma: out std_logic_vector(0 to 3)); end sum; architecture argsum of sum is begin Suma <= A+ B; end arasum; eee Listado 3.12 Descripcidn de un sumador mediante std_logic_vector y el paguete std arith En el listado 3.12 se introdujo el paquete std_arith, el cual — como ya se mencioné— se encuentra en la libreria de trabajo work. Este paquete permi- te el uso de los operadores aritméticos con operaciones realizadas entre arre- glos del tipo sid_logic_vector; es decir, dado que dentro del paquete esténdar (std_logic_1164) no estan definidos los operadores aritméticos, es necesario usar el paquete std_arith. El uso de los operadores existentes en VHDL, asf como los tipos de da- tos para los cuales se encuentran definidos, se incluye en el apéndice B. 3.2.6 Decodificadores La programacién de circuitos decodificadores se basa en el uso de declaracio- nes que permiten establecer la relacién entre un eédigo binario aplicado a las entradas del dispositivo y el nivel de salida obtenido. En esta seccién se presentan dos tipos de decodificadores: el decodifi- cador BCD-decimal y el decodificador de BCD a siete segmentos, ya que consideramos que son dos de los més utilizados en el disetio légico combi- nacional. Decodificador BCD a decimal En la figura 3.12 podemos observar la entidad de diseiio correspondiente a un circuito decodificador, el cual convierte cédigo BCD (cédigo de binario a de- cimal) en uno de los diez digitos decimales. Por lo general estos dispositivos 84 VHDL: El arte de programar sistemas digitales se conocen como decodificadores de 4 a 10 lineas, ya que contienen cuatro lineas de entrada y 10 de salida. BCDIDEC Op-—~ a ip—b 2p—c 1 ab—a 2 4p— e 4 5h— 1 8 bp— 9 7h— fh Bb i of j Figura 3.12 Decuxlificador de BCD a deci El programa que describe el comportamiento de la entidad de la figura 3.12 se encuentra en el listado 3.13 Como se puede apreciar, el cédigo correspondiente a este citcuito se ba- sa en la ejecucion de un proceso en que se establecen las condiciones que se evalian para activar cada salida de acuerdo con el valor binario correspon- diente. Para fines practicos se asigné a cada salida un nombre a fin de facili- tar su identificacién. ‘A manera de ejemplo consideremos el valor de la entrada x = 0010, la cual corresponde al digito decimal 2. Nétese e6mo la condicién que deter- mina la asignacién del valor evalia primero la condicién de x y si la confir- ma, asigna a la salida c el valor correspondiente al digito decimal 2. Por otro lado, se puede ver que al inicio del proceso se declararon todas las salidas con un valor inicial de ‘I’, esto fue con el fin de asegurar que per- manecieran desactivadas cuando no estuvieran en evaluacién. —Decodificador de BCD a decimal library icce; 64.all; use icce.std_logic_: entity deco ie port ( x: in stq_logic_ve: 4,5,¢,4,¢,£,g,h,i,j: out std_logic); end deco; architecture arqdeco of deco is begin process (x) begin bee tly ccs 115 ay Continga Diseo ligico combinacional mediante VHDL 85 elsif elsif x = “0010" then elsif x = “0011” then elsif 0100" then <= 10% eleif “olO1" then "0110" then "0; elsif elsif x = "0111" then b= ‘0'; elsif x - “1000” then ice (0%; else end if; end process; end arqdeco; Listado 3.13 Descripcidn de un decodificador de BCD a decimal. Decodificador de BCD a display de siete segmentos En la figura 3.13a) se muestra un circuito decodificador, el cual acepta e6di- go BCD en sus entradas y proporciona salidas capaces de excitar un display de siete segmentos que indica el digito decimal seleccionado. En la figura 3.13b) se observa la distribucisn de los segmentos dentro del display. Figura 3.13 a) Decodificador BCD a siete segmentos. b) Configuracién det display de siete segmentos 86 VHDL: El arte de programar sistemas digitales Como se puede apreciar, la entidad del decodificador cuenta con una en- trada llamada A, formada por cuatro bits (AQ, Al, A2, A3), y siete salidas (a, b,c, dye, fg) activas en nivel bajo, las cuales corresponden a los segmen- tos del display. En a tabla 3.5 se indican los valores légicos de salida corres- pondientes a cada segmento. “a” Cédigo BCD AO Al A2 A3 a o --ccoce cece eon nHHoccoe cone conHtoco Honco-oH-oHe ecoceo-coH-e ecoH-cooee conrcconH-Ho coeooco oon} Tabla 3.5. Valores ligicos comespondientes a cada segmento del display. La funcién del programa cuyo cédigo se exhibe en el listado 3.14 utiliza declaraciones secuenciales del tipo case-when que, como se puede apreciar, ejecutan un conjunto de instrucciones basadas en el valor que pueda tomar una sefial. En nuestro ejemplo, se describe de qué manera se maneja el de- codificador de acuerdo con el valor que toma la sefial A. Para fines practicos se declararon todas las salidas como un solo vector de bits (identificado co- mo d); de esta forma se entiende que la salida a corresponde al valor dQ, la b al valor dl, etc. Por otto lado, la palabra reservada others, como ya se indi- 6, define los valores metaldgicos que puede tomar en la sintesis la salida d. library ieee; use ieee.std_logic_1164.al1; entity deco is port ( Ar dn std_logic_vector(3 downto 0); d: out std_logic_vector(6 downto 0)); end deco; architecture aradeco of deco is begin Continia Disefto l6gico combinacional mediante VHDL 87 process (A) begin case A is when "0000" «> d <= "0000001"; When "0001" => @ <= "1001111 when "0010" => d <= "9010010"; When "0011" => d <= "0000110"; when "0100" => d <= "1001100"; when “0101 @ <= "0100100"; When “O110" => @ <= "0100000" when "0111" => d <= *0001110"; when “1000" => d <= "0000000"; when “1001" => d <= "0000100"; when others => d <= "1111111"; end case; end process; end argdeco; Listado 3.14 Uso de declaraciones case-when. En la insteuccién case-when podemos observar el uso de asignaciones do- bles (=> d <=), las cuales permiten que una sefial adopte un determinado valor de acuerdo con el cumplimiento de una condicién especificada. Por ejemplo, en nuestro cédigo (listado 3.14) estas instrucciones se interpretan de la siguiente manera: cuando la sefial A sea “0000”, asigna a la sefial d el valor 0000001”; cuando A = “0001”, asigna adel valor “1001111”, etc. Cabe men- cionar que en la simulacién del programa esta asignacidn se realiza simultanea. 3.2.7 Codificadores En esta secci6n se presenta la forma de programar un circuito codificados, el cual como se observa en la figura 3.14, posee 10 entradas (cada una correspon- diente aun digito decimal) y cuatro salidas para el c6digo binario de 4 bits BCD. |— do Entrada | dt salida Decimal By — 82 8CD }d3. Figura 3.14 Codificador de decimal a BCD. 88 VHDL: El arte de programar sistemas digitales EI programa que describe al circuito de la figura 3.14, se muestra en el listado 3.15. Como se puede ver, el puerto de entrada” a” se declara como un vector para indicar la numeracién decimal del 0 al 9, mientras que la salida binaria se realiza a través del vector “d”. Asimismo, observe que la progra- macién se realiz6 utilizando declaraciones del tipo if-then-elsif. - Codificador de decimal a pcp library ieee; use ieee. std_logic_1164.al1; entity codif is port ( a: in integer range 0 to 9; gic_vector(3 downto 0)); a: out std end codify architecture arqcodif of cod! begin process (a) begin If a = 0 then @ <= "0000"; elsif a = 1 then d <= "0001"; elsif a - 2 then d <= "0010"; elsif a = 3 then d <= “0011"; elsif a = 4 then d <= "0100"; eleif a = 5 then “oloi"; 6 then "0110"; elsif a - 7 then ac “0 elsif a - @ then d <= 1000"; else dice 71001"; end if; end process; end argcodi: Listado 3.15 Diseno de un codificador de decimal a binario. Disefio logico combinacional mediante VHDL 89. Fjercicios Declaraciones concurrentes BA 3.2 3.3 34 35 3.6 37 3.8 39 3.10 3.11 Mencione los tres tipos de declaraciones concurrentes en VHDL. Indique qué tipo de instrucciones se usan en las declaraciones condi- cionales asignadas a una sefial Dé el orden de ejecucién de los operadores Iégicos en VHDL. En las siguientes expresiones proporcione la expresin equivalente en VHDL. a) X = (a+b) (cxord) b) F=(a + td) + (ardec)+ (a+b) c) Z = (wexey) + (x anor y) Mencione la principal diferencia entre las declaraciones secuenciales y las declaraciones concurrentes. Mencione qué tipo de instrucciones utilizan las declaraciones secuen- ciales. Indique qué instruccién se utiliza cuando se requieren més condicio- nes de evaluacién en un proceso. Mencione los operadores aritméticos que se utilizan en VHDL. Indique en cu4l libreria y en qué paquete se encuentran los operado- res de la pregunta 3.8. Un circuito comparador de 3 bits recibe dos ntimeros de 3 hits X = X2, X1, XO y 2 = Z2, Z1, ZO. Disefie un programa en VHDL que produzca una salida F = I si y s6lo si X < Z. Elabore un programa en VHDL que describa el funcionamiento del circuito mostrado en la figura siguiente. [) L) 1 D>" N) Figura 4.2. Flip-flops y tablas de verdad caracteristicas. Diserio lgico secuencial con VHDL 95 Es importante recordar el significado de la notacién Q y Qos): Q = estado presente o actual Qua) = estado futuro o siguiente Por ejemplo, consideremos la tabla de verdad que describe el funciona- miento del flip-flop tipo D, mostrado en la figura 4.2c) y que se muestra de nuevo en la figura 4.3a). Qoory | o 0 b) Figura 4.3 a) Diagrama y tabla de verdad del flip-flop D, b) Flujo de informacisn en el dispesitiv, Cuando el valor de la entrada D es igual a 1, figura 4.3b), la salida Q, 4) adopta el valor de 4: Quy. = 1 siempre y cuando se genere un pulso de re- Joj. Es importante resaltar que el valor actual en la entrada D es transferido ala salida Q,, ; sin impottar cual sea el valot previo que haya tenido la sali- da Q en el estado presente. En el disefio secuencial con VHDL las declaraciones If-then-else son las mas utilizadas; por ejemplo, el programa del listado 4.1 usa estas decla- raciones. La ejecucién del proceso es sensible a los cambios en clk (pulse de reloj); esto es, cuando clk cambia de-valor de una transicién de 0 a 1 (clk = 1), el valor de D se asigna a'Q y se conserva hasta que se genera un nuevo pulso. ‘A |a inversa, si clk no presenta dicha transicién, el valor de Q se mantiene igual. Esto puede observarse con claridad en la simulacidn del circuito, fig. 4.4. VHDL: El arte de programar sistemas digitales library ieee; use icce.std_logic_1164.all: entity £fd is port( D,clk: in std Oo: out std_logic); end architecture arq_ffd of ffd is begin process (clk) begin if (clk’ event, D: Listado 4.1. Descripeidn de un flip-flop disparado por flanco pesitivo. i Ly aos Figura 4.4 Simulacién del flip-flop D. Notemos que fa salida Q toma el valor de la entrada D sélo cuando la transicién del pulso de reloj es de O.a 1 y se mantiene hasta que se ejecuta de nuevo el cambio de valor de la entrada clk. Atributo ‘event En el lenguaje VHDLilos atributes sirven para definir caracteristicas que se pueden asociar con cualquier tipo de datos, objeto o entidades. El atributo ‘event! (evento) se utiliza para describir un hecho u ocurrencia de una sefial en particular. En el cédigo del listado 4.1 podemos observar que la condicin if clkevent es cierta s6lo cuando ocurre un cambio de valor; es decir, un suce- so (event) de la sefial clk. Como se puede apreciar, la declaracién (if-then) no maneja la condicién else, debido a que el compilador mantiene el valor de Q hasta que no exista un cambio de valor en la sefial clk. 1B apse indica que se trata de un atebuo, Diseio légico secuencial con VHDL 97 Bjemplo 4.1 Para mayor informacién de los atributos predefinidos en VHDL consul- te el apéndice C. : Escriba un programa que describa el funcionamiento de un flip-flop SR con base en la siguiente tabla de verdad. “i lk +1 HHH occola -Hcon-colm -o-c-orolo Mem OO- Figura E4.1 Tabla de (uncionamiento. Solucién La tabla de verdad del flip-flop SR muestra que cuando la entrada S es igual a 1 y la entrada R es igual a 0, la salida Q, toma valores I6gicos de 1. Por otro lado, cuando $ = 0 y R=1, la salida Q,4) = 0; en el caso de que $y R sean ambas igual a I l6gico, la salida Q, 4; queda indetermi- nada; es decir, no es posible precisar su valor y éste puede adoptar el 0 © 1 l6gico. Por tiltimo, cuando no existe cambio en las entradas S y R —es deci igual a O—, el valor de Q,, mantiene su estado actual Q. Con base en el anélisis anterior, el programa en VHDL puede realizarse utilizando instrucciones condicionales y un nuevo tipo de datos: valores no importa (~*), los cuales permiten adoptar un valor de 0 o 1 Iigico de mane- ra indistinta (Listado 4.2) 5 Son, 98 VHDL: El arte de programar sistemas digitales 4.3 Registros library ieee; use icee.std_logic_1164.al1; entity fis is port ( S,R,clk: 4m std logic; Anout std_logic); architecture a_ffsr of ffsr is 8 begin 9 process ‘clk, S, R) 11 begin 10 4f (clk’event and elk = ‘1’) then u 4€ (S$ = ‘O’and R= ‘1‘) then R Q B once ‘1 4 elsif (S = R= ‘0') then 15 oes 6 On <= ‘0’ vw elsif (S = '0' and R = 18 Qe 19 Qn <= Qn; 20 else 2 Qe ty 22 On <= ="; 23 end if; 24 end 41 25 end process; 26 end a_ffsr; Listado 4.2 Cédigo VHDL de un registro de 8 bits, En la figura 4.5 se presenta la estructura de un registro de 8 bits con entrada y salida de datos en pardlelo. El disefio es muy similar al flip-flop anterior, la diferencia radica en la utilizacién de vectores de bits en lugar de un solo bit, como se observa en el listado 4.2 D(o:7} |-» _Salidas | = JUN ok Figura 4.8 Arquitectura secuencial de Mealy. 106 VHDL: El arte de programar sistemas digitales — Entradas" i——> Salidas J SUL. ok Figura 4.9 Arguitectura secuencial dé Moore. Un sistema secuencial se desarrolla a través de una serie de pasos generali- zados que comprenden el enunciado del problema, diagrama de estados, tabla de estados, asignacién de estados, ecuaciones de entrada a los elementos de me- moria y diagrama electrénico del circuito. Como ejemplo consideremos el disefio del siguiente sistema secuencial (Fig, 4.10), en el cual se emite un pulso de salida Z (Z=1) cuando en Ja it nea de entrada (X) se reciben cuatro unos en forma consecutiva; en caso contratio, la salida Z es igual a cero. clk Figura 4.10 Detector de secuencia. Disefio légioo secuencial con VHDL 107 Diagramas de estado, El uso de diagramas de estados en la légica programable facilita de manera significativa la descripcién de*un disefio secuencial, ya que no es necesario seguir la metodologia tradicional de disefio. En VHDL se puede utilizar un modelo funcional en que sélo se indica la transicién que siguen los estados y las condiciones que controlardn el proceso. De acuerdo con nuestro ejemplo (Fig. 4.12), vemos que el sistema se- cuencial se puede representar por medio del diagrama de estados de la figu- ra 4.12a); atquitectura Mealy. En este diagrama se advierte que el sistema cuenta con una sefial de entrada denominada X y una sefal de salida Z. En la figura 4.12b) se muestra la tabla de estados que describe el comportamien- to del circuito, Cuando se esté en el estado d0 y la sefial de entrada X es igual a uno, se avanza al estado dl y la salida Z durante esta transicin es igual a cero; en caso contrario, cuando la entrada X es igual a cero, el circuito se mantiene en el estado dO y Ia salida también es cero (Fig. 4.11). Figura 4.11 ‘Transicign de un estado a otro. Con un poco de légica se puede intuir el comportamiento del diagrama de estados. Observe como sélo la secuencia de cuatro unos consecutivos pro- voca que la salida Z = 010 Edo. presente Edo. futuro Salida Z x ne @_ [ws [oo v0 a [a 00 a2 |e & [00 ao, 33 3 dO 0 1 = @ res » Envaca Salida) Figura 4.12 a) Diagrama de Estados. b) Tabla de estados. VHDL: El arte de programar sistemas digitales Este diagrama se puede codificar con facilidad mediante una descripci6n de alto nivel en VHDL. Esta descripcién supone el uso de declaraciones case-when las cuales determinan, en un caso particular, el valor que tomaré el siguiente estado. Por otro lado, la transicién entre estados se realiza por medio de declaraciones if-then-else, de tal forma que éstas se encargan de establecer la légica que seguir4 el programa para realizar la asignacién del es- tado. Como primer paso en nuestro disefio, consideremos los estados dO, dl, d2 y d3. Para poder representatlos en cédigo VHDL, hay que definirlos den- tro de un tipo de datos enumerado? (apéndice C) mediante la declaracién type. Observemos la forma en que se listan los identificadores de los estados, asi como las sefiales utilizadas para el estado actual (edo_presente) y siguien- te (edo_futuro): v ) type estados de (a0, 62,8) + \ signal edo_presente, edo_futuro : estados; El siguiente paso consiste en la declaracién del proceso que definiré el comportamiento del sistema. En éste debe considerarse que el edo_futuro depende del valor del edo_presente y de la entrada X. De esta manera la lis- ta sensitiva del proceso quedaria de la siguiente forma: procesol: process (edo_presente, x) Dentro del proceso se describe la transici6n del edo_presente al edo_fu- turo, Primero se inicia con la declaracién case que especifica el primer esta- do que se va a evaluar —en nuestro caso consideremos que el anilisis co- mienza en el estado dO (when dO), donde la salida Z siempre es cero sin importar el valor de X. Si la entrada X es igual a 1 el estado futuro es dl; en caso contrario, es dO. De este modo, la declaracién del proceso quedarfa de la siguiente manera: procesol: process (edo_presente, x) begin case edo_presente is when dO => Ze= ’ af X =/1 then edo_futuro <= dl; else edo_futuro <= d0; end if; IHaman tipos enumerados porque en ellos se agrupan 0 enumeran elementos que pertenecen a un mismo sénero. Diserio l6gico secuencial con VHDL 109 Nétese que en cada estado debe indicarse el valor de la salida (Z <= 0) después de la condicién when, siempre y cuando la variable Z no cambie de valor. En el listado 4.5 se muestra la definicién completa del cédigo explicado. Como podemos observar, en el programa se utilizan dos procesos. En el pri- mero, procesol {linea 11) se describe la transicién que sufren los estados y las condiciones necesarias que determinan dicha transicién. En el segundo, proceso? (Ifnea 42) se lleva a cabo de manera sincrona la asignacién del es- tado futuro al estado presente, de suerte que cuando se aplica un pulso de reloj, el proceso se ejecuta. En la linea 31 se describe la forma de programar la salida Z en el estado 43 cuando ésta obtiene el valor de 0 o 1, segtin el valor de la entrada X. 1 library ieee; 2 use icee.std_logic_1164 3 entity diagrama is port ( 4 clk,x: in std_logic: 5 2: out std_logic); 6 end diagrama; 7 architecture arqdiagrama of diagrama ts 8 type estados is (a0, dl, a2, a3); 9 signal edo_presente, edo_futuro: estados; 10 begin 11 procesol: process (edo_presente, x) begin 12 case edo_presente is 23 when @0 => 2 <= wu if x -/L" then 15 edo_futuro <= dl; 16 else un edo_futuro <= a0; 18 end if 19 20 21 22 23 24 25 26 27 28 29 30 Continga 110 VHDL: El arte de programar sisternas digitales aL when G3 => 32 4 xe/1' then 33 edo_futuro <=, 40; 34 z if x = ‘0! then edo_fut <= a4; Z z <= ‘0'; Af x = /0" then edo_fut <= a4; else edo_fut <= ql: end if; end case; end process procesol; proceso2: process (clk) begin if (clk’event and clk='1") then edo_pres <= edo_fut; end if; end process proceso? ; end arq_ diag; Listado E4.4. Disefio légico secuencial con VHDL 113, Ejercicios Flip-Flop 4.1 Realice un programa en VHDL que describa el funcionamiento del flip- flop tipo JK. Auxfliese para su desctipcién con la tabla caracteristica del Flip-Flop. Qe 0 Ha cofnoolx Q 0 1 0 1 0 1 0 1 one eooe Tabla caracteststica del Flip-Flop JK 4.2. Realice un programa en VHDL que describa el funcionamiento del flip- flop tipo T. Auxiliese para su descripcién con la tabla caracteristica del Flip-Flop. TQ Qe 0 oO 0 0 1 1 1 oO 1 1 1 0 ‘Tabla caracteristica del Flip-Flop T Registros 4.3. Disefie un registro de 4 bits como el mostrado en la siguiente figura y cuyo funcionamiento se encuentra regulado por las sefiales de control SO y SI, tal y como se muestra en la siguiente tabla: 114 VHDL: Elarte de programar sistemas digitales SO SI ACCION 0 0 —— Hold (Reten) oo Desplazamiento I2quierda SL 10 Load (Carga) nt Desplazamiento Derecha SR Entradas en paralelo Entradas de ——————-_ Enlradas de Glesplazamientoizquierda | + + 4 t 4 Sesplazamionto dorecha Sefial de control Reloj Sefiales de control Entradas de datos Reset, Salida de datos Entrada serie desplazamiento a la izquierda R= Entrada serie desplazamiento a la derecha. 4.4 Enla figura siguiente se muestra el esquema lgico de un registro de des- plazamiento con entrada serie/ paralelo y salida serie. Realice un progra- ma en VHDL que realice la misma funcién. Entrada de datos en paralelo Habilitacién paralela Entrada de datos en serie Disefio I6gico secuencial con VHDL 115 4.5. En la figura siguiente se muestra el esquema ldgico de un registro de desplazamiento con salida en paralelo. La tabla de funcionamiento co- rrespondiente se muestra a continuacién. Realice un programa en VHDL que realice la funcién del circuito. A 8 ° D izquiorda 80> | Ba | st i Entrada derecha 1 ow Phos + Clear a ‘ob od ‘Salida on paralelo Contadores 4.6 Disefte y programe un contador que realice la secuencia 0,1,3, 5 y repi- ta el ciclo, El circuito debe contar con una sefial de reset activo en ba- jo, que coloca las salidas Q en estado bajo. 4.7, Disefie y programe un contador que realice la secuencia 0,1,2,3,4,5,6,7 ytepita el ciclo. El circuito debe contar con una sefial de reset activo en bajo, que coloca las salidas Q en estado bajo. \ 116 VHDL: Bl arte de programar sistemas 48 49 4.10 411 Programe un circuito contador ascendente / descendente del 9 al 3 mediante una sefial de control X. Si X=0, el contador cuenta ascen- dente, si X=1, e! contador cuenta descendente. Programe un circuito contador ascendente / descendente del 0 al 15 mediante una sefial de control X. Si X =0, el contador cuenta ascen- dente; si X=1, el contador cuenta descendente. Existen dos sefiales de salida denominadas Z1 y Z2 que se activan de la siguiente forma: Z1=1 Cuando el contador se encuentra en los estados pares, en caso contrario Z1=0. Z2=1 Cuando el contador se encuentra en los estados impares, en ca- so contrario Z2=0 En la siguiente figura se muestra el cronémetro digital configurado pa- ra contar del 0 al 99 mediante dos contadores SN 7493 conectados en cascada. Realice un programa en VHDL que cuente del 0 al 99. Realice un programa para un cronémetro que debe contar del 0 al 245 y repita el ciclo. Disefto ligico secuencial con VHDL 117 Sistemas secuenciales 4.12. Realice un programa que resuelva el siguiente diagrama de estados: 4.14 En la figura se muestra el crucero de una avenida controlada a través de un semaforo. 118 VDL: Bl arte de programar sistemas dgitaes Los automéviles pueden circular en la direccién NS o EO mediante la si- guiente secuencia: Ld Los tiempos de duracién de las luces del seméfora son: rojo 20 segundos, verde 20 segundos, mbar 5 segundos. Proponga el diagrama de estados correspondiente y realice el programa del sistema secuencial. 4.15 El semaforo mostrado en la figura del ejercicio de la pagina 117 ha sido modificado tal y como se muestra en la siguiente figura. Entrada / Salida de vehicules N wou] | lem —o 8 Se requiere agilizar la entrada y salida de vehiculos por medio de senso- res (S) que detectan la entrade o salida de ellos. Generalmente el semaforo EO siempre se encuentra en verde y en contraparte el seméforo NS est en Diseno logico secuencial con VHDL 119 rojo; cuando alguno de los sensores detecta la entrada o salida del vehiculo envfa una sefial al siseema que gobierna el semaforo para que éste realice la secuencia siguiente: NS Rojo Over Nuevamente la duracién de encendido de los focos del semaforo son: roja 20 segundos, verde 20 segundos, émbar 5 segundos. Proponga el diagrama de estados correspondiente y realice el programa del sistema secuencial. 4.16 Programe un detector de secuencia que produce una salida Z=1 solo cuando en la sefial de entrada X se produce la siguiente secuencia X = 110011. 4.17 Programe un detector de secuencia cuya salida Z= 11011111 cuando aplicamos a la entrada la secuencia X= 01101010. 4.18 Realice el programa correspondiente al sistema secuencial especificado en la siguiente tabla. X=0 X=1 Futuro BO EO B Al Ci Cc BO Cl D co EO E Dil Aa Considere la siguiente asignacién de estados: A000 BOO = COIO.- DOLE 100 120 VHDL: El arte de programar sistemas digitales 4.19 Realice el programa de un contador ascendente /descendente de nti- 4.20 meros seudo aleatorios de 3 bits. El circuito tiene una entrada de control X Cuando X=0 , el contador cuenta ascendente , si X=1 el contador genera néimeros seudo aleatorios, tal y como se muestra en la tabla. x Presente 0 1 1 2 2 3 3 4 4 5 5 6 6 7 7 0 Programe el sistema secuencial correspondiente a una méquina despa- chadora de refrescos, el valor del refresco es de $ 5.00 pesos y la maqui- na acepta monedas de $5.00, $10.00 y $ 20.00. Cuando se introduce una moneda de diez 0 veinte pesos, la mquina debe dar cambio en monedas de $5.00 pesos hasta completar el cambio correspondiente. Para realizar este programa no considere el sistema detector de mone- das ni el sistema de servicio encargado de dar el refresco. Programe exclusivamente el sistema secuencial encargado de con- trolar la secuencia descrita anteriormente. Capitulo 5 Integracién de entidades en VHDL Introduccién Hasta este momento hemos utilizado la programacién en VHDL para dise- far entidades individuales (bloques légicos minimos), con el tinico objeto de familiarizarlo con los diversos estilos de disefio y programacién o ambos, ast como con el uso y aplicacién de las palabras reservadas en VHDL. Sin embargo, es obvio que esta herramienta de disefto no fue creada para este fin. Como vimos en el capitulo 1, existen varias razones para su utiliza- cién; pero quiz su verdadera fortaleza radica en que permite integrar “siste- mas digitales" que contienen una gran cantidad de subsistemas electrénicos con el fin de minimizar el tamafio de la aplicacién. En primera instancia, en un solo circuito integrado y si el problema es muy complejo, a través de una serie sucesiva de circuitos programables, sea que se llamen CPLD (dispositivo l6gico programable complejo) o FPGA (arreglos de compuertas programables en campo). [5.1 Esquema basico de integracién de entidades La integracién de entidades puede realizarse mediante el disefio individual de cada bloque légico a través de varios procesos internos que posteriormen- pueden unirsé mediante un programa comén. Otra posibilidad es observar y analizar de manera global todo el sistema evaluando su: comportamiento s6- loa través de sus entradas y salidas. En ambos casos el resultado es satisfacto- rio; mas bien, nuestra tarea consiste en analizar las ventajas y desventajas que existen en ambas alternativas de solucién. En el primer caso, el inconvenien- te principal es el niimero excesivo de terminales utilizadas en el dispositivo, debido a que al disefiar entidades individuales, se tendrian que declarar las terminales de entrada-salida de cada entidad (Fig 5.1a). Apéndice E Palabras reservadas en VHDL A continuacién se muestra una lista de las palabras reservadas en VHDL. Como se mencioné en el apéndice C, ninguna palabra reservada se puede usar como identificador de sefiales. Abs Exit Not Signal Access File Null Shared After For of Sla Alias Function On sil All Generate Open Sra And Generic Or Sil Architecture Group Others Subtype Array Guarded Out Then Assert If Package To Atribute Impure Port ‘Transport Begin In Postponed ‘Type Block Inertial Procedure Unaffected Body Inout Process Units Buffer Is Pure Until Bus Label Range Use Case Library Record Variable Compoennt Lindage Register Wait Configutation Literal Reject When Constant Loop Rem While Disconnect Map Report With Downto Mod Retum Xnor Else Nand Rol Xor Ebif New Ror End Next Select Entity Nor Severity Apéndice F Operadores definidos en VHDL segiin su orden de precedencia Operador Abs not Mod Descripcién porencia Valor absolute negacién multiplicacion Division, modulo suma resta concatenacién Tipos de operandos Entero operador entero Real operador entero Numérico Bir, booleano, vectores de bits Entero operador entero al op real Fisico op real Fisico op entero Enteto op fisico Real op fisico Entero op entero Real op real Fisico op entero Fisico op real Fisico op fisico Entero op entero Numérico op numérico Numérico op numérico Vector op vector Vector op elemento Elemento op vector Elemento op elemento Resultado Entero Real Idem operando idem operando Entero Real Fisico Fisico Fisico Fisico Entero Real Fisico Fisico Fisico Entero {dem operandos {deem operandos Vector Vector Vector Vector Continia 350 © VHDL: El arte de programar sistemas digitales Operador Descripcién Tipos de operandos Resultado sll stl sla rol or rand, nor xor xnor Desp. Légico izquierdo Despl. Légico derecho Despl. Arit. izquierdo Rotacién izquierda Rotacién derecha Igual que Diferente que Menor que Mayor que Menor o igual que Mayor o igual que y logica 6 logica y lgica negada © logica negada or exelusiva or exclusiva negada Vectores de bits op entero Vector de bits op entero Vector de bits op entero Vector de bits op entero Vector de bits op entero No archivo op no archivo No archivo op no archivo No archivo op no archivo No archivo op no archivo No archivo op no archivo No archivo op no archivo Bit,booleano, bit_vector op bit, booleano, bit_ vector Bit,booleano, bit_vector op bit, booleano, bit_vector Bit,booleano, bit_vector op bit, booleano, bit_vector it;booleano, bit_vector op bit, booleano, bit_vector Bit,booleano, bit_vector op bit, booleano, bit_vector Bit,booleano, bit_vector op bit, booleano, bit_vector Vector de bits Vector de bits Vector de bits Vector de bits Vector de bits Booleano Booleano Booleano Booleano Booleano Booleano {dem operandos idem operandos {dem operandos fdem operandos {dem operandos Idem operandos Fuente de informacién: The IEEE Estindar VHDL Language Reference Manual, IEEE Std 1076-1987, 1988. Indice analitico Archivos xxiv, 339-341 Arquitectura (architecture), 46-55 dlescripeién estructural, 53 funcional, 47-49 por flujo de datos, 49-52 estructural, 53 Arredlo(s) (array), 298-299 de compuertas programables, 3-4,15-18,23 logic genérico (GAL), 4,9-19 Asignaciones dobles, 87 Buffer trivestado, 74 Carta ASM deseripeién, 157 disefio mediante VHDL, 166-173 ex comparacién con maquina de estado, 159 estructura, 156 Circuito AMD 2909 deseripcisn, 199-200 dlisefto y programacién de componentes, 201-208 Codificadores, 87-88, Comparador de magnitud, 70-71 Compilacisn de un disefio, 316-319 Compiladores logicos, 20 Componente (component), 53,201,206,262-264 Configuracign (configuration, 37 Contadores, 101-104 con reset y carga en paralelo, 103 Controladores, 153-154 algoritmos de, 165 diseiio, 162-166 CPLD vase dispositivos ligicos programables complejos secuenciales, 46, 50, 69-75 Decoxlificadores, $3.87 BCD a decimal, 83-85 BCD a display de siete segmentos, 85-87 Disefio jerérquico, 53,197-208, 261-270 Metodotogia de diseiio, 198 Dispositivos ligicos programables, 2-8,13 Dispositivos ligicos programables complejos, 2-4,13-15,23 Ecuaciones booleanas, 51 Entidad (entity), 37-46 declaracién de, 40 disefio utilizando vectores, 42 disefio urilizando librerias y paquetes, 44 integeacién de, 123-127 Eventos (event), 96, 100 Flip-lop, 94-98 EPGA uéase arreglos de compuertas programables Full-custor, 3 GAL véase arreglo ligico genérico Galaxy, 312-315 Hentificadores, 42, 333 ISR programador, 327-329 Lenguaje dle descripeisn en hardware VDHL, 25-28,37 desventajas, 27-28 en Ia actualidad, 28 ventaias, 26-27 HDL, 25 Librerias creaciGn de, 208-210 declaracin de, 45 feee, 44 library, 44 ‘work, 44 Lsgica programable ambiente de desarrollo, 18-19 campos de aplicacion, 23-24 compantas de soporte, 28-31,32 futuro, 31 método tradicional de disefio, 20-22 Mactoceldas, 12,14 Maquina de estado ASM, 154-159 bloque de estado, 154 bloque de decisién, 155 disefio con VHDL, 166 352. {nice analtico Microprocesadores, 230-31 programaciGn de, 211-224,236-261 Modos, 39 buffer, 39 in 39 Inout, 39 out, 39 Multiplexores, 75 ottos (others), 75 tipos logicos estandar, 76 Netlist, 53 No importa (dont care) véase valores no importa, Nova simulador, 320 Objetos de datos, 333-335 archivos, 335 constantes, 333 variables, 335 Operadores aritméticos, 82 Kogicos, 63 relacionales, 73 Optimizacién, 325 PALASM, 2 Paquete (package), 37, 44, 122 cuerpo del, 37 declaracisn, #4 rmurmeric_std, 46 std_avith, 46,83 PLD wéase dispositivos logicos programables Proceso (process), 48, 69 Programa de alto nivel (top level), 197, 200, 207 disefio del 198,223,264-266 Project, 313 Puertos, 39 Redes neuronales artificiales, 273-279 aprendizaje en las, Redes asociativas, 294-297 Registros, 98-100 Reporte, archivo de, 322-327 Semi-custom, 3 Sistema secuencial, 93-94 sincrono, 105 Sistema embebido, 229-237 clasificacién, 235-236 disefio, 231-235 Sumadores 78 ‘Tecnologias de fabricacién de circuitos integrados, 3 Tipo de datos, 36, 39,40 archivo. (record), arreglo, 338 it, 40 bit_vector, 40, 42, 43 booldin, 40 compuestos, 336 enumerado, 108, 336 escalar, 336 fisicos, 337 integer, 40 reales, 337 Unidades de disefio, 37 primarias, 37 secundarias, 37 Valores no importa (dont etre), 97 Variables, 335 VHDL vase fenguaje de descripeisn en hardware WarpR4, 311-312 Instalacién, 331-332 Esta obra se terminé de imprimir en abril del 2002 en los talleres de Litogra -a INGRAMEX, S.A. de C.V. Centeno No. 162 Local 1, Col. Granjas Esmeralda C.P, 09810, México, D.F.

También podría gustarte