Máquina de estado de 9 bits

1

Estoy trabajando en una máquina de estado que conducirá un bus de estado para un proyecto personal. La máquina de estado tendrá un patrón de salida como el siguiente:

100000000
010000000
001000000
000100000
000010000
000001000
000000100
000000010
000000001
100000000

Como puede ver, el bit activo se desplaza y vuelve a girar. He juntado los circuitos para hacer esto; Sin embargo, los resultados son realmente impredecibles. Logré lo anterior con dos flip flops octales, dos controladores de línea y un reloj para cambiar el bit activo. Los flip flops tienen la salida de los controladores de línea que regresan a su entrada, desplazados en un bit. El último bit vuelve y alimenta el primer bit.

Mi circuito solo funciona aproximadamente 1/4 del tiempo ... la mayoría de las veces, varios bits serán altos a la vez O se enrollarán una vez y, finalmente, el bit alto se desvanecerá.

Estoy buscando recomendaciones y / o cambios que pueda hacer para que esto funcione. Entiendo que el circuito no es muy elegante ... acabo de probar lo que sé.

Algunas notas:

  • El diseño de PCB de arriba está destinado a ir en una capa, los diferentes colores son solo para ayudarme. Además, hay algunos puentes entre los cables ... siempre están directamente uno frente al otro.

  • El esquema no incluye los controladores de línea, solo los flip-flops

pregunta Dave C

4 respuestas

6

Si su objetivo es que una salida a la vez sea alta, no necesita una máquina de estados de 9 bits. Probablemente debería usar un 4017 que tiene 10 salidas que son afectadas en secuencia, y cablearlo para que se reinicie cuando la décima salida se active, o bien usar una máquina de estado de 4 bits que progresará a través de nueve estados, junto con una Dispositivo que emitirá uno de los nueve cables según el estado de la máquina de 4 bits.

Alternativamente, puede construir su máquina de modo que un "1" se cambie a un pestillo de 8 bits solo cuando todos los otros bits sean cero. Esto podría lograrse utilizando un 74HC688 y un inversor, o si no le importara que todos los cables excepto uno de ellos fueran "1" (en lugar de que todos menos uno fueran "0"), podría alimentar la salida de su 8- bit encaja en una puerta NAND de 8 bits.

    
respondido por el supercat
3

Es posible que esté siendo grueso, pero para iniciar el proceso debe haber un 1 lógico definido introducido en algún punto para que el primer pestillo Dtype pueda "establecerse" y luego este 1 pueda pasar a la siguiente D Escriba en el siguiente ciclo de clk. Además, el clk se vincula con una línea que viene de algún otro lugar que no se muestra en el diagrama. ¿Podría ser esto también un posible problema? En el encendido, puede haber un conjunto de 1s aleatorios que hacen que algo suceda de manera bastante ilógica. Lo digital no es mi punto fuerte, así que lo siento si me he perdido el problema.

    
respondido por el Andy aka
3

Como hay nueve estados, use un contador binario de 4 bits. Piense de alguna manera que se reinicie en el siguiente reloj cuando esté en el estado 1000. Alimente sus cuatro bits a un decodificador (74HC154) que apagará todos los 0 con un solo 1, o al revés de eso, olvidé cuál. Esas salidas pueden impulsar tus LED o lo que sea.

Esto tiene una gran ventaja de diseño: el contador está siempre en uno de los nueve estados válidos. Los medios para relacionar esos estados con el patrón de salida deseado también son confiables. Como ha visto, los registros de desplazamiento no son una buena forma de mover un patrón fijo, a menos que tenga cuidado de forzarlos inicialmente en el patrón deseado, y ocasionalmente mientras se está ejecutando, ya que las fallas eléctricas y otras interferencias pueden hacerlas desaparecer. p>     

respondido por el DarenW
3

Un 4017 es el mejor ajuste si los requisitos no cambian y si ya tiene un generador de reloj disponible.

De lo contrario, un microcontrolador como ATtiny2313 resolvería fácilmente el problema. Para la solución del microcontrolador, no se necesitan componentes externos, ni siquiera un reloj, ya que tiene un oscilador interno. Estos controladores son muy baratos (1-2 euros).

    
respondido por el jippie

Lea otras preguntas en las etiquetas