2012-10-30 2 views
0

Je suis en train de mettre en œuvre le code suivant:Verilog conflit avec signal suivant

reg [7:0] next_busy; 

always @* begin 
    next_busy = busy; //default assignment 

    if (condition determined by module input) begin 
     next_busy[0]= 1'b1; 
    end 
end //always @* 

always @(posedge clock) begin 
    if (reset) begin 
     busy <= 8'b0; 
    end else begin 
     busy <= next_busy; 
    end 
end //always @(posedge clock) 

Cela fonctionne bien en simulation, mais dans la synthèse il semble y avoir une sorte de discorde pour le signal next_busy. C'est-à-dire, si occupé n'est pas 1 (disons que le cycle précédent avait une réinitialisation), alors il sort un x (si les conditions d'entrée sont remplies). Cependant, si occupé était déjà 1 (et que les conditions d'entrée sont remplies), next_busy est assigné 1 correctement. Je me demande donc s'il y a une bonne façon de faire ce que j'essaie de faire pour que cela fonctionne également en synthèse?

+0

Votre code semble bien pour moi. Où voyez-vous la contention, dans la simulation au niveau de la porte? Affectez-vous à 'next_busy' n'importe où ailleurs dans ce module? Y at-il des messages d'avertissement dans le journal de synthèse qui mentionnent ce signal. – Marty

Répondre

0

Vous incluez généralement la réinitialisation dans une liste de sensibilité pour les bascules. Pour les réinitialisations actives faibles always @(posedge clock or negedge reset)

Dans l'exemple fourni, busy n'est pas défini, en supposant qu'il soit reg [7:0] busy;.

je mettre en œuvre le long des lignes de:

reg [7:0] busy; 

always @(posedge clock or negedge reset) begin 
    if (reset == 1'b0) begin 
     busy <= 8'b0; 
    end 
    else if (condition determined by module input) begin 
     busy[0] <= 1'b1; // busy <= 8'b1; 
    end 
    else begin 
     busy <= next_busy; 
    end 
end //always @(posedge clock) 
+0

L'opérateur peut souhaiter des réinitialisations synchrones? – Marty

+0

Ils pourraient, mais je voudrais toujours inclure une réinitialisation pour l'initialisation. – Morgan