www.gusucode.com > ldpc译码算法,码长960,码率0.5,完全模拟fpga硬件实现语言,量化处理源码程序 > main.m

    clear;clc;
r = 0.5; %编码效率

EbN0_in_dB=1;
EbN0 = 10^(EbN0_in_dB/10);
EsN0 = EbN0*r;
N0 = 1/EsN0;
 max_iter=50;
temp=load('H.mat');
H=temp.H;
% temp=load('txx.mat');
% txx=temp.txx;


BitErrorNum=0; FrameErrorNum = 0;
MSG=randint(480,1,[0,1]);
CODE=EncodeLDPC(MSG',480,H);
tic;
bpskMod = 1 - 2*CODE';

  tic;
iter_num=0;
 for num=1:1000
   
txx = bpskMod + sqrt(N0/2)*randn(size(bpskMod));
% txx = bpskMod;

max_tx=max(abs(txx));
tx=floor(txx*127/max_tx);


% for i=1:960
%     if(tx(i)>=0)
%         tx_2(i,:)=dec2bin(tx(i),11)-48;
%     else a=dec2bin(abs(tx(i)),11)-48;
%          a=xor(a,1);
%          b=bin2dec(char(a+48))+1;
%          tx_2(i,:)=dec2bin(b,11)-48;
%     end
% end
% fid=fopen('G:\FPGA_CODE\New_LdpcDec\tx.coe','w+');
% fprintf(fid,'MEMORY_INITIALIZATION_RADIX=2;');
% fprintf(fid,'\n');
% fprintf(fid,'MEMORY_INITIALIZATION_VECTOR=');
% for i=1:960
%     fprintf(fid,'%u',tx_2(i,:));
%     if i==960
%         fprintf(fid,';');
%     else
%         fprintf(fid,',');
%     end
% end
 err=sum( (txx<0)~= CODE' );

[msg_dec,iter]=DecodeLDPC(tx);


 ErrorCount = sum(msg_dec~=  CODE)
   iter 
    if(ErrorCount > 0)
        BitErrorNum = BitErrorNum + ErrorCount;
         FrameErrorNum = FrameErrorNum + 1;
    end
     if (FrameErrorNum>100)
         break;
     end
iter_num=iter+iter_num;
 end
 ber=BitErrorNum/num/960;
fer = FrameErrorNum/num;
FileName = 'LDPCBER1.txt';
fp = fopen(FileName, 'ab');
fprintf(fp,'Eb/N0=%f,',EbN0_in_dB);
fprintf(fp,'BER=%g,',   ber);
fprintf(fp,'FER=%g, ',     fer);

fprintf(fp,'\r\n');
fclose(fp);

toc;