UOMOP

Cyclic Encoder using Matlab 본문

Wireless Comm./Matlab

Cyclic Encoder using Matlab

Happy PinGu 2022. 1. 14. 02:38
function U = cyclicencoder(M, P)
%usage : 메세지 벡터와 생성 벡터을 입력받고 cyclicencoding된 코드워드를 출력한다.
%input : M=massage, P=생성다항식계수
%output : U = codeword using cyclicencoding
 
K = length(M);
N = length(P)+K-1;
DegPoly = N-K;
 
LFSR = zeros(1, DegPoly);
 
U = zeros(1, N);
U(N-K+1 : N) = M;
 
for i = 1 : K 
    feedback = mod(M(K+1-i)+LFSR(N-K), 2);
    str = sprintf('Input mesag : %d \nCurrent LFSR : %s \nFeedback      : %d',
    M(K+1-i), num2str(LFSR), feedback);
    disp(str);
 
    for j = DegPoly : -1 : 2
        if (P(j) == 1)
            LFSR(j) = rem((LFSR(j-1)+feedback), 2);
        else
            LFSR(j) = LFSR(j-1);
        end
    end
    LFSR(1) = feedback;
    disp(['Next LFSR     : ', num2str(LFSR)]);
    disp('-------------------------------');
    
end
 
U(1 : (N-K)) = LFSR;

 

 

Question.

             (15,11), (31,26), (63,57) Cyclic Code 에 적용하고 Encoding작업 확인

             (생성다항식 만들 때 min 옵션 사용)

clear all; close all; clc;
 
 N = 15;
 K = 11;
 P = cyclpoly(N, K, 'min');
 
 M = ones(1, K);
 
 if mod(K, 2) == 0
 
     for i = 1 : (K)/2
        M(2 * i) = 0;
     end
 else
      for i = 1 : (K-1)/2
        M(2 * i) = 0;
      end
 end
 % K값 변화에 따라 1,0이 반복되는 벡터를 설정
     
 C = cyclicencoder(M, P)

-> 위 코드에서 N, K만을 조정하여 인코딩 과정을 확인

 

 

 encoding의 경우, M을 [1010···· ]설정해야 해서 우선 M을 1로 나열한 후에, K가 홀수인 경우와 짝수인 경우를 나눠서 메시지 벡터를 선언하였다. 이후 이 메시지 벡터와 선언해두었던 ‘cyclicencoder’함수를 이용하여 인코딩되는 과정을 직접 확인해보았다.
 
 메시지벡터의 MSB부터 feedback circuit에 입력되면서 마지막 LFSR와 xor되면서 feedback이 되고, feecback과의 계산이 된 값들이 LFSR(next clock)에 저장이 된다. 이 과정을 반복하면서 마지막 LFSR에 남은 값이 메시지의 parity가 되면서 encoding이 되는 것이다.
 
 실제로 실습을 통해 확인할 수 있었다. 메시지가 MSB부터 입력이 되면서 feedback, 현재 LFSR, 다음 LFSR 값이 변했다. 결국 마지막으로 남는 LFSR이 parity가 되었고, 출력된 codeword를 확인해보면 [(Next LFSR)(10101····)]이 출력되었다.

 

 

'Wireless Comm. > Matlab' 카테고리의 다른 글

PSK BER using Matlab(Simulink)  (0) 2022.01.17
Cyclic Encoder/Decoder using Simulink  (0) 2022.01.16
BCH Decoder using Matlab  (0) 2022.01.16
RS Encoder/ RS Decoder using Matlab  (3) 2022.01.15
Cyclic Decoder using Matlab  (0) 2022.01.15
Comments