18 / 63 · Concept
Comparateurs et spécification des limites
Distinguer comparaisons signées et non signées du même motif et vérifier les conditions limites.
Les leçons sont gratuites. Inscrivez-vous pour enregistrer vos progrès.
Le premier bit différent de poids fort décide de l'ordre
Comparez deux vecteurs non signésNon signé Interprétation d'un motif de bits comme entier non négatif. Sur n bits, la plage va de 0 à 2^n−1 et peut différer de l'interprétation signée du même motif. En savoir plus depuis le MSBMSB Bit de poids le plus fort. Son indice dépend du sens de déclaration du vecteur ; ce n'est pas nécessairement l'indice numérique le plus grand. En savoir plus. Au premier bit différent, celui à 1 désigne le plus grand nombre. En posant , la condition « supérieur à » sur quatre bits est :
est ici le résultat booléen de comparaison. Un rang bas n'intervient que si tous les rangs supérieurs sont égaux. L'égalité complète est le AND de tous les .
Une comparaison signée interprète d'abord le signe
4'b1111 et 4'b0001 valent 15 et 1 en non signé, mais -1 et 1 en signé. Si les signes diffèrent, le négatif est plus petit. logic [3:0] et logic signed [3:0] ont la même capacité de stockage ; leur interprétation dans les opérations diffère.
logic [3:0] a, b;
logic unsigned_lt, signed_lt;
assign unsigned_lt = a < b;
assign signed_lt = $signed(a) < $signed(b);Ce code suppose des opérandes de même largeur. Sinon, choisissez d'abord la largeur d'extension avant un simple cast.
Le contrat de signe peut inverser l'ordre des mêmes motifs. N'appliquez pas directement la règle non signée aux valeurs signées.
- 1111 vs 0001: Mêmes entrées sur 4 bits
- Non signé: 15 est supérieur à 1
- Signé: −1 est inférieur à 1
Fixer les limites par une phrase précise
Pour un tampon de seize éléments, count==16 signifie plein et count<16 autorise un ajout. Avec count sur quatre bits, 16 est impossible à représenter : la condition full échoue. Il faut examiner à la fois le comparateur et la plage de son opérande.
Autour du seuil , testez d'abord , en traitant séparément les valeurs hors plage. Rendez volontairement visible la différence entre < et <=. Une comparaison après rebouclage non signé ne peut pas récupérer une retenue déjà perdue.
Essayez vous-même
Combien de bits faut-il au compteur d'occupation d'un FIFO allant de 0 à 16 ? Une comparaison seule décide-t-elle si pop et push simultanés sont permis à plein ?
Lire l’explication
Il faut cinq bits pour dix-sept valeurs. Accepter un push à la place libérée par un pop simultané relève du contrat d'interface. count < 16 seul peut interdire l'échange quand le FIFO est plein ; pour l'autoriser, il faut intégrer l'acceptation effective du pop.