《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 模拟设计 > 设计应用 > 循环冗余校验确保正确的数据通信
循环冗余校验确保正确的数据通信
摘要: 在工业环境中,电子系统通常工作在极端的温度条件下,或处于电子噪声环境,或是其它恶劣条件,而系统在这种条件下能否正常工作至关重要。
Abstract:
Key words :

  在工業(yè)環(huán)境中,電子系統(tǒng)通常工作在極端的溫度條件下,或處 于電子噪聲環(huán)境,或是其它惡劣條件,而系統(tǒng)在這種條件下能 否正常工作至關(guān)重要。舉例來說,如果發(fā)送給控制機器臂位置 的DAC 的數(shù)據(jù)遭到破壞,機器臂就會按非預(yù)期的方向移動, 這不僅危險,而且代價巨大。試想一下,機器臂如果砸到生產(chǎn) 線上的新車,或者更糟,砸到生產(chǎn)工人,后果會怎樣?

  有幾種方法可以確保收到正確數(shù)據(jù)后才執(zhí)行動作。最簡單的方 式就是控制器回讀所發(fā)送的數(shù)據(jù)。如果接收的數(shù)據(jù)與發(fā)送的數(shù) 據(jù)不匹配,則說明其中一者已受到破壞,必須發(fā)送新數(shù)據(jù)并進 行驗證。這種方法的確可靠,但產(chǎn)生的開銷也很大,每段數(shù)據(jù) 都必須經(jīng)過驗證,傳輸?shù)臄?shù)據(jù)量要翻一倍。

  另一種替代方法是循環(huán)冗余校驗(CRC),即隨每個數(shù)據(jù)包發(fā) 送一個校驗和(checksum),接收器就會指示是否存在問題, 所以控制器無需驗證接收。校驗和一般通過向數(shù)據(jù)應(yīng)用一個多 項式方程式來生成。應(yīng)用于一個24 位字時,CRC-8 可產(chǎn)生一 個8 位校驗和。將校驗和與數(shù)據(jù)組合在一起,全部32 位都發(fā) 送到能夠分析該組合的器件,并指示是否出錯——這種方法雖 然不是無可挑剔解決方案,但卻比讀寫方法更加高效。

  ADI 公司的眾多DAC 都采用了分組差錯校驗(PEC)的形式 來實現(xiàn)CRC。不需要PEC 功能時,則寫入24 位數(shù)據(jù)。要添加 PEC 功能,24 位數(shù)據(jù)需增加相應(yīng)的8 位校驗和。如果接收的 校驗和與數(shù)據(jù)不一致,輸出引腳被拉低,指示存在錯誤。控制 器清除錯誤,使引腳返回高電平,并重新發(fā)送數(shù)據(jù)。圖1 所示 為如何用SPI 接口應(yīng)用數(shù)據(jù)的示例。表1 列出了能夠采用分組 差錯校驗的ADI 器件示例。

  

  圖1. 采用和不采用分組差錯校驗的SPI 寫入

  表1. 采用分組差錯校驗的ADI 器件示例

 

產(chǎn)品型號 描述
AD5360/AD5361 16通道、16 位/14 位、±10 V DAC
AD5362/AD5363 8通道、16 位/14 位、±10 V DAC
AD5748 電流/電壓輸出驅(qū)動器,適合工業(yè)應(yīng)用
AD5749 電流輸出驅(qū)動器,適合工業(yè)應(yīng)用
AD5750/AD5750-1 電流/電壓輸出驅(qū)動器,輸出范圍可編程,適合 工業(yè)應(yīng)用
AD5751 電流/電壓輸出驅(qū)動器,適合工業(yè)應(yīng)用
AD5755/AD5735 4通道、16 位、4 mA 至20 mA 電流和電壓輸出 DAC
AD5757/AD5737 4通道、16 位、4 mA 至20 mA 電流輸出DAC
ADT7470 溫度傳感器集線器和風(fēng)扇控制器

 

  生成分組差錯校驗和

  CRC-8 算法采用多項式 C(x) = x8 + x2 + x1 + 1. For x = 2時,此式 等于二進制值100000111。要生成校驗和,需將24 位數(shù)據(jù)左移 8 位,產(chǎn)生一個后8 位為邏輯0 的32 位數(shù)。對齊CRC 多項式, 使其MSB 與該32 位數(shù)據(jù)最左側(cè)的邏輯1 對齊。對該數(shù)據(jù)施加 一個異或(XOR)函數(shù),以產(chǎn)生一個新(更短)的數(shù)字。(數(shù) 字匹配得到邏輯0,不匹配得到邏輯1。)再次對齊CRC 多項 式,使其MSB 與第一個結(jié)果最左側(cè)的邏輯1 對齊,重復(fù)上述 步驟。最后,原始數(shù)據(jù)將減少至小于CRC 多項式的值。此值 即是8 位校驗和。圖2 演示了推演校驗和的方法。

  

  圖2. 生成24 位數(shù)((0x654321))的校驗和

  結(jié)論

  圖2 中的示例采用(十六進制)值0x654321 作為24 位數(shù)據(jù)字。 對該數(shù)據(jù)應(yīng)用CRC-8 多項式可生成校驗和0x86。數(shù)據(jù)和校驗 和發(fā)送至兼容的ADI 公司產(chǎn)品時,只有兩段數(shù)據(jù)都正確到達, 該數(shù)據(jù)才會被接收。此方法提高了數(shù)據(jù)傳輸?shù)目煽啃裕⒖纱_ 保遭破壞的數(shù)據(jù)幾乎永遠不會被接收。

  Author

  Ken Kavanagh [ken.kavanagh@analog.com]是ADI 公司精密DAC 部的應(yīng)用工程師。Ken 自1994 年起一直在應(yīng)用部門工作,目前負責(zé) 為nanoDAC®和denseDAC®產(chǎn)品系列提供應(yīng) 用支持。他1999 年畢業(yè)于利默里克大學(xué),獲 得工學(xué)學(xué)士學(xué)位。

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。