5 Solutions
5.1 Transaction I2C sous GNU/Linux
1. Un bus synchrone partage une horloge commune entre les interlocuteurs.
2. Le DAC est sur 10 bits donc les valeurs admissibles en entr´ee sont comprises entre 0 et 1023. Toute
valeur en dehors de cette gamme sera tronqu´ee lors des masquages (&3ff).
3. buf contient les 10 bits d´efinissant la tension de sortie du DAC selon VDAC =VREF ×buf/1024.
Cependant l’octet de poids faible ´etant compl´et´e des bits S0 et S1, au lieu d’avoir 8 et 2 bits dans
les octets de poids faible et fort respectivement, on a 6 et 4 bits respectivement. Noter que buf[1]
contient l’octet de poids faible et buf[0] l’octet de poids fort. Si la valeur est 300=0x12C, alors
buf[0]=4 et buf[0]=0xB0.
4. 0x3f ne conserve que les 6 bits de poids faible. Or le d´ecallage `a droite de 6 places des 6 bits de
poids faible donne toujours 0, donc on a toujours buf[0]=0. Pour ce qui est de buf[1], on conserve
6 bits, qu’on d´ecalle de 2 places vers la gauche, puis masque avec les bits 8 `a 2, donc on ne conserve
finalement que les 6 bits de poids faible du mot value qui avait ´et´e pass´e en argument : la gamme
de tensions accessible est fortement r´eduite, puisque seuls les 6 bits de poids faible sur les 10 bits
disponibles sont exploit´es.
5.2 Code de parit´e
1. la transmission d’un mot de 7 bits ne n´ecessite plus 9 bits (START/7 bits de donn´ees/STOP) mais
10, donc le d´ebit est r´eduit de 10%.
2. ce bit additionnel ne permet de d´etecter qu’une unique inversion d’´etat (ou un nombre impair
d’inversions d’´etat sur un canal tr`es bruit´e), mais ne permet pas de savoir quel bit a ´et´e transmis
de fa¸con erron´ee. Un nombre pair d’erreurs ne sera pas d´etect´e.
3. XOR impl´emente le bit de parit´e : de fa¸con r´ecursive, une chaˆıne de N−1 portes XOR permet de
tester la parit´e de Nbits, en partant des deux bits de poids faible (si les deux bits sont identiques
la sortie est 0, et si les deux bits sont diff´erents la sortie est 1, donc parit´e paire). Pour la parit´e
impaire, on ajoute une porte inverseuse (NOT).
“La cl´e de contrˆole utilis´ee pour v´erifier de l’exactitude d’un identifiant est une
cl´e “1-2”. Le principe est le suivant : on multiplie les chiffres de rang impair
`a partir de la droite par 1, ceux de rang pair par 2 ; la somme des chiffres
obtenus doit ˆetre un multiple de 10.”
4. oui la somme est v´erifi´ee, si on prend soin de noter que la somme des chiffres signifie que lorsque
2×9 = 18 on somme 1 + 8.
5. une valeur erron´ee se traduira par une somme fausse (le modulo est 10, chaque chiffre est cod´e sur
une valeur entre 0 et 9, donc la somme est n´ecessairement fausse).
6. l’inversion de deux valeurs successives se traduit par une somme erron´ee puisque une valeur sur 2
est doubl´ee avant sommation...
7. ... cette m´ethode est donc plus robuste que le bit de parit´e vu auparavant qui n’est pas capable
de voir un nombre pair d’erreurs (qui est le cas d’une inversion de bits). Cette correction sim-
ple pr´eliminaire ´evite d’engager les proc´edure cryptographiques de validation du code banquaire
(n´ecessitant transaction des valeurs fournies par le client au site d’achat et activation des bases de
donn´ees banquaires) si le num´ero transmis est trivialement erron´e du fait d’une erreur de saisie
lors de la copie du num´ero de carte bleue lors d’un achat (`a tester sur le web ...).
5