4.4.5 信道均衡(二)

4.4.5 信道均衡(二)  

基本上 《XILINX FPGA的OFDM通信系统基带设计》一书已经带有各部分的代码,我做的工作就是将代码整合到一起,并按照仿真修改,让其能正常工作。本文将对实现中的重点部分做解释,并指出需要修改的地方。

 

一、长训练符号提取模块

    在经过【符号同步】后,输出的数据已经是长训练符号+数据符号,从symbol的数值可以知道长训练符号的起始点。这样可以很方便的长训练序列和数据序列分离开,并计算二个长训练符号的均值。

4.4.5 信道均衡(二) - fantasy - 南山悠然望夕阳

 

模块仿真输出:

4.4.5 信道均衡(二) - fantasy - 南山悠然望夕阳

 


二、信道估计

    信道估计模块只要负责计算信道估算值H和它的共轭,用于补偿信道引起的相位旋转。

4.4.5 信道均衡(二) - fantasy - 南山悠然望夕阳   

     因为L为已知的长训练符号,其元素为-1或1,因此计算式可简化为:

 

4.4.5 信道均衡(二) - fantasy - 南山悠然望夕阳

     只需对接收的长训练符号平均值进行实部或虚部分量进行取反操作即可得到估算值。

 

//Compute conj(H), where H = ave*conj(L) and the value of L is 1,-1,0
//that is, when the value of L is 1, conj(H) = conj(ave)
// when the value of L is -1, conj(H) = -conj(ave)
// when the value of L is 0, conj(H) = 0;
always @(posedge Clk or negedge Rst_n)
begin
if(!Rst_n)
begin
ChannelCoefEnable <= 0;
ChannelCoefRe <= 0;
ChannelCoefIm <= 0;
end
else
begin
if(BufferAveLongTrainingEnable)
begin
if(LocalLongTraining == 2'b01) //the value of L is 1
begin
ChannelCoefRe <= BufferAveLongTrainingRe;
ChannelCoefIm <= ~(BufferAveLongTrainingIm)+1;
ChannelCoefEnable <= 1;
end
else if(LocalLongTraining == 2'b11) //the value of L is -1
begin
ChannelCoefRe <= ~(BufferAveLongTrainingRe)+1;
ChannelCoefIm <= BufferAveLongTrainingIm;
ChannelCoefEnable <= 1;
end
else if(LocalLongTraining == 2'b00) //the value of L is 0
begin
ChannelCoefRe <= 8'b0000_0000;
ChannelCoefIm <= 8'b0000_0000;
ChannelCoefEnable <= 1;
end
end
else
begin
ChannelCoefEnable <= 0;
ChannelCoefRe <= 0;
ChannelCoefIm <= 0;
end
end
end

 

下图是信道估计模块仿真输出:

 

4.4.5 信道均衡(二) - fantasy - 南山悠然望夕阳

 


三、能量计算和信道补偿

    能量计算主要负责计算信道引起的幅值影响,信道补偿只负责信道引起的相位旋转的补偿。

 

信道补偿模块:

 

//////////////////////////////////////////////////////////////////////////////////
// Create Date: 13:35:35 10/31/2014
// Design Name: Channel_Equalizer
// Module Name: ChannelCompensation
// Project Name: OFDM base on Xilinx KC705
// Description: OFDM 信道估计与均衡中 【信道补偿】子模块。
// --------------------------------------------------------------
// 负责信道引起的相位旋转的补偿,幅值变化的影响在QAM解调模块完成。
// compute A*B (R(补偿) = R(接收)* H(共轭))
// 这里没有除以E的原因是,E只影响R在星座图上的大小位置,可以
// 将其传给QAM解调模块,用于动态调整解调阈值即可。
// Zr+Zi*j =(Ar+Ai*j)*(Br+Bi*j)
// =>Zr = ArBr-AiBi = Ar*(Br+Bi)-Bi*(Ar+Ai)
// Zi = ArBi+AiBr = Ar*(Br+Bi)-Br*(Ar-Ai)
// --------------------------------------------------------------
// Revision: 1.0
// Copyright: 《基于xlinx FPGA的OFDM通信系统基带设计》
//////////////////////////////////////////////////////////////////////////////////

 

这个信道估计和均衡的仿真结果:

4.4.5 信道均衡(二) - fantasy - 南山悠然望夕阳

猜你喜欢

转载自blog.csdn.net/weixin_40640020/article/details/83345381