18 / 63 · Konzept
Komparatoren und Grenzwertspezifikationen
Unsigned- und signed-Vergleiche derselben Bits unterscheiden und Grenzbedingungen prüfen.
Lektionen sind frei lesbar. Schreibe dich ein, um deinen Fortschritt zu speichern.
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 lautet der 4-Bit-Größer-Vergleich:
links ist das boolesche Vergleichsergebnis. Eine niedrigere Stelle entscheidet nur, wenn alle höheren gleich sind. Gleichheit ist das AND aller .
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.
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.
- 1111 vs 0001: Dieselben 4-Bit-Eingänge
- Unsigned: 15 ist größer als 1
- 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 zuerst , 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.