在同等的测试条件下,归零码的抗干扰能力强于不归零码。
因为归零码的每个bit都有跳变 一个典型的就是用PWM传输数字信号,低于50%占空比是0,高于50%占空比是1, 我们为了程序的实现,比如用25%的占空比表示0,75%的占空比表示1 大家可以计算一下,占用的带宽是多少,波特率的4倍啊 为了可靠的传输,我们设计的带宽要再double一次(根据那个非常newB的定律)。 也就是说我们为了传输1Mbps的数据,要设计8M的带宽,蛮浪费的吧 我们获得的好处是,始终每个bit都在同步,再也不用担心自己用的是RC震荡有30%的误差了,甚至双方的时钟有非常大的差异也不怕,因为没有任何的误差积累,只要处理好一个bit内就够了。
而不归零码,我们见得比较多的是UART和USB UART的波形,多数电工都研究过,尤其是软件模拟串口,肯定要吃透。 就是低电平表示0,高电平表示1(起始位和停止位的问题,咱们暂且按下不提) 我们要获得1Mbps的,只要设计2M的带宽就够用了。 这个时候,如果收发双方的时钟有偏差导致的误差,会随着bit传输数量的增加而累积。 我们获得的好处是,用小的带宽获得比归零码同样传输速度。 缺点就是误差的积累着真TMD是个麻烦
对不归零码而言,这时候就有个群同步的问题,就是至少要在N个bit的传输间隔 进行时钟同步一次,否则bit序列导致的误差积累谁也受不了啊, 那可是1个ppm的误差,传输1Mbit后,就彻底完蛋了,实际上会更提前over掉。
UART采用的是,8bit一同步,起始位会让接收方向发送方同步,而停止位纯粹是为了能正确识别起始位而设计的。 这样误差再积累,也不会积累超过8倍,我们的设计误差只要在容忍误差的1/8之内就能保证整个字节的收发。
USB的不归零码,用差分信号,是0跳1不跳,但在一个bit的内部是不跳的,所以他是不归零码。 那怎么完成这个群同步的呢。 显然如果传送的数据是0,那么一直在跳,接收方的同步肯定是没问题的。 但如果有N个bit是1,那不是一个保持某个电平,时间一长,接收方就内分泌失调了不是。 做USB协议的那帮大佬显然比我们提前想到了,就要求6个1你比须插个0,这是王八的屁股--规定。 那这样,最多6个bit就能同步一次,误差的积累,最多是6倍了。 所以说USB传输的群同步,群的大小实际是变化的,不像UART是固定8个。
扯这么多,自己心里也不是太有把握,俺也不是通讯科班出身,算是对归零和不归零的山寨解释,大家凑合着理解吧。
|