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;