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