Altifigence Academy

18 / 63 · Konzept

Komparatoren und Grenzwertspezifikationen

Unsigned- und signed-Vergleiche derselben Bits unterscheiden und Grenzbedingungen prüfen.

Die höchste unterschiedliche Stelle entscheidet

Vergleichen Sie zwei unsigned-VektorenUnsigned Interpretation einer Bitfolge als nichtnegative Ganzzahl. Der n-Bit-Bereich ist 0 bis 2^n−1 und kann sich von der signed-Interpretation derselben Bits unterscheiden. Mehr erfahren vom MSBMSB Bit mit dem höchsten Stellenwert. Sein Index hängt von der Deklarationsrichtung ab und ist nicht grundsätzlich der größte Index. Mehr erfahren aus. An der ersten unterschiedlichen Stelle ist der Vektor mit 1 größer. Mit ei=ai⊕bi‾e_i=\overline{a_i\oplus b_i} lautet der 4-Bit-Größer-Vergleich:

gt⁡(a,b)=a3b‾3+e3a2b‾2+e3e2a1b‾1+e3e2e1a0b‾0\operatorname{gt}(a,b)=a_3\overline b_3+e_3a_2\overline b_2+e_3e_2a_1\overline b_1+e_3e_2e_1a_0\overline b_0

gt⁡(a,b)\operatorname{gt}(a,b) links ist das boolesche Vergleichsergebnis. Eine niedrigere Stelle entscheidet nur, wenn alle höheren gleich sind. Gleichheit ist das AND aller eie_i.

Signed-Vergleich interpretiert zuerst das Vorzeichen

4'b1111 und 4'b0001 sind unsigned 15 und 1, signed aber −1 und 1. Bei unterschiedlichen Vorzeichen ist die negative Zahl kleiner. logic [3:0] und logic signed [3:0] unterscheiden sich in der Interpretation bei Operationen, nicht in der Speicherkapazität.

SystemVerilog
logic [3:0] a, b;
logic unsigned_lt, signed_lt;
assign unsigned_lt = a < b;
assign signed_lt = $signed(a) < $signed(b);

Der Code setzt gleich breite Operanden voraus. Bei unterschiedlichen Breiten ist vor einem einfachen Cast festzulegen, auf welche Breite erweitert wird.

Die Reihenfolge derselben Bitfolgen kann sich durch den Vorzeichenvertrag umkehren. Übertragen Sie die unsigned-Regel vom höchsten Bit nicht unverändert auf signed-Werte.

Vor dem Bitvergleich die Interpretation festlegen
  1. 1111 vs 0001: Dieselben 4-Bit-Eingänge
  2. Unsigned: 15 ist größer als 1
  3. Signed: −1 ist kleiner als 1

Grenzbedingungen in Worten festlegen

In einem Puffer mit 16 Plätzen bedeutet count==16 voll und count<16 freien Platz. Ein 4-Bit-count kann 16 nicht darstellen, sodass schon die Vollbedingung scheitert. Deshalb müssen Vergleichsfunktion und darstellbarer Bereich gemeinsam geprüft werden.

Prüfen Sie für eine Schwelle TT zuerst T−1,T,T+1T-1,T,T+1, und behandeln Sie nicht darstellbare Werte getrennt. Tests sollten den Unterschied zwischen < und <= bewusst sichtbar machen. Ein Vergleich nach unsigned-Wraparound kann den bereits verlorenen Übertrag nicht wiederherstellen.

Selbst ausprobieren

Wie breit muss ein FIFO-Belegungszähler für 0 bis 16 sein? Entscheidet der Vergleich allein, ob bei full gleichzeitig pop und push zulässig sind?

Erklärung lesen

17 Werte benötigen fünf Bit. Ob ein gleichzeitiges pop Platz für push schafft, legt die Schnittstellenpolitik fest. count < 16 allein kann einen Austausch bei full blockieren; soll er erlaubt sein, muss die tatsächliche Annahmebedingung von pop einbezogen werden.

Deine Auswahl gilt für diesen Browser. Du kannst sie jederzeit in der Fußzeile ändern.