Problemas al implementar un contador arriba / abajo

3

Estoy tratando de entender cómo implementar un contador de rizado binario arriba / abajo. Básicamente, tengo un montón de D-flipflops, y conecto clk del siguiente flipflop al éter Q o Q '.

Entonces, si quiero cambiar la dirección de conteo, simplemente cambio todos los multiplexores clk entre Q y Q ', y el contador comienza a contar en la dirección opuesta.

Sin embargo, el problema es que cuando cambio las entradas entre Q y Q, los flipflops hacen 1 conteo, por lo que mi contador cuenta desde un número diferente.

I.e. No puedo tener algo como: 0- > 1- > 2- > 3 (cambio de dirección) - > 2- > 1- > 0, es como 0- > 1- > 2- & gt ; 3 (cambio de dirección) - > c- > b- > a- > 9 ...

¿Qué me estoy perdiendo?

    
pregunta BarsMonster

2 respuestas

2

Los puntos clave son:

  • Asegúrese de que después de la selección del nuevo arreglo tenga sentido lógico. es decir, ¿por qué debería contar ahora? Si no sigues la lógica de lo que crees que debería hacer, entonces no te sorprenderás si no está de acuerdo contigo :-)

  • Cambia siempre en un estado "neutral". Asegúrese de que las líneas de reloj u otras líneas relevantes para el estado estén en una condición antes y después del cambio que no cause un cambio transitorio de estado.

Un circuito "en funcionamiento" desde aquí

Unaherramientamaravillosa(ygratuita)

Logisim: una herramienta educativa para diseñar y simular circuitos lógicos digitales

Dicen:

  • Logisim es una herramienta educativa para diseñar y simular circuitos lógicos digitales. Con su sencilla interfaz de barra de herramientas y la simulación de circuitos a medida que los construye, es lo suficientemente simple para facilitar el aprendizaje de los conceptos más básicos relacionados con los circuitos lógicos. Con la capacidad de construir circuitos más grandes a partir de subcircuitos más pequeños, y de dibujar paquetes de cables con un solo arrastre del ratón, Logisim se puede usar (y se usa) para diseñar y simular CPU completas con fines educativos.
respondido por el Russell McMahon
0

Si desea un contador de rizado que cuente de forma bidireccional, es posible implementar un contador de código gris bidireccional de entrada en cuadratura utilizando cierres completamente sensibles al nivel. Los dos bits superiores de una etapa pueden alimentar la siguiente etapa. Incluso si una de las entradas es metaestable por un tiempo, el contador se comportará siempre que la entrada metaestable se estabilice antes de que la otra entrada cambie.

    
respondido por el supercat

Lea otras preguntas en las etiquetas