Derivando dos relojes paros independientemente de un reloj

0

Estoy tratando de hacer algunos cálculos complejos y segmentados en FPGA que involucran almacenar resultados parciales en el ram del bloque y recuperarlos más tarde. El problema es que la cantidad de resultados parciales que deben almacenarse es muy difícil de razonar y depende en gran medida de los detalles de la implementación. Lo que quiero lograr en cambio es dividir el circuito en un productor y un consumidor, y detener al productor cuando el sistema se queda sin bloque de RAM al detener su reloj, como se muestra en el dibujo de ascii a continuación.

input clock  |-------| -----------------------------------------------
-------------| ????? | individually controllable clocks in same domain
             |-------| -----------------------------------------------

¿Se puede lograr esto? Gracias

    
pregunta user3109672

1 respuesta

4

En un diseño FPGA, normalmente no quieres detener una señal de reloj.

Si lo hace, se llama "reloj cerrado", y tener uno en su diseño dificultará que su herramienta de síntesis optimice el diseño y logre el cierre de la sincronización.

En su lugar, simplemente anula la entrada EN (habilitar) en todos los flip-flops que no quieres responder al reloj en algún momento en particular.

En este caso, podría significar desestimar las entradas EN en todos los flip-flops en los bloques ascendentes cuando los bloques descendentes no estén listos para nuevos datos.

No conozco suficiente VHDL para escribirlo desde lo alto de mi cabeza, pero en Verilog, puedes inferir un flip-flop con una señal EN con algo como

always @(posedge clk or posedge reset) begin
    if reset
         out <= 0;
    else if enable begin
         out <= ...
    end
end
    
respondido por el The Photon

Lea otras preguntas en las etiquetas