ELE1300 Circuits logiques Les codes représentatifs Code Ascii Le

Transcription

ELE1300 Circuits logiques Les codes représentatifs Code Ascii Le
Les codes représentatifs
Qu’est-ce que le code?
„
Un code est une règle pour convertir de l'information
(mot, image...) sous une autre forme de représentation.
On utilise des codes au quotidien (alphabet, chiffres)
En quoi les codes représentatifs sont représentatifs?
ELE1300 Circuits logiques
„
Codes et contrôle des erreurs
On va appeler code représentatif un code qui ne renvoie
pas à une valeur numérale.
Un exemple commun (la représentation de l’alphabet)
Codes et contrôle des erreurs
Code Ascii
„
„
Le code Ascii (…)
Le Code ASCII (acronyme de Américan Standard Code
for Information Interchange) est l’un des plus anciens et
certainement code représentatif.
Dans sa première version, le code Ascii comportait 7
bits. Il fut ensuite élargi à 8 bits. Il est largement
supplanté aujourd’hui par des codes plus modernes
comme le code Unicode (16 bits)
Codes et contrôle des erreurs
2
3
L\H
0
1
2
3
4
5
6
7
0
NUL
DLE
SP
0
@
P
`
p
1
SOH
DC1
!
1
A
Q
a
q
2
STX
DC2
"
2
B
R
b
r
3
ETX
DC3
#
3
C
S
c
s
4
EOT
DC4
$
4
D
T
d
t
5
ENQ
NAK
%
5
E
U
e
u
6
ACK
SYN
&
6
F
V
f
v
7
BEL
ETB
'
7
G
W
g
w
8
BS
CAN
(
8
H
X
h
x
9
HT
EM
)
9
I
Y
i
y
A
LF
SUB
*
:
J
Z
j
z
B
VT
ESC
+
;
K
[
k
{
|
C
FF
FS
,
<
L
\
l
D
CR
GS
−
=
M
]
m
}
E
SO
RS
.
>
N
^
n
~
F
SI
US
/
?
O
_
o
DEL
Codes et contrôle des erreurs
4
Code BCD
„
„
Code BCD (…)
Le Code BCD (acronyme de Binary Coded Decimal)
est très répandu pour représenter les chiffres décimaux.
Une façon simple de procéder : représenter chaque
chiffre par le code binaire à 4 bits qui lui est associé
(code BCD 8421) :
0000
0001
0010
0011
0100
0
1
2
3
4
0101
0110
0111
1000
1001
„
„
125
105
536
749
5
6
7
8
9
Codes et contrôle des erreurs
v0(t)
Nombre observé :
0010
0000
0011
0100
0101
0101
0110
1001
:
:
:
:
000100100101
000100000101
010100110110
011101001001
6
Code de Gray (…)
„
(CAS IDÉAL)
v1(t)
0001
0001
0101
0111
Codes et contrôle des erreurs
Problématique :
v2(t)
:
:
:
:
5
Code de Gray
„
Comment représenter un nombre en code BCD8421?
On associe à chaque chiffre le code binaire
correspondant:
Problématique (…) :
(CAS RÉEL)
0
0
0
0
1
1
1
1
v2(t)
0
0
0
0
1
1
1
1
t
0
0
1
1
0
0
1
1
v1(t)
0
0
1
1
0
0
1
1
t
0
000
1
001
0
010
1
011
0
100
1
101
0
110
1
v0(t)
0
1
0
000
001
010
111
Nombre observé :
011
Codes et contrôle des erreurs
1
0
1
0
011
100
101
110
1
t
7
111
Codes et contrôle des erreurs
101
111
111
8
Code de Gray (…)
Code de Gray (…)
„
Le problème vient du fait que dans la représentation
usuelle des nombres, il arrive que deux bits ou plus
changent de valeur en même temps.
„
Frank Gray (Bell Labs) propose au début des années
1950 une solution : celle d’un code où les transitions
d’un nombre au suivant n’impliquent le changement
que d’un seul bit à la fois. Le code de Gray est ainsi né
„
Solution :
(CAS RÉEL)
v2(t)
v1(t)
v0(t)
Nombre observé :
Codes et contrôle des erreurs
Itération 1
0
1
00
01
11
10
0
1
1
1
1
t
0
1
0
1
1
1
0
0
t
0
1
1
000
001
011
0
0
1
1
010
110
111
101
0
t
100
Codes et contrôle des erreurs
10
„
Problème de base en communication :
Itération 2
résultat
précédent
des 0
0
Détection et correction d’erreurs
Il est possible de construire le code de Gray de façon
itérative :
debut
0
9
Code de Gray (…)
„
0
résultat
précédent
des 0
0 00
0 01
0 11
0 10
1 10
1 11
1 01
1 00
mirroir
des 1
v(t)
ÉMETTEUR
mirroir
v(t) + BRUIT
CANAL
RÉCEPTEUR
…
BRUIT
des 1
Codes et contrôle des erreurs
11
Codes et contrôle des erreurs
12
Détection et correction d’erreurs (…)
„
Problème de base en communication (…) :
1
0
1
0
0
1
0
1
Détection et correction d’erreurs (…)
„
0
Notion de distance de Hamming :
0
t
J’envoie Je reçois
0
1
00
10
000
001
Est-ce?
0? 1?
00? 10? 11?
000? 001? 010? 100?
t
1
0
1
0
1
1
ERREUR
0
0
0
0
ERREUR
Codes et contrôle des erreurs
13
Détection et correction d’erreurs (…)
„
La réponse serait peut-être évident si certains mots étaient
impossibles dans un code:
Je reçois
001
010
100
000
010
001
111
011
Codes et contrôle des erreurs
Remarque : C’est le fait qu’on ne trouve pas deux mots
du code qui soient différents par un seul bit qui permet
de détecter l’erreur sur un bit
2 bits diff.
000
Erreur?
OUI
OUI
OUI
NON
OUI
OUI
OUI
NON
2b
its
d
iff.
2
sd
bit
2 bits diff.
101
15
14
Détection et correction d’erreurs (…)
„
Code : {000,011,101,110}
Mots impossibles : {001,010,100,111}
J’envoie
000
000
000
000
011
011
011
011
Codes et contrôle des erreurs
011
iff.
2 bits diff.
2 bits diff.
Codes et contrôle des erreurs
110
16
Comment détecter, et corriger
Distance de Hamming
„
La distance de Hamming qui sépare deux mots est
le nombre de bits différents entre le premier mot et
le second
0000
0000
0101
0101
0101
1101
0111
0100
<>
<>
<>
<>
<>
<>
<>
<>
0010
0011
1010
0010
1110
1010
0110
0010
m
m
m
m
m
m
m
m
=
=
=
=
=
=
=
=
Théorie de la détection d’erreurs
C + D = M – 1 où C < D
1
2
4
3
?
?
?
?
C : Nombre de bits erronés pouvant être corrigé
D : Nombre de bits erronés pouvant être détectés
M : Distance minimale entre deux codes
C <D:
Il faut pouvoir détecter une erreur avant de la corriger
Codes et contrôle des erreurs
17
Codes et contrôle des erreurs
Codes connus
Codes connus (…)
1. Bit de parité (vu précédemment)
2. parité orthogonale
bn
bn −1 " b3 b2
b1
n bits d’information
INFORMATION :
p
bit de parité
Assure d’avoir M = 2
C + D = 2 – 1=1 où C < D => D=1 C=0
Il est possible de détecter une erreur, mais
impossible de la corriger
BITS ÉMIS :
Codes et contrôle des erreurs
19
110
111
1 1 0
0
1 1 1
1
1 0 0
1
0 0 0
0
1 0 1
0
1100
1111
18
100
000
1001
0000
Codes et contrôle des erreurs
1010
20
Codes connus (…)
Codes connus (…)
2. parité orthogonale (…)
2. parité orthogonale (…)
BITS ÉMIS :
1100
1111
1001
0000
1010
BITS REÇUS :
1100
1011
1001
0000
1010
Assure d’avoir M = 3
C + D = 3 – 1=0 où C < D =>
Vérification :
D=2 C=1 ou D=1 C=1
Il est possible de détecter une erreur et de la
corriger;
L’ERREUR EST
CORRIGIBLE
Il est possible de détecter deux erreurs, mais
1 1 0
0
1 0 1
1
1 0 0
1
0 0 0
0
1 0 1
0
impossible de les corriger
PARITÉ NON VÉRIFIÉE
Codes et contrôle des erreurs
21
Codes et contrôle des erreurs
Codes connus (…)
Codes connus (…)
3. Code de Hamming (…)
3. Code de Hamming (…)
Information (4 bits) :
b4
b3 b2
b1
POSITION
Bits de parité (3 bits) :
p3
p2
p1
7
Disposition des bits après le codage (7 bits) :
b4
6
5
b3 b2
4
PARITÉ NON VÉRIFIÉE
3
p3 b1
2
1
p2
p1
22
Assure d’avoir M = 3
C + D = 3 – 1=0 où C < D =>
D=2 C=1 ou D=1 C=1
• Le but du code de Hamming est que la vérification des bits de parité permettent
d’identifier la position d’une erreur de transmission dans le cas d’une seule et unique
erreur.
• Les bits de parité p3, p2 et p1 sont le résultat d’un calcul de parité avec les autres bits :
le bit de parité p1 est associé aux bits d’information b1 , b2 et b4
Il est possible de détecter deux erreurs, mais
le bit de parité p2 est associé aux bits d’information b1 , b3 et b4
le bit de parité p3 est associé aux bits d’information b2 , b3 et b4
Codes et contrôle des erreurs
Il est possible de détecter une erreur et de la
corriger;
impossible de les corriger
23
Codes et contrôle des erreurs
24
Codes connus (…)
Codes connus (…)
3. Code de Hamming (…)
3. Code de Hamming (…)
7
Mot de code reçu (7 bits) :
6
'
4
b
5
'
3
4
'
2
b
b
3
'
3
2
'
1
p
b
POSITION
1
'
2
'
1
p
p
Exemple :
INFORMATION À TRANSMETTRE :
0110
BITS ÉMIS :
0110011
(Hypothèse : aucune ou une seule erreur)
7
BITS REÇUS :
Vérification :
⎧0 , si la parité de b4' b3' b2' p3' est vérifiée
c3 = ⎨
⎧0 , si la parité de b4' b3' b1' p2' est vérifiée
⎩1 , autrement
c2 = ⎨
⎩1 , autrement
⎧0 , si la parité de b4' b2' b1' p1' est vérifiée
c1 = ⎨
⎩1 , autrement
⎧ position de l'erreur ( 2 ) , s'il y a une erreur
c3c2 c1 = ⎨
000
, s'il n'y a aucune erreur
⎩
On peut démontrer que :
Codes et contrôle des erreurs
25
Encoder le nombre : 1001001111011001
0
1
1
1
0
0
1
0
0
0
1
1
1
1
0
1
1
1
0
0
1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
0
0
0
0
1
0
0
0
1
0
0
0
0
1
1
0
0
1
0
0
0
0
1
0
1
0
0
1
1
0
0
0
1
1
1
0
1
0
0
0
0
1
0
0
1
0
1
0
1
0
0
1
0
1
1
0
1
1
0
0
0
1
1
0
1
0
1
1
1
0
0
1
1
1
1
1
0
0
0
0
1
0
0
0
1
1
0
0
1
0
1
0
0
1
1
1
0
1
0
0
1
0
1
0
1
27
POSITION
c3 = 1, c2 = 0, c1 = 1
c3 c2 c1 = 101
Dans l’hypothèse où il n’y a qu’une seule erreur,
elle est à la position 101(2) = 5 dans le bloc binaire
reçu
Codes et contrôle des erreurs
3. Code de Hamming [+ que 4 bits] (…)
Codes et contrôle des erreurs
CONCLUSION :
1
BLOC CORRIGÉ :
Codes connus (…)
„
VÉRIFICATION :
6 5 4 3 2
0100011
0110011
26