Page Personnelle de Vincent Kerhoas
Vincent Kerhoas
Enseignant du Supérieur
Professeur Agrégé
Page Personnelle de Vincent Kerhoas

Codage des Nombres : Exercices

Back                  << Index >>

Codage des Nombres Entiers

Q1. Donner l’intervalle de codage pour des nombres entiers non signés codés sur 8 bits

Q2. Donner l’intervalle de codage pour des nombres entiers signés codés sur 8 bits

Q3. Compléter le tableau suivant ( format des données : 8 bits ) :


Codage des nombres réels en virgule fixe

On souhaite asservir une machine à courant continu. Ce moteur est alimenté au travers d’un hacheur en pont que l’on commandera par un signal à rapport cyclique variable. Puisqu’il s’agit de contrôler la vitesse, on couplera au moteur une génératrice tachymétrique fournissant une tension ‘continue’ image de la vitesse. La consigne de vitesse proviendra d’un automate maître via un bus de terrain.

moore

D’un point de vue automatique, la modélisation est tout à fait classique :

moore

Loi de Commande en automatique numérique :

\( u_k = u_{k-1}+ 0.95625.y_{k-1} - 1.29375.y_k +0.3375.y_{k}^{c} \)

Q1. Quel type de représentation en virgule fixe faut-il envisager pour coder les coefficients 0.95625, -1.29375 et 0.3375, sachant que l’on dispose d’un microcontrôleur 8 bits ?

Q2. Coder alors ces coefficients en base 2, puis en base 16


Codage des nombres réels en virgule flottante

Q1. Soient les deux nombres signés X = + 75.5 et Y = -75.5. Déterminer leur codage IEEE P754 sur 32 bits (virgule flottante normalisée en simple précision).


Opérations Binaires et bits d’état

Q1. Réaliser les opérations binaires suivantes, et pour chaque résultat indiquer la valeur des bits d’état NZVC.


Capteur de température

PROJET SOURCE


CONVERSION_TEMP


Le capteur de température DS75 de Dallas Semiconductor fournit une information binaire sur 12 bits en complément à 2 représentant la température en degrés Celsius.
La plage de températures valides du capteur est − 55° C ≤ T ° C ≤ 125° C.
Le capteur utilise un codage en virgule fixe avec un format [8,4].

Q1. Indiquer la précision de la représentation binaire des températures obtenues à partir du capteur.

On souhaite déterminer pour chaque valeur du tableau ci-dessus la température en degré Farenheit (°F). La relation liant les deux systèmes d’unité est:

\( T^{°F} = 1.8.T^{°C}+32 \)

Le code suivant (fichier ex_float.c) permet de réaliser et d’afficher les tableaux de températures dans les deux unités.

ex_float.c

Les températures de départ fournies par le capteur sont stockées dans le tableau int tc[]. Chaque valeur issue du capteur est stockée dans un entier signé 32 bit (type int du langage C), ce qui étend alors le format de [8,4] à [28,4].

Q2. Déterminer la représentation compactée en hexadécimal des données issues du capteur et ajouter les valeurs au tableau tc.

Calcul en Virgule Flottante

Le calcul de la température en degré Farenheit est ici réalisé en utilisant le calcul en virgule flottante (tableau tf[] de type float). Il est nécessaire de convertir les valeurs de tc[] de virgule fixe à virgule flottante.

Q3. Compléter la macro TOFLT

#define TOFLT (xi,q) ( /* à compléter */ )

qui permet de convertir le nombre entier xi contenant un nombre codé en virgule fixe avec q bits de partie fractionnaire vers un nombre en virgule flottante de type float (IEEE simple précision – 32 bits).

Calcul en Virgule Fixe

Nombre de microprocesseurs utilisés dans les systèmes embarqués ne possèdent pas d’unité de calcul en flottant (Floating Point Unit – FPU).
Les opérations de base sont alors émulées par logiciel, ce qui est coûteux en temps d’exécution du programme.
Il peut être alors judicieux de réaliser les calculs en virgule fixe, qui ne font appel qu’à des opérations sur les entiers (implémentées sur tous les microprocesseurs de manière matérielle). On introduit deux constantes k1 et k0 qui sont les représentations respectives de 1.8 et 32.0 en virgule fixe.

Q4. Indiquer le codage k1 au format [28,4] de la constante 1.8.

Q5. Déterminer le format de la variable tmp.

Q6. En déduire le codage k0 de la constante 32.0.

Q7. Déterminer le format de codage du résultat.

Q8. Compléter le code du fichier ex_fixed1.c et comparer les résultats par rapport à l’exécution en virgule flottante

ex_fixed1.c

Q9. Réaliser (dans ex_fixed2.c) l’adaptation de format nécessaire sur les constantes afin que, dans le pire des cas, l’erreur de représentation du résultat en °F soit inférieure à 0.1°F, puis pour qu’elle soit minimale.


Back                  << Index >>