1. 程式人生 > >4.4.5 通道均衡(二)

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 - 南山悠然望夕陽