You are on page 1of 29

1

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

Untuk bit data 4-bit, bit-bit data terletak pada posisi 3, 5,


6 dan 7
Bit pengisi terletak pada posisi 1, 2, 4 (2K) K = jumlah
bit data -1
3
Hamming Code
Jumlah bit informasi =

(n jumlah bit cek)

Σ Bit pengisi / cek Σ bit informasi


2 1
3 4
4 11
5 26
4
Tabel hamming untuk informasi 4 bit

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)

Jika nilai e = 0, maka seluruh data yang


diterima adalah benar
9
Hamming Code
Untuk informasi n-bit, cara penge-
cek an adalah:

1. Tanda semua posisi bit yang merupakan pangkat dua


sebagai bit parity (posisi 1, 2, 4, 8, 16, 32, 64, ...)

2. Posisi yang lain digunakan sebagai bit data yang akan


dikodekan (posisi 3, 5, 6, 7, 9, 10, 11, 12, 13, ...)

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

a1 = a3 + a5 + a7 = 1 + 0 + 1 = 0 sama dengan yang dikirim


a2 = a3 + a6 + a7 = 1 + 1 + 1 = 1 tidak sama dengan yang dikirim
a3 = a5 + a6 + a7 = 0 + 1 + 1 = 0 sama dengan yang dikirim

Berarti bit diposisi 2 yang salah, seharusnya yang


diterima adalah: 0110011
Nilai data asli= a3 a5 a6 a7 = 1011
14
Matriks Generator
Kode Hamming
• Kode ini dapat dibentuk dengan sebuah algoritma yang
sederhana matriks parity check,
• Contoh kode (7, 4), dibentuk dengan cara berikut:
• Biner 1 sampai 7:

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)

• Dimana matriks P diperoleh dari matriks


generator tanpa menyertakan matrik I.

bit (γ1, γ2, γ3, ...γn), dimana dalam kode


• d terdiri dari bit-bit datadan c terdiri dari check
sistematik adalah bit n – k yang terakhir dari
codeword, ada empat bit.
• check bit di buat dari product (modulo-2) antara
message dan matriks P 24
Check bit
⎡1 1 0 0⎤
⎢1 0 1 0⎥⎥

⎢0 1 1 0⎥
⎢ ⎥
⎢1 1 1 0⎥
⎢1 0 0 1⎥
⎢ ⎥
(γ 1 , γ 2 , γ 3 ) = (d1 , d 2 , d 3 , d 4 , d 5 , d 6 , d 7 , d 8 , d 9 , d10 , d11 ) * ⎢0 1 0 1⎥
⎢1 1 0 1⎥
⎢ ⎥
⎢0 0 1 1⎥
⎢1 0 1 1⎥
⎢ ⎥
⎢0 1 1 1⎥
⎢ ⎥
⎣1 1 1 1⎦
25
Check bit
• Sehingga check bit untuk codeword
(15,11)
γ 1 = d1 ⊕ d 2 ⊕ d 4 ⊕ d 5 ⊕ d 7 ⊕ d9 ⊕ d11
γ 2 = d1 ⊕ d3 ⊕ d 4 ⊕ d 6 ⊕ d 7 ⊕ d10 ⊕ d11
γ 3 = d 2 ⊕ d3 ⊕ d 4 ⊕ d8 ⊕ d 9 ⊕ d10 ⊕ d11
γ 4 = d5 ⊕ d 6 ⊕ d 7 ⊕ d8 ⊕ d9 ⊕ d10 ⊕ d11

C = γ1+ γ2+ γ3+ γ4


• Codeword:

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

You might also like