SlideShare uma empresa Scribd logo
1 de 23
Diseño de un sistema de alarma con Lógica Programable

Facultad de Ciencias Químicas e Ingeniería de la Universidad Autónoma de Baja California

1. 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 se
abarca el diseño de una alarma de 4 bits
                                               vive rodeado de todo tipo de dispositivo
usando componentes digitales, mediante
                                               electrónico los cuales dependen de un
el uso de un dispositivo lógico
                                               circuito digital. Esta muy marcada la
programable (PLD) y aplicación de una
                                               electrónica digital como el surgimiento de
maquina de estados. Se incluyen ejemplos
                                               las nuevas tecnologías que permiten al
de una máquina de Mealy y una máquina
                                               hombre llevar a cabo sus tareas con
de Moore. Se incluyen ejemplos de la
                                               mayor facilidad y comodidad.
aplicación del diseño en otros circuitos
además de una descripción de la lógica
                                               Toda esta revolución tecnológica debe
llevada a cabo.
                                               estar a gradecida a la invención del
                                               transistor, que fue en 1947 cuando John
Los dispositivos lógicos programables
                                               Bardeen, Walter Brattain y William
(PLD) favorecen la integración de
                                               Shockley descubren el efecto transistor, el
aplicaciones y desarrollos lógicos
                                               cual permite cambios en la conductividad
mediante el empaquetamiento de
                                               de los materiales mediante el uso de
soluciones en un circuito integrado. El
                                               corriente eléctrica. Sumándole el álgebra
resultado es la reducción de espacio físico
                                               booleana, es cuando surge la electrónica
dentro de la aplicación; es decir, se trata
                                               digital.
de dispositivos fabricados y revisados que
se pueden personalizar desde el exterior
                                               Posteriormente a la idea de crear circuitos
mediante       diversas     técnicas     de
                                               cada vez más pequeños y con menos
programación. El diseño se basa en
                                               costo,     surgen      los     dispositivos
bibliotecas y mecanismos específicos de
                                               programables, con el fin de usar un
mapeado de funciones, mientras que su
                                               lenguaje de programación para configurar
implementación tan sólo requiere una fase
                                               los arreglos de compuertas en un diseño
de programación del dispositivo que se
                                               único y confiable. En la actualidad el
suele realizar en segundos.
                                               nivel de integración en estos circuitos con
                                               el desarrollo de la microelectrónica ha
Se denomina máquina de estados a un
                                               hecho posible desarrollar sistemas
modelo de comportamiento de un sistema
                                               completos dentro de un solo circuito
con entradas y salidas, en donde las
                                               integrado. Todas estas características es
salidas dependen no sólo de las señales de
                                               lo que nos lleva a observar a diario
entradas actuales sino también de las
                                               sistemas de uso industrial, militar y los de
anteriores. Una máquina de estados puede
                                               consumo han reducido su tamaño; por
ser 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
Ahora bien con estas herramientas en          sistemas que emplean circuitos diseñados
evolución, surge la combinación de un         para una aplicación en particular.
circuito programable con una maquina de
estados, lo cual simplifica aun mas el        Existen destinos arreglos de compuertas
trabajo y diseño de sistemas digitales. Por   que componen a los dispositivos
ejemplo, si se requiere un sistema en el      programables. Los FPGA por ejemplo
cual se deban ejecutar una secuencia de       son arreglos de compuertas programables
instrucciones las cuales dependen unas de     en campo y CPLD dispositivos lógicos
otras, ocupan cierto tiempo de ejecución o    programables complejos. Ellos ofrecen
necesitan conteos variables, su diseño        las mismas ventajas de un ASIC, sólo que
sería muy complicado usando simple            a un menor costo.
álgebra booleana con arreglo de circuitos
combinacionales. Todo esto resulta                    Categoría          Característic
mucho más sencillo si se utiliza la lógica                                     as
que implican las maquinas de estados          Diseño totalmente a la     Total
también llamados sistemas secuenciales,       medida(full custom)        libertad de
cuyo fin es mostrar ciertas salidas de                                   diseño, pero
acuerdo a la secuencia que fue diseñada.                                 el desarrollo
                                                                         requiere
La finalidad del artículo es presentar un                                todas las
sistema digital y         dar a conocer                                  etapas de
conocimientos necesarios para continuar                                  fabricación.
por cuenta propia en el diseño de otros       Matrices de puertas pre    Sólo
sistemas que parecieran complejos pero        difundidas                 necesita las
con las herramientas que se exponen se                                   últimas
logran fácilmente. Con la teoría en                                      etapas del
conjunto, se plantea un circuito de                                      proceso, y el
seguridad, útil para restringir el acceso a                              diseño está
un cuarto, bodega o automóvil.                                           limitado a
                                                                         las
                                                                         posibilidades
3. ASICS                                                                 de la
El diseño y aplicación de sistemas se                                    estructura
puede lograr circuitos denominados                                       prefabricada.
ASICS, pero entra más completo sea el         Celdas estándares pre      Libertad de
circuito, mayor complejidad tiene su          caracterizadas(semicust    diseño, pero
elaboración. En la actualidad, el diseño de   om)                        el desarrollo
ASIC (circuitos integrados desarrollados                                 exige un
para aplicaciones específicas) domina las                                proceso de
tendencias    en     el    desarrollo    de                              fabricación
aplicaciones a nivel de microelectrónica.                                completo
Este diseño presenta varias opciones de       Lógica programable         Dispositivos
desarrollo, como se observa en la tabla       (FPGA, CPLD)               que se
1.1. A nivel de ASIC el desarrollo full o                                pueden
semicustomofrecen grandes ventajas en                                    personalizar
                                                                         desde el
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ógicos
Tabla 1.1 Tecnologías de fabricación de     configurables y celdas lógicas de alta
circuitos integrados.                       densidad,        respectivamente.        La
                                            arquitectura PLD está formada por un
                                            arreglo de compuertas AND y OR
4. PLD                                      conectadas a las entradas y salidas del
                                            dispositivo. La finalidad de cada una de
En la actualidad existe una gran variedad   ellas se describe a continuación.
de dispositivos lógicos programables, los           Arreglo AND: Está formado por
cuales se usan para remplazar circuitos             varias       compuertas        AND
SSI (pequeña escala de integración), MSI            interconectadas a través de
(mediana escala de integración) e incluso           alambres, los cuales cuentan con
circuitos VLSI (muy alta escala de                  un fusible en cada punto de
integración), ya que ahorran espacio y              intersección. Para programar se
reducen de manera significativa el                  funde o apaga el fusible para
número y costo de los diseños. Estos                eliminar variables sin utilizar.
dispositivos, llamados PLD (tabla1.2), se
clasifican por su arquitectura (forma
funcional en que se encuentran ordenados
los elementos internos).

Dispositivo            Descripción
PROM          ProgrammableRead-
              OnlyMemory: memoria
              programable de sólo
              lectura.
PLA           ProgrammableLogicArray:
              arreglo lógico programable    Fig 1.1 Arreglo AND
PAL           ProgrammableArrayLogic:              Arreglo OR: Está formado por un
              lógica de arreglos                   conjunto de compuertas OR
              programables                         conectadas      a    un     arreglo
GAL           GenericLogicArray:                   programable, el cual contiene un
              arreglo lógico genérico              fusible en cada punto de
CPLD          Complex PLD: dispositivo             intersección. Este tipo de arreglo
              lógico programable                   es similar al de compuertas AND.
              complejo
FPGA          Field ProgramGateArray:
              arreglos de compuertas
              programables en campo
Tabla 1.2 Dispositivos lógicos
programables.

4.1 Estructura interna de un PLD
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 reloj
Fig 1.2 Arreglo OR                                     al dato de salida
Este es el principio básico para los                Voltaje de entrada soportado entre
circuitos PLD, a continuación se presenta              3.5V y 6V
en detalle la arquitectura del dispositivo a        90mA de consumo de corriente
utilizar, el GAL. Por su bajo costo,                Rapidez de borrado 100ms
pequeño tamaño y adaptarse al trabajo               20 años de retención de los datos
realizado, se utilizó dicho circuito.               10 macroceldas lógicas de salida
                                                       (OLMC)
                                                    Temperatura de operación 0 a
4.2 GAL                                                75ºC
                                               Este circuito cuenta con 22 líneas de
Arreglo lógico genérico (GAL) se forma         entrada y sus complementos, lo que da un
con arreglos AND programable y OR fijo,        total de 44 líneas de entrada a cada
con una salida lógica programable. Este        compuerta AND (estas entradas se
dispositivo es reprogramable y contiene        encuentran representadas por las líneas
configuraciones de salida programables.        verticales en el diagrama).
Los dispositivos GAL se pueden
programar una y ora vez ya que usan la         El gal tiene la siguiente configuración en
tecnologí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 control
Fig2.1Diagrama de bloques del arreglo
GAL.

