2017-02-18 4 views
0

Ich versuche einen synthetisierbaren Verilog-Code zu erstellen, der 'x' oder ungültige Eingaben erkennen kann. Grundsätzlich ist x nicht synthesefähig, daher vermeide ich x. Ich versuche, Eingänge bei jedem Taktzyklus zu lesen, und wenn es 0 oder 1 ist, dann lade ich in ein neues Register. Hier ist der Code; SoSynthesis-fähiges 'X' oder ungültiges Eingangsdetektionssystem in Verilog

[email protected](posedge clk) 
begin 
    if(in & gate_check == 0 | in & gate_check == 1) 
    begin 
     load_input_8 <= {in,load_input_8[8:1]}; 
    end 
end 

, ich lade neue Eingänge in load_input_8 Register, nachdem der Eingangsdaten Prüfung der Gültigkeit. Übrigens hat gate_check den Wert 1, d.h. `gate_check = 1.

Aber dies speichert nur den Wert 1 in load_input_8. No 0 wird in load_input_8 gespeichert. Und die Schaltung hat auch seltsames Verhalten beim Laden von Eingängen. Hier ist das Bild der Simulation; enter image description here Danke.

+0

Nur 'in = 1' kann Ihre if-Bedingung erfüllen. –

+0

@Laleh, Danke. Das Problem ist gelöst. –

Antwort

0

Dank @Laleh für die Hilfe in diesem Problem. Es gab Ausgaben von (). Hier ist der richtige Code;

[email protected](posedge clk) 
begin 
    if((in & gate_check) == 0 | (in & gate_check) == 1) 
    begin 
     load_input_8 <= {in,load_input_8[8:1]}; 
    end 
end