802.11a基于FPGA的ofdm 下载本文

R_DATA(k)=R_DATA(k)+r_out_data(m)*exp(-j*2*pi*(k-27)*df*((m-1)*dt-T_GI));

此过程是将去插入保护间隔和FFT同时进行的,T_GI为保护间

隔。

第二:归一化处理。

signal=max(abs(R_SIGNAL));

data=max(abs(R_DATA)); for k=1:53

R_SIGNAL(k)=R_SIGNAL(k)/signal;

end for n=1:1908

R_DATA(k)=R_DATA(k)/data; end

第三、去掉所插入的导频。即去掉在-21、-7、0、7、7、21五处的

码元。

第四、进行判决即BPSK解调。所有数值的实部大于等0,则判为1,否则为0。

第五、进行逆交织。k为逆交织前的序号,y为第一次交织后第二次交织前的序号,x为交织后的序号。三者之间的关心为: y=s*floor(k/s)+mod((k+floor(16*k/N_CBPS)),s) x=16*y-(N_CBPS-1)*floor(16*y/N_CBPS) 当N_BPCS=1时。S=1,则:y=k。

第六、卷积码译码。

令N为输入数据的长度,网格横向有4项令为:s0、s1、s2、s3,对应最小汉明距离分别为:d0、d1、d2、d3,对应译码为:M0、M1、M2、M3。

n=1:2:N-1,当n=2时对应d和M在程序中给定,设为初值。当n>=3时,n+1时的d和M可以由n时的确定,每个s都有两个输入,选择其中权值较小的为其输入;若为s0或s2则M((n+1)/2)为0,若为s1、s3则判为1,最终选择d值最小的s处的M为最终译码。如下图:

00 S0 11 11 S1 00 10 S2 01 S2 01 S3 10 M((n+1)/2)=1 M((n+1)/2)=0 S1 M((n+1)/2)=1 S0 M((n+1)/2)=0 S3

第七、解扰。

第八.求其误码率:设data为收到的800个数据,PSDU_DATA为发送的800数据,则BER=sum(abs(data-PSDU_DATA))/800。 加循环100次求出误码率曲线如下图: