sábado, 9 de abril de 2011

Máquinas de Estado

Una máquina de estados es un sistema secuencial que consta de tres partes:  una lógica de estado siguiente, memoria de estado y lógica de salida. Los estados indican en que parte se encuentra el sistema, el número de posibles estados es fijo y las transiciones entre estos dependen del valor de las entradas y del estado en que se encuentra actualmente. Las salidas dependen del estado actual y en algunos casos del valor de las entradas (máquinas Moore y Mealy).

Desde mi punto de vista es una de las formas más sencillas de programación, donde el código es completamente legible y puede actualizarse o realizar mantenimiento al programa rápidamente sin importar si ha transcurrido mucho tiempo después de hecho. 

Veamos un ejemplo para controlar el funcionamiento de un robot seguidor de lineas. Se cuenta con dos sensores del tipo binario para detectar la linea negra, un '0' indica blanco y un '1' indica negro, y el objetivo es recorrer la linea negra. Las entradas ocupan dos bits: izquierdo-derecho. Las salidas son las señales para activar los motores izquierdo y derecho. Un diagrama de estados puede ser el siguiente:





Existen cuatro estados de operación:

ALTO -> motores apagados 00
ADELANTE -> dos motores encendidos 11
DERECHA -> motor izquierdo apagado, motor derecho encendido 10
IZQUIERDA -> motor izquierdo encendido, motor derecho apagado 01

http://www.filefactory.com/file/108cap635oon/n/MQS_EXE
http://www.filefactory.com/file/34bp13e2pzfd/n/seguidor_mqs

miércoles, 23 de marzo de 2011

Minimizacion Metodo Quine - McCluskey

El método de minimización Quine - McCluskey es un método tabular que a partir de los minterminos de una función booleana permite encontrar los implicantes primos de la función con el menor numero de variables. El programa está basado en una publican aparecida en la revista EDN en la sección Design Ideas a comienzo de la década de los 90, originalmente fue escrito en basic. En ese tiempo ya programaba en lenguaje C y tomaba como reto actualizar los programas al mismo, lo que me permitía aprender mucho más.

La versión de este programa admite como entrada un archivo llamado MIN.MIN en el que se especifican los datos de la función a minimizar. El formato usado es el llamado libre, con las siguientes palabras claves: 

:bit
:n
:minterminos
:variables

observe que las etiquetas comienzan con dos puntos seguido de la palabra clave, en la linea siguiente se especifica el valor correspondiente. Un ejemplo se este archivo es:

:bit
4

:n
9

:minterminos
1101
0111
1010
1001
0110
0011
1000
0010
0000

:variables
T
U
V
W

note que los minterminos están ordenados de acuerdo al número de 1's. Al correr el programa la salida correspondiente es:


pi[ 1 ] = 1-01
pi[ 2 ] = 0-1-
pi[ 3 ] = -0-0
pi[ 4 ] = 100-

        Tabla de implicantes primos

         13   7  10   9   6   3   8   2   0
=============================================
 1-01 |  ¹  --- ---  ¹  --- --- --- --- ---
 0-1- | ---  ¹  --- ---  ¹   ¹  ---  ¹  ---
 -0-0 | --- ---  ¹  --- --- ---  ¹   ¹   ¹
 100- | --- --- ---  ¹  --- ---  ¹  --- ---
=============================================

      f = T  . V' . W
        + T' . V
        + U' . W'
        + T  . U' . V'

f = T.V'.W + T'.V + U'.W' + T.U'.V'

Finalmente este programa fue la base para otro que permite el diseño de maquinas secuenciales multientrada. Proximamente hablaré de ese programa.

http://www.filefactory.com/file/ca4d6c7/n/Quine_-_McCluskey.zip

miércoles, 9 de febrero de 2011

El comienzo

Hola... He decidido dar a conocer algunos programas y circuitos hechos por mi o por alguno de los tesistas que he tenido. Estos pueden ser útiles en sus proyectos de electrónica... por supuesto, no están completos... o les falta el programa o algo de electrónica para continuar... pero se que eso los motivará para mejorarlos y realizar un mejor producto.