-
Notifications
You must be signed in to change notification settings - Fork 1
05_ASMD
-
Podemos ver un SISTEMA DIGITAL como un conjunto formado por un DATAPATH y una UNIDAD DE CONTROL (FSM), la unidad de control estará formada por una máquina de estados que puede recibir señales DIGITALES EXTERNAS como pulsadores, distintos tipos de sensores, encoders, etc. Estas señales externas no estarán sincronizadas con el reloj del sistema digital por lo que por lo normal se deberán de pasar por un sincronizador ( dos biestables D en serie ) y en muchas ocasiones ( pulsadores mecánicos ) se deberá emplear un circuito "anti-rebotes". Por otra parte, la unidad de control gestionará el envío de las señales de control hacia el Datapath y recibirá las señales de respuesta enviadas por el Datapath a la unidad de control.
-
Pero, ¿ Qué es el DATAPATH ?. Podemos decir que el datapath estará formado por distintos componentes digitales que se pueden controlar en su conjunto para realizar unas tareas concretas, fluyendo datos a través del sistema digital, estaría formado pues por componentes como, contadores, temporizadores, registros de desplazamiento, registros de carga, memorias, transmisores serie, otras máquinas de estado... El Datapath puede recibir datos de entrada que se cargarán al sistema digital, y generará datos de salida.
-
Para que todo el conjunto digital funcione en sincronía la unidad de control será la encargada de gobernar el ritmo de trabajo enviando las señales de control necesarias cuando se requieran, para ello recibirá las señales de respuesta del datapath que le ofrecerán la información que necesita la unidad de control para gestionar el datapath.
-
Podemos ver un esquema gráfico de lo que sería un sistema digital en las siguientes figuras:
- Un ASMD chart estará formado por un ASM chart normal donde además se indica información del Datapath
- ASMD chart = ASM chart + relación con DATAPATH
-
Un ASMD chart está formado distintos bloques "ASMD block" donde cada bloque equivale a un estado de una máquina de estados, cada bloque se ejecuta en un único ciclo de reloj del sistema, esto nos facilita ver una visión temporal ( cuantos ciclos se emplean a lo largo del sistema digital ).
-
Un bloque ASMD está formado por:
- Una CAJA DE ESTADO.
- Una CAJA DE DECISIÓN.
- Una CAJA CONDICIONAL.
-
Las tres cajas del bloque se procesan en un ciclo de reloj y representan un estado como ya habíamos mencionado.
- La caja de estado se representa como ** un rectángulo** formado por:
- Nombre del estado
- Señales de salida Moore (salidas en función del estado en el que te encuentras).
- Operaciones con registros sin condición ( se realizan nada más que por el hecho de estar en dicho estado, no están sometidas a ninguna condición)
- en la parte exterior, en una esquina se puede poner el código binario con el cual se representa el estado en el que estamos.
- Se representan con un rombo donde dentro se indica la señal de entrada, variable, etc sobre la cual se establece una condición determinada donde en función de dicha condición se establecerá el camino hacia donde discurre el sistema. Tendremos dos posibles caminos, TRUE o FALSE, se pueden encadenar distintas cajas de decisión.
- Se representa como un rectángulo con los bordes redondeados donde en su interior se muestra:
- Señales de salida Mealy donde las salidas son función de las entradas (condición) y el estado donde se encuentra.
- Operaciones de registros condicionadas a dicha condición de entrada.
Las operaciones que se producen en el Datapath no pertenecen al controlador propiamente dicho ( máquina de estado ) por lo cual no se indican dentro de ninguna de las cajas del bloque ASMD pero si se indican a lo largo del camino fuera de las cajas para establecer visualmente una relación con los elementos de un Datapath.
-
Las señales que gobiernan las operaciones que se realizan en el Datapath si pertenecen al controlador y se incluyen bien en la caja de estado si son señales Moore o en la caja condicional si son señales Mealy.
-
En un ASMD chart las operaciones con los registros se ejecutan todas a la vez ( concurrentes ) al final de cada bloque ASMD y en un ciclo de reloj por bloque ASMD.
-
En un ASMD chart se asocia una transición de estado con las operaciones que se realizan en el DATAPATH y las señales que disparan dichas operaciones.
-
En la siguiente figura vemos las partes que formaría un bloque ASMD dentro de un ASMD chart:
Vamos a indicar alguna pauta para crear un ASMD chart.
-
Partimos de un ASM chart (Algoritmo de máquina de estados tradicional) con los estados y señales que causan la transición de un estado a otro.
-
Se anotan en los bordes de las distintas cajas ( de estado/decisión/condicional) las operaciones que se producirían en el Datapath.
-
Se añaden a las cajas que correspondan (estado/condicional) las señales de control que gobernarán el Datapath.
-
No se incluyen todas las señales de control, solo se añaden las señales que sufrirán un cambio.
-
Se omite el reset ( asíncrono para todo el sistema ).
-
Un bloque ASMD se trata como una unidad donde todo se produce en un ciclo de reloj, todas las operaciones en el flanco positivo/negativo del reloj.
-
Después de una caja condicional podría volver a incluirse otra caja de decisión y otras cajas condición y así sucesivamente pero siempre hay que tener en cuenta la relación temporal de las operaciones que se incluyen en un bloque ASMD ya que todas las operaciones que están dentro del mismo bloque ASMD se producirán en el mismo ciclo de reloj, habrá que por lo tanto tenerlo en cuenta para saber si esto es lo que queremos o queremos que se realicen en otro estado por lo tanto, en el siguiente ciclo de reloj.
-
Vamos a mostrar un pequeño ejemplo con fin didáctico para mostrar el desarrollo de un sistema digital.
-
Queremos realizar un sistema digital que realice lo siguiente:
- Queremos que al pulsar el botón "start" se transmitan cada 4 segundos por un puerto serie 4 datos, el 1,2,3 y cambio de línea ( \n ) y una vez terminado el último envío no se repita hasta que no se vuelva a pulsar el botón inicio.
-
Si se pulsa el botón reset volvemos al estado inicial.
-
Para conseguir esto, disponemos de un DATAPATH formado por:
- Un Contador que se encargará de gobernar un Multiplexor por el cual entrará el dato adecuado a transmitir.
- Un registro de 8 bits sobre el cual se cargará el dato correcto para transmitir por el puerto serie
- Un módulo transmisor serie encargado de transmitir el dato por el puerto serie cuando este este disponible.
- Un temporizador que se encargará de controlar los 4 segundos que se desean de espera entre dato y dato.
-
Con dicho DATAPATH y con los requisitos a cumplir, tendremos que realizar una máquina de estado que controle toda la comunicación ordenada con el Datapath.
-
El controlador tendrá como entradas:
- n[2:0].Valor del contador que controla el Multiplexor.
- FIN_T1. Comunicará al controlador que el temporizador T1 ha terminado.
- START. para recibir las señal de arranque del circuito digital.
- reset. Nos permitirá llevar el sistema al estado inicial
- clk. reloj del sistema.
-
Como salidas tendremos:
- INICIA_T1. Para indicar al temporizador T1 que inicie la cuenta de los 4 segundos.
- RESET_N. Para poder resetear el contador que gobierna el multiplexor.
- INC_N. Para incrementar el contador.
- LOAD_DATO. Para cargar el valor del multiplexor en un registro.
- TX_DATO. Para indicar al módulo transmisor que debe transmitir el dato que tiene a su entrada.