802.11a基于FPGA的ofdm 下载本文

输入数据和输出数据长度一样,令其为N,n=1:N,n数依次递增,G(n:n+6)随之移动,G(n:n+6).*g即为输出数据out的第n位。A路输出与B路用相同方法。之后,用函数reshape(A,B)将A、B合为一个向量,及编码输出。

本程序用k=3、g=[1,1,1;1,0,1]的卷积码编码。则:G(n,n+2)。

如要提高编码速率,可用删余技术。经过删余可以得到3/4、2/3速率的码元。下图给出R=3/4的删余编码和解码原理图: 源数据: X1 X2 X3 X4 X5 X6 X7 X8 X9 卷积编码后的数据(有下划线的是删除元素): A1 B1 A2 B2 A3 B3 A4 B4 A5 B5 A6 B6 A7 B7 A8 B8 A9 B9 删除后的数据: A1 B1 A2 B3 A4 B4 A5 B6 A7 B7 A8 B9 插入亚元: A1 B1 A2 B2 A3 B3 A4 B4 A5 B5 A6 B6 A7 B7 A8 B8 A9 B9 解码后的数据: Y1 Y2 Y3 Y4 Y5 Y6 Y7 Y8 Y9 其中6个数据为一组,而删除2个保留4个。 本程序用1/2速率,所以保留全部码元。 (6)进行交织

交织是以单个OFDM信号的比特数为块进行的,其作用是:确保相邻比特映射到不相邻的子载波上,确保相邻比特映射到星座的高、低有效位上,避免低可靠比特的长期存在。

k为第一次映射前的比特序号,i为其之后和第二次映射前的序号,它们之间的关系为:

i=(N_CBPS/16)*mod(k,16)+floor(k/16);

x为第二次映射后的比特序号,i和x的关系为: x=s*floor(i/s)

+ mod((i+N_CBPS-floor(16*i/N_CBPS)),s)

其中:s=max(N_BPSC/2,1);

当N_BPSC=1时,s=1,则:x=i。

(7)载波调制

载波调制可以用BPSK、QPSK、16-QAM和64-QAM,其调制输出数据为:d=(I+jQ)*K_mod, K_mod为归一化因子。各调制方式的归一化因子如下图所示: 调制方式 BPSK QPSK 16-QAM 64-QAM BPSK编码表: 输入比特b0 0 I路输出 -1 Q路输出 0 归一化因子 1 1/sqrt(2) 1/sqrt(10) 1/sqrt(42) 1 QPSK编码表: 输入比特b0 0 1 1 0 I路输出 -1 0 输入比特b1 0 1 Q路输出 -1 1 16-QAM编码表: 输入比特b0b1 00 01 11 10 I路输出 -3 -1 1 3 输入比特b2b3 00 01 11 10 Q路输出 -3 -1 1 3 64-QAM编码表: 输入比特b0b1b2 000 001 011 010 110 111 101 100 I路输出 -7 -5 -3 -1 1 3 5 7 输入比特b3b4b5 000 001 011 010 110 111 101 100 Q路输出 -7 -5 -3 -1 1 3 5 7 (8)插入导频信号

一个OFDM信号是从-26到26,共53个比特,其中有4个是导频信号,它们分别插在-21、-7、7、21四个位置,相应的值为1、1、1、-1,在0位置的信号赋值为0,加上原有的48比特信号共53个。 (9)OFDM调制

对本程序来说,SIGNAL部分有一个OFDM符号,DATA部分有35个OFDM符号。对上述两部分进行调制,就像当时进行IFFT。 二、信道部分

(1)当channel_counter=0时,信道为加性高斯白噪声信道。设信噪比Eb/n0=0:0.5:20,输入信号为I_signal+jQ_signal,则噪声功率为:noise_var=0.5*sum(I_signal.*I_signal+Q_signal.*Q_signal)/length(I_signal)*10^(-EbN0/10)。噪声表示为: I_out=sqrt(noise_var)*randn(1,length(I_signal)); Q_out=sqrt(noise_var)*randn(1,length(Q_signal));

(2)当channel_counter=1时,信道为多径衰落信道。

三、接收端

此部分为发射端的逆过程: 第一:进行OFDM解调,即FFT。 R_SIGNAL是对signal部分的解调:

R_SIGNAL(k)=R_SIGNAL(k)+r_out_signal(n)*exp(-j*2*pi*(k-27)*df*((n-1)*dt-T_GI));

R_DATA是对data的解调: