Professional Documents
Culture Documents
Hamming Code
Hamming Code
Hamming Code
Kode ini dikenalkan oleh Richard Hamming (1950)
sebagai kode tunggal pengoreksi kesalahan (single
error-correcting code).
Bit parity ditambahkan ke dalam bit-bit informasi,
jika suatu saat ada perubahan bit-bit data ketika proses
transmisi, maka bit-bit informasi asli masih bisa
diselamatkan.
Kode ini dikenal pula sebagai parity code
Bit parity tambahan diberikan pada bit-bit informasi
sebelum ditransmisikan, sedangkan pada sisi penerima
dilakukan pengecekan dengan algoritma yang sama
dengan pembangkitan bit parity tambahan
2
Hamming Code
Cara pengisian bit tambahan pada bit-bit informasi x
5
Hamming Code
Nilai bit pengisi / cek: (untuk informasi 4-bit)
6
Hamming Code
Untuk informasi n-bit, nilai bit
pengisi / cek adalah:
Bit-bit masing-masing
posisi yang
disertakan
di Ex-OR kan
7
Hamming Code
Contoh: Bagaimana bentuk data yang
ditransmisikan dengan kode Hamming,
jika diketahui bit data = 1010 ?
Jawab:
a1 = a3 + a5 + a7 a1 = 1 + 0 + 0 = 1
a2 = a3 + a6 + a7 a2 = 1 + 1 + 0 = 0
a4 = a5 + a6 + a7 a3 = 0 + 1 + 0 = 1
Sehingga bentuk data yang ditransmisikan
menjadi: 1011010
8
Hamming Code
Cara penge-cekan disisi penerima: (untuk
informasi 4-bit)
10
Hamming Code
3. Masing-masing bit pengecek menghitung bit setiap
posisi dengan cara menge-cek dan melewati, sebagai
berikut:
Posisi 1 : cek 1 bit, lewat 1 bit, cek 1 bit, lewat 1 bit dsb
(1,3,5,7,9,11,13,15…)
Posisi 2 : cek 2 bit, lewat 2 bit, cek 2 bit, lewat 2 bit dsb
(2,3,6,7,10,11,14,15,…)
Posisi 4 : cek 4 bit, lewat 4 bit, cek 4 bit, lewat 4 bit dsb
(4,5,6,7,12,13,14,15,20,21,22,23, …)
Posisi 8 :cek 8 bit, lewat 8 bit, cek 8 bit, lewat 8 bit dsb
(8-15,24-31,40-47,...)
Posisi 32 : cek 32 bit, lewat 32 bit, cek 32 bit, lewat 32
bit, dsb (32-63,96-127,160-191,...)
11
Hamming Code
Bernilai bit parity = 1 jika total bit “1” diposisi
yang dicek adalah ganjil (Odd) dan berinilai 0
jika total bit “1” adalah genap (Even)
12
Hamming Code
Contoh:
Sebuah urutan data diterima: 0010011
Dengan:
e1 = 0
e2 = 1
e4 = 0
Tentukan bit diposisi mana yang salah?
Berapa nilai data asli (sebelum ditambah bit
parity)?
13
Hamming Code
Jawab:
e1 = a1 + a3 + a5 + a7 = 0 + 1 + 0 + 1 = 0 benar
e2 = a2 + a3 + a6 + a7 = 0 + 1 + 1 + 1 = 1 salah
e3 = a4 + a5 + a6 + a7 = 0 + 0 + 1 + 1 = 0 benar
1 → 001
2 → 010
3 → 011
4 → 100
5 → 101
6 → 110
7 → 111
15
Parity Check
[ ]
• Dalam matriks parity check berikut, urutan kolom dari kiri
ke kanan dibentuk dengan urutan: 7, 6, 5, 3, 1, 2 dan 4,
H = P
dengan pembacaan bit dari bawah ke atas.
kx ( n − k )
T
M Ik
• Matriks Parity check
16
Matriks Generator
[ ]
• Generator dibangkitkan dari:
G = Ik M Pkx ( n − k )
T
17
ENCODING
• Pembentukan Codeword:
c = d.G
⎡1000 | 111 ⎤
• untuk kode (7,4):
⎢0100 | 011⎥
c = (d1 , d 2 , d 3 , d 4 ) ⎢ ⎥
⎢0010 | 101 ⎥
⎢ ⎥
⎣0001 | 110 ⎦
18
CODEWORD
• Jika d = 1101, maka:
⎡1000111 ⎤
⎢0100011 ⎥
C = (1101) ⎢ ⎥ = (1101010)
⎢0010101 ⎥
⎢ ⎥
⎣0001110 ⎦
7 bit codeword : (d1, d2, d3, d4, p1, p2, p3).
Terdiri dari : 4 bit data (d1, d2, d3, d4) dan
3 bit parity (p1, p2, p3).
19
DECODING
• Untuk men-dekode codeword yang telah diterima (r),
harus diketahui syndrome. Dimana syndrome didapat
⎡1 1 1 ⎤
dari :
⎢0 1 1 ⎥
⎢ ⎥
s = r . HT
⎢1 0 1 ⎥
⎢ ⎥
s = ( r1 , r2 , r3 , r4 , r5 , r6 , r7 ) ⎢ 1 1 0 ⎥
⎢1 0 0 ⎥
⎢ ⎥
⎢0 1 0 ⎥
⎢0 0 1 ⎥
⎣ ⎦
s = (r1 + r3 + r4 + r5 , r1 + r2 + r4 + r6 , r1 + r2 + r3 + r7 )
20
DECODING
• Jika semua elemen s adalah 0, maka
codeword telah diterima dengan benar.
• Tapi jika s berisi bit 1, maka bit error dapat
ditentukan dengan menganalisis parity
check yang mana yang salah,
21
Kode Hamming (15,11)
• Matriks Parity check H
22
Kode Hamming (15,11)
• Matriks generator (15,11)
⎡1 0⎤
⎢0 0⎥
0 0 0 0 0 0 0 0 0 0 1 1 0
⎢ ⎥
1 0 0 0 0 0 0 0 0 0 1 0 1
⎢0 0 1 0 0 0 0 0 0 0 0 0 1 1 0⎥
⎢0 0⎥
⎢0 1⎥
0 0 1 0 0 0 0 0 0 0 1 1 1
G = ⎢0 1⎥
0 0 0 1 0 0 0 0 0 0 1 0 0
⎢ ⎥
0 0 0 0 1 0 0 0 0 0 0 1 0
⎢0 1⎥
⎢0 1⎥
0 0 0 0 0 1 0 0 0 0 1 1 0
⎢0 1⎥
0 0 0 0 0 0 1 0 0 0 0 0 1
⎢ ⎥
0 0 0 0 0 0 0 1 0 0 1 0 1
⎢0 1⎥
⎢⎣ 0 1 ⎥⎦
0 0 0 0 0 0 0 0 1 0 0 1 1
0 0 0 0 0 0 0 0 0 1 1 1 1
23
Check bit
• Persamaan Check bit dapat diperoleh dengan
mengalikan bit data dengan matriks parity check
Pkx(n-k), yaitu sebagai berikut:
c = d . Pkx(n-k)
26
Shift Register
• Implementasi Shift Register dari suatu kode Generator
menjadi kode Hamming (15,11)
27
Syndrome
• Syndrome
s = r . HT
s = (c + e) HT
• Karena :
c.HT = 0
S = e.HT
28
Tabel syndrome dan coset leader
Syndrome Coset Leader
(correctable error pattern):
s1 s2 s3 s4 r1 r2 r3………………….r15
0 0 0 0 tidak ada error
1 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0
0 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0
1 1 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0
1 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0
0 1 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0
1 1 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0
0 0 1 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0
1 0 1 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0
0 1 1 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0
1 1 1 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0
1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0
0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0
0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0
0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 29