2017-07-31 5 views
0

J'ai un code combinatoire que j'ai, Dans ce code je voudrais éteindre un signal après 1 cycle d'horloge, c'est-à-dire d'abord il est 1, et après un cycle d'horloge il devrait être 0. Y at-il un moyen que je peux le faire et si possible, il devrait être capable de synthétiser sur un FPGA. Le code est le suivant:Comment donner un retard de 1 cycle d'horloge dans un bloc combinatoire verilog

[email protected](ao or bo or co or dod or eo or fo or go or ho) 
    begin 
    temp_out = {ho,go,fo,eo,dod,co,bo,ao}; 
    out_flag = 1; 
    //after one clock cycle it should go to 0 ; 
    //help is required over here 
    out_flag = 0; 
    end 

Répondre

1

Vous ne pouvez pas le faire d'une manière synthétisable pur combinatoires. Vous avez besoin d'un flop (ce qui est synthétisable) et une remise à zéro pour régler le signal à une valeur de savoir, disons à 0. Ainsi, vous pouvez retarder 1 cycle d'horloge après la réinitialisation comme suit:

always @(posedge clk) begin 
    if (reset) 
     out_flag <= 0; 
    else 
     out_flag <= 1; 
end 

vous avez besoin de sur le calendrier exact et utilisez le bon nombre de flops pour votre situation particulière. Vous souhaiterez peut-être effectuer une réinitialisation asynchrone ou synchrone, comme dans l'exemple ci-dessus.