Ok de acuerdo (perdon por "irme" un rato del tema....otras cosas, mucha tarea) el caso es este
Reloj
tengo 3 unidades de conteo, dos de 0-59 y una de 0-11 (de 11:59 pasa a 00:00). Hechas a base de 2 74ls90, y cada una unidad tiene solo un CLK (entre los dos 7490 de cada unidad, funcionan de forma asíncrona)
la primera unidad cuenta los segundos y su entrada CLK1 viene de un astable con el 555. Cuando llega a contar un minuto tenemos un pequeño pulso que avisa que se cumplió un minuto(le llamo one_min)
La segunda cuenta los minutos, pero en su entrada CLK2 funciona de forma asincrona de acuerdo al bloque de segundos, pero tambien aumenta de forma manual (no es necesario que el reloj pare) si "Programar hora" está activado y "aumentar minutos" se activa (es un push button para generar solo un pulso) de otra forma solo le hace caso a los pulsos de los segundos. Cuando llega a una hora genera otro pequeño pulso que avisa la hora cumplida (le llamo one_hrs)
La tercera unidad cuenta las horas, de 0-11, teniendo así un reloj en formato 12hrs. Funciona exactamente igual que la unidad de minutos, tiene su CLK3 que se activa de forma asincrona respecto a la unidad de minutos. Tambien CLK3 responde si "Programar hora" se activa y aumenta si le mendamos pulsos con "aumentar hora"(otro push button), de otra forma solo le hace caso a los pulsos de los minutos
Así ya tengo el reloj de forma HH/MM/SS sin nada mas que sus entraas asíncronas
Alarma
Del otro lado, otra unidad de 0->59 y otra de 0->11 funcionan para generar la hora a la cual sonará la alarma.
La unidad de minutos (la alarma solo tiene formato HH/MM) tiene su entrada CLK4 que solo se activa si "Programar Alarma" está activado y aumenta si mandamos pulsos de "aumentar minutos" (si, el mismo push button que se usa para aumentar minutos en el reloj)
La unidad de horas tiene su entrada CLK5 y aumenta si "Programar Alarma" esta activo y le mandamos pulsos con "aumentar hora" (el mismo en el reloj)
Estos valores (tenemos 8 valores binarios por cada unidad de conteo, osea 4 por cada contador) los guardamos en un contador PIPO de 8 entradas (74ls273) (en total 2 registros, uno para los minutos y uno para las horas). Cada registro guarda los valores de entrada de la unidades contadoras y las carga cada vez que activamos sus respectivos CLK´s, pero esos CLK´s los asocio a las entradas CLK4 y CLK5 respectivamente (así aumenta el valor en los contadores y se guardan en los registros cada vez que aumento la hora. Aunque tengo en la salida del registro el valor anterior, i.e. en el contador tengo 5 y en la salida del registro tengo 4, solo me interesa el valor a la salida del registro, asi que ese detalle puede pasar)
Cada valor en el registro se compara con las salidas de las unidades de hora y minutos del reloj en si (i.e. las 8 salidas del registro de minutos se compara con las 8 salidas de la unidad de minutos), así cuando los minutos y la hora sean iguales se activa una señal (la llamo "alarma") que activa el dispositivo de alarma (he pensado en un monoestable o algo así, es lo de menos)
Consideraciones
-El reloj es formato HH/MM/SS
-cuando programo alarma el reloj sigue su cuenta, para eso es la entrada DISPLAY
-Si activo "Programar hora" y "programar alarma" el reloj no hace nada, solo sigue su suenta
-Al activar "Programar alarma" se muestra la hora de alarma en los mismos display´s*
*Para esto tengo pensado MUX 2-1 para decidir que muestro en los display´s (la entrada de desición la he llamado DISPLAY y depende de si "Programar alarma" está activada)
El problema que tengo es como, mediante diagrama de fujo (carta ASM) diseño el control del reloj, ya que depede de
Entradas
-CLK2, CLK3 (en el reloj)
-DISPLAY
-CLK4, CLK5 (en la alarma)
Salidas
-one_min
-one_hrs
Externas o Entradas de Excitación
-Programar hora
-Programar alarma
-aumentar minutos
-Aumentar hora
y se supone que el control de este sistema tiene que ejecutarse mientras dura el pulso de CLK1 para que funcione bien
El problema aqui es elaborar el Digrama de Flujo
agradecería que me pudieran hechar la mano con eso (y decir si estoy bien o alo va mal)
Los IC que estoy pensando usar son
-74ls90 (contador de décadas)
-74ls48 (BCD a 7 segmentos de Cátodo común)
-74ls688 (comparador de 8 bits)
-74ls273 (registro PIPO de 8 bits)
-74ls157 (MUX 8 entradas (bloque A y B) 4 salidas con entrada de desición A´/B.....0 muestra A, 1 muestra B)
-And´s y OR´s de 2 y 3 entradas