3

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

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

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

4

3 回答 3

2

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

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

于 2012-05-17T18:55:44.360 回答
0

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

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

您可能还想在信号处理站点中提出这个问题。

于 2012-05-18T19:41:42.067 回答
0

您正在描述的东西似乎与RS-232非常相似。

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

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

于 2012-05-18T19:59:25.653 回答