2011-05-05 20 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