OFDM系统的定点信道模型

信息处理 数字通讯 Python OFDM
2022-02-07 07:09:26

我正在测试一个定点实现的 OFDM 系统。数据格式为 Q11。我的系统工作正常,但我需要在某些渠道下对其进行测试,以便在现场测试之前对设计进行评估。该系统将在 Rician 衰落信道上进行测试,但现在我首先进行 AWGN 测试。我在这里问了一个类似的问题: Apply AWGN noise to QPSK-OFDM symbol

但我意识到问题出在定点-浮点转换。我使用 32b 对我的系统进行了模拟,结果与 QPSK 系统的理论 BERXEbN0 一致。

我正在使用以下代码来应用噪声:

def awgn(self,data,noise_power):
    data_dq = data*(2.**(DATA_WIDTH-1))
    Es = sum(abs(data_dq)**2.)
    Eb = Es/(self.OFDM_SIZE*2.)
    EbN0_dB = noise_power + 10*log10(self.t_symbol/(self.t_symbol - self.t_cp))
    EbN0 = (10.)**(EbN0_dB/10.)
    N0 = Eb/EbN0
    noise = sqrt(N0/2.)*(random.standard_normal((data_dq.size,)) + random.standard_normal((data_dq.size,))*1j)
    return around(data_dq + noise)/(2.**(DATA_WIDTH-1))

其中 DATA_WIDTH = 12。

通过这种实施,系统同意 EbN0 曲线的某些区域,而与其他区域的曲线相去甚远。有了这个位数,我得到 BER,EbN0 为 10dB。102

我的问题是:在这种情况下如何处理定点和浮点之间的转换?

更新

我更改了上述代码的某些部分:

def awgn(self,data,noise_power):
    data_dq = data
    Es = sum(abs(data_dq)**2.)
    Eb = Es/(self.OFDM_SIZE*2.)
    EbN0_dB = noise_power + 10*log10(self.t_symbol/(self.t_symbol - self.t_cp))
    EbN0 = (10.)**(EbN0_dB/10.)
    N0 = Eb/EbN0
    noise = sqrt(N0/2.)*(random.standard_normal((data_dq.size,)) + random.standard_normal((data_dq.size,))*1j)
    return data_dq + around(noise*(2.**(DATA_WIDTH-1)))/(2.**(DATA_WIDTH-1))

我想它不会影响系统性能,但它在这里保持更新。

下面是我上次模拟的曲线:

BER 模拟

如您所见,我目前的设计中有一个楼层。

我在问这个楼层是由于我的定点系统性能还是通道模型的影响。

更新[解决]

只需为问题添加更新以供将来参考。问题在于所使用的定点 FFT 内核的参数。上图中的效果是由于剪辑造成的,正如本主题中的有用评论所述。谢谢您的支持。

2个回答

您观察到的效果肯定是由于量化误差造成的。如果您的噪声功率计算错误,您会得到模拟曲线和理论曲线之间的偏移,但不会出现错误底限。它在 32 位分辨率下运行良好的事实支持了这一假设。您可以分析您的 VHDL 发送器的输出信号,以确定它是否已经损坏。我会考虑几件事:

  • 计算没有信道的 BER(背靠背)。它应该是零,但从你的图表我猜它会在 0.02 左右。
  • 绘制星座图。您应该看到不同的点而不是“云”。
  • 计算信噪比γq. aνk是副载波的复数值ν在 OFDM 符号中k映射后和bνk是发射机输出的相应子载波值(可以通过对 tx 输出应用 FFT 获得)。然后
    γq=ν.k|aνk|2ν.k|bνkaνk|2

我不认为你的问题是噪声量化。您的曲线显示 BER 在 EbN0 = 4 附近趋于平稳,这意味着在量化噪声等于预期噪声的位置附近。除非您的信号功率非常非常低,否则这是令人难以置信的。Q11 具有 66 dB 的动态范围,因此如果您使用大部分动态范围,量化噪声根本不应该成为那些 EbN0 的一个因素。

我怀疑正在发生的是,当您从 32 位切换到 11 位时,会通过“通用”语句影响 VHDL 设计的所有处理块,因此整个设计中的数据位宽度会发生变化。我认为您的处理链的某些部分或部分在较低的位宽下表现不佳。