Hardwarebeschrijvingstalen en verificatie
Als a zoals hierboven is geschreven als een ondertekende -1, werd gt 1. Welke reden is juist?
wire [7:0] a = 8'hFF;
wire gt = (a > 8'd1);
- AOmdat het niet als signed is gedeclareerd, is a vergeleken als de niet-ondertekende 255
- BOmdat in Verilog het resultaat van een vergelijking altijd 1 is
- COmdat 8'hFF dezelfde waarde is als 0
Antwoord en toelichting tonen
Antwoord: A. Omdat het niet als signed is gedeclareerd, is a vergeleken als de niet-ondertekende 255
Signalen in Verilog worden als niet-ondertekend behandeld tenzij signed wordt toegevoegd, dus 8'hFF is 255 en 255 > 1 is waar. Als zowel a als b worden gedeclareerd als 'wire signed [7:0]', worden ze vergeleken als de tweecomplement -1 en is het resultaat 0. Er geldt ook de regel dat als één waarde in een uitdrukking niet-ondertekend is, het geheel als niet-ondertekend wordt berekend, dus bij ondertekende berekeningen is het belangrijk de types van alle waarden gelijk te maken.
Verder: nog 9 vragen over Hardwarebeschrijvingstalen en verificatie