FPGA cómo crear un retraso

0

Entiendo que con FPGA síncrono, toda la ejecución se realiza en ciclos. ¿Qué sucede cuando mi circuito tiene dos partes que dan salidas en diferentes ciclos (una tiene mayor profundidad que la otra) y necesito las salidas en una parte diferente de los circuitos en un solo ciclo? ¿Hay alguna manera mejor que simplemente agregar puertas lógicas que no hagan nada para obtener la demora del número requerido de ciclos de reloj?

Sé que generalmente no tengo que preocuparme por esto cuando programo FPGA, pero me gustaría entenderlo.

    
pregunta user2316602

4 respuestas

1

Usaría registros de tubería o FIFO para ocuparse de la demora. Los registros de tuberías son buenos para retrasos cortos, y esencialmente se obtiene un ciclo de retraso por etapa. En su forma más simple, actúan como registros de desplazamiento, pero también es posible tener un apretón de manos entre las etapas. Los FIFO son buenos para retrasos más largos. Un FIFO almacenará los datos en una RAM interna durante la duración del retraso. Otra ventaja de un FIFO es que puede cruzar dominios de reloj.

    
respondido por el alex.forencich
0

Supongo que su FPGA se ejecuta en el mismo reloj, por lo que no tiene problemas de CDC. En ese caso, haga que sus secciones separadas produzcan los datos en buffers separados.

Una sección de procesamiento puede esperar a que ambos buffers tengan datos disponibles en ellos. Cuando los datos estén disponibles, puede abrir ambos buffers y hacer el procesamiento requerido en la sección de procesamiento.

Esta configuración también tiene la ventaja de que evita el bloqueo por parte de la sección de procesamiento debido al almacenamiento en búfer.

    
respondido por el user110971
0

Si desea retrasar los resultados un cierto número de ciclos de reloj, los cierres / chanclas son una mejor opción que las puertas. Puede canalizar los datos más rápidos a través del número de etapas que los datos más lentos necesitan para ponerse al día. Es esencialmente un registro de desplazamiento para cada bit del resultado que debe retrasarse.

    
respondido por el Cristobol Polychronopolis
0

Si necesita retrasar muchas líneas de datos durante muchos ciclos de reloj a retrasar la implementación usando bloques RAM puede requerir menos recursos que solo usar flipflops. Las únicas cosas que necesita aquí son básicamente dos contadores y un ram de doble puerto y, en lugar de usar los flip-flops de los ciclos de retardo de buswidth *, está utilizando los bits de RAM de los ciclos de retardo de buswidth más la sobrecarga de los contadores.     

respondido por el JohannesW

Lea otras preguntas en las etiquetas