Proses Generate Syndrome Implementasi Algoritma Berlekamp-Massey Implementasi algoritma Chien search Implementasi Algoritma Forney

4.1.4 Implementasi Decoder Reed Solomon

Setelah mengalami proses modulasi, program melakukan proses decoding data. Data yang telah rusak akan dikoreksi oleh decoder sesuai dengan kemampuan. Proses decoding data dibagi dalam beberapa langkah berikut:

1. Proses Generate Syndrome

Proses pertama, decoder melakukan generate syndrome. Proses ini digunakan untuk mengetahui adanya perubahan data yang disebabkan oleh kanal. Hal tersebut dikarenakan error syndrome memiliki peran penting dalam proses pembacaan error. Implementasi fungsi tersebut adalah sebagai berikut:

2. Implementasi Algoritma Berlekamp-Massey

Decoder mengimplementasikan algoritma Reformulated Inversionless Berlekamp-Massey . Algoritma turunan Berlekamp-Massey ini digunakan untuk mencari nilai lamda dan omega sebagai nilai kunci dari penyelesaian decoder. Implementasi fungsi tersebut adalah sebagai berikut: syndrome = gfzeros1, 2t, m, pp; for i = 1:nn, syndrome = syndrome.alpha_tb +reccodei; end ; syndrome = doublesyndrome.x; syndrome = fliplrsyndrome; syndrome = gfsyndrome,m,pp; k = 0; gamma = 1; delta = gfzeros1, 3t+2, m; delta3t+1 = 1; delta1:2t = syndrome; theta = delta1:3t+1; delta_next = delta; for r=1:2t+1, delta = delta_next; step1 delta_next1:3t+1 = gammadelta2:3t+2- delta1theta1:3t+1; step2 ifdelta1 ~= 0 k=0 theta1:3t+1 = delta2:3t+2; gamma = delta1; k = -k-1; else theta = theta; gamma = gamma; k = k+1; end end lamda = deltat+1:2t+1; omega = delta1:t;

3. Implementasi algoritma Chien search

Selanjutnya, decoder mengimplementasikan algoritma Chien search. Algoritma ini mencari letak kerusakan atau error dalam codeword. Letak kerusakan ditemukan dengan menggunakan nilai akar dari lamda. Implementasi fungsi tersebut adalah sebagai berikut :

4. Implementasi Algoritma Forney

Decoder akan mengimplementasikan algoritma Forney. Algoritma ini berfungsi untuk mencari besar nilai setiap data error error magnitude sesuai dengan kemampuan koreksi. Implementasi fungsi tersebut adalah sebagai berikut : inverse_tb = gfzeros1, t+1, m, pp; for i=1:t+1, inverse_tbi = alphai-1; end ; lamda_v=gf0, m, pp; accu_tb=gfones1, t+1, m,pp; zero = gf0, m, pp; error = zeros2,nn; for i=1:nn accu_tb=accu_tb.inverse_tb; lamda_v=lamdaaccu_tb; if lamda_v==zero error1,i=1; end end even=floort22; if even==t odd=t-1; else odd=t; end inverse table inverse_tb = gfzeros1, t+1, m, pp; for i=1:3t, inverse_tbi = alpha-i+1; end ; lamda_ov=gf0, m, pp; omega_v=gf0, m, pp; accu_tb=gfones1, t+1, m,pp; accu_tb1=gfones1, 3t, m, pp; omega = [zeros1,2t,omega]; for i=1:nn, lamda_ov=lamda2:2:odd+1accu_tb2:2:odd+1; omega_v=omegaaccu_tb1; accu_tb=accu_tb.inverse_tb1:t+1; accu_tb1=accu_tb1.inverse_tb;

5. Implementasi