Soy consciente de la necesidad de sincronizar todas las entradas a un FPGA antes de usar esas entradas para evitar la metaestabilidad. También soy consciente de la necesidad de sincronizar señales que cruzan dominios de reloj dentro de un solo FPGA. Esta pregunta no se trata de cruzar dominios de reloj.¿Es necesario registrar las entradas y salidas de cada núcleo de hardware?
Mi pregunta es si es una buena idea para registrar de manera rutinaria todo de las entradas y salidas de todos los módulos de hardware interno en un diseño de FPGA. La razón es que queremos romper largas cadenas de lógica combinacional para mejorar la velocidad del reloj, de modo que podamos cumplir con las restricciones de tiempo para una frecuencia de reloj elegida. Esto agregará ciclos adicionales de latencia proporcionales a la cantidad de módulos que una señal debe cruzar. ¿Es esta una buena idea o una mala idea? ¿Debería uno registrar solo las entradas y no las salidas?
respuesta Resumen
Regla de oro: registrar todos los resultados de los núcleos de FPGA internos; no es necesario registrar entradas Si un resultado ya proviene de un registro, como el registro de estado de una máquina de estado, entonces no es necesario registrarse nuevamente.
Hablé con alguien que también dio el mismo consejo de registrar salidas solamente. –
Generalmente participo de los módulos de modo que las salidas de ruta de datos sean registros. Aunque esto ciertamente no es una regla. –