2 / 63 · Concept
Systèmes de numération et représentation à largeur fixe
Au-delà des conversions de base, calculer les plages représentables, la largeur nécessaire et les erreurs de troncature.
Les leçons sont gratuites. Inscrivez-vous pour enregistrer vos progrès.
Le point de départ de ce cours
L'algèbre du lycée et une première expérience de programmation sont recommandées. Nous revoyons le binaire et l'algèbre de BooleAlgèbre de Boole Algèbre des valeurs 0 et 1 et des opérations AND, OR, NOT. Le signe plus y désigne généralement OR, dont les règles diffèrent de l'addition entière. En savoir plus, puis progressons rapidement au niveau d'un premier cours universitaire. Définissez les conditions d'entrée, la largeur des mots et l'instant d'observation, puis vérifiez-les par des exemples plutôt que de mémoriser seulement des formules.
Distinguer le motif de bits de sa valeur
Un circuit stocke une suite finie de bits. Son interprétation comme entier, valeur signée ou nombre à virgule fixeVirgule fixe Représentation où une position de virgule prédéfinie applique une échelle fixe à un entier binaire. Largeur, signe et nombre de bits fractionnaires doivent être définis ensemble. En savoir plus relève du contrat de conception. Les opérations entières et les puissances sont supposées connues ; elles servent ici à calculer les plages nécessaires en RTL.
L'interprétation non signéeNon 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. d'un mot de bits est :
10110110 vaut . En groupant par quatre bits, on obtient B6 : 8'hB6 et 8'b10110110 désignent le même motif. Un chiffre hexadécimal représente toujours quatre bits, facilitant la lecture des adresses, masques et chronogrammes.
Mêmes bits, autre interprétation
Basculez b7 ci-dessous. En non signé, sa contribution vaut 128 ; en complément à deuxComplément à deux Représentation d'un entier signé par un motif de largeur fixe. Sur n bits, la plage va de −2^(n−1) à 2^(n−1)−1. En savoir plus, le bit de poids fort a un poids de −128. Construisez 0x7F et 0x80 pour comparer les limites des deux interprétations.
10110110 → unsigned 182 · signed -74 · hex 0xB6
Modifier les bits et les interpréter comme signés sont deux opérations différentes. Même avec une largeur de huit bits identique, l'information de signe transmise à l'opérateur peut changer le résultat d'une comparaison.
D'abord la plage, ensuite la largeur
Le nombre minimal de bits permettant de distinguer états est :
Compter de 0 à 999 représente 1000 valeurs, donc demande 10 bits. De 0 à 1024, il y a 1025 valeurs : il faut 11 bits. Confondre valeur maximale et nombre d'états fait manquer un bit précisément à la frontière. Si le RTL est paramétré jusqu'à , imposez une largeur minimale de 1 pour éviter un vecteur de largeur nulle.
Que se passe-t-il dans un signal trop étroit ?
Stocker un résultat non signé sur bits en supprimant les bits de poids fort réalise une opération modulo.
Stocker le résultat 300, représenté sur 9 bits, dans un mot de huit bits laisse 44. Ce n'est ni un arrondi ni une saturation. Une opération saturante exige un circuit qui détecte le dépassement et sélectionne la valeur maximale.
logic [7:0] a, b, low;
logic [8:0] full_sum;
assign full_sum = {1'b0, a} + {1'b0, b};
assign low = full_sum[7:0];L'extension préalable des deux opérandes rend explicite la conservation de la retenue. La notation de base ne détermine pas à elle seule le signe ou la largeur du résultat. Un chronogramme exige de connaître largeur, signe et base.
Essayez vous-même
Combien de bits faut-il pour compter de 0 à 4095, puis de 0 à 4096 ? Quelle valeur reste après le stockage de 511 dans un mot non signé de huit bits ?
Lire l’explication
La première plage contient valeurs et demande 12 bits ; la seconde en contient 4097 et demande 13 bits. Comme , la valeur stockée est 8'hFF. Cela ne prouve pas l'absence de dépassement.