Welche Auswirkung hat in Verilog der not (!) -Operator auf hohe Impedanz und egal Bedingungen?

Ich schreibe etwas Verilog und simuliere es mit Modelsim. Ich habe einen Block, der so aussieht:

        if(wr_req & !cam_busy & !lookup_latched & !cam_match_found & !cam_match_found_d1) begin
           cam_we           <= 1;
           cam_wr_addr      <= wr_addr;
           cam_din          <= wr_cmp_data ;
           cam_data_mask    <= wr_cmp_dmask;
           wr_ack           <= 1;
           lut_wr_data      <= wr_data;
        end

lookup_latchedist hochohmig. cam_match_foundund cam_match_found_d1sind beide in einem egal Zustand.

Es scheint mir, als sollte die Aussage diese Signale einfach ignorieren.

Das einzige Problem, das mir aufgefallen ist, war, dass die Signale bitweise statt logisch geandet wurden (ich habe den Code nicht geschrieben). Wird sich das auf das Ergebnis auswirken? (Ich denke es wird)

Danke!

Antworten (1)

Dein Code wird nicht funktionieren.

In Verilog verwandelt sich ein „z“ am Eingang eines Gatters in ein „x“ am Ausgang des Gatters. Ein 'x' am Eingang des Gatters wird auch in ein 'x' am Ausgang des Gatters übersetzt.

Daher reduziert sich Ihr Code aufif(wr_req & !cam_busy & X & X & X)

Der Wert von (something & X)kann entweder 0 oder X sein, und in beiden Fällen wird die if-Anweisung als falsch ausgewertet ( if(X)ist dasselbe wie if(0)).

Das einzige Problem, das mir aufgefallen ist, war, dass die Signale bitweise statt logisch geandet wurden (ich habe den Code nicht geschrieben). Wird sich das auf das Ergebnis auswirken? (Ich denke es wird)

Wenn das alles 1-Bit-Signale sind, dann ist logisches UND (&&) das gleiche Ergebnis wie bitweises UND (&).

Ah, Danke! Ich habe es gerade herausgefunden. Ich habe kein Signal erzwungen, dass ich am Eingang hätte sein sollen. Ich war mir immer noch unsicher über das Verhalten
Auch 1-Bit-Signale sind sinnvoll für das logische vs. bitweise und, aber wie wäre beispielsweise das Verhalten von 8'hXF && 8'hFF? Ich gehe davon aus, dass dies als wahr ausgewertet wird, da der erste Operand Nicht-Null-Bits enthält. Ist das richtig?
Ich glaube, dass 8'hXF zu Zwecken der logischen Operation auf reduziert wird true, aber es ist wahrscheinlich keine gute Idee, Multi-Bit-Werte in einer logischen Operation zu verwenden (wird wahrscheinlich Flusen- oder Synthesewarnungen geben).