循環(huán)冗余校驗確保正確的數(shù)據(jù)通信
在工業(yè)環(huán)境中,電子系統(tǒng)通常工作在極端的溫度條件下,或處于電子噪聲環(huán)境,或是其它惡劣條件,而系統(tǒng)在這種條件下能否正常工作至關(guān)重要。舉例來說,如果發(fā)送給控制機(jī)器臂位置的DAC 的數(shù)據(jù)遭到破壞,機(jī)器臂就會按非預(yù)期的方向移動,這不僅危險,而且代價巨大。試想一下,機(jī)器臂如果砸到生產(chǎn)線上的新車,或者更糟,砸到生產(chǎn)工人,后果會怎樣?
有幾種方法可以確保收到正確數(shù)據(jù)后才執(zhí)行動作。最簡單的方式就是控制器回讀所發(fā)送的數(shù)據(jù)。如果接收的數(shù)據(jù)與發(fā)送的數(shù)據(jù)不匹配,則說明其中一者已受到破壞,必須發(fā)送新數(shù)據(jù)并進(jìn)行驗證。這種方法的確可靠,但產(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ù)不一致,輸出引腳被拉低,指示存在錯誤??刂破髑宄e誤,使引腳返回高電平,并重新發(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 |
||
|
溫度傳感器集線器和風(fēng)扇控制器 |
|
生成分組差錯校驗和
CRC-8 算法采用多項式 C(x) = x8 + x2 + x1 + 1. For x = 2時,此式等于二進(jìn)制值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ù)((0x*321))的校驗和
結(jié)論
圖2 中的示例采用(十六進(jìn)制)值0x*321 作為24 位數(shù)據(jù)字。對該數(shù)據(jù)應(yīng)用CRC-8 多項式可生成校驗和0x86。數(shù)據(jù)和校驗和發(fā)送至兼容的ADI 公司產(chǎn)品時,只有兩段數(shù)據(jù)都正確到達(dá),該數(shù)據(jù)才會被接收。此方法提高了數(shù)據(jù)傳輸?shù)目煽啃裕⒖纱_保遭破壞的數(shù)據(jù)幾乎永遠(yuǎn)不會被接收。