时间恢复算法和带样本的符号

信息处理 数字通讯 符号计时
2022-02-13 08:03:18

我正在写我的毕业论文。本主题是 FPGA 中的接收器实现。我正在执行符号时序恢复。对于这一部分,我决定选择 Gardner 算法。我在这里找到了关于 Gardner、Mueller&Muller 和其他算法的讨论。所有的帖子都很有用,但我仍然有以下问题。

  1. 我注意到,在初始相位偏移较大的情况下,我的 Gardner 算法实现无法按预期工作。您能否提出建议,在这种情况下我能做些什么?

我已经开始在 MATLAB 中进行仿真,生成带有 N 个符号的信号。每个符号必须有 8 个样本(由我的主管给出)。我做了第一部分:

Input_signal = randi([0 15],2000,1); % mod order = 16, 2000 symbols
  1. 我怎样才能实现这个任务的下一部分,即为每个符号创建 8 个样本?

编辑 1

我使用了CORDIC 算法并定义了每个样本和相位的幅度。使用它们,我可以在每个符号中定义一个具有最大幅度的样本。如何在实现时间恢复算法时使用这些信息?

1个回答

序言:这个答案是关于符号同步意义上的定时恢复,即找到基带信号的正确采样相位。

基于每个符号只有 8 个样本的规定要求,我将假设您正在采用全数字方法进行定时恢复。这意味着您无法控制 ADC 的采样时间。完全数字化的方法如下所示(这张漂亮的图片来自此处的幻灯片):

数字定时恢复

“数字处理器”是您基于 FPGA 实现的时序恢复算法,包括选择的 Gardner 算法来查找相位误差。“采样器” - 是一个具有固定采样率的 ADC,每个符号 8 个样本。“模拟处理器” - 这是一个模拟前端,在 FPGA 之外的电路板上实现。“信号输入”是来自目标通信通道的基带信号。

为了验证您的算法的实现,您需要对其进行建模,例如使用 Matlab 程序或 Python 脚本(无论哪种方式更方便)。借助来自 ADC 的真实信号样本,您将能够看到算法长期工作的细节,否则很难在 RTL 中进行仿真,并且在板上编程时可能难以调试。使用合成信号,您可以更改信号的参数以查看算法如何对其做出反应,还可以为 TED 绘制 sigmoid,这非常有用。

关于 TED: 时序误差检测器 (TED) 旨在检测采样中的相位误差。基于其输出的符号,定时恢复方案将采样相位递增地偏移一个小步长值,直到定时误差变为零(或接近于零)。该步长值通常选择为符号周期的 1-2%。请注意,对于全数字定时恢复方法,当没有对采样相位进行实际控制时,将使用内插器来填充信号样本之间的间隙。因此,相移是针对重新创建的版本信号而不是真实版本信号进行的。

采样相位误差由生成符号的发送器与 ADC 的基本采样频率(实际采样频率/8)之间的相位差定义。理想情况下,算法应该能够收敛于该误差的任意初始值。

问题的答案:为了充分模拟初始相位误差,模型不仅必须包括数字处理器,还必须包括采样器。这意味着,模型的输入信号应该是连续的或过采样的。过采样的程度将定义您的测试的分辨能力,即您可以提供多少不同的初始值。目标可以是每个符号周期 50-100 点。

如果您打算使用真实信号作为模型的输入,您将使用逻辑分析仪以足够高的频率在 ADC 的输入端捕获信号。

或者,您可能想要使用模拟真实信号的合成信号。然后你必须创建它的数学模型。通常,您将从随机符号值开始(就像您所做的那样),然后应用调制方案(如果符号信号电平,您将跳过此步骤),然后应用脉冲形状(如果目标发射器这样做),然后应用失真/pulse 整形与您预期的目标通信通道和模拟前端相关(例如,低通滤波器可以模拟双绞线中的信号失真)。

如您所见,创建合成信号的特定方式很大程度上取决于目标通信通道的类型。

编辑:这是生成的输入数据的说明x(k)对于 TED 可能看起来像。它显示了两种不同的情况。您可以看到它们在 ADC 采样的相位上有所不同。示例还表明,从 8 个样本中选择 2 个样本是 Gardner TED 所必需的,是随机的。

眼图 1 眼图 2

黑线是信号的示例眼图,绿线是最佳采样点,蓝线是 ADC 样本。