Contador de mod 105 de subida / bajada basado en 74193

0

Se me asigna crear un contador arriba / abajo en el quartus II, pero no puedo encontrar la manera de hacerlo correctamente. En la simulación, siempre termina en un estado transitorio, por lo que supongo que hay algunos problemas de metastabilidad que no entiendo, pero pasé muchas horas en ello y no pude hacer que funcionara.

Este es mi diseño base, ¿hay algún problema obvio en esta etapa que me falte?

Luego traté de asegurarme de que el contador se borra solo cuando contamos hacia arriba (104- > 0) y cuando cuenta hacia abajo, el valor dado se carga cuando se desborda (0- > 104). ¿Qué debo hacer para que funcione correctamente?

    
pregunta Adiqq

1 respuesta

2

Esto es fundamentalmente un mal enfoque para un diseño de FPGA. Los FPGA (y sus herramientas de diseño) están altamente optimizados para admitir la lógica síncrona, en la que todos los FF en un módulo dado están sincronizados directamente por un solo reloj común. Se utilizan técnicas especiales para transferir señales de un dominio de reloj a otro.

Aunque el 74193 se denomina "contador síncrono", es una aplicación muy suelta del término. Si observa la implementación interna en cualquier libro de datos, verá que cada FF tiene un reloj único. Y las funciones "borrar" y "cargar" son asíncronas, no síncronas. Duplicar la función exacta de solo uno de estos chips en un FPGA será, en el mejor de los casos, una propuesta desordenada, y tratar de construir circuitos más complejos usándolos será aún peor.

Si debe realizar este proyecto utilizando una entrada de esquema en lugar de HDL, entonces sería mucho mejor utilizar 7 FF independientes, un registro de 8 bits como un 74374, o incluso un contador verdaderamente sincrónico como el 74169.

    
respondido por el Dave Tweed

Lea otras preguntas en las etiquetas