CAN 总线 之六 BOSCH CAN 比特位填充(编码规则)、归零编码(RZ)和不归零编码(NRZ)
幀格式
??在 CAN 總線中,為了確保足夠的轉換以保持同步,在相同極性的 5 個連續位之后使用位填充。下面以 標準格式來進行說明,先看下面標準格式的幀的圖示:
在某些文檔中,將 CAN 幀分為以下部分:
- Header ( H ): 由 Start of Frame (SOF) 、 Arbitration Field、 Control Field 組成。
- Data field ( D ): 即數據域
- CRC field ( R ): 即 CRC 域的 CRC 部分。其內容由 CAN 控制器在運行時計算,因此不能由應用程序直接修改。
- Unstuffed trailer ( U ): i由 CRC delimiter、the ACK slot、the ACK delimiter、the End of Frame (EOF) field. 組成。
位填充
??BOSCH CAN2.0 規范規定,DATA FRAME 或 REMOTE FRAME 中的位字段 START OF FRAME,ARBITRATION FIELD,CONTROL FIELD,DATA FIELD 和 CRC SEQUENCE 都需要通過比特填充的方法編碼。 每當發送器在要發送的比特流中檢測到相同值的五個連續比特時,則自動在實際發送的比特流中插入一個相反的比特位,這種方法被稱為位填充。
??DATA FRAME 或 REMOTE FRAME 的剩余位字段 CRC DELIMITER,ACK FIELD 和 END OF FRAME 是固定的格式,不需要填充。 ERROR FRAME 和 OVERLOAD FRAME 也是固定格式,不通過位填充方法編碼。
??消息中的比特流根據不歸零(Non-Return-to-Zero,NRZ)法進行編碼。這意味著在總比特時間內,生成的比特電平要么是“顯性”要么是“隱性”。下圖為一個填充示意圖:
??在使用比特填充的字段中,相同極性的六個連續比特(111111或000000)被認為是錯誤。 當檢測到錯誤時,節點可以發送主動錯誤標志。 主動錯誤標志由 6 個連續的比特位的顯性電平組成,這違反了位填充規則。
??位填充方案的一個副作用是,接收到的消息中的少量位錯誤可能會破壞解填充過程(接收器需要去除填充位),從而導致大量錯誤在解填充消息中傳播。這降低了 CRC 針對原始錯誤提供的保護級別。該協議的不足之處已經在 CAN FD 幀中得到了解決,具體方法是 通過使用固定填充比特和記錄插入的填充比特數的計數器的組合。
幀長度
??在位填充之后,CAN 幀的大小將增大。填充位本身可以是五個連續相同位中的第一個,因此在最壞的情況下,每四個原始位有一個填充位。幀大小可以使用如下公式表示:
- s:由控制域中 DLC 定義的數據域的長度
- 8s:數據域的 比特位 數
- 47:從 SOF 開始到幀間隔(3個比特位的隱性電平),除去數據域部分(8s 單獨表示)
- 8s + 47:表示填充之前幀的大小。
- 34:根據規范的要求,可能受到位填充的位的數量。去除了不可填充的部分和某些固定位。在最壞情況下,原數據除了第一個 4 位后,在每個 4 位后增加 1 位(所以分子減去 1)
歸零編碼(RZ)和不歸零編碼(NRZ)
??無論是歸零編碼(return-to-zero,RZ)還是不歸零編碼(non-return to zero,NRZ),信號都是在正 (+V) 和負 (- V) 電壓之間交替。邏輯1 表示正電壓下的信號,邏輯 0 表示負電壓下的信號。然而,在 NRZ 方法中,從邏輯 0 到邏輯 1 的轉換(反之亦然),直接跨越零電壓電平,而在 RZ 方法中,轉換暫時停留在零電壓電平上。如下圖所示:
??在光通信中,術語 RZ 和 NRZ 使用與以上含義不同,因為沒有負光。NRZ 意味著邏輯值 1 (光脈沖)的一個位在位周期的邊界上改變它的值(從光到無光或反之亦然)。相反,RZ 表示光脈沖比比特周期窄。在光信號中,邏輯 1 導通大約三分之一的位周期并且關閉大約三分之二。 邏輯 0 在比特周期的三分之二時間內保持關閉狀態。
雙極信號和單極信號
??雙極信號(bipolar signal) 是一個三電壓級的信號,通常在正電壓和負電壓之間搖擺。雙極信號可以是 RZ 或 NRZ。在數字雙極信號中,正電壓和負電壓交替出現。這導致輸電線路上的零直流分量。
??單極信號(unipolar signal) 是一種兩級信號,通常在零級和正級之間波動。單極信號被認為是一種開關信號,可以應用于電信號或光學信號。在電力傳輸中,假設統計上有相同數量的1和0,那么直流分量可能達到峰值正電壓的一半。對于長距離傳輸,這種直流分量是不可取的。在光學傳輸中,單極信號也稱為開關鍵控。
??還有一類是多級信號。在這種情況下,可以使用幾個電壓電平(例如,8),每個電平對應8個代碼中的一個。盡管多級信號由于其固有的編碼壓縮特性而具有很大的吸引力,但它們并不用于通信網絡的傳輸。在光傳輸中,不存在多電平信號。
48/58, 88/108 CODING
??4B/5B 代碼將 4 位轉換成 16 個預定的 5 位代碼之一。 因此,即使原始的 4 位代碼是 0000,它也被轉換為 5 位非全零代碼。 此方法避免在任何代碼中都包含所有零。它也可以設計成連續模式避免某些字符串。 4B/5B 意味著轉換后的初始 1 Gb/s 比特率由于增加了比特而增加到 1.25 Gb/s。 也就是說,有 25% 的開銷帶寬損失。 類似地,8B/10B 代碼將 8 位轉換成 256 個預定的 10 位代碼之一。 帶寬損失也是25%。
參考
總結
以上是生活随笔為你收集整理的CAN 总线 之六 BOSCH CAN 比特位填充(编码规则)、归零编码(RZ)和不归零编码(NRZ)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: CAN 总线 之一 总线拓扑、物理电平、
- 下一篇: CAN 总线 之七 BOSCH CAN