Está en la página 1de 5

GENERADOR DE SECUENCIAS.

Jose David Espinosa Romero,Johan Esneyder Alfonso Pasachoa Angie Paola Botello.
Universidad de La Salle.
Bogotá, Colombia.
jespinosa90@unisalle.edu.co
jalfonso44@unisalle.edu.co
abotello70@unisalle.edu.co

Introducción una entrada, hacen un proceso y nos entregan


una salida. Notemos que estas máquinas hacen
Las máquinas de estados finitos son modelos una computación. En otras palabras,
de comportamiento de un sistema basado en imaginemos una máquina capaz de seguir una
entradas y salidas que dependen de unos secuencia finita de pasos al introducir un
estados definidos, las máquinas de estados se conjunto de datos en ella, solo se puede leer un
utilizan en gran medida en el diseño de dato en cada paso que se realice, por tanto el
programación en software y para el control de número de pasos a seguir está dado por el
este, en este informe se explicara cómo se número de datos a introducir. Cada entrada
realizó un generador de secuencias por medio diferente genera una salida diferente, pero
del método de máquinas de estado, pasando siempre el mismo resultado con los mismos
por el diseño del diagrama de estados, hasta datos de entrada​.
llegar a el código que se generó a partir de este
diagrama. DemoQE128: ​Es una herramienta de bajo
costo diseñada para demostrar, evaluar y hacer
El generador de secuencias tendrá 3 secuencias depuración de procesadores.
distribuidas en 8 leds del microcontrolador las
cuales dependen de 2 botones de entrada, uno Puerto de entrada/salida: Es uno de los
de selección y otro de play stop, también las principales periféricos internos de todo
salidas dependen de unas banderas que se microcontrolador el cual permite intercambio
activarán a partir de unos timers para su de información entre el bus de datos interno
correcto funcionamiento. del microcontrolador y otros dispositivos.
Todo esto se llevará a cabo por medio del
software CodeWarrior de la empresa Operadores aritméticos: ​Son símbolos que
Freescale, el cual funciona a partir del lenguaje indican al compilador que lleve a cabo
de programación C/C + +; y se utilizara la operaciones matemáticas:
tarjeta programable demoqe128.

Marco teórico

Las Máquinas de estados Finitos :​Conocidas


como Finite State Machines por su traducción
al Inglés, nos sirven para realizar procesos
bien definidos en un tiempo discreto. Reciben
Operador Operación SÍMBOLO DESCRIPCIÓN
realizada
|| OR
- Resta
&& AND
+ Suma
! NOT
* Multiplicación
Tabla 3​.Operadores lógicos.
/ Cociente entero de la
división Char: ​Es una variable de tipo entero cuyo
alcance está restringido a -128, +127 y por lo
% Residuo entero de la general ocupa un único byte.
división

-- Decremento en 1 Void: ​El tipo void es una variable que bien


declara explícitamente una función que no
++ Incremento en 1 devuelve valor alguno, o bien crea puntos
Tabla 1​.Operadores aritméticos. genéricos.

Operadores relacionales: ​Estos operadores Metodología:


nos arrojan sólo dos posibles resultados,
VERDADERO o FALSO, siendo (0) Falso y Para el desarrollo de esta actividad lo primero
(1) verdadero. que se hizo fue diseñar el diagrama de estados
del programa (figura 1).

SÍMBOLO DESCRIPCIÓN

< Menor que...

> Mayor que...

<= Menor o

>= Mayor o igual que

== Es exactamente igual Figura 1. ​Diagrama de estados.


que...
A partir del diagrama de estados, se creó la
!= Diferente que... tabla de estados y transiciones (tabla 4) la cual
Tabla 2​.Operadores relacionales. nos ayuda a saber qué se necesita para pasar
entre estados.
Operadores lógicos booleanos: ​al igual que
los operadores relacionales entregan dos
valores verdadero o falso:
este arreglo se le llamó secuencia el cual debía
tener un tamaño de 30 filas y 8 columnas
correspondientes a la cantidad de
combinaciones y de leds
correspondientemente.

Figura 3. ​Arreglo de secuencias.

Para la función del visual se utilizó el


enmascaramiento por medio de operadores
Tabla 4.​ Tabla de estados y transiciones.
lógicos como lo son el AND y el OR, gracias
a una variable Val, se utilizó la función Delay
Luego, se crearon las secuencias (Tabla 5) que
para que funcione como un temporizador que
deseaban en la salida de los leds las cuales son
activa o desactiva una bandera que permite el
3, cada una de 10 combinaciones diferentes.
paso entre estados frecuencias y entre botones.

