Flip flop con load / set, reset, clk, y input

3

No estoy buscando una descripción del idioma del hardware del flip flop, sino el nivel de la puerta lógica que se debe implementar.

En verilog, el equivalente que estoy buscando es

always@(posedge clk or negedge reset)
begin
    if(~reset)
      Q <= 1'b0;
    else if(~load)
      Q <= D;
    end

He consultado: enlace y enlace

el problema con la implementación anterior es que después de establecer un valor en Q (D = 0, Q = 0, carga = 0) con carga (establecido en la imagen) = 0, luego, cuando configuro carga alta carga = 1 en el siguiente ciclo de clk, obtengo (D = x, Q = 1, carga = 1). En palabras de orden, cambiar la carga de verdadero a falso cambiará el valor de Q, pero quiero que Q mantenga su valor anterior.

¿Qué es un flip flop que mantendría su valor en Q después de que se haya configurado y habilitado se establezca alto?

    
pregunta kidax

1 respuesta

2

Ha estado observando componentes incorrectos: el flip-flop tipo D se usa para muestrear la entrada D en cada ciclo de reloj, pero desea usar la señal load para habilitar el muestreo. Tenga en cuenta que la señal set que quería usar como load tiene una funcionalidad diferente: hace que la salida sea alta (independientemente del valor de D ).

Lo que estás buscando es D Flip-Flop con Habilitar. Hay dos enfoques simples para agregar esta funcionalidad a un D-FF regular.

Feedback:

Agregando un MUX que es controlado por la señal Enable . En cada flanco de reloj, el flop muestreará el nuevo valor o el valor antiguo (que es equivalente a mantener un valor antiguo).

Controldereloj:

EnlugardeMUEJARlaentradaalflip-flop,simplementepuededesactivarelrelojcuandonoquieramuestrearunnuevovalor.Esteenfoqueseempleaampliamenteparareducirelconsumodeenergía(sinreloj->sinactividad->sinconsumodeenergíaactiva).

Comoloseñaló@Supercatenloscomentarios,lasincronizacióndelrelojeslatécnicamássofisticadaquerequiereunpocomásdeexperienciaporquepresentaretrasosadicionalesenlatrayectoriadelreloj.

    
respondido por el Vasiliy

Lea otras preguntas en las etiquetas