Diseño de un sistema de alarma con lógica programable

  • 3,624 views
Uploaded on

 

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
3,624
On Slideshare
0
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
83
Comments
0
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Diseño de un sistema de alarma con Lógica ProgramableFacultad de Ciencias Químicas e Ingeniería de la Universidad Autónoma de Baja California1. RESUMEN Actualmente la humanidad se encuentra sumergida en una nueva etapa evolutiva,La información contenida en esta obra la denominada era digital, en la que seabarca el diseño de una alarma de 4 bits vive rodeado de todo tipo de dispositivousando componentes digitales, mediante electrónico los cuales dependen de unel uso de un dispositivo lógico circuito digital. Esta muy marcada laprogramable (PLD) y aplicación de una electrónica digital como el surgimiento demaquina de estados. Se incluyen ejemplos las nuevas tecnologías que permiten alde una máquina de Mealy y una máquina hombre llevar a cabo sus tareas conde Moore. Se incluyen ejemplos de la mayor facilidad y comodidad.aplicación del diseño en otros circuitosademás de una descripción de la lógica Toda esta revolución tecnológica debellevada a cabo. estar a gradecida a la invención del transistor, que fue en 1947 cuando JohnLos dispositivos lógicos programables Bardeen, Walter Brattain y William(PLD) favorecen la integración de Shockley descubren el efecto transistor, elaplicaciones y desarrollos lógicos cual permite cambios en la conductividadmediante el empaquetamiento de de los materiales mediante el uso desoluciones en un circuito integrado. El corriente eléctrica. Sumándole el álgebraresultado es la reducción de espacio físico booleana, es cuando surge la electrónicadentro de la aplicación; es decir, se trata digital.de dispositivos fabricados y revisados quese pueden personalizar desde el exterior Posteriormente a la idea de crear circuitosmediante diversas técnicas de cada vez más pequeños y con menosprogramación. El diseño se basa en costo, surgen los dispositivosbibliotecas y mecanismos específicos de programables, con el fin de usar unmapeado de funciones, mientras que su lenguaje de programación para configurarimplementación tan sólo requiere una fase los arreglos de compuertas en un diseñode programación del dispositivo que se único y confiable. En la actualidad elsuele realizar en segundos. nivel de integración en estos circuitos con el desarrollo de la microelectrónica haSe denomina máquina de estados a un hecho posible desarrollar sistemasmodelo de comportamiento de un sistema completos dentro de un solo circuitocon entradas y salidas, en donde las integrado. Todas estas características essalidas dependen no sólo de las señales de lo que nos lleva a observar a diarioentradas actuales sino también de las sistemas de uso industrial, militar y los deanteriores. Una máquina de estados puede consumo han reducido su tamaño; porser finito o infinito depende su aplicación, ejemplo, los teléfonos celulares,así mismo existen diferentes modelos que computadoras, calculadoras, relojes,serán vistos detalladamente. sistemas de telecomunicaciones, etc. No son más que aplicaciones de los circuitos integrados.2. INTRODUCCIÓN
  • 2. Ahora bien con estas herramientas en sistemas que emplean circuitos diseñadosevolución, surge la combinación de un para una aplicación en particular.circuito programable con una maquina deestados, lo cual simplifica aun mas el Existen destinos arreglos de compuertastrabajo y diseño de sistemas digitales. Por que componen a los dispositivosejemplo, si se requiere un sistema en el programables. Los FPGA por ejemplocual se deban ejecutar una secuencia de son arreglos de compuertas programablesinstrucciones las cuales dependen unas de en campo y CPLD dispositivos lógicosotras, ocupan cierto tiempo de ejecución o programables complejos. Ellos ofrecennecesitan conteos variables, su diseño las mismas ventajas de un ASIC, sólo quesería muy complicado usando simple a un menor costo.álgebra booleana con arreglo de circuitoscombinacionales. Todo esto resulta Categoría Característicmucho más sencillo si se utiliza la lógica asque implican las maquinas de estados Diseño totalmente a la Totaltambién llamados sistemas secuenciales, medida(full custom) libertad decuyo fin es mostrar ciertas salidas de diseño, peroacuerdo a la secuencia que fue diseñada. el desarrollo requiereLa finalidad del artículo es presentar un todas lassistema digital y dar a conocer etapas deconocimientos necesarios para continuar fabricación.por cuenta propia en el diseño de otros Matrices de puertas pre Sólosistemas que parecieran complejos pero difundidas necesita lascon las herramientas que se exponen se últimaslogran fácilmente. Con la teoría en etapas delconjunto, se plantea un circuito de proceso, y elseguridad, útil para restringir el acceso a diseño estáun cuarto, bodega o automóvil. limitado a las posibilidades3. ASICS de laEl diseño y aplicación de sistemas se estructurapuede lograr circuitos denominados prefabricada.ASICS, pero entra más completo sea el Celdas estándares pre Libertad decircuito, mayor complejidad tiene su caracterizadas(semicust diseño, peroelaboración. En la actualidad, el diseño de om) el desarrolloASIC (circuitos integrados desarrollados exige unpara aplicaciones específicas) domina las proceso detendencias en el desarrollo de fabricaciónaplicaciones a nivel de microelectrónica. completoEste diseño presenta varias opciones de Lógica programable Dispositivosdesarrollo, como se observa en la tabla (FPGA, CPLD) que se1.1. A nivel de ASIC el desarrollo full o puedensemicustomofrecen grandes ventajas en personalizar desde el
  • 3. exterior Los dispositivos PLD están formados por mediante arreglos o matrices que pueden ser fijos o programació programables, se encuentran n. estructurados mediante bloques lógicosTabla 1.1 Tecnologías de fabricación de configurables y celdas lógicas de altacircuitos integrados. densidad, respectivamente. La arquitectura PLD está formada por un arreglo de compuertas AND y OR4. PLD conectadas a las entradas y salidas del dispositivo. La finalidad de cada una deEn la actualidad existe una gran variedad ellas se describe a continuación.de dispositivos lógicos programables, los Arreglo AND: Está formado porcuales se usan para remplazar circuitos varias compuertas ANDSSI (pequeña escala de integración), MSI interconectadas a través de(mediana escala de integración) e incluso alambres, los cuales cuentan concircuitos VLSI (muy alta escala de un fusible en cada punto deintegración), ya que ahorran espacio y intersección. Para programar sereducen de manera significativa el funde o apaga el fusible paranúmero y costo de los diseños. Estos eliminar variables sin utilizar.dispositivos, llamados PLD (tabla1.2), seclasifican por su arquitectura (formafuncional en que se encuentran ordenadoslos elementos internos).Dispositivo DescripciónPROM ProgrammableRead- OnlyMemory: memoria programable de sólo lectura.PLA ProgrammableLogicArray: arreglo lógico programable Fig 1.1 Arreglo ANDPAL ProgrammableArrayLogic: Arreglo OR: Está formado por un lógica de arreglos conjunto de compuertas OR programables conectadas a un arregloGAL GenericLogicArray: programable, el cual contiene un arreglo lógico genérico fusible en cada punto deCPLD Complex PLD: dispositivo intersección. Este tipo de arreglo lógico programable es similar al de compuertas AND. complejoFPGA Field ProgramGateArray: arreglos de compuertas programables en campoTabla 1.2 Dispositivos lógicosprogramables.4.1 Estructura interna de un PLD
  • 4. lógicas de salida). Para efectos didácticos se enlistan las especificaciones más relevantes del circuito.  Fabricante: Lattice Semiconductor Corporation  4 ns máximo de retraso en propagación  Fmax = 250 MHz  3.5 ns máximo tiempo de propagación de la entrada de relojFig 1.2 Arreglo OR al dato de salidaEste es el principio básico para los  Voltaje de entrada soportado entrecircuitos PLD, a continuación se presenta 3.5V y 6Ven detalle la arquitectura del dispositivo a  90mA de consumo de corrienteutilizar, el GAL. Por su bajo costo,  Rapidez de borrado 100mspequeño tamaño y adaptarse al trabajo  20 años de retención de los datosrealizado, se utilizó dicho circuito.  10 macroceldas lógicas de salida (OLMC)  Temperatura de operación 0 a4.2 GAL 75ºC Este circuito cuenta con 22 líneas deArreglo lógico genérico (GAL) se forma entrada y sus complementos, lo que da uncon arreglos AND programable y OR fijo, total de 44 líneas de entrada a cadacon una salida lógica programable. Este compuerta AND (estas entradas sedispositivo es reprogramable y contiene encuentran representadas por las líneasconfiguraciones de salida programables. verticales en el diagrama).Los dispositivos GAL se puedenprogramar una y ora vez ya que usan la El gal tiene la siguiente configuración entecnología (borrable sus terminales.eléctricamente CMOS) (Fig 1.1).  Pin 1. Entrada de CLK o puede ser Entrada  Pin 2 a 11 entradas fijas  Pin 12 gnd y 24 vcc  Pin 14 a 23 terminales programables OLMC  Pin 13 entrada de controlFig2.1Diagrama de bloques del arregloGAL.De acuerdo al número de macro celdaslógicas contenidas en el gal se le atribuyea su nombre, por ejemplo el GAL22v8tiene 8 macro celdas lógicas. Para nuestrodiseño usaremos un GAL22v10, el cualcontiene 10 OLMC (macro celdas de
  • 5. Fig 2.4 Arquitectura de una macrocelda OLMC 22v10.Fig2.2CI de un GAL 22v10 El área punteada está formada por 2La intersección que forman las líneas de multiplexores y un flip-flop; elentrada con los términos producto (líneas multiplexor 1 de 4 conecta una de sushorizontales), representa cada una de las cuatro líneas de entrada al buffer triestadoceldas que se pueden programar para de salida, en función de las líneas deconectar una variable de entrada a una selección S0 y S1. Por otro lado, ellínea de término producto (fig2.3). 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 determina por medio de S1. Cada una de las líneas de selección se programa mediante un grupo de celdas especiales que se encuentran en el arreglo AND.Fig 2.3 Realización de una suma de 5. CAPTURA ESQUEMÁTICAproductos dentro de un GAL. Ahora corresponde el turno de laMacroceldas lógicas de salida. Una programación del dispositivo, como semacrocelda lógica de salida (OLMC) está menciono la finalidad de usar el GAL esformada por circuitos lógicos que se programar un circuito que nos simplifiquepueden programar como lógica y permita cumplir con el objetivo delcombinacional o secuencial. Las sistema. En primera opción tenemosconfiguraciones combinacionales se hacer uso de la captura esquemática, elimplementan por medio de programación, que consiste en crear el circuito en modomientras que en las secuenciales la salida gráfico para después grabarse en el GAL.resulta de un flip-flop. En la figura 2.4 seobserva la arquitectura de una macrocelda Los programas de captura esquemáticadel dispositivo GAL22v10, la cual está son aplicaciones creadas para armarformada por un flip-flop y dos circuitos electrónicos y exportar losmultiplexores. esquemas como archivos fuente, los cuales satisfacen en la sintaxis de algún
  • 6. núcleo de simulación, en este caso será  Los puertos definen un puertopara el GAL22v10. entrada, salida o bidireccional.Para poder hacer uso de estaprogramación se debe conocercompletamente los operadores lógicosAND, OR, Nand, Nor, Exor, etc., conocer El proceso de grabado resulta sencillo unalas características del 22v10 y saber vez construido el diagrama, simplementeidentificar las terminales de un circuito se genera un archivo SCH,integrado a partir del archivo pin out. posteriormente un linker (enlazador) para generar un archivo .jed, el cual se leUn ejemplo para este tipo de pasará al programador que se encargaraprogramación, se tiene el “Schematic”, el de configurar el gal a lo capturadocual esta descrito a continuación: anteriormente. La desventaja surge en los diseños grandes, los cuales son difíciles de comprender a causa de que hay demasiados componentes e interconexiones. 6. LENGUAJES DE DESCRIPCIÓN DE HARDWAREFig 3.1 Hoja de trabajo Schematic Como se apreció en el método anterior de programación, no soluciona mucho elLos cuatro componentes básicos de la problema de la complejidad a la hora decaptua esquemática son los símbolos, los implementar un circuito ya que se empleaconectores, las etiquetas y los puertos de el álgebra booleana en esencia. Lo queentrada y/o salida: nos trae a la siguiente etapa los HLD  Los símbolos son una (lenguajes de descripción de hardware) representación gráfica de los cuyo objetivo es simplificar el trabajo aun componentes más y realizar tareas con mayor complejidad. Como consecuencia de la creciente necesidad de integrar un mayor número  Los conectores sirven para la de dispositivos en un solo circuito interconexión entre terminales integrado, se desarrollaron nuevas herramientas de diseño en un solo circuito integrado, se desarrollaron nuevas  Las etiquetas variables para la herramientas que auxilian al ingeniero a identificación de entrada o salida integrar sistemas muy completos. Esto permitió que en la década de los 50 aparecieran los HDL como una opción de
  • 7. diseño para el desarrollo de sistemas conocimientos nuevos ni conceptoselectrónicos elaborados. Por poseer una difíciles.sintaxis parecida a la de un lenguaje dealto nivel, éste tipo de descripción es muyaceptado por diseñadores. 7. VHDLLos HDL más utilizados son: En la actualidad, el lenguaje de  ABEL, descripción en hardware más utilizado a AdvancedBooleanExpressionLang nivel industrial es VHDL, que apareció la uage. década de los ochenta como un lenguaje  VHDL, Very High Hardware estándar, capaz de soportar el proceso de DescriptionLanguage diseño de sistemas electrónicos  VERILOG complejos, con propiedades para reducir el tiempo de diseño y los recursosUna de las principales características de tecnológicos requeridos. El departamentoestos lenguajes radica en su capacidad de la defensa de Estados Unidos creó elpara describir en distintos niveles de lenguaje VHDL; luego de variasabstracción (funcional, transferencia de versiones revisadas, el IEEE(Instituto deregistros y lógico o nivel de compuertas). Ingenieros Electrónicos y Eléctricos)Dichos niveles sirven para clasificar publicó en diciembre de 1987 el estándarmodelos HDL según el grado de detalle y IEEEstd.precisión de sus descripciones. 7.1 Ventajas del desarrollo de circuitosLos niveles de abstracción descritos desde integrados con VHDLel punto de vista de simulación y síntesis A continuación se exponen las ventajasdel circuito pueden definirse como sigue: de usar VHDL en un circuito integrado:  Algorítmico: Se refiere a la  Notación formal. Los circuitos relación funcional entre las permite su uso en cualquier diseño entradas y salidas del circuito o electrónico. sistema, sin hacer referencia a la  Disponibilidad pública.Es un realización final. estándar no sometido a patente,  Transferencia de registros (RT): por lo que cualquiera puede Consiste en la participación del utilizarla sin restricciones. sistema en bloques funcionales sin  Independencia tecnológica de considerar a detalle la realización diseño. Se diseñó para soportar final de cada bloque. diversas tecnologías. (PLD,  Lógico o de compuertas: El FPGA, ASIC, etc.). circuito se expresa en términos de  Independencia de la tecnología ecuaciones lógicas o de y proceso de fabricación.Se creó compuertas. para que fuera independiente de la tecnología y el proceso deDebido a una similitud con el lenguaje de fabricación del circuito.programación visual basic y algunos  Capacidad descriptiva enotros, se optó por VHDL, el cual nos distintos niveles de abstracción.proporciona una alta confiabilidad y se Consta con varios niveles denotará que su uso no requiere de muchos detalla, desde la especificación
  • 8. hasta la implementación; se pueden combinar a lo que se le En el desarrollo de programas pueden conoce simulación multinivel. utilizarse o no tres de los cinco módulos,  Uso como formato de pero entidad y arquitectura son intercambio de información. indispensables. Las declaraciones de Permite el intercambio de entidad son de diseño primarias, mientras información a o largo de todas las que la arquitectura y el cuerpo son de etapas del proceso. diseño secundarias porque dependen de  Independencia de los una entidad. proveedores. Permite que las descripciones sean accesibles Modos desde cualquier lugar. Como ya se mencionó, uno puede definir  Reutilización del código. Permite la dirección en el cual el dato es reutilizar los códigos en diversos transferido a través de un puerto. Un diseños, sin importar si es modo puede tener uno de cuato valores: (CMOS, bipolar, etc.) o implementado en (FPGA, ASIC,  Modo in. Se refiere a las señales etc.). de entrada a la entidad.  Facilitación de la participación  Modo out. Indica las señales de en proyectos internacionales. salida de la entidad.  Modo inout. Permite declarar a un7.2 Unidades básicas de diseño puerto de forma bidireccional.La estructura general de un programa en  Modo buffer. Permite hacerVHDL está formada por módulos o retroalimentación internas dentrounidades de diseño, cada uno de ellos de la entidad.compuestos por un conjunto dedeclaraciones e instrucciones que definen,describen, estructuran, analizan y evalúanel comportamiento de un sistema digital.Existen cinco tipos de unidades dediseño: Declaración de entidad (entitydeclaration). Es un bloque elemental de diseño, son todos los Fig 5.1 Modos y el curso de sus señales. elementos electrónicos (sumadores, contadores, compuertas, flip-flop, memorias, 7.3 Tipos de datos mux, etc.) que forman un sistema Los tipos de valores que se pueden digital. establecer dentro de una entidad son: Arquitectura (architecture)  Bit, abarcando 0 y 1 Configuración (configuration)  Boolean, define valores verdadero Declaración del paquete o falso. (packagedeclaration)  Integer, representa un número Cuerpo del paquete entero. (packagebody)
  • 9. 7.4 Declaración de entidades Tabla 5.1 Especificaciones para laLa declaración de una entidad consiste en escritura de identificadores.la descripción de las entradas y salidas deun circuito de diseño identificado como 7.5 Diseño de entidades medianteentity; es decir, la declaración señala las vectoresterminales o pines de entrada y salida con La entidadsumador realizada usa bitsque cuenta la entidad de diseño (ver fig individuales, pero que pasaría si se5.2). utilizan conjuntos de bits (palabras). Pues en VHDL se pueden agrupar como vectores de bits. Tome el siguiente ejmplo. Vector_A = [A3,A2,A1,A0] Vector_B = [B3,B2,B1,B0] Vector_SUMA = [S3,S2,S1,S0] Como ahora las entradas A,B y salida SUMA incorporan un vector, la entidad cambia de la siguiente forma.Fig 5.2 Declaración de la entidadsumadorComo cualquier lenguaje, éste tiene unaregla para los identificadores, la cual essimple de deducir teniendo la siguientetabla. Regla Incorrecto CorrectoEl primer 4suma Suma4carácter SUMA4 Fig 5.3 Declaración de vectores en unasiempre es entidaduna letra Como se observa se esta utilizando lamayúscula ominúscula sentencia bit_vectorespecificando queEl segundo S_4bits S4_bits será un arreglo de bits con 3 down 0carácter no agrupa en orden descendente dichopuede ser vector.guión bajoDos guiones Resta__4 Resta_4_ 7.6 Declaración de entidades mediantejuntos no son librerías y paquetespermitidos Una parte importante radica en el uso deUn Clear#8 Clear_8 librerías y paquetes que permiten declararidentificador y almacenar estructuras lógicas,no puede seleccionadas o completas que facilitan elutilizar diseño. En VHDL se encuentran definidassímbolos dos librerías ieeey work(fig 5.4). Para
  • 10. declarar la librería hay que usar este punto será abordado detalladamentelibraryieee; para la descripción del motor principal que hace posible la construcción del circuito de alarma. Se describirá brevemente los estilos de programación utilizados en el diseño de arquitecturas, enfocándose en los importantes para el diseño del circuitoFig 5.4 Contenido de las librerías presentado en este texto: Descripción funcional:El paquete std_logic_1164 que se Una sencilla forma de apreciar éste estilo,encuentra en la librería ieee contiene es mediante el diseño de un comparadortodos los tipos de datos que suelen de entradas de 2 bits, se realiza unaemplearse en VHDL. El acceso a la descripción que relacionan las entradasinformación en un paquete es por medio con las salidas del circuito sin importarde la sentencia use, seguida del nombre cómo esté organizado en su interior.de la liberia y paquete. si a = b thenc = 1usenombre_librería.nombre_paquete.all; sia <> bthenc = 0Ahora una forma de la declaración de una Ahora el código que representa elentidad haciendo uso de la librería circuito:descrita anteriormente (fig 5.5): 1. --Ejemplo de una descripción funcional 2. library ieee; 3. use ieee.std_logic_1164.all; 4. entity comp is 5. port (a,b: in bit_vector (1 downto 0 ); 6. c: out bit); 7. architecture funcional of comp isFig 5.5 Entidad usando librería std_logic 8. begin 9. compara: process(a,b)7.7 ArquitecturaUna arquitectura (architecture) se define 10. begincomo la estructura que describe el 11. if a = b thenfuncionamiento de una entidad, de tal 12. c <= 1;forma que permita el desarrollo de los 13. elseprocedimientos que se llevarán a cabo 14. c <= 0;con el fin de que la entidad cumpla las 15. end if;condiciones de funcionamiento deseadas. 16. end process compara;Aquí es donde radica la gran ventaja deVHDL ya que se describen los diseños 17. end funcional;mediante un algoritmo de programación,
  • 11. En la primera sección del código consta 4. entity comp isen la declaración de la entdidad, aquí no 5. port (a,b: in bit_vector (1 downto 0hay problema. Posteriormente se describe );la arquitectura (línea 7-17) en la cual se 6. c: out bit);observa como se declara asignándole 7. end comp;nombre e indicando que incluye la 8. architecture f_datos of comp isentidad compse le indica que ha 9. beginterminado la arquitectura con la palabra 10. c <= 1 when (a = b) else 0;reservada endnombrearquitectura. Ahora 11. end f_datos;prestar atención al uso de la palabraprocesscon la que se indicara que señales Como es notable, la diferencia radica ense involucrarán en el proceso. Al seguir el la eliminación del proceso y se hace sin declaraciones if-then-else.análisis puede notarse las sentencias if- El estilo de diseño utilizado en lathen-else. Interpretando esto en el código programación del circuito depende deldice, si la señal a es igual a la señal b diseñador y de la complejidad delentonces c cambia a 1 (mediante el proyecto. Por ejemplo, si un sistema sesímbolo <= que indica asignación). Una requiere diseñar cuyo funcionamientovez definido el proceso, se termina con dependa sólo de sus entradas y salidas, esendprocessnombreproceso. Con ello se conveniente utilizar la descripción funcional, la cual presenta la ventaja deparecía que la descripción funcional se requerir menos instrucciones y elbasa en el uso de procesos y diseñador no necesita un conocimientodeclaraciones secuenciales, lo que previo de cada componente del circuito.permiten modelar la función con rapidez. 8.SISTEMAS SECUENCIALES Estilo por flujo de datos:En este estilo, se indica la forma en quelos datos se pueden transferir de una señal Con las bases establecidas previamente,a otra sin necesidad de declaraciones hemos llegado a la descripción de unsecuenciales (if-then-else). Este tipo de sistema secuencial que bien está formadodescripciones permite definir el flujo que por un circuito combinacional y untomarán los datos entre módulos elemento de memoria encargado deencargados de realizar operaciones. Se almacenar de forma temporal la historiadescribe a continuación mediante del sistema. En esencia, la salida de uninstrucciones when-else.Para entenderlo sistema secuencial depende de lasmejor se coloca como queda el código entradas y de la historia del sistema (figsiguiendo dicho estilo para hacer el 6.1).comparador de 2 señales descritos en ladescripción anterior.1. --Ejemplo descripción por flujo mediante when-else2. library ieee;3. use ieee.std_logic_1164.all;
  • 12. Fig 6.1 Estructura de un sistema con un contador de 4 bits (fig 6.3).secuencialBásicamente hay dos tipos de sistemassecuenciales: síncronos y asíncronos; elcomportamiento de los primeros seencuentra sincronizado mediante el pulsode reloj, mientras que el otro depende delorden y momento en el cual se aplican suseñales de entrada, por lo que norequieren un pulso de reloj parasincronizar sus acciones. Cabe mencionar Fig 6.3 Diagrama de tiempos contadorque en el artículo solamente se estudiará binario 4 bitslos sistemas síncronos puesto que serequiere de un evento arrojado al La presentación del diagrama de tiemposmomento de presionar una tecla y con el de este circuito tiene la finalidad desincronizar el circuito. ilustrar el procedimiento que se sigue en la programación, ya que puede observarse8.1 Flip-flops con claridad el incremento que presentanEl elemento de memoria utilizado las salidas cuando se aplica un pulso deindistintamente del tipo de sistema reloj en la entrada.secuencial se conoce como flip-flop, cuyacaracterística es mantener un bit de Traduciendo el contador a lenguajemanera indefinida hasta que a través de VHDLuna señal cambie de estado. Los másconocidos son SR, JK, T(fig 6.2) y D. 1. library ieee; 2. use ieee.std_logic_1164.all; 3. use work.std_arith.all; 4. entity cont4 is port( 5. clk: in std_logic; 6. Q: inout std_logic_vector(3 downto 0)); 7. end cont4Fig 6.2 Tabla de verdad flip-flop T 8. architecture arqcont of cont4 isEn la figura anterior cabe destacar que Q 9. begin= estado actual y = estado futuro 10. process(clk) 11. begin8.2 Contadores 12.Los contadores son entidades muy if(clkevent and clk = 1) thenutilizadas en el diseño lógico. La forma 13. Q <= Q + 1;usual para escribirlos en VHDL es 14. end if;mediante operaciones de incremento, 15. end process;decremento o ambas. Para un ejemplorápido y fácil de entender trabajaremos 16. end arqcont;
  • 13. Se aprecia se esta usando de la librería sólo cuando ocurre un cambio de valor; esieee, el paquete work.std_arith.allesto nos decir, un suceso de la señal clk. Como sepermite poder usar números el operador aprecia la declaración if-thenno maneja la+, para indicarle un incremento de 1 al condición else, debido a que elnuestro contador. compilador mantiene el valor de Q hastaCuando requerimos la que no exista un cambio de valor en laretroalimentación de una señal Q<= Q + señal clk.1, utilizamos el modo inoutla cual seaprecia en la declaración de la variable Q, 9. SISTEMAS SECUENCIALESya que se retroalimenta en cada pulso de SÍNCRONOSreloj.Atributo ‘event. En VHDL los atributosdefinen características que se asocian con Llego la hora de presentar los sistemascualquier tipo de datos o entidades. El secuenciales de tipo síncrono, se veraatributo „eventse utiliza para describir un enfocado hacia las maquinas de estado yahecho u ocurrencia de una señal en que aquí es donde recae todo el análisis yparticular. Con ello podemos observar diseño del circuito alarma presentado alque en la condición ifclk’event es cierta final.Como ya se mencionó, la estructura delos sistemas secuenciales síncronos basasu funcionamiento en los elementos dememoria conocidos como flip-flop. Lapalabra síncrona se refiere a que cada unode estos elementos de memoria queinteractúan en un sistema se encuentranconectados a la misma señal de reloj, deforma tal que sólo se producirá un cambiode estado en el sistema cuando ocurra unflanco de disparo o un pulso en la señalde reloj. Arquitectura secuencial tipo MealyExiste una división en el diseño de lossistemas secuenciales que se refiere al  Moore. La señal de salida sólomomento en que se producirá la salida del depende del estado en que sesistema. Son las maquinas de estado tipo: encuentra.  Mealy. Las señales de salida dependen tanto del estado en que se encuentra el sistema, como de la entrada que se aplica en determinado momento.
  • 14. Fig 7.1 Detector de secuencia 9.1 Diagramas de estado Arquitectura secuencial tipo El uso de diagramas de estados en lógica Moore programable facilita de manera significativa la descripción de un diseño secuencial, ya que no es necesario seguirObservando la simple diferencia entre la metodología tradicional de diseño.ambos diseños en un sistema secuencial, VHDL nos permite utilizar un modelose describirán 2 diseños de maquinas de funcional que indique la transición que siguen los estados y condiciones queestados para el sistema de alambra, donde controlarán el proceso. Aplicando unlo único que se requiere cambiar es el poco de lógica, vemos que el sistema seprograma del GAL22v10, el alambrado y puede presentar por medio del diagramanúmero de pines quedara definido de de estados (fig 7.2) arquitectura Mealy. Yigual forma. A continuación se describe lo que advierte es que el sistema cuentade manera general como es el análisis y con una señal de entrada denominada X y una de salida Z, las cuales determinan eldiseño para un problema que requiera un estado presente y próximo que seguirá lacircuito secuencial programado en maquina de estados.VHDL.Un sistema secuencial se desarrolla através de una serie de pasos generalizadosque comprenden el enunciado delproblema, diagrama de estados, tabla deestados, asignación de estados,ecuaciones de entrada a los elementos dememoria y diagrama electrónico delcircuito. Como ejemplo se plantea unsistema (fig 7.1) en el cual se emite unpulso de salida (Z=1) cuando la línea deentrada X se reciben cuatro unos en formaconsecutiva; en caso contrario (Z=0). Fig 7.2 Diagrama de estados Cuando se está en el estado d0 y la señal X es 1, se avanza al siguiente estado, y al
  • 15. llegar al tercer estado siendo X=1 en la del proceso que definirá elsalida Z se coloca 1, en caso contrario se comportamiento del sistema. En éste debequedará en el estado actual para X=0. Un considerarse edo_futuro depende deanálisis usando la tabla de estados se edo_presente y la entrada X. El códigopercata rápidamente de como quedara el quedaría así.programa en VHDL.Edo. Edo. Futuro Salida Z 1. proceso1: process(edo_presente,Presente X=0 X=1 X=0 X=1 X) begind0 d0 d1 0 0 2. case edo_presente isd1 d1 d2 0 1 3. when d0 => Z<=0;d2 d2 d3 0 1 4. if X=1 thend3 d3 d0 0 1 5. edo_futuro <=d1; 6. elseAhora si, codificar se facilita mediante 7. edo_futuro <= d0;una descripción de alto nivel en VHDL.Esta descripción supone el uso de las 8. end if;declaraciones case-whenlas cualesdeterminan, en un caso particular, el valor Dentro del proceso se describe laque tomará el siguiente estado. Por otro transición del edo_presente al edo_futuro.lado, la transición entre estados se realiza Primero se inicia con la declaración casepor medio de declaraciones if-then-else, que especifica el primer estado que se vade tal forma que éstas se encargan de a evaluar, posteriormente con la sentenciaestablecer la lógica que seguirá elprograma para realizar la asignación del ifse compara la señal de entrada X la cualestado. indica cual será el edo_futuro. A continuación se muestra el códigoIntroducción del diseño al código. completo.Como primer paso en el diseño, seconsideraron los estados d0,d1,d2 y d3. 1. library ieee;Para representarlos en VHDL, hay que 2. use ieee.std_logic_1164.all;definirlos dentro de un tipo de datos 3. entity diagram is port(mediante el uso de la sentencia type. 4. clk,x: in std_logic; 5. z: out std_logic);1. type estadis is (d0,d1,d2,d3); 6. end diagrama;2. signal edo_presente, 7. architecture arq_diagrama of diagram edo_futuro: estados; a isObsere la forma en la que se listan los 8. type estados is (d0,d1,d2,d3);estados, posteriormente con la sentencia 9. signal edo_presente,signaldeclaramos donde se guardara el edo_futuro: estados;estado en el que se encuentra la maquina, 10. begines decir por que camino se dirige. Para 11. proceso1: process(edo_presente,x) beello necesitamos una signal que ginrepresente el estado presente y otra querepresente el estado futuro o próximo. El 12. case edo_presente issiguiente paso consiste en la declaración 13. when d0 => z<= 0;
  • 16. 14. if x=1 then dicha transición. En el segundo, proceso215. edo_futuro <=d1; se lleva a cabo de manera síncrona la asignación del estado futuro al estado16. else presente, de suerte que cuando se aplica17. edo_futuro <=d0; un pulso de reloj, el proceso se ejecuta.18. end if; Se muestra lo forma de programar la19. when d1 => z<=0; salida Z en el estado d3 cuando éste20. if x=1 then obtiene el valor de 0 o 1, según el valor21. edo_futuro <= d2; de la entrada X.22. else Con la explicación detallada de cada23. edo_futuro <=d1; segmento de información, se da por hecho24. end if; que se encuentra listo el lector para25. when d2 => z<= 0; comprender con una muy breve26. if x=1 then explicación la composición y estructura27. edo_futuro <= d3; del circuito de alarma.28. else29. edo_futuro <=d0;30. end if;31. when d3 => 10. SISTEMA DE ALARMA DE 432. if x=1 then DÍGITOS33. edo_futuro <= d0; Se necesita de un sistema digital para34. z<=1; controlar accesos a un compartimiento o35. else cuarto, la idea es pedirle a la persona que36. edo_futuro <=d3; solicite el acceso, una cifra que consta de37. z <= 0; 4 dígitos la cual se compara con una38. end if; predefinida por quien regula la entrada a39. end case; dicho lugar; de resultar correcta la cifra deberá abrirse la puerta o40. end process proceso1; compartimiento, de ser incorrecto41. simplemente permanecerá cerrado. En42. proceso2: process(clk) begin respuesta a esta situación, se plantea un43. if(clkevent and clk=1) then sistema el cual permite grabar un numero44. edo_presente <= edo_futuro; de 4 cifras, para establecer la clave de45. end if; acceso, posteriormente colocarla en modo46. end process proceso2; de operación para que trabaje como le es requerido.47. end arq_diagrama; El primer paso es definir que circuitos seHay que notar que en cada estado debe necesitan, para lograr esta tarea.indicarse el valor de la salida (Z<=0) Primeramente nos enfocaremos en ladespués de la condición when, siempre y captura de datos, cada cifra consta de uncuando la variable Z no cambie de valor. valor de 0 al 9 en decimal, por lo queEn el primer proceso1, se describe la implica que se trabajará con cuatro bits entransición que sufren los estados y las binario para cada dígito presionado. Estocondiciones necesarias que determinan
  • 17. implica la necesidad de utilizar un tecladomatricial y un decodificador.Posteriormente queda la parte de lamemoria, aquí puede quedar a decisióndel diseñador, ya que se pueden utilizardiferentes tipos; para el diseño se utilizaráuna memoria RAM de 4 bits de la cual seocuparan únicamente 4 localidades dememoria, cada localidad representa 1cifra de la clave de acceso. Y por últimoqueda un circuito el cual acceda a losdatos en la memoria, los compare con loscapturados del teclado, los compare ymande una señal para indicar que se diopermiso de acceso. Suena difícil lo que sedescribió, pero en realidad es muy Fig 8.2 Introducción de datos ysencillo conseguirlo, aplicando el almacenamientoconocimiento adquirido anteriormente. U2 es el circuito integrado 74c922 que se encarga de decodificar la tecla presionada a un número de 4 bits, se colocaron 2 capacitores (véase hoja de especificación). U1 es la memoria RAM circuito integrado 74189(donde las salidas salen en forma negada), nótese que tiene un switch en el pin de escritura, esto para elegir se el numero será escritoFig 8.1 Esquema a bloques de como se o leído en la memoria.plantea el sistema. Con este avance conectado, el resto esLa conexión de la sección introducción de sencillo, puesto que del resto deldatos y memoria es muy simple, funcionamiento se encargara unconstamos con un teclado matricial que GAL22v10. A éste circuito leva a un decodificador, tomamos los 4 bits conectaremos las salidas de U1 y lasde salida y se dirigen a la memoria, salidas de U2, luego saldrán 4 bits detambién son tomadas las salidas en el dirección hacia la memoria RAM, paracircuito de control, y las salidas de la acceder a las distintas localidades comoRAM, son tomadas al circuito de control. se comento anteriormente, y el ultimo pinCuando se apruebe el código, mediante el se conectará a un led para saber cuandocable “permiso de acceso” se mandara un fue concedido el permiso (enciende led).1 lógico para indicar que se proceda a El bosquejo final a bloques nos queda deabrir. Véase la figura 8.2 para verificar la siguiente forma.como es la conexión de la primera etapa.
  • 18. Fig 8.3 Diagrama a bloques del bosquejo final del circuitoEl led enciende siempre y cuando los 4 Para atender el asunto de las direcciones ydígitos insertados sean iguales a los estado final, se tienen planteados 2almacenados en la memoria. diseños que se conectan de igual forma enAhora la parte que resultaría compleja el mismo numero de pines, pero consino contáramos con un PLD. Como la distinta lógica, aquí solo se describirá endescripción dice que el GAL debe que consiste uno de ellos, el segundocomparar las salidas de 2 circuitos lo cual diseño podrá ser consultado en un linkserían entradas para el GAL, y en cada externo que se coloca al final delacierto cambiar de transición o estado documento, el cual solo requiere análisispara que al llegar a la meta final se de por del código mientras que el alambradoencendido el led. Además debe genera sigue intacto.direcciones para saltar entre localidades.De acuerdo con el análisis requerimos de Generar direcciones para localidadesuna maquina tipo Mealy, ya que la salida de memoria(LED) dependerá de las entradas (A y B). Se plantea utilizar un contador de 4 bits,Otro punto a destacar es la salida que inicia en 00, el cual su programación(direcciones) las cuales deberán cambiar y secuencia no es nada nuevo. Con ellocada que se presiona una tecla, un detalle cada que hay un flanco de subida en elque se tiene sin cuidado, puesto a que se clock del GAL, cambie de dirección ytrabajara con un sistema síncrono en asegurarse que se guardan o comparandonde el OuputEnable del teclado actuará siempre los dígitos siguientes de la clavecomo pulso de reloj. de acceso. Independientemente del estado en que se encuentre el sistema, seguirá
  • 19. generando direcciones (contando). (verfigura 8.4)Diagrama maquina de estados cualquiera de los 4, se debe regresar alAhora la descripción de la secuencia. estado inicial puesto que ya no estaTenemos que un usuario introduce 4 permitido acceder al sistema. En caso denúmeros, en cada número se hace una acertar los 4 dígitos, se tiene que pasar decomparación si lo presionado es igual a la 0 a 1 la salida (LED) que indica permitirsalida de memoria, de ser así pasar a un acceso. Para visualizar esta descripciónsiguiente estado, si se equivoca en (ver figura 8.4). Ahora vallamos a la descripción del código que hace posible funcionar este mecanismo. 1. library ieee; 2. use ieee.std_logic_1164.all; 3. use ieee.std_logic_arith.all; 4. use work.std_arith.all; 5. entity alarm is port ( 6. clk: in std_logic; 7. a: in std_logic_vector(3 downto 0); 8. b: in std_logic_vector(3 downto 0); 9. ledOn: out std_logic;Fig 8.4 Maquina de estados 10. x: inout std_logic_vector(1 downto 0Observe que el camino rojo se tomasiempre y cuando A y B sean iguales, en ));caso contrario se regresa al estado inicial 11. attribute pin_numbers of alarm: entpara así asegurarse de no dar acceso. Para ity isel último estado si no coinciden las 12. --inputsentradas, el led no enciente, pero si son 13. "b(0):6 b(1):5 b(2):4 b(3):3 "iguales como se llego al último estado, 14. &proceden a encenderse. 15. "a(0):10 a(1):9 a(2):8 a(3):7 "Tabla de estados 16. --outputsEstado Estado futuro Salida (LED) 17. &presente A=B A!=B A=B A!=B 18. "x(0):15 x(1):16 "S0 S1 S0 0 0 19. &S1 S2 S0 0 0 20. "ledOn:17";S2 S3 S0 0 0 21. end alarm;S3 S0 S0 1 0 22. 23. architecture arch_alarm of alarm is
  • 20. 24. type states is (state0, state1, state2, state3 );25. signal stado_pres, stado_fut: states;26. begin 56. p_reloj: process(clk,x) begin27. 57. if(clkevent and clk= 1) then28. p_estados: process(stado_pres,a,b) b 58. stado_pres <= stado_fut; egin 59. x <= x + 1;29. case stado_pres is 60. end if;30. when state0 => 61. end process p_reloj;31. ledOn <= 0; 62. end arch_alarm;32. if a = NOT(b) then Como se puede observar es muy parecido33. stado_fut <= state1; al código explicado anteriormente, lo cual34. else no hace falta detallar que se hace en cada35. stado_fut <= state0; caso, sino únicamente destacar lo más36. end if; importante.37. when state1 =>38. if a = NOT(b) then39. stado_fut <= state2; 63. attribute pin_numbers of alarm: enti40. else ty is41. stado_fut <= state0; 64. --inputs42. end if; 65. "b(0):6 b(1):5 b(2):4 b(3):3 "43. when state2 => 66. &44. if a = NOT(b) then 67. "a(0):10 a(1):9 a(2):8 a(3):7 "45. stado_fut <= state3; 68. --outputs46. else 69. &47. stado_fut <= state0; 70. "x(0):15 x(1):16 "48. end if; 71. &49. when state3 => 72. "ledOn:17";50. if a = NOT(b) then En esta sección vamos a definir que pines51. ledOn <= 1; queremos que sean las entradas (A y B),52. end if; las salidas (LED) y las direcciones a la53. stado_fut <= state0; memoria, esto se definió para que si el54. end case; diseñador hacer modificaciones no sea55. end process p_estados; necesario re alambrar o restructurar el circuito, simplemente baste con reprogramar el GAL.Ahora definiendo el proceso para realizar Un vistazo a las declaraciones de loslos cambios. estados.
  • 21. 73. type states is (state0, state1, 81. p_reloj: process(clk,x) begin state2, state3 ); 82. if(clkevent and clk= 1) then74. signal stado_pres, 83. stado_pres <= stado_fut; stado_fut: states; 84. x <= x + 1; 85. end if;Se definen los estados tal y como se 86. end process p_reloj;presentaron en el diagrama (fig 8.4)stado_pres y stado_fut, es para saber en Y como se había establecido X sería unque transición se encuentra, según el contador que generaría las direccionescamino que se haya seguido. para las localidades de memoria, por ello de la línea 85. Por último cada pulso de75. when state3 => reloj (tecla presionada), se dirige hacia el76. if a = NOT(b) then estado siguiente. Con todo lo anterior,77. ledOn <= 1; solo falta revisar el archivo rpt generado78. end if; por el compilador de vhdl, para saber79. stado_fut <= state0; como lograr las conexiones. Con ello el80. end case; alambrado se deja en manos del diseñador y se espera un resultado satisfactorio. SeDirigiéndonos a al ultimo estado, si se recuerda al final del documento sellego a este estado y las entradas (A y B) colocan 2 links uno para acceder al diseñoson iguales, corresponde a prender LED, alterno y otro para acceder al alambradoluego regresarse al estado 0. Hay que completo.recordar que las salidas de la memoriason negadas, por ende se debe usar lapalabra notpara obtener las entradascorrectas.
  • 22. 11. CONCLUSIONES cubre mas sistemas, lo que implica a que se esta volviendo parte de nuestra etapaSi se tiene conocimiento básico sobre los evolutiva.circuitos digitales, se pudo notar la granventaja que se tiene al usar dispositivos No es necesario mucho conocimientoprogramables, con el beneficio de realizar previo para la compresión del documentodescripciones en alto nivel para que se o la realización del sistema expuesto,comporten como se le es requerido. Los basta con saber las definiciones básicasdiseños que se pueden lograr con la como bit, binario, etc., además delinformación expuesta pueden llegar a conocimiento de las compuertas lógicasgrandes cosas, un ejemplo es el diseño de básicas. Se espera haber sido de granun procesador de 4 bits, en el cual su ayuda para cualquier diseñador y que lemáxima complejidad surge al momento haya resultado grata la lectura, se recalcade diseñar la unidad de control, sería un que la aplicación de estos conocimientostrabajo exhaustivo usando únicamente en un sistema secuencial, va más allá decircuitos con baja escala de integración, una alamra con comparador.pero usando un PLD y la lógicasecuencial, resulta bastante sencillo una 12. RECURSOS EXTRAimplementación de este tipo. Se http://robingk.imeev.com/alarmrecomienda tener siempre en cuenta estos a.pngtipos de integrados que nos pueden http://pastebin.com/EUVmk0qFresolver muchos problemas con menorcosto.Un obstáculo que pueden presenciar 13. REFERENCIASdiseñadores principiantes, al utilizar éstetipo de sistemas, es la simulación de Libros: VHDL El arte de programar sistemasellos, puesto a que como constan de un digitales, David G. MAxinez, Jessicaprograma personalizado, se requiere Alcalá. CECSA primera edición,2002.indicarle a la computadora como es quefunciona. Por ello se hace recomendación Fundamentos de Sistemas Digitales - 7made uso del software Proteus ISIS, el cual Edición - Thomas L. Floyd.permite simular PLD y microcontroladores cargándoles el software de Paginas webdiseño propio. http://digitales.itam.mx/Cursos/nuevosCabe destacar la importancia que toma _cursos/Circuitos%20logicos/practicas/hoy en día los niveles de abstracción en la practicas%20nuevas/Practica%2006_evolución de software computacional, ya %20VHDLn.pdfque con ello se logra definir con lenguaje http://dsid.escom.ipn.mx/julio/cursos/pde alto nivel, la secuencia que sigue el resen/elec_dig/capitulo4.pdfdiseño. Cada día la electrónica digital