qidao123.com技术社区-IT企服评测·应用市场

标题: USB学习【2】通讯的底子-反向不归零编码 [打印本页]

作者: 梦应逍遥    时间: 2025-5-7 09:19
标题: USB学习【2】通讯的底子-反向不归零编码
一.写在前面

全部的通讯协议,发送端和接收端必须按照同一节奏发送信号和担当信号才能保证通讯的正常进行,否则会出现错位。
这个节奏用我自己的话说:时间卡尺。

维度串口通讯IIC通讯USB通讯速率低(kbps级)中(Mbps级)高(Gbps级)间隔远(RS-485达数百米)短(<1米)短(<5米)设备数量单一主从多主多从单主机多从硬件复杂度低(2线)低(2线+上拉)高(需控制器芯片)适用场景工业控制、传统设备芯片间通信、传感器高速外设、消费电子 这里就要引出一个话题:编码方式
二.编码方式

从上图中可看出,每们数据传输中都有一个归零的过程,这样接收端只需要在归零后进行采样,这样就替代了时钟信号时间卡尺的功能,这实际上相称于把时钟信号和数据归并在了一起,这种信号叫自同步(self-clocking)信号。
这样确实节流了信号线,不过还是有它固有的缺点,由于RZ编码信号中有一半的数据带宽被用于传输“归零”信号而占据,速度自然就慢了。
为了解决这个问题,NRZ编码就被聪明人发明了。

从上图可以看到,每一位信号都不需要“归零”了,被浪费的带宽收回了,但又失去了应有的自同步特性,让我们感觉又回到了出发点,这个同步的问题先不研究,继承看下面的编码规则。


也就是说, NRZI 编码是以变化来作为逻辑的,在信号传递中,许多时候都是111011,100011这种连续1大概连续0的情况出现,这种编码可以大大淘汰信号翻转频率、低沉EMI。
从上面的了解,NRZ和NRZI都失去了自同步特性,不过还是可以通过一些技巧来处置处罚。
三.如何同步信号(怎么得到时间卡尺)

在USB中,每个数据包的最开始处都有一个同步域(SYNC),其值为00000001,在颠末NRZI编码后,就是一串方波,接收方通过同步头来盘算发送方的频率,以便用这个频率来继承采样数据信号。用人话说就是,发送一个方便测试频率样例给对方,对方测试测试就知道多快的频率了。。
NRZI编码中,每当逻辑0时就会进行电平翻转,前7个0会触发连续7次电平翻转,形成明显的信号颠簸,第8个1保持电平不变,结束翻转
另有一个问题极限问题要解决,凡是信号必有误差!
一旦电平长时间保持不变时,假设我们发送发送一位个逻辑1,纵然传输的是100个逻辑1,但接收方与发送方的频率相差了100分之1,那么也还是存在可能把数据收罗成为99大概101。而USB中采用了Bit-Stuffing位添补处置处罚,即在连续发送6个1背面会插入1个0,强制使发送信号进行翻转,从而让接收方调整频率,同步接收。而接收方在接收时只要接收到连续的6个1后,直接将背面的0删除即可恢复数据的原貌。
下图是原始数据、位添补数据、NRZI编码数据的一个图例:


而接收方只需要将上面担当到的NRZI编码数据进行译码,再进行位反添补即可还原为原始数据了。
此种编码方式除了在USB上利用,另有在CD光盘以及利用光纤传输的100BASE-FX(Fast Ethernet)等产物、领域。
4.问题


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 qidao123.com技术社区-IT企服评测·应用市场 (https://dis.qidao123.com/) Powered by Discuz! X3.4