2011-05-05 17 views
1

我正嘗試使用Simulink和Xilinx模塊組建立一個DBPSK解調器。我計算這樣的連續採樣的相位差: enter image description here使用Xilinx模塊組的Simulink中的DBPSK解調

所以,現在我需要根據相位差是0還是pi來將這些相位差映射到符號0或1。

% ---------------------------------------- 
% | Bit input | Phase change (+j*pi) | 
% ---------------------------------------- 
% |  0  |  0    | 
% ---------------------------------------- 
% |  1  |  pi    | 
% ---------------------------------------- 

我不知道如何在Simulink(Xilinx)中執行相位符號映射。順便說一句,這裏是Matlab的版本:

demod_symbol=abs(round(DBPSK_Signal/pi)); 
for i=1:length(demod_symbol) 
     if(demod_symbol(i)==2) 
      demod_symbol(i)=0; 
     end 
end 

請讓我知道,如果我的做法是正確的,如何進行進一步

回答

1

把你的減法器的輸出,將其提供給一個「大於」比較塊與其他輸入設置爲pi/2。這將是你需要的位。

請注意,您將在這些atan塊中創建相當多的邏輯 - 這樣做幾乎肯定是一種更高效的方式,但在這一刻它不會令人滿意。

+0

非常感謝..我用了一個複數乘法器3.1來乘以樣本和前一個樣本的複共軛,然後是atan來計算相位差。 – Kiran 2011-05-06 08:45:16

+0

這似乎還有很長的路要走。 – 2011-05-06 12:26:54