De acuerdo al número de macro celdas
lógicas contenidas en el gal se le atribuye
a su nombre, por ejemplo el GAL22v8
tiene 8 macro celdas lógicas. Para nuestro
diseño usaremos un GAL22v10, el cual
contiene 10 OLMC (macro celdas de
Fig 2.4 Arquitectura de una macrocelda
                                               OLMC 22v10.
Fig2.2CI de un GAL 22v10
                                               El área punteada está formada por 2
La intersección que forman las líneas de       multiplexores y un flip-flop; el
entrada con los términos producto (líneas      multiplexor 1 de 4 conecta una de sus
horizontales), representa cada una de las      cuatro líneas de entrada al buffer triestado
celdas que se pueden programar para            de salida, en función de las líneas de
conectar una variable de entrada a una         selección S0 y S1. Por otro lado, el
lí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ÁTICA
productos dentro de un GAL.
                                               Ahora corresponde el turno de la
Macroceldas lógicas de salida. Una             programación del dispositivo, como se
macrocelda lógica de salida (OLMC) está        menciono la finalidad de usar el GAL es
formada por circuitos lógicos que se           programar un circuito que nos simplifique
pueden      programar      como       lógica   y permita cumplir con el objetivo del
combinacional       o    secuencial.    Las    sistema. En primera opción tenemos
configuraciones combinacionales se             hacer uso de la captura esquemática, el
implementan por medio de programación,         que consiste en crear el circuito en modo
mientras 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 se
observa la arquitectura de una macrocelda      Los programas de captura esquemática
del dispositivo GAL22v10, la cual está         son aplicaciones creadas para armar
formada por un flip-flop y dos                 circuitos electrónicos y exportar los
multiplexores.                                 esquemas como archivos fuente, los
                                               cuales satisfacen en la sintaxis de algún
núcleo de simulación, en este caso será           Los puertos definen un puerto
para el GAL22v10.                                  entrada, salida o bidireccional.

Para poder hacer uso de esta
programación       se     debe      conocer
completamente los operadores lógicos
AND, OR, Nand, Nor, Exor, etc., conocer       El proceso de grabado resulta sencillo una
las características del 22v10 y saber         vez construido el diagrama, simplemente
identificar 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 le
Un ejemplo para este tipo de                  pasará al programador que se encargara
programación, se tiene el “Schematic”, el     de configurar el gal a lo capturado
cual 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 HARDWARE


Fig 3.1 Hoja de trabajo Schematic             Como se apreció en el método anterior de
                                              programación, no soluciona mucho el
Los cuatro componentes básicos de la          problema de la complejidad a la hora de
captua esquemática son los símbolos, los      implementar un circuito ya que se emplea
conectores, las etiquetas y los puertos de    el álgebra booleana en esencia. Lo que
entrada 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
diseño para el desarrollo de sistemas         conocimientos    nuevos    ni   conceptos
electrónicos elaborados. Por poseer una       difíciles.
sintaxis parecida a la de un lenguaje de
alto nivel, éste tipo de descripción es muy
aceptado por diseñadores.                     7. VHDL

Los 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 recursos
Una de las principales características de
                                              tecnológicos requeridos. El departamento
estos lenguajes radica en su capacidad
                                              de la defensa de Estados Unidos creó el
para describir en distintos niveles de
                                              lenguaje VHDL; luego de varias
abstracción (funcional, transferencia de
                                              versiones revisadas, el IEEE(Instituto de
registros 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ándar
modelos HDL según el grado de detalle y
                                              IEEEstd.
precisión de sus descripciones.
                                              7.1 Ventajas del desarrollo de circuitos
Los niveles de abstracción descritos desde
                                              integrados con VHDL
el punto de vista de simulación y síntesis
                                              A continuación se exponen las ventajas
del 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 de
Debido a una similitud con el lenguaje de
                                                      fabricación del circuito.
programación visual basic y algunos
                                                   Capacidad           descriptiva    en
otros, se optó por VHDL, el cual nos
                                                      distintos niveles de abstracción.
proporciona una alta confiabilidad y se
                                                      Consta con varios niveles de
notará que su uso no requiere de muchos
                                                      detalla, desde la especificación
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 un
7.2 Unidades básicas de diseño                      puerto de forma bidireccional.
La estructura general de un programa en            Modo buffer. Permite hacer
VHDL está formada por módulos o                     retroalimentación internas dentro
unidades de diseño, cada uno de ellos               de la entidad.
compuestos por un conjunto de
declaraciones e instrucciones que definen,
describen, estructuran, analizan y evalúan
el comportamiento de un sistema digital.

Existen cinco tipos de unidades de
diseñ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)
7.4 Declaración de entidades                  Tabla 5.1 Especificaciones para la
La declaración de una entidad consiste en     escritura de identificadores.
la descripción de las entradas y salidas de
un circuito de diseño identificado como       7.5 Diseño de entidades mediante
entity; es decir, la declaración señala las   vectores
terminales o pines de entrada y salida con    La entidadsumador realizada usa bits
que cuenta la entidad de diseño (ver fig      individuales, pero que pasaría si se
5.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 entidad
sumador
Como cualquier lenguaje, éste tiene una
regla para los identificadores, la cual es
simple de deducir teniendo la siguiente
tabla.

     Regla        Incorrecto    Correcto
El primer        4suma         Suma4
carácter                       SUMA4          Fig 5.3 Declaración de vectores en una
siempre es                                    entidad
una letra
                                              Como se observa se esta utilizando la
mayúscula o
minúscula                                     sentencia bit_vectorespecificando que
El segundo       S_4bits       S4_bits        será un arreglo de bits con 3 down 0
carácter no                                   agrupa en orden descendente dicho
puede ser                                     vector.
guión bajo
Dos guiones      Resta__4      Resta_4_       7.6 Declaración de entidades mediante
juntos no son                                 librerías y paquetes
permitidos                                    Una parte importante radica en el uso de
Un               Clear#8       Clear_8        librerías y paquetes que permiten declarar
identificador                                 y     almacenar     estructuras   lógicas,
no puede                                      seleccionadas o completas que facilitan el
utilizar                                      diseño. En VHDL se encuentran definidas
símbolos                                      dos librerías ieeey work(fig 5.4). Para
declarar la    librería   hay   que   usar   este punto será abordado detalladamente
libraryieee;                                 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 circuito
Fig 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 comparador
todos los tipos de datos que suelen          de entradas de 2 bits, se realiza una
emplearse en VHDL. El acceso a la            descripción que relacionan las entradas
información en un paquete es por medio       con las salidas del circuito sin importar
de la sentencia use, seguida del nombre      cómo esté organizado en su interior.
de la liberia y paquete.
                                             si a = b thenc = 1
usenombre_librería.nombre_paquete.all;       sia <> bthenc = 0

Ahora una forma de la declaración de una     Ahora el código que representa el
entidad 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 is
Fig 5.5 Entidad usando librería std_logic    8.    begin
                                             9.    compara: process(a,b)
7.7 Arquitectura
Una arquitectura (architecture) se define    10. begin
como la estructura que describe el           11.           if a = b then
funcionamiento de una entidad, de tal        12.                     c <= '1';
forma que permita el desarrollo de los       13.           else
procedimientos 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 de
VHDL ya que se describen los diseños         17. end funcional;
mediante un algoritmo de programación,
En la primera sección del código consta       4. entity comp is
en la declaración de la entdidad, aquí no     5. port (a,b: in bit_vector (1 downto 0
hay 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 is
entidad compse le indica que ha               9. begin
terminado 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 palabra
processcon la que se indicara que señales     Como es notable, la diferencia radica en
se 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 la
then-else. Interpretando esto en el código    programación del circuito depende del
dice, si la señal a es igual a la señal b     diseñador y de la complejidad del
entonces c cambia a 1 (mediante el            proyecto. Por ejemplo, si un sistema se
símbolo <= que indica asignación). Una        requiere diseñar cuyo funcionamiento
vez definido el proceso, se termina con       dependa sólo de sus entradas y salidas, es
endprocessnombreproceso. Con ello se          conveniente utilizar la descripción
                                              funcional, la cual presenta la ventaja de
parecía que la descripción funcional se
                                              requerir menos instrucciones y el
basa en el uso de procesos y                  diseñador no necesita un conocimiento
declaraciones 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 que
los 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 un
secuenciales (if-then-else). Este tipo de     sistema secuencial que bien está formado
descripciones permite definir el flujo que    por un circuito combinacional y un
tomarán los datos entre módulos               elemento de memoria encargado de
encargados de realizar operaciones. Se        almacenar de forma temporal la historia
describe a continuación mediante              del sistema. En esencia, la salida de un
instrucciones when-else.Para entenderlo       sistema secuencial depende de las
mejor se coloca como queda el código          entradas y de la historia del sistema (fig
siguiendo dicho estilo para hacer el          6.1).
comparador de 2 señales descritos en la
descripción anterior.

1. --Ejemplo descripción por flujo
    mediante when-else
2. library ieee;
3. use ieee.std_logic_1164.all;
Fig 6.1 Estructura de un sistema             con un contador de 4 bits (fig 6.3).
secuencial

Básicamente hay dos tipos de sistemas
secuenciales: síncronos y asíncronos; el
comportamiento de los primeros se
encuentra sincronizado mediante el pulso
de reloj, mientras que el otro depende del
orden y momento en el cual se aplican su
señales de entrada, por lo que no
requieren un pulso de reloj para
sincronizar sus acciones. Cabe mencionar     Fig 6.3 Diagrama de tiempos contador
que en el artículo solamente se estudiará    binario 4 bits
los sistemas síncronos puesto que se
requiere de un evento arrojado al            La presentación del diagrama de tiempos
momento de presionar una tecla y con el      de este circuito tiene la finalidad de
sincronizar el circuito.                     ilustrar el procedimiento que se sigue en
                                             la programación, ya que puede observarse
8.1 Flip-flops                               con claridad el incremento que presentan
El elemento de memoria utilizado             las salidas cuando se aplica un pulso de
indistintamente del tipo de sistema          reloj en la entrada.
secuencial se conoce como flip-flop, cuya
característica es mantener un bit de         Traduciendo el contador a lenguaje
manera indefinida hasta que a través de      VHDL
una señal cambie de estado. Los más
conocidos 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 cont4
Fig 6.2 Tabla de verdad flip-flop T
                                             8.    architecture arqcont of cont4 is

En la figura anterior cabe destacar que Q    9.    begin

= estado actual y       = estado futuro      10.           process(clk)
                                             11.           begin
8.2 Contadores                               12.
Los contadores son entidades muy                      if(clk'event and clk = '1') then
utilizadas 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 ejemplo
rápido y fácil de entender trabajaremos      16. end arqcont;
Se aprecia se esta usando de la librería      sólo cuando ocurre un cambio de valor; es
ieee, el paquete work.std_arith.allesto nos   decir, un suceso de la señal clk. Como se
permite 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 el
nuestro contador.                             compilador mantiene el valor de Q hasta
Cuando             requerimos            la   que no exista un cambio de valor en la
retroalimentación de una señal Q<= Q +        señal clk.
1, utilizamos el modo inoutla cual se
aprecia en la declaración de la variable Q,
                                              9. SISTEMAS SECUENCIALES
ya que se retroalimenta en cada pulso de
                                              SÍNCRONOS
reloj.
Atributo ‘event. En VHDL los atributos
definen características que se asocian con    Llego la hora de presentar los sistemas
cualquier tipo de datos o entidades. El       secuenciales de tipo síncrono, se vera
atributo „eventse utiliza para describir un   enfocado hacia las maquinas de estado ya
hecho u ocurrencia de una señal en            que aquí es donde recae todo el análisis y
particular. Con ello podemos observar         diseño del circuito alarma presentado al
que en la condición ifclk’event es cierta     final.

Como ya se mencionó, la estructura de
los sistemas secuenciales síncronos basa
su funcionamiento en los elementos de
memoria conocidos como flip-flop. La
palabra síncrona se refiere a que cada uno
de estos elementos de memoria que
interactúan en un sistema se encuentran
conectados a la misma señal de reloj, de
forma tal que sólo se producirá un cambio
de estado en el sistema cuando ocurra un
flanco de disparo o un pulso en la señal
de reloj.                                            Arquitectura     secuencial   tipo
                                                     Mealy
Existe una división en el diseño de los
sistemas secuenciales que se refiere al             Moore. La señal de salida sólo
momento en que se producirá la salida del            depende del estado en que se
sistema. 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.
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 seguir
Observando la simple diferencia entre        la metodología tradicional de diseño.
ambos diseños en un sistema secuencial,      VHDL nos permite utilizar un modelo
se describirán 2 diseños de maquinas de      funcional que indique la transición que
                                             siguen los estados y condiciones que
estados para el sistema de alambra, donde    controlarán el proceso. Aplicando un
lo único que se requiere cambiar es el       poco de lógica, vemos que el sistema se
programa del GAL22v10, el alambrado y        puede presentar por medio del diagrama
número de pines quedara definido de          de estados (fig 7.2) arquitectura Mealy. Y
igual forma. A continuación se describe      lo que advierte es que el sistema cuenta
de manera general como es el análisis y      con una señal de entrada denominada X y
                                             una de salida Z, las cuales determinan el
diseño para un problema que requiera un
                                             estado presente y próximo que seguirá la
circuito secuencial programado en            maquina de estados.
VHDL.

Un sistema secuencial se desarrolla a
través de una serie de pasos generalizados
que comprenden el enunciado del
problema, diagrama de estados, tabla de
estados,    asignación      de    estados,
ecuaciones de entrada a los elementos de
memoria y diagrama electrónico del
circuito. Como ejemplo se plantea un
sistema (fig 7.1) en el cual se emite un
pulso de salida (Z=1) cuando la línea de
entrada X se reciben cuatro unos en forma
consecutiva; 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
llegar al tercer estado siendo X=1 en la       del    proceso    que     definirá    el
salida Z se coloca 1, en caso contrario se     comportamiento del sistema. En éste debe
quedará en el estado actual para X=0. Un       considerarse edo_futuro depende de
análisis usando la tabla de estados se         edo_presente y la entrada X. El código
percata 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) begin
d0            d0      d1     0      0          2.      case edo_presente is
d1            d1      d2     0      1          3.      when d0 => Z<='0';
d2            d2      d3     0      1          4.           if X='1' then
d3            d3      d0     0      1
                                               5.                edo_futuro <=d1;
                                               6.           else
Ahora 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       cuales
determinan, en un caso particular, el valor    Dentro del proceso se describe la
que 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 case
por medio de declaraciones if-then-else,       que especifica el primer estado que se va
de tal forma que éstas se encargan de
                                               a evaluar, posteriormente con la sentencia
establecer la lógica que seguirá el
programa para realizar la asignación del       ifse compara la señal de entrada X la cual
estado.                                        indica cual será el edo_futuro. A
                                               continuación se muestra el código
Introducción del diseño al código.             completo.
Como primer paso en el diseño, se
consideraron 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 is
Obsere 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. begin
es decir por que camino se dirige. Para
                                               11. proceso1: process(edo_presente,x) be
ello necesitamos una signal que
                                                     gin
represente el estado presente y otra que
represente el estado futuro o próximo. El      12.          case edo_presente is
siguiente paso consiste en la declaración      13.          when d0 => z<= '0';
14. if x='1' then                           dicha transición. En el segundo, proceso2
15.        edo_futuro <=d1;
                                            se lleva a cabo de manera síncrona la
                                            asignación del estado futuro al estado
16. else
                                            presente, de suerte que cuando se aplica
17.      edo_futuro <=d0;
                                            un pulso de reloj, el proceso se ejecuta.
18. end if;                                 Se muestra lo forma de programar la
19. when d1 => z<='0';                      salida Z en el estado d3 cuando éste
20. if x='1' then                           obtiene el valor de 0 o 1, según el valor
21.      edo_futuro <= d2;                  de la entrada X.
22. else
                                            Con la explicación detallada de cada
23.        edo_futuro <=d1;
                                            segmento de información, se da por hecho
24. end if;
                                            que se encuentra listo el lector para
25. when d2 => z<= '0';                     comprender con una muy breve
26. if x='1' then                           explicación la composición y estructura
27.        edo_futuro <= d3;                del circuito de alarma.
28. else
29.      edo_futuro <=d0;
30. end if;
31. when d3 =>
                                            10. SISTEMA DE ALARMA DE 4
32. if x='1' then
                                            DÍGITOS
33.      edo_futuro <= d0;
                                            Se necesita de un sistema digital para
34.      z<='1';                            controlar accesos a un compartimiento o
35. else                                    cuarto, la idea es pedirle a la persona que
36.      edo_futuro <=d3;                   solicite el acceso, una cifra que consta de
37.      z <= '0';                          4 dígitos la cual se compara con una
38. end if;                                 predefinida por quien regula la entrada a
39. end case;
                                            dicho lugar; de resultar correcta la cifra
                                            deberá       abrirse    la      puerta    o
40. end process proceso1;
                                            compartimiento, de ser incorrecto
41.
                                            simplemente permanecerá cerrado. En
42. proceso2: process(clk) begin            respuesta a esta situación, se plantea un
43. if(clk'event and clk='1') then          sistema el cual permite grabar un numero
44.           edo_presente <= edo_futuro;   de 4 cifras, para establecer la clave de
45. end if;                                 acceso, posteriormente colocarla en modo
46. end process proceso2;
                                            de operación para que trabaje como le es
                                            requerido.
47. end arq_diagrama;

                                            El primer paso es definir que circuitos se
Hay que notar que en cada estado debe
                                            necesitan, para lograr esta tarea.
indicarse el valor de la salida (Z<=0)
                                            Primeramente nos enfocaremos en la
después de la condición when, siempre y
                                            captura de datos, cada cifra consta de un
cuando la variable Z no cambie de valor.
                                            valor de 0 al 9 en decimal, por lo que
En el primer proceso1, se describe la
                                            implica que se trabajará con cuatro bits en
transición que sufren los estados y las
                                            binario para cada dígito presionado. Esto
condiciones necesarias que determinan
implica la necesidad de utilizar un teclado
matricial      y     un       decodificador.
Posteriormente queda la parte de la
memoria, aquí puede quedar a decisión
del diseñador, ya que se pueden utilizar
diferentes tipos; para el diseño se utilizará
una memoria RAM de 4 bits de la cual se
ocuparan únicamente 4 localidades de
memoria, cada localidad representa 1
cifra de la clave de acceso. Y por último
queda un circuito el cual acceda a los
datos en la memoria, los compare con los
capturados del teclado, los compare y
mande una señal para indicar que se dio
permiso de acceso. Suena difícil lo que se
describió, pero en realidad es muy              Fig 8.2 Introducción de datos y
sencillo conseguirlo, aplicando el              almacenamiento
conocimiento 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á escrito
Fig 8.1 Esquema a bloques de como se            o leído en la memoria.
plantea el sistema.
                                                Con este avance conectado, el resto es
La conexión de la sección introducción de       sencillo, puesto que del resto del
datos y memoria es muy simple,                  funcionamiento      se     encargara   un
constamos con un teclado matricial que          GAL22v10.       A     éste    circuito  le
va a un decodificador, tomamos los 4 bits       conectaremos las salidas de U1 y las
de salida y se dirigen a la memoria,            salidas de U2, luego saldrán 4 bits de
también son tomadas las salidas en el           dirección hacia la memoria RAM, para
circuito de control, y las salidas de la        acceder a las distintas localidades como
RAM, son tomadas al circuito de control.        se comento anteriormente, y el ultimo pin
Cuando se apruebe el código, mediante el        se conectará a un led para saber cuando
cable “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 de
abrir. Véase la figura 8.2 para verificar       la siguiente forma.
como es la conexión de la primera etapa.
Fig 8.3 Diagrama a bloques del bosquejo final del circuito

El led enciende siempre y cuando los 4           Para atender el asunto de las direcciones y
dígitos insertados sean iguales a los            estado final, se tienen planteados 2
almacenados en la memoria.                       diseños que se conectan de igual forma en
Ahora la parte que resultaría compleja           el mismo numero de pines, pero con
sino contáramos con un PLD. Como la              distinta lógica, aquí solo se describirá en
descripción dice que el GAL debe                 que consiste uno de ellos, el segundo
comparar las salidas de 2 circuitos lo cual      diseño podrá ser consultado en un link
serían entradas para el GAL, y en cada           externo que se coloca al final del
acierto cambiar de transición o estado           documento, el cual solo requiere análisis
para que al llegar a la meta final se de por     del código mientras que el alambrado
encendido el led. Además debe genera             sigue intacto.
direcciones para saltar entre localidades.
De acuerdo con el análisis requerimos de         Generar direcciones para localidades
una 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 ello
cada que se presiona una tecla, un detalle       cada que hay un flanco de subida en el
que se tiene sin cuidado, puesto a que se        clock del GAL, cambie de dirección y
trabajara con un sistema síncrono en             asegurarse que se guardan o comparan
donde el OuputEnable del teclado actuará         siempre los dígitos siguientes de la clave
como pulso de reloj.                             de acceso. Independientemente del estado
                                                 en que se encuentre el sistema, seguirá
generando direcciones (contando). (ver
figura 8.4)
Diagrama maquina de estados                   cualquiera de los 4, se debe regresar al
Ahora la descripción de la secuencia.         estado inicial puesto que ya no esta
Tenemos que un usuario introduce 4            permitido acceder al sistema. En caso de
números, en cada número se hace una           acertar los 4 dígitos, se tiene que pasar de
comparación si lo presionado es igual a la    0 a 1 la salida (LED) que indica permitir
salida de memoria, de ser así pasar a un      acceso. Para visualizar esta descripción
siguiente 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 0
Observe que el camino rojo se toma
siempre y cuando A y B sean iguales, en             ));
caso contrario se regresa al estado inicial   11. attribute pin_numbers of alarm: ent
para así asegurarse de no dar acceso. Para          ity is
el último estado si no coinciden las          12.         --inputs
entradas, 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.         --outputs

Estado     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
24.            type states is (state0,
      state1, state2, state3 );
25.            signal stado_pres,
      stado_fut: states;
26. begin                                   56. p_reloj: process(clk,x) begin

27.                                         57.         if(clk'event and clk= '1') then

28. 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 parecido
33.            stado_fut <= state1;
                                            al código explicado anteriormente, lo cual
34.      else                               no hace falta detallar que se hace en cada
35.          stado_fut <= state0;           caso, sino únicamente destacar lo más
36.     end if;                             importante.
37. when state1 =>
38.     if a = NOT(b) then
39.            stado_fut <= state2;         63. attribute pin_numbers of alarm: enti

40.     else                                      ty is

41.            stado_fut <= state0;         64.    --inputs

42.     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.     --outputs

46.     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 pines
51.            ledOn <= '1';
                                            queremos que sean las entradas (A y B),
52.     end if;
                                            las salidas (LED) y las direcciones a la
53.          stado_fut <= state0;
                                            memoria, esto se definió para que si el
54. end case;
                                            diseñador hacer modificaciones no sea
55. 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 los
los cambios.
                                            estados.
73.    type states is (state0, state1,       81.    p_reloj: process(clk,x) begin
 state2, state3 );                           82.     if(clk'event and clk= '1') then
74.    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 un
que transición se encuentra, según el        contador que generaría las direcciones
camino que se haya seguido.                  para las localidades de memoria, por ello
                                             de la línea 85. Por último cada pulso de
75.        when state3 =>                    reloj (tecla presionada), se dirige hacia el
76.           if a = NOT(b) then             estado siguiente. Con todo lo anterior,
77.                   ledOn <= '1';          solo falta revisar el archivo rpt generado
78.            end if;                       por el compilador de vhdl, para saber
79.                  stado_fut <= state0;    como lograr las conexiones. Con ello el
80.       end case;                          alambrado se deja en manos del diseñador
                                             y se espera un resultado satisfactorio. Se
Dirigiéndonos a al ultimo estado, si se      recuerda al final del documento se
llego a este estado y las entradas (A y B)   colocan 2 links uno para acceder al diseño
son iguales, corresponde a prender LED,      alterno y otro para acceder al alambrado
luego regresarse al estado 0. Hay que        completo.
recordar que las salidas de la memoria
son negadas, por ende se debe usar la
palabra notpara obtener las entradas
correctas.
11. CONCLUSIONES                              cubre mas sistemas, lo que implica a que
                                              se esta volviendo parte de nuestra etapa
Si se tiene conocimiento básico sobre los     evolutiva.
circuitos digitales, se pudo notar la gran
ventaja que se tiene al usar dispositivos     No es necesario mucho conocimiento
programables, con el beneficio de realizar    previo para la compresión del documento
descripciones 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ásicas
diseños que se pueden lograr con la           como bit, binario, etc., además del
información expuesta pueden llegar a          conocimiento de las compuertas lógicas
grandes cosas, un ejemplo es el diseño de     básicas. Se espera haber sido de gran
un procesador de 4 bits, en el cual su        ayuda para cualquier diseñador y que le
máxima complejidad surge al momento           haya resultado grata la lectura, se recalca
de diseñar la unidad de control, sería un     que la aplicación de estos conocimientos
trabajo exhaustivo usando únicamente          en un sistema secuencial, va más allá de
circuitos con baja escala de integración,     una alamra con comparador.
pero usando un PLD y la lógica
secuencial, resulta bastante sencillo una     12. RECURSOS EXTRA
implementación de este tipo. Se                      http://robingk.imeev.com/alarm
recomienda tener siempre en cuenta estos             a.png
tipos de integrados que nos pueden
                                                     http://pastebin.com/EUVmk0qF
resolver muchos problemas con menor
costo.

Un obstáculo que pueden presenciar            13. REFERENCIAS
diseñadores principiantes, al utilizar éste
tipo de sistemas, es la simulación de         Libros:
                                              VHDL El arte de programar sistemas
ellos, puesto a que como constan de un
                                              digitales, David G. MAxinez, Jessica
programa personalizado, se requiere
                                              Alcalá. CECSA primera edición,2002.
indicarle a la computadora como es que
funciona. Por ello se hace recomendación      Fundamentos de Sistemas Digitales - 7ma
de uso del software Proteus ISIS, el cual     Edición - Thomas L. Floyd.
permite     simular    PLD     y     micro
controladores cargándoles el software de      Paginas web
diseño propio.
                                              http://digitales.itam.mx/Cursos/nuevos
Cabe 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.pdf
que con ello se logra definir con lenguaje
                                              http://dsid.escom.ipn.mx/julio/cursos/p
de alto nivel, la secuencia que sigue el
                                              resen/elec_dig/capitulo4.pdf
diseño. Cada día la electrónica digital
Diseño de un sistema de alarma con lógica programable

Mais conteúdo relacionado

Mais procurados

Circuitos secuenciales: Contadores, Registros de Desplazamiento y Circuito de...
Circuitos secuenciales: Contadores, Registros de Desplazamiento y Circuito de...Circuitos secuenciales: Contadores, Registros de Desplazamiento y Circuito de...
Circuitos secuenciales: Contadores, Registros de Desplazamiento y Circuito de...Jomicast
 
151953932 laboratorio-de-codificador-y-decodificador
151953932 laboratorio-de-codificador-y-decodificador151953932 laboratorio-de-codificador-y-decodificador
151953932 laboratorio-de-codificador-y-decodificadorEver Omar Nolasco
 
Montaje de circuito en proteus
Montaje de circuito en proteusMontaje de circuito en proteus
Montaje de circuito en proteusMIZORR
 
Amplificador operacional no inversor lm741 pdf
Amplificador operacional no inversor lm741 pdfAmplificador operacional no inversor lm741 pdf
Amplificador operacional no inversor lm741 pdfFranklin J.
 
Modulación por desplazamiento de fase (psk) exposicion
Modulación por desplazamiento de fase (psk) exposicionModulación por desplazamiento de fase (psk) exposicion
Modulación por desplazamiento de fase (psk) exposicionAlieth Guevara
 
Diferentes tipos de flip flops (jk, sr, d, t) sus tablas de verdad,
Diferentes tipos de flip flops (jk, sr, d, t) sus tablas de verdad,Diferentes tipos de flip flops (jk, sr, d, t) sus tablas de verdad,
Diferentes tipos de flip flops (jk, sr, d, t) sus tablas de verdad,Miguel Brunings
 
ARQUITECTURA DE UN MICROPROCESADOR
ARQUITECTURA DE UN MICROPROCESADORARQUITECTURA DE UN MICROPROCESADOR
ARQUITECTURA DE UN MICROPROCESADORRAFAEL HONORES VERA
 
Ttl y cmos circuitos digitales
Ttl y cmos circuitos digitales Ttl y cmos circuitos digitales
Ttl y cmos circuitos digitales CarlenisGeraldino
 
Mapa de karnaugh el semáforo
Mapa de karnaugh el semáforoMapa de karnaugh el semáforo
Mapa de karnaugh el semáforoMarco Antonio
 
codificaciones unipolar, polar, bipolar
codificaciones unipolar, polar, bipolarcodificaciones unipolar, polar, bipolar
codificaciones unipolar, polar, bipolarthejp
 
Sistemas lineales discretos
Sistemas lineales discretosSistemas lineales discretos
Sistemas lineales discretosÑero Lopez
 
Operaciones Básicas con el Sistema Hexadecimal
Operaciones Básicas con el Sistema HexadecimalOperaciones Básicas con el Sistema Hexadecimal
Operaciones Básicas con el Sistema Hexadecimalpafalconi
 
Ejercicios compuertas logicas
Ejercicios compuertas logicasEjercicios compuertas logicas
Ejercicios compuertas logicasjose canas
 
Circuitos lógicos MSI TTL
Circuitos lógicos MSI TTL Circuitos lógicos MSI TTL
Circuitos lógicos MSI TTL Andres Bejarano
 
Circuitos secuenciales sincronos y asincronos
Circuitos secuenciales sincronos y asincronosCircuitos secuenciales sincronos y asincronos
Circuitos secuenciales sincronos y asincronosAlexa Ramirez
 
Resumen microcontroladores
Resumen microcontroladoresResumen microcontroladores
Resumen microcontroladoresXavier Solis
 
Automatismo de control para el acceso a un garaje
Automatismo de control para el acceso a un garajeAutomatismo de control para el acceso a un garaje
Automatismo de control para el acceso a un garajeJomicast
 

Mais procurados (20)

Circuitos secuenciales: Contadores, Registros de Desplazamiento y Circuito de...
Circuitos secuenciales: Contadores, Registros de Desplazamiento y Circuito de...Circuitos secuenciales: Contadores, Registros de Desplazamiento y Circuito de...
Circuitos secuenciales: Contadores, Registros de Desplazamiento y Circuito de...
 
151953932 laboratorio-de-codificador-y-decodificador
151953932 laboratorio-de-codificador-y-decodificador151953932 laboratorio-de-codificador-y-decodificador
151953932 laboratorio-de-codificador-y-decodificador
 
Montaje de circuito en proteus
Montaje de circuito en proteusMontaje de circuito en proteus
Montaje de circuito en proteus
 
Amplificador operacional no inversor lm741 pdf
Amplificador operacional no inversor lm741 pdfAmplificador operacional no inversor lm741 pdf
Amplificador operacional no inversor lm741 pdf
 
Practica 7 Flip Flop
Practica 7 Flip FlopPractica 7 Flip Flop
Practica 7 Flip Flop
 
Modulación por desplazamiento de fase (psk) exposicion
Modulación por desplazamiento de fase (psk) exposicionModulación por desplazamiento de fase (psk) exposicion
Modulación por desplazamiento de fase (psk) exposicion
 
Diferentes tipos de flip flops (jk, sr, d, t) sus tablas de verdad,
Diferentes tipos de flip flops (jk, sr, d, t) sus tablas de verdad,Diferentes tipos de flip flops (jk, sr, d, t) sus tablas de verdad,
Diferentes tipos de flip flops (jk, sr, d, t) sus tablas de verdad,
 
ARQUITECTURA DE UN MICROPROCESADOR
ARQUITECTURA DE UN MICROPROCESADORARQUITECTURA DE UN MICROPROCESADOR
ARQUITECTURA DE UN MICROPROCESADOR
 
2.7. Recortadores con Diodos
2.7. Recortadores con Diodos2.7. Recortadores con Diodos
2.7. Recortadores con Diodos
 
Ttl y cmos circuitos digitales
Ttl y cmos circuitos digitales Ttl y cmos circuitos digitales
Ttl y cmos circuitos digitales
 
Mapa de karnaugh el semáforo
Mapa de karnaugh el semáforoMapa de karnaugh el semáforo
Mapa de karnaugh el semáforo
 
codificaciones unipolar, polar, bipolar
codificaciones unipolar, polar, bipolarcodificaciones unipolar, polar, bipolar
codificaciones unipolar, polar, bipolar
 
Sistemas lineales discretos
Sistemas lineales discretosSistemas lineales discretos
Sistemas lineales discretos
 
Operaciones Básicas con el Sistema Hexadecimal
Operaciones Básicas con el Sistema HexadecimalOperaciones Básicas con el Sistema Hexadecimal
Operaciones Básicas con el Sistema Hexadecimal
 
2.5. Rectificador de Media Onda
2.5. Rectificador de Media Onda2.5. Rectificador de Media Onda
2.5. Rectificador de Media Onda
 
Ejercicios compuertas logicas
Ejercicios compuertas logicasEjercicios compuertas logicas
Ejercicios compuertas logicas
 
Circuitos lógicos MSI TTL
Circuitos lógicos MSI TTL Circuitos lógicos MSI TTL
Circuitos lógicos MSI TTL
 
Circuitos secuenciales sincronos y asincronos
Circuitos secuenciales sincronos y asincronosCircuitos secuenciales sincronos y asincronos
Circuitos secuenciales sincronos y asincronos
 
Resumen microcontroladores
Resumen microcontroladoresResumen microcontroladores
Resumen microcontroladores
 
Automatismo de control para el acceso a un garaje
Automatismo de control para el acceso a un garajeAutomatismo de control para el acceso a un garaje
Automatismo de control para el acceso a un garaje
 

Destaque (20)

Proyecto alarma de seguridad para autos
Proyecto alarma de seguridad para autosProyecto alarma de seguridad para autos
Proyecto alarma de seguridad para autos
 
Sistemas digitales combinacionales - ejercicios
Sistemas digitales combinacionales - ejerciciosSistemas digitales combinacionales - ejercicios
Sistemas digitales combinacionales - ejercicios
 
Electrónica: Alarma de dos puertas
Electrónica: Alarma de dos puertasElectrónica: Alarma de dos puertas
Electrónica: Alarma de dos puertas
 
Presentacion proyecto sistema de alarma
Presentacion proyecto sistema de alarmaPresentacion proyecto sistema de alarma
Presentacion proyecto sistema de alarma
 
PRIMER Proyecto alarma arduino
PRIMER Proyecto alarma arduinoPRIMER Proyecto alarma arduino
PRIMER Proyecto alarma arduino
 
Sistema de alarmas
Sistema de alarmasSistema de alarmas
Sistema de alarmas
 
Digital practica
Digital practicaDigital practica
Digital practica
 
Electronica digital
Electronica digitalElectronica digital
Electronica digital
 
Labteoriaderedes2
Labteoriaderedes2Labteoriaderedes2
Labteoriaderedes2
 
Vhdl organización y arquitectura
Vhdl organización y arquitectura Vhdl organización y arquitectura
Vhdl organización y arquitectura
 
Curso básico de seguridad electrónica
Curso básico de seguridad electrónicaCurso básico de seguridad electrónica
Curso básico de seguridad electrónica
 
Prototipo de Ascensor de 5 pisos
Prototipo de Ascensor de 5 pisosPrototipo de Ascensor de 5 pisos
Prototipo de Ascensor de 5 pisos
 
Anderson zabala
Anderson zabalaAnderson zabala
Anderson zabala
 
Integracion. bloque-ll
Integracion. bloque-llIntegracion. bloque-ll
Integracion. bloque-ll
 
Compuertas logicas
Compuertas logicasCompuertas logicas
Compuertas logicas
 
vhdl
vhdlvhdl
vhdl
 
Sirena
SirenaSirena
Sirena
 
Conexion entreiguales
Conexion entreigualesConexion entreiguales
Conexion entreiguales
 
Diapositivas seguridad en la informacion y seguridad electronica
Diapositivas seguridad en la informacion y  seguridad electronicaDiapositivas seguridad en la informacion y  seguridad electronica
Diapositivas seguridad en la informacion y seguridad electronica
 
Introducción al VHDL
Introducción al VHDLIntroducción al VHDL
Introducción al VHDL
 

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

Diseño de un sistema de microcontroladores maestro-esclavo mediante el uso de...
Diseño de un sistema de microcontroladores maestro-esclavo mediante el uso de...Diseño de un sistema de microcontroladores maestro-esclavo mediante el uso de...
Diseño de un sistema de microcontroladores maestro-esclavo mediante el uso de...MariaBarradas17
 
Arquitectura de redes
Arquitectura de redesArquitectura de redes
Arquitectura de redesDC03
 
El plc compu 1 keneling gullo
El plc compu 1 keneling gulloEl plc compu 1 keneling gullo
El plc compu 1 keneling gullokenelinggullo
 
Actividad 1 segunda vuelta
Actividad 1 segunda vueltaActividad 1 segunda vuelta
Actividad 1 segunda vueltaPalaniIturburu
 
Evolución de las tecnologías de soporte sdn
Evolución de las tecnologías de soporte sdnEvolución de las tecnologías de soporte sdn
Evolución de las tecnologías de soporte sdnMauricio Antonio Castro
 
Arquitecturas de-redes-de-computadoras decimo grado ipt la pintada 2º trimest...
Arquitecturas de-redes-de-computadoras decimo grado ipt la pintada 2º trimest...Arquitecturas de-redes-de-computadoras decimo grado ipt la pintada 2º trimest...
Arquitecturas de-redes-de-computadoras decimo grado ipt la pintada 2º trimest...Lusdielka Hernandez
 
CU3CM60-ARREOLA R LESLY-SISTEMAS EMBEBIDOS
CU3CM60-ARREOLA R LESLY-SISTEMAS EMBEBIDOSCU3CM60-ARREOLA R LESLY-SISTEMAS EMBEBIDOS
CU3CM60-ARREOLA R LESLY-SISTEMAS EMBEBIDOSlslyar
 
Electrónica digital: VHDL el arte de programar sistemas digitales por David G...
Electrónica digital: VHDL el arte de programar sistemas digitales por David G...Electrónica digital: VHDL el arte de programar sistemas digitales por David G...
Electrónica digital: VHDL el arte de programar sistemas digitales por David G...SANTIAGO PABLO ALBERTO
 
Arquitectura de redes
Arquitectura de redesArquitectura de redes
Arquitectura de redeswsar85
 
Arquitecturas RICS-CISC
Arquitecturas RICS-CISC Arquitecturas RICS-CISC
Arquitecturas RICS-CISC Edwin Belduma
 
Controladores lógicos programables
Controladores lógicos programablesControladores lógicos programables
Controladores lógicos programablesf2721
 
Estudio de los sistemas de comunicación industrial basado.pptx
Estudio de los sistemas de comunicación industrial basado.pptxEstudio de los sistemas de comunicación industrial basado.pptx
Estudio de los sistemas de comunicación industrial basado.pptxRonaldoRomero7
 
Arquitecturas de computadores_avanzadas
Arquitecturas de computadores_avanzadasArquitecturas de computadores_avanzadas
Arquitecturas de computadores_avanzadasTensor
 

Semelhante a Diseño de un sistema de alarma con lógica programable (20)

Diseño de un sistema de microcontroladores maestro-esclavo mediante el uso de...
Diseño de un sistema de microcontroladores maestro-esclavo mediante el uso de...Diseño de un sistema de microcontroladores maestro-esclavo mediante el uso de...
Diseño de un sistema de microcontroladores maestro-esclavo mediante el uso de...
 
Arquitectura de redes
Arquitectura de redesArquitectura de redes
Arquitectura de redes
 
El plc compu 1 keneling gullo
El plc compu 1 keneling gulloEl plc compu 1 keneling gullo
El plc compu 1 keneling gullo
 
Tesis pcs7
Tesis pcs7Tesis pcs7
Tesis pcs7
 
M3
M3M3
M3
 
M3
M3M3
M3
 
Actividad 1 segunda vuelta
Actividad 1 segunda vueltaActividad 1 segunda vuelta
Actividad 1 segunda vuelta
 
Evolución de las tecnologías de soporte sdn
Evolución de las tecnologías de soporte sdnEvolución de las tecnologías de soporte sdn
Evolución de las tecnologías de soporte sdn
 
Arquitecturas de-redes-de-computadoras decimo grado ipt la pintada 2º trimest...
Arquitecturas de-redes-de-computadoras decimo grado ipt la pintada 2º trimest...Arquitecturas de-redes-de-computadoras decimo grado ipt la pintada 2º trimest...
Arquitecturas de-redes-de-computadoras decimo grado ipt la pintada 2º trimest...
 
CU3CM60-ARREOLA R LESLY-SISTEMAS EMBEBIDOS
CU3CM60-ARREOLA R LESLY-SISTEMAS EMBEBIDOSCU3CM60-ARREOLA R LESLY-SISTEMAS EMBEBIDOS
CU3CM60-ARREOLA R LESLY-SISTEMAS EMBEBIDOS
 
Electrónica digital: VHDL el arte de programar sistemas digitales por David G...
Electrónica digital: VHDL el arte de programar sistemas digitales por David G...Electrónica digital: VHDL el arte de programar sistemas digitales por David G...
Electrónica digital: VHDL el arte de programar sistemas digitales por David G...
 
Clase 3 chirinos
Clase 3 chirinosClase 3 chirinos
Clase 3 chirinos
 
Memoria.pdf
Memoria.pdfMemoria.pdf
Memoria.pdf
 
Arquitectura de redes
Arquitectura de redesArquitectura de redes
Arquitectura de redes
 
Arquitecturas RICS-CISC
Arquitecturas RICS-CISC Arquitecturas RICS-CISC
Arquitecturas RICS-CISC
 
Controladores lógicos programables
Controladores lógicos programablesControladores lógicos programables
Controladores lógicos programables
 
Arquitecturaderede s
Arquitecturaderede sArquitecturaderede s
Arquitecturaderede s
 
Examen
ExamenExamen
Examen
 
Estudio de los sistemas de comunicación industrial basado.pptx
Estudio de los sistemas de comunicación industrial basado.pptxEstudio de los sistemas de comunicación industrial basado.pptx
Estudio de los sistemas de comunicación industrial basado.pptx
 
Arquitecturas de computadores_avanzadas
Arquitecturas de computadores_avanzadasArquitecturas de computadores_avanzadas
Arquitecturas de computadores_avanzadas
 

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

  • 1. Diseño de un sistema de alarma con Lógica Programable Facultad de Ciencias Químicas e Ingeniería de la Universidad Autónoma de Baja California 1. 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 se abarca el diseño de una alarma de 4 bits vive rodeado de todo tipo de dispositivo usando componentes digitales, mediante electrónico los cuales dependen de un el uso de un dispositivo lógico circuito digital. Esta muy marcada la programable (PLD) y aplicación de una electrónica digital como el surgimiento de maquina de estados. Se incluyen ejemplos las nuevas tecnologías que permiten al de una máquina de Mealy y una máquina hombre llevar a cabo sus tareas con de Moore. Se incluyen ejemplos de la mayor facilidad y comodidad. aplicación del diseño en otros circuitos además de una descripción de la lógica Toda esta revolución tecnológica debe llevada a cabo. estar a gradecida a la invención del transistor, que fue en 1947 cuando John Los dispositivos lógicos programables Bardeen, Walter Brattain y William (PLD) favorecen la integración de Shockley descubren el efecto transistor, el aplicaciones y desarrollos lógicos cual permite cambios en la conductividad mediante el empaquetamiento de de los materiales mediante el uso de soluciones en un circuito integrado. El corriente eléctrica. Sumándole el álgebra resultado es la reducción de espacio físico booleana, es cuando surge la electrónica dentro de la aplicación; es decir, se trata digital. de dispositivos fabricados y revisados que se pueden personalizar desde el exterior Posteriormente a la idea de crear circuitos mediante diversas técnicas de cada vez más pequeños y con menos programación. El diseño se basa en costo, surgen los dispositivos bibliotecas y mecanismos específicos de programables, con el fin de usar un mapeado de funciones, mientras que su lenguaje de programación para configurar implementación tan sólo requiere una fase los arreglos de compuertas en un diseño de programación del dispositivo que se único y confiable. En la actualidad el suele realizar en segundos. nivel de integración en estos circuitos con el desarrollo de la microelectrónica ha Se denomina máquina de estados a un hecho posible desarrollar sistemas modelo de comportamiento de un sistema completos dentro de un solo circuito con entradas y salidas, en donde las integrado. Todas estas características es salidas dependen no sólo de las señales de lo que nos lleva a observar a diario entradas actuales sino también de las sistemas de uso industrial, militar y los de anteriores. Una máquina de estados puede consumo han reducido su tamaño; por ser 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ñados evolución, surge la combinación de un para una aplicación en particular. circuito programable con una maquina de estados, lo cual simplifica aun mas el Existen destinos arreglos de compuertas trabajo y diseño de sistemas digitales. Por que componen a los dispositivos ejemplo, si se requiere un sistema en el programables. Los FPGA por ejemplo cual se deban ejecutar una secuencia de son arreglos de compuertas programables instrucciones las cuales dependen unas de en campo y CPLD dispositivos lógicos otras, ocupan cierto tiempo de ejecución o programables complejos. Ellos ofrecen necesitan conteos variables, su diseño las mismas ventajas de un ASIC, sólo que sería muy complicado usando simple a un menor costo. álgebra booleana con arreglo de circuitos combinacionales. Todo esto resulta Categoría Característic mucho más sencillo si se utiliza la lógica as que implican las maquinas de estados Diseño totalmente a la Total también llamados sistemas secuenciales, medida(full custom) libertad de cuyo fin es mostrar ciertas salidas de diseño, pero acuerdo a la secuencia que fue diseñada. el desarrollo requiere La finalidad del artículo es presentar un todas las sistema digital y dar a conocer etapas de conocimientos necesarios para continuar fabricación. por cuenta propia en el diseño de otros Matrices de puertas pre Sólo sistemas que parecieran complejos pero difundidas necesita las con las herramientas que se exponen se últimas logran fácilmente. Con la teoría en etapas del conjunto, se plantea un circuito de proceso, y el seguridad, útil para restringir el acceso a diseño está un cuarto, bodega o automóvil. limitado a las posibilidades 3. ASICS de la El diseño y aplicación de sistemas se estructura puede lograr circuitos denominados prefabricada. ASICS, pero entra más completo sea el Celdas estándares pre Libertad de circuito, mayor complejidad tiene su caracterizadas(semicust diseño, pero elaboración. En la actualidad, el diseño de om) el desarrollo ASIC (circuitos integrados desarrollados exige un para aplicaciones específicas) domina las proceso de tendencias en el desarrollo de fabricación aplicaciones a nivel de microelectrónica. completo Este diseño presenta varias opciones de Lógica programable Dispositivos desarrollo, como se observa en la tabla (FPGA, CPLD) que se 1.1. A nivel de ASIC el desarrollo full o pueden semicustomofrecen 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ógicos Tabla 1.1 Tecnologías de fabricación de configurables y celdas lógicas de alta circuitos integrados. densidad, respectivamente. La arquitectura PLD está formada por un arreglo de compuertas AND y OR 4. PLD conectadas a las entradas y salidas del dispositivo. La finalidad de cada una de En la actualidad existe una gran variedad ellas se describe a continuación. de dispositivos lógicos programables, los Arreglo AND: Está formado por cuales se usan para remplazar circuitos varias compuertas AND SSI (pequeña escala de integración), MSI interconectadas a través de (mediana escala de integración) e incluso alambres, los cuales cuentan con circuitos VLSI (muy alta escala de un fusible en cada punto de integración), ya que ahorran espacio y intersección. Para programar se reducen de manera significativa el funde o apaga el fusible para número y costo de los diseños. Estos eliminar variables sin utilizar. dispositivos, llamados PLD (tabla1.2), se clasifican por su arquitectura (forma funcional en que se encuentran ordenados los elementos internos). Dispositivo Descripción PROM ProgrammableRead- OnlyMemory: memoria programable de sólo lectura. PLA ProgrammableLogicArray: arreglo lógico programable Fig 1.1 Arreglo AND PAL ProgrammableArrayLogic: Arreglo OR: Está formado por un lógica de arreglos conjunto de compuertas OR programables conectadas a un arreglo GAL GenericLogicArray: programable, el cual contiene un arreglo lógico genérico fusible en cada punto de CPLD Complex PLD: dispositivo intersección. Este tipo de arreglo lógico programable es similar al de compuertas AND. complejo FPGA Field ProgramGateArray: arreglos de compuertas programables en campo Tabla 1.2 Dispositivos lógicos programables. 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 reloj Fig 1.2 Arreglo OR al dato de salida Este es el principio básico para los  Voltaje de entrada soportado entre circuitos PLD, a continuación se presenta 3.5V y 6V en detalle la arquitectura del dispositivo a  90mA de consumo de corriente utilizar, el GAL. Por su bajo costo,  Rapidez de borrado 100ms pequeño tamaño y adaptarse al trabajo  20 años de retención de los datos realizado, se utilizó dicho circuito.  10 macroceldas lógicas de salida (OLMC)  Temperatura de operación 0 a 4.2 GAL 75ºC Este circuito cuenta con 22 líneas de Arreglo lógico genérico (GAL) se forma entrada y sus complementos, lo que da un con arreglos AND programable y OR fijo, total de 44 líneas de entrada a cada con una salida lógica programable. Este compuerta AND (estas entradas se dispositivo es reprogramable y contiene encuentran representadas por las líneas configuraciones de salida programables. verticales en el diagrama). Los dispositivos GAL se pueden programar una y ora vez ya que usan la El gal tiene la siguiente configuración en tecnologí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 control Fig2.1Diagrama de bloques del arreglo GAL. De acuerdo al número de macro celdas lógicas contenidas en el gal se le atribuye a su nombre, por ejemplo el GAL22v8 tiene 8 macro celdas lógicas. Para nuestro diseño usaremos un GAL22v10, el cual contiene 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 2 La intersección que forman las líneas de multiplexores y un flip-flop; el entrada con los términos producto (líneas multiplexor 1 de 4 conecta una de sus horizontales), representa cada una de las cuatro líneas de entrada al buffer triestado celdas que se pueden programar para de salida, en función de las líneas de conectar una variable de entrada a una selección S0 y S1. Por otro lado, el lí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ÁTICA productos dentro de un GAL. Ahora corresponde el turno de la Macroceldas lógicas de salida. Una programación del dispositivo, como se macrocelda lógica de salida (OLMC) está menciono la finalidad de usar el GAL es formada por circuitos lógicos que se programar un circuito que nos simplifique pueden programar como lógica y permita cumplir con el objetivo del combinacional o secuencial. Las sistema. En primera opción tenemos configuraciones combinacionales se hacer uso de la captura esquemática, el implementan por medio de programación, que consiste en crear el circuito en modo mientras 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 se observa la arquitectura de una macrocelda Los programas de captura esquemática del dispositivo GAL22v10, la cual está son aplicaciones creadas para armar formada por un flip-flop y dos circuitos electrónicos y exportar los multiplexores. 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 puerto para el GAL22v10. entrada, salida o bidireccional. Para poder hacer uso de esta programación se debe conocer completamente los operadores lógicos AND, OR, Nand, Nor, Exor, etc., conocer El proceso de grabado resulta sencillo una las características del 22v10 y saber vez construido el diagrama, simplemente identificar 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 le Un ejemplo para este tipo de pasará al programador que se encargara programación, se tiene el “Schematic”, el de configurar el gal a lo capturado cual 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 HARDWARE Fig 3.1 Hoja de trabajo Schematic Como se apreció en el método anterior de programación, no soluciona mucho el Los cuatro componentes básicos de la problema de la complejidad a la hora de captua esquemática son los símbolos, los implementar un circuito ya que se emplea conectores, las etiquetas y los puertos de el álgebra booleana en esencia. Lo que entrada 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 conceptos electrónicos elaborados. Por poseer una difíciles. sintaxis parecida a la de un lenguaje de alto nivel, éste tipo de descripción es muy aceptado por diseñadores. 7. VHDL Los 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 recursos Una de las principales características de tecnológicos requeridos. El departamento estos lenguajes radica en su capacidad de la defensa de Estados Unidos creó el para describir en distintos niveles de lenguaje VHDL; luego de varias abstracción (funcional, transferencia de versiones revisadas, el IEEE(Instituto de registros 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ándar modelos HDL según el grado de detalle y IEEEstd. precisión de sus descripciones. 7.1 Ventajas del desarrollo de circuitos Los niveles de abstracción descritos desde integrados con VHDL el punto de vista de simulación y síntesis A continuación se exponen las ventajas del 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 de Debido a una similitud con el lenguaje de fabricación del circuito. programación visual basic y algunos  Capacidad descriptiva en otros, se optó por VHDL, el cual nos distintos niveles de abstracción. proporciona una alta confiabilidad y se Consta con varios niveles de notará 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 un 7.2 Unidades básicas de diseño puerto de forma bidireccional. La estructura general de un programa en  Modo buffer. Permite hacer VHDL está formada por módulos o retroalimentación internas dentro unidades de diseño, cada uno de ellos de la entidad. compuestos por un conjunto de declaraciones e instrucciones que definen, describen, estructuran, analizan y evalúan el comportamiento de un sistema digital. Existen cinco tipos de unidades de diseñ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 la La declaración de una entidad consiste en escritura de identificadores. la descripción de las entradas y salidas de un circuito de diseño identificado como 7.5 Diseño de entidades mediante entity; es decir, la declaración señala las vectores terminales o pines de entrada y salida con La entidadsumador realizada usa bits que cuenta la entidad de diseño (ver fig individuales, pero que pasaría si se 5.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 entidad sumador Como cualquier lenguaje, éste tiene una regla para los identificadores, la cual es simple de deducir teniendo la siguiente tabla. Regla Incorrecto Correcto El primer 4suma Suma4 carácter SUMA4 Fig 5.3 Declaración de vectores en una siempre es entidad una letra Como se observa se esta utilizando la mayúscula o minúscula sentencia bit_vectorespecificando que El segundo S_4bits S4_bits será un arreglo de bits con 3 down 0 carácter no agrupa en orden descendente dicho puede ser vector. guión bajo Dos guiones Resta__4 Resta_4_ 7.6 Declaración de entidades mediante juntos no son librerías y paquetes permitidos Una parte importante radica en el uso de Un Clear#8 Clear_8 librerías y paquetes que permiten declarar identificador y almacenar estructuras lógicas, no puede seleccionadas o completas que facilitan el utilizar diseño. En VHDL se encuentran definidas símbolos dos librerías ieeey work(fig 5.4). Para
  • 10. declarar la librería hay que usar este punto será abordado detalladamente libraryieee; 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 circuito Fig 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 comparador todos los tipos de datos que suelen de entradas de 2 bits, se realiza una emplearse en VHDL. El acceso a la descripción que relacionan las entradas información en un paquete es por medio con las salidas del circuito sin importar de la sentencia use, seguida del nombre cómo esté organizado en su interior. de la liberia y paquete. si a = b thenc = 1 usenombre_librería.nombre_paquete.all; sia <> bthenc = 0 Ahora una forma de la declaración de una Ahora el código que representa el entidad 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 is Fig 5.5 Entidad usando librería std_logic 8. begin 9. compara: process(a,b) 7.7 Arquitectura Una arquitectura (architecture) se define 10. begin como la estructura que describe el 11. if a = b then funcionamiento de una entidad, de tal 12. c <= '1'; forma que permita el desarrollo de los 13. else procedimientos 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 de VHDL 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 is en la declaración de la entdidad, aquí no 5. port (a,b: in bit_vector (1 downto 0 hay 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 is entidad compse le indica que ha 9. begin terminado 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 palabra processcon la que se indicara que señales Como es notable, la diferencia radica en se 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 la then-else. Interpretando esto en el código programación del circuito depende del dice, si la señal a es igual a la señal b diseñador y de la complejidad del entonces c cambia a 1 (mediante el proyecto. Por ejemplo, si un sistema se símbolo <= que indica asignación). Una requiere diseñar cuyo funcionamiento vez definido el proceso, se termina con dependa sólo de sus entradas y salidas, es endprocessnombreproceso. Con ello se conveniente utilizar la descripción funcional, la cual presenta la ventaja de parecía que la descripción funcional se requerir menos instrucciones y el basa en el uso de procesos y diseñador no necesita un conocimiento declaraciones 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 que los 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 un secuenciales (if-then-else). Este tipo de sistema secuencial que bien está formado descripciones permite definir el flujo que por un circuito combinacional y un tomarán los datos entre módulos elemento de memoria encargado de encargados de realizar operaciones. Se almacenar de forma temporal la historia describe a continuación mediante del sistema. En esencia, la salida de un instrucciones when-else.Para entenderlo sistema secuencial depende de las mejor se coloca como queda el código entradas y de la historia del sistema (fig siguiendo dicho estilo para hacer el 6.1). comparador de 2 señales descritos en la descripción anterior. 1. --Ejemplo descripción por flujo mediante when-else 2. 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). secuencial Básicamente hay dos tipos de sistemas secuenciales: síncronos y asíncronos; el comportamiento de los primeros se encuentra sincronizado mediante el pulso de reloj, mientras que el otro depende del orden y momento en el cual se aplican su señales de entrada, por lo que no requieren un pulso de reloj para sincronizar sus acciones. Cabe mencionar Fig 6.3 Diagrama de tiempos contador que en el artículo solamente se estudiará binario 4 bits los sistemas síncronos puesto que se requiere de un evento arrojado al La presentación del diagrama de tiempos momento de presionar una tecla y con el de este circuito tiene la finalidad de sincronizar el circuito. ilustrar el procedimiento que se sigue en la programación, ya que puede observarse 8.1 Flip-flops con claridad el incremento que presentan El elemento de memoria utilizado las salidas cuando se aplica un pulso de indistintamente del tipo de sistema reloj en la entrada. secuencial se conoce como flip-flop, cuya característica es mantener un bit de Traduciendo el contador a lenguaje manera indefinida hasta que a través de VHDL una señal cambie de estado. Los más conocidos 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 cont4 Fig 6.2 Tabla de verdad flip-flop T 8. architecture arqcont of cont4 is En la figura anterior cabe destacar que Q 9. begin = estado actual y = estado futuro 10. process(clk) 11. begin 8.2 Contadores 12. Los contadores son entidades muy if(clk'event and clk = '1') then utilizadas 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 ejemplo rá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; es ieee, el paquete work.std_arith.allesto nos decir, un suceso de la señal clk. Como se permite 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 el nuestro contador. compilador mantiene el valor de Q hasta Cuando requerimos la que no exista un cambio de valor en la retroalimentación de una señal Q<= Q + señal clk. 1, utilizamos el modo inoutla cual se aprecia en la declaración de la variable Q, 9. SISTEMAS SECUENCIALES ya que se retroalimenta en cada pulso de SÍNCRONOS reloj. Atributo ‘event. En VHDL los atributos definen características que se asocian con Llego la hora de presentar los sistemas cualquier tipo de datos o entidades. El secuenciales de tipo síncrono, se vera atributo „eventse utiliza para describir un enfocado hacia las maquinas de estado ya hecho u ocurrencia de una señal en que aquí es donde recae todo el análisis y particular. Con ello podemos observar diseño del circuito alarma presentado al que en la condición ifclk’event es cierta final. Como ya se mencionó, la estructura de los sistemas secuenciales síncronos basa su funcionamiento en los elementos de memoria conocidos como flip-flop. La palabra síncrona se refiere a que cada uno de estos elementos de memoria que interactúan en un sistema se encuentran conectados a la misma señal de reloj, de forma tal que sólo se producirá un cambio de estado en el sistema cuando ocurra un flanco de disparo o un pulso en la señal de reloj. Arquitectura secuencial tipo Mealy Existe una división en el diseño de los sistemas secuenciales que se refiere al  Moore. La señal de salida sólo momento en que se producirá la salida del depende del estado en que se sistema. 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 seguir Observando la simple diferencia entre la metodología tradicional de diseño. ambos diseños en un sistema secuencial, VHDL nos permite utilizar un modelo se describirán 2 diseños de maquinas de funcional que indique la transición que siguen los estados y condiciones que estados para el sistema de alambra, donde controlarán el proceso. Aplicando un lo único que se requiere cambiar es el poco de lógica, vemos que el sistema se programa del GAL22v10, el alambrado y puede presentar por medio del diagrama número de pines quedara definido de de estados (fig 7.2) arquitectura Mealy. Y igual forma. A continuación se describe lo que advierte es que el sistema cuenta de manera general como es el análisis y con una señal de entrada denominada X y una de salida Z, las cuales determinan el diseño para un problema que requiera un estado presente y próximo que seguirá la circuito secuencial programado en maquina de estados. VHDL. Un sistema secuencial se desarrolla a través de una serie de pasos generalizados que comprenden el enunciado del problema, diagrama de estados, tabla de estados, asignación de estados, ecuaciones de entrada a los elementos de memoria y diagrama electrónico del circuito. Como ejemplo se plantea un sistema (fig 7.1) en el cual se emite un pulso de salida (Z=1) cuando la línea de entrada X se reciben cuatro unos en forma consecutiva; 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á el salida Z se coloca 1, en caso contrario se comportamiento del sistema. En éste debe quedará en el estado actual para X=0. Un considerarse edo_futuro depende de análisis usando la tabla de estados se edo_presente y la entrada X. El código percata 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) begin d0 d0 d1 0 0 2. case edo_presente is d1 d1 d2 0 1 3. when d0 => Z<='0'; d2 d2 d3 0 1 4. if X='1' then d3 d3 d0 0 1 5. edo_futuro <=d1; 6. else Ahora 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 cuales determinan, en un caso particular, el valor Dentro del proceso se describe la que 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 case por medio de declaraciones if-then-else, que especifica el primer estado que se va de tal forma que éstas se encargan de a evaluar, posteriormente con la sentencia establecer la lógica que seguirá el programa para realizar la asignación del ifse compara la señal de entrada X la cual estado. indica cual será el edo_futuro. A continuación se muestra el código Introducción del diseño al código. completo. Como primer paso en el diseño, se consideraron 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 is Obsere 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. begin es decir por que camino se dirige. Para 11. proceso1: process(edo_presente,x) be ello necesitamos una signal que gin represente el estado presente y otra que represente el estado futuro o próximo. El 12. case edo_presente is siguiente paso consiste en la declaración 13. when d0 => z<= '0';
  • 16. 14. if x='1' then dicha transición. En el segundo, proceso2 15. edo_futuro <=d1; se lleva a cabo de manera síncrona la asignación del estado futuro al estado 16. else presente, de suerte que cuando se aplica 17. edo_futuro <=d0; un pulso de reloj, el proceso se ejecuta. 18. end if; Se muestra lo forma de programar la 19. when d1 => z<='0'; salida Z en el estado d3 cuando éste 20. if x='1' then obtiene el valor de 0 o 1, según el valor 21. edo_futuro <= d2; de la entrada X. 22. else Con la explicación detallada de cada 23. edo_futuro <=d1; segmento de información, se da por hecho 24. end if; que se encuentra listo el lector para 25. when d2 => z<= '0'; comprender con una muy breve 26. if x='1' then explicación la composición y estructura 27. edo_futuro <= d3; del circuito de alarma. 28. else 29. edo_futuro <=d0; 30. end if; 31. when d3 => 10. SISTEMA DE ALARMA DE 4 32. if x='1' then DÍGITOS 33. edo_futuro <= d0; Se necesita de un sistema digital para 34. z<='1'; controlar accesos a un compartimiento o 35. else cuarto, la idea es pedirle a la persona que 36. edo_futuro <=d3; solicite el acceso, una cifra que consta de 37. z <= '0'; 4 dígitos la cual se compara con una 38. end if; predefinida por quien regula la entrada a 39. end case; dicho lugar; de resultar correcta la cifra deberá abrirse la puerta o 40. end process proceso1; compartimiento, de ser incorrecto 41. simplemente permanecerá cerrado. En 42. proceso2: process(clk) begin respuesta a esta situación, se plantea un 43. if(clk'event and clk='1') then sistema el cual permite grabar un numero 44. edo_presente <= edo_futuro; de 4 cifras, para establecer la clave de 45. end if; acceso, posteriormente colocarla en modo 46. end process proceso2; de operación para que trabaje como le es requerido. 47. end arq_diagrama; El primer paso es definir que circuitos se Hay que notar que en cada estado debe necesitan, para lograr esta tarea. indicarse el valor de la salida (Z<=0) Primeramente nos enfocaremos en la después de la condición when, siempre y captura de datos, cada cifra consta de un cuando la variable Z no cambie de valor. valor de 0 al 9 en decimal, por lo que En el primer proceso1, se describe la implica que se trabajará con cuatro bits en transición que sufren los estados y las binario para cada dígito presionado. Esto condiciones necesarias que determinan
  • 17. implica la necesidad de utilizar un teclado matricial y un decodificador. Posteriormente queda la parte de la memoria, aquí puede quedar a decisión del diseñador, ya que se pueden utilizar diferentes tipos; para el diseño se utilizará una memoria RAM de 4 bits de la cual se ocuparan únicamente 4 localidades de memoria, cada localidad representa 1 cifra de la clave de acceso. Y por último queda un circuito el cual acceda a los datos en la memoria, los compare con los capturados del teclado, los compare y mande una señal para indicar que se dio permiso de acceso. Suena difícil lo que se describió, pero en realidad es muy Fig 8.2 Introducción de datos y sencillo conseguirlo, aplicando el almacenamiento conocimiento 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á escrito Fig 8.1 Esquema a bloques de como se o leído en la memoria. plantea el sistema. Con este avance conectado, el resto es La conexión de la sección introducción de sencillo, puesto que del resto del datos y memoria es muy simple, funcionamiento se encargara un constamos con un teclado matricial que GAL22v10. A éste circuito le va a un decodificador, tomamos los 4 bits conectaremos las salidas de U1 y las de salida y se dirigen a la memoria, salidas de U2, luego saldrán 4 bits de también son tomadas las salidas en el dirección hacia la memoria RAM, para circuito de control, y las salidas de la acceder a las distintas localidades como RAM, son tomadas al circuito de control. se comento anteriormente, y el ultimo pin Cuando se apruebe el código, mediante el se conectará a un led para saber cuando cable “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 de abrir. 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 circuito El led enciende siempre y cuando los 4 Para atender el asunto de las direcciones y dígitos insertados sean iguales a los estado final, se tienen planteados 2 almacenados en la memoria. diseños que se conectan de igual forma en Ahora la parte que resultaría compleja el mismo numero de pines, pero con sino contáramos con un PLD. Como la distinta lógica, aquí solo se describirá en descripción dice que el GAL debe que consiste uno de ellos, el segundo comparar las salidas de 2 circuitos lo cual diseño podrá ser consultado en un link serían entradas para el GAL, y en cada externo que se coloca al final del acierto cambiar de transición o estado documento, el cual solo requiere análisis para que al llegar a la meta final se de por del código mientras que el alambrado encendido el led. Además debe genera sigue intacto. direcciones para saltar entre localidades. De acuerdo con el análisis requerimos de Generar direcciones para localidades una 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 ello cada que se presiona una tecla, un detalle cada que hay un flanco de subida en el que se tiene sin cuidado, puesto a que se clock del GAL, cambie de dirección y trabajara con un sistema síncrono en asegurarse que se guardan o comparan donde el OuputEnable del teclado actuará siempre los dígitos siguientes de la clave como pulso de reloj. de acceso. Independientemente del estado en que se encuentre el sistema, seguirá
  • 19. generando direcciones (contando). (ver figura 8.4) Diagrama maquina de estados cualquiera de los 4, se debe regresar al Ahora la descripción de la secuencia. estado inicial puesto que ya no esta Tenemos que un usuario introduce 4 permitido acceder al sistema. En caso de números, en cada número se hace una acertar los 4 dígitos, se tiene que pasar de comparación si lo presionado es igual a la 0 a 1 la salida (LED) que indica permitir salida de memoria, de ser así pasar a un acceso. Para visualizar esta descripción siguiente 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 0 Observe que el camino rojo se toma siempre y cuando A y B sean iguales, en )); caso contrario se regresa al estado inicial 11. attribute pin_numbers of alarm: ent para así asegurarse de no dar acceso. Para ity is el último estado si no coinciden las 12. --inputs entradas, 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. --outputs Estado 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) begin 27. 57. if(clk'event and clk= '1') then 28. 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 parecido 33. stado_fut <= state1; al código explicado anteriormente, lo cual 34. else no hace falta detallar que se hace en cada 35. stado_fut <= state0; caso, sino únicamente destacar lo más 36. end if; importante. 37. when state1 => 38. if a = NOT(b) then 39. stado_fut <= state2; 63. attribute pin_numbers of alarm: enti 40. else ty is 41. stado_fut <= state0; 64. --inputs 42. 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. --outputs 46. 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 pines 51. ledOn <= '1'; queremos que sean las entradas (A y B), 52. end if; las salidas (LED) y las direcciones a la 53. stado_fut <= state0; memoria, esto se definió para que si el 54. end case; diseñador hacer modificaciones no sea 55. 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 los los cambios. estados.
  • 21. 73. type states is (state0, state1, 81. p_reloj: process(clk,x) begin state2, state3 ); 82. if(clk'event and clk= '1') then 74. 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 un que transición se encuentra, según el contador que generaría las direcciones camino que se haya seguido. para las localidades de memoria, por ello de la línea 85. Por último cada pulso de 75. when state3 => reloj (tecla presionada), se dirige hacia el 76. if a = NOT(b) then estado siguiente. Con todo lo anterior, 77. ledOn <= '1'; solo falta revisar el archivo rpt generado 78. end if; por el compilador de vhdl, para saber 79. stado_fut <= state0; como lograr las conexiones. Con ello el 80. end case; alambrado se deja en manos del diseñador y se espera un resultado satisfactorio. Se Dirigiéndonos a al ultimo estado, si se recuerda al final del documento se llego a este estado y las entradas (A y B) colocan 2 links uno para acceder al diseño son iguales, corresponde a prender LED, alterno y otro para acceder al alambrado luego regresarse al estado 0. Hay que completo. recordar que las salidas de la memoria son negadas, por ende se debe usar la palabra notpara obtener las entradas correctas.
  • 22. 11. CONCLUSIONES cubre mas sistemas, lo que implica a que se esta volviendo parte de nuestra etapa Si se tiene conocimiento básico sobre los evolutiva. circuitos digitales, se pudo notar la gran ventaja que se tiene al usar dispositivos No es necesario mucho conocimiento programables, con el beneficio de realizar previo para la compresión del documento descripciones 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ásicas diseños que se pueden lograr con la como bit, binario, etc., además del información expuesta pueden llegar a conocimiento de las compuertas lógicas grandes cosas, un ejemplo es el diseño de básicas. Se espera haber sido de gran un procesador de 4 bits, en el cual su ayuda para cualquier diseñador y que le máxima complejidad surge al momento haya resultado grata la lectura, se recalca de diseñar la unidad de control, sería un que la aplicación de estos conocimientos trabajo exhaustivo usando únicamente en un sistema secuencial, va más allá de circuitos con baja escala de integración, una alamra con comparador. pero usando un PLD y la lógica secuencial, resulta bastante sencillo una 12. RECURSOS EXTRA implementación de este tipo. Se http://robingk.imeev.com/alarm recomienda tener siempre en cuenta estos a.png tipos de integrados que nos pueden http://pastebin.com/EUVmk0qF resolver muchos problemas con menor costo. Un obstáculo que pueden presenciar 13. REFERENCIAS diseñadores principiantes, al utilizar éste tipo de sistemas, es la simulación de Libros: VHDL El arte de programar sistemas ellos, puesto a que como constan de un digitales, David G. MAxinez, Jessica programa personalizado, se requiere Alcalá. CECSA primera edición,2002. indicarle a la computadora como es que funciona. Por ello se hace recomendación Fundamentos de Sistemas Digitales - 7ma de uso del software Proteus ISIS, el cual Edición - Thomas L. Floyd. permite simular PLD y micro controladores cargándoles el software de Paginas web diseño propio. http://digitales.itam.mx/Cursos/nuevos Cabe 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.pdf que con ello se logra definir con lenguaje http://dsid.escom.ipn.mx/julio/cursos/p de alto nivel, la secuencia que sigue el resen/elec_dig/capitulo4.pdf diseño. Cada día la electrónica digital