<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

USB的NRZI編碼

作者: 時(shí)間:2016-12-15 來(lái)源:網(wǎng)絡(luò ) 收藏
1.網(wǎng)絡(luò )上一個(gè)比較詳細的解釋
首先,USB 的數據是串行發(fā)送的,就像 UART、I2C、SPI 等等,連續的01 信號只通過(guò)一根數據線(xiàn)發(fā)給接受者。
但是因為發(fā)送者和接收者運行的頻率不一樣,信號的同步就是個(gè)問(wèn)題,比如,接受者接收到了一個(gè)持續
一段時(shí)間的低電平,無(wú)法得知這究竟是代表了5個(gè)0 還是1000個(gè)0。
一個(gè)解決辦法,就是在傳輸數據信號的同時(shí),附加一個(gè)時(shí)鐘信號,用來(lái)同步兩端的傳輸,接受者在時(shí)鐘
信號的輔助下對數據信號采樣,就可以正確解析出發(fā)送的數據了,比如 I2C 就是這樣做的,SDA 來(lái)傳
輸數據,SCL 來(lái)傳輸同步時(shí)鐘:

雖然這樣解決了問(wèn)題,但是卻需要附加一根時(shí)鐘信號線(xiàn)來(lái)傳輸時(shí)鐘。有沒(méi)有不需要附加的時(shí)鐘信號,也
能保持兩端的同步呢?
有的,這就是 RZ 編碼(Return-to-zero Code),也叫做歸零編碼。
在 RZ 編碼中,正電平代表邏輯 1,負電平代表邏輯 0,并且,每傳輸完一位數據,信號返回到零電
平,也就是說(shuō),信號線(xiàn)上會(huì )出現 3 種電平:正電平、負電平、零電平:



從圖上就可以看出來(lái),因為每位傳輸之后都要歸零,所以接收者只要在信號歸零后采樣即可,這樣就不
在需要單獨的時(shí)鐘信號。實(shí)際上, RZ 編碼就是相當于把時(shí)鐘信號用歸零編碼在了數據之內。這樣的信
號也叫做自同步(self-clocking)信號。
這樣雖然省了時(shí)鐘數據線(xiàn),但是還是有缺點(diǎn)的,因為在 RZ 編碼中,大部分的數據帶寬,都用來(lái)傳
輸“歸零”而浪費掉了。
那么,我們去掉這個(gè)歸零步驟,NRZ 編碼(Non-return-to-zero Code)就出現了,和 RZ 的區別就是
NRZ 是不需要歸零的:


這樣,浪費的帶寬又回來(lái)了,不過(guò)又喪失寶貴的自同步特性了,貌似我們又回到了原點(diǎn),其實(shí)這個(gè)問(wèn)題
也是可以解決的,不過(guò)待會(huì )兒再講,先看看什么是 NRZI
NRZI 編碼(Non-Return-to-Zero Inverted Code)和 NRZ 的區別就是 NRZI 用信號的翻轉代表一個(gè)
邏輯,信號保持不變代表另外一個(gè)邏輯。
USB 傳輸的編碼就是 NRZI 格式,在 USB 中,電平翻轉代表邏輯 0,電平不變代表邏輯1:



翻轉的信號本身可以作為一種通知機制,而且可以看到,即使把 NRZI 的波形完全翻轉,所代表的數據
序列還是一樣的,對于像 USB 這種通過(guò)差分線(xiàn)來(lái)傳輸的信號尤其方便~
現在再回到那個(gè)同步問(wèn)題:
的確,NRZ 和 NRZI 都沒(méi)有自同步特性,但是可以用一些特殊的技巧解決。
比如,先發(fā)送一個(gè)同步頭,內容是 0101010 的方波,讓接受者通過(guò)這個(gè)同步頭計算出發(fā)送者的頻率,
然后再用這個(gè)頻率來(lái)采樣之后的數據信號,就可以了。
在 USB 中,每個(gè) USB 數據包,最開(kāi)始都有個(gè)同步域(SYNC),這個(gè)域固定為 0000 0001,這個(gè)域通
過(guò) NRZI 編碼之后,就是一串方波(復習下前面:NRZI 遇 0 翻轉遇 1
此外,因為在 USB 的 NRZI 編碼下,邏輯 0 會(huì )造成電平翻轉,所以接收者在接收數據的同時(shí),根據接
收到的翻轉信號不斷調整同步頻率,保證數據傳輸正確。
但是,這樣還是會(huì )有一個(gè)問(wèn)題,就是雖然接收者可以主動(dòng)和發(fā)送者的頻率匹配,但是兩者之間總會(huì )有誤差。
假如數據信號是 1000個(gè)邏輯1,經(jīng)過(guò) USB 的 NRZI 編碼之后,就是很長(cháng)一段沒(méi)有變化的電平,在這種
情況下,即使接受者的頻率和發(fā)送者相差千分之一,就會(huì )造成把數據采樣成 1001個(gè)或者 999個(gè)了。
USB對這個(gè)問(wèn)題的解決辦法,就是強制插0,也就是傳說(shuō)中的bit-stuffing,如果要傳輸的數據中有7個(gè)
連續的1,發(fā)送前就會(huì )在第6個(gè)1后面強制插入一個(gè)0,讓發(fā)送的信號強制出現翻轉,從而強制接受者進(jìn)
行頻率調整。接受者只要刪除6個(gè)連續 1 之后的0,就可以恢復原始的數據了。


2,來(lái)至ST的另外一個(gè)解釋












關(guān)鍵詞: USBNRZI編

評論


技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>