【问题标题】:How to synchronize a signal receiver clock?如何同步信号接收器时钟?
【发布时间】:2012-05-17 16:58:07
【问题描述】:

假设我正在以数字方式接收二进制信号,其中逻辑“1”表示信号的存在,而传输的逻辑“0”表示信号不存在。

逻辑“1”的持续时间与逻辑“0”相同,但发送器时钟可能会漂移,1 或 0 的持续时间略有不同。可以传输的连续 1 或 0 的最大数量。

在计算机编程代码中,执行此操作的一般算法是什么?如何同步接收器时钟以适应漂移?信号的最小采样率应该是多少?

【问题讨论】:

  • 信号是数字值(它是 0 或 1,而不是 0.9 等)但在时间上是连续的?

标签: algorithm signal-processing


【解决方案1】:

大多数通信系统使用 (up down) 和 (down up) 表示 0 和 1。即从 0 到 t/2 信号向上,从 t/2 到 t 信号向下表示 0(反之亦然对于 1) 其中 t 是信号的周期。使用此策略应该可以解决您的问题。

编辑:参见这篇 wiki 文章 http://en.wikipedia.org/wiki/Self-clocking_signal

【讨论】:

    【解决方案2】:

    通常,时序是通过一个锁相环 (PLL) 从一个行程长度受限的 NRZ 编码信号中恢复的,该锁相环 (PLL) 被馈入所有转换的时序。

    如果您对信号进行采样而不是使用转换时间,那么采样率越高,PLL 频率中的抖动就越少。但无论如何,采样率需要明显快于比特时间倒数的 2 倍。

    您可能也想在signal processing site 中提出这个问题。

    【讨论】:

      【解决方案3】:

      您所描述的内容似乎与RS-232 非常相似。

      时钟同步的方式是首先确保两端以相同的频率(波特率)运行,然后为每个设定的位数定义一个开始和停止序列。因此,例如,您将发送一个 0 作为起始位,发送一个 1 作为停止位,然后在其间发送一大堆位(比如说一个字节)。由于您的两个时钟几乎相同,因此同步信号所需要做的就是在停止/开始位中查找从 1 到零的转换,这将表示新单词的开始。

      这样,您可以将时钟之间的误差每隔这么多位重置为零,确保它不会累积并导致问题。 asynchronous serial communication 上的维基百科页面更详细地讨论了我刚才所说的内容。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-01-08
        • 1970-01-01
        • 1970-01-01
        • 2020-11-16
        • 1970-01-01
        • 2011-05-15
        • 2017-12-19
        • 2013-10-21
        相关资源
        最近更新 更多