Hardwarebeschreibungssprachen und Verifikation

a sollte wie oben geschrieben das vorzeichenbehaftete −1 sein, doch gt wurde 1. Was ist der Grund?

wire [7:0] a = 8'hFF;
wire gt = (a > 8'd1);
  1. AWeil nicht als signed deklariert wurde, wurde a als vorzeichenlose 255 verglichen
  2. BWeil in Verilog das Vergleichsergebnis stets 1 ist
  3. CWeil 8'hFF denselben Wert wie 0 hat
Antwort und Erläuterung anzeigen

Antwort: A. Weil nicht als signed deklariert wurde, wurde a als vorzeichenlose 255 verglichen

Verilog-Signale werden ohne signed als vorzeichenlos behandelt, 8'hFF ist daher 255, und 255 > 1 ist wahr. Werden sowohl a als auch b etwa als „wire signed [7:0]“ deklariert, wird im Zweierkomplement als −1 verglichen und das Ergebnis ist 0. Da zudem die Regel gilt, dass der gesamte Ausdruck vorzeichenlos berechnet wird, sobald auch nur ein vorzeichenloser Wert enthalten ist, ist es bei vorzeichenbehafteter Rechnung wichtig, alle Werte im Typ anzugleichen.

Dieses Thema üben Zur Themenseite

Weitere Fragen zu Hardwarebeschreibungssprachen und Verifikation

  1. Welche Kombination beschreibt die bei der Verilog-Simulation verwendete vierwertige Logik korrekt?
  2. In der Simulation war der Wert eines Registers ohne Reset anfangs X. Was ist im realen Chip zu erwarten?
  3. In der obigen Beschreibung wird in der Verilog-Simulation für y der Wert b gewählt, wenn sel X (unbestimmt) ist. Warum ist diese Eigenschaft bei der Verifikation ein Problem?
  4. Was gilt allgemein für die Beschreibung von Tri-State-Ausgängen mit Z (hochohmig) in HDL?
  5. Welche Aussage zur bei der HDL-Verifikation verwendeten Testbench ist korrekt?

Vergleiche zu diesem Thema