Tabla 5.​ Secuencias del programa.


Figura 4. ​Función visual y Flag.
Implementación del algoritmo.
Para la implementación del algoritmo, se Lógica del siguiente estado.
definieron las entradas y salidas del código por Para el paso de estados se utilizó el comando
medio de los puertos PTA, PTD y PTC de la de Switch case el cual se activará
tarjeta demoqe (Figura 2). dependiendo del estado en el que este, luego se
realiza un if para decidir a qué estado pasará.

Figura 2. ​Definición de variables.


Figura 5. ​.Lógica del siguiente estado.
Luego se diseñó el arreglo el cual tiene por
filas las secuencias diseñadas en la tabla 5, a
Lógica de salida:
Para el cambio de secuencia tenemos el
siguiente algoritmo que por medio de la
función de potencia nos permite relacionar la
potencia en base 2 que elevamos nuestros bits
para concretar el equivalente binario.

Figura 7. ​.Lógica del siguiente estado salto de


secuencia.

Finalmente en esta parte del código tenemos


los condicionales generales, así mismo como
Figura 6. ​.Lógica de salida de estado. existen unos para relacionar la posición en
medio de cada vector que compone la
Esta parte final de la lógica de salida se basa secuencia y permite recorrer cada uno, existe
en el uso de un case para desarrollar un uno que los recorre de maner secuencial por
desplazamiento entre paquetes de secuencias bloques de a 10, asumiendo cada bloque como
de a 10 y permitiendo que si no se cumple el un conjunto de secuencia en total, a lo cual
parámetro necesario para pasar al siguiente tenemos que cuando se cumple la función de
estado se retorna al inicio del estado actual y SELECT, la función de DIR asociada a este
no permite saltos de estados, teniendo un ciclo mismo presenta un salto de 10 unidades
de secuencia en el cual permite ver cada inmediatamente desde la posición inicial del
secuencia seleccionada de manera infinita vector actual, para así pasar a la siguiente
hasta que alguno de los dos parámetros decena de vectores correspondientes a la
establecidos de presionar bien sea PLAYSTOP posterior secuencia, de igual manera tenemos
o SELECT sea presionado llevando consigo la condición necesaria para cumplor la pausa
una operación de cambio de secuencia o de del sistema negando o aprobando el estado de
pausa de esta misma. PYS que es nuestro play y stop que cumple el
respectivo parámetro para alimentar algunos
de los CASE-BREAKS anteriores, y
finalmente tenemos la declaración del estado
siguiente en función, pues nos hace alusión en
torno al cambio de estado, bien sea para
cambio de secuencia, play/pause o
sencillamente entrar en los mini bucles de wait
tanto de Update, Play y select.
Conclusiones. Bibliografía
[1] TRAKHTENBROT B. A. Algor´ıtmos y
● En la aplicación de este algoritmo se Computadoras. Limusa, 1973.
pudieron poner a prueba los [2] PADILLA Pablo G. Lenguajes y álgebra
conocimientos previamente adquiridos de eventos regulares. Escuela Superior de
en las clases, pero igual manera se Computo, 2006.
requirió mucho trabajo creativo, pues [3] HOPCROFT and ULLMAN. Formal
para el diseño de una máquina de Languages and their Relation to Automata.
estados funcional se emplearon Addison-Wesley, 1969.
muchos conocimientos previos en [4] MOTWANI HOPCROFT and ULLMAN.
circuitos lógicos y ya una vez obtenida Introduction to Automata Theory,
esta máquina de estados el algoritmo Languages and Computation. Pearson
salía correspondiente a la lógica de la Education, 2001.
máquina. [5] MINSKY Marvin L. Computation: Finite
● El tipo de lógica que se maneja en el and Infite Machines. PrenticeHall, 1967.
programa es indispensable tenerlo
claro, pues algunos sistemas se
programan directamente en lógica
inversa y otros de manera tradicional
en sentido de sus entradas y salidas.
● Se tiene que tener muy en cuenta las
esperas empleadas en este sistema,
pues las resistencias de pull-up
permiten proteger el sistema pero no
se sabe de igual manera el tipo de uso
que el usuario pueda darle a las
entradas del sistema y por ende pueda
generar daños en el algoritmo con
interferencias de pulsaciones
constantes.
● Se debe revisar de manera detallada
los puertos de entrada y salida
declarados al principio del algoritmo,
pues un error en estos y la tarjeta
puede entrar en conflicto y no ejecutar
de manera correcta el código y en
algunos casos puede incluso quemarse
su integrado interno.

También podría gustarte