【導讀】在工業(yè)環(huán)境中,電子系統通常工作在極端的溫度條件下,或處于電子噪聲環(huán)境,或是其它惡劣條件,而系統在這種條件下能 否正常工作至關重要。舉例來說,如果發(fā)送給控制機器臂位置 的DAC 的數據遭到破壞,機器臂就會按非預期的方向移動, 這不僅危險,而且代價巨大。試想一下,機器臂如果砸到生產 線上的新車,或者更糟,砸到生產工人,后果會怎樣?
有幾種方法可以確保收到正確數據后才執(zhí)行動作。最簡單的方 式就是控制器回讀所發(fā)送的數據。如果接收的數據與發(fā)送的數 據不匹配,則說明其中一者已受到破壞,必須發(fā)送新數據并進 行驗證。這種方法的確可靠,但產生的開銷也很大,每段數據 都必須經過驗證,傳輸的數據量要翻一倍。
另一種替代方法是循環(huán)冗余校驗(CRC),即隨每個數據包發(fā) 送一個校驗和(checksum),接收器就會指示是否存在問題, 所以控制器無需驗證接收。校驗和一般通過向數據應用一個多 項式方程式來生成。應用于一個24 位字時,CRC-8 可產生一 個8 位校驗和。將校驗和與數據組合在一起,全部32 位都發(fā) 送到能夠分析該組合的器件,并指示是否出錯——這種方法雖 然不是無可挑剔解決方案,但卻比讀寫方法更加高效。
ADI 公司的眾多DAC 都采用了分組差錯校驗(PEC)的形式 來實現CRC。不需要PEC 功能時,則寫入24 位數據。要添加 PEC 功能,24 位數據需增加相應的8 位校驗和。如果接收的 校驗和與數據不一致,輸出引腳被拉低,指示存在錯誤。控制 器清除錯誤,使引腳返回高電平,并重新發(fā)送數據。圖1 所示 為如何用SPI 接口應用數據的示例。表1 列出了能夠采用分組 差錯校驗的ADI 器件示例。
圖1. 采用和不采用分組差錯校驗的SPI寫入
表1. 采用分組差錯校驗的ADI 器件示例
生成分組差錯校驗和
CRC-8 算法采用多項式 C(x) = x8 + x2 + x1 + 1. For x = 2時,此式 等于二進制值100000111。要生成校驗和,需將24 位數據左移 8 位,產生一個后8 位為邏輯0 的32 位數。對齊CRC 多項式, 使其MSB 與該32 位數據最左側的邏輯1 對齊。對該數據施加 一個異或(XOR)函數,以產生一個新(更短)的數字。(數 字匹配得到邏輯0,不匹配得到邏輯1。)再次對齊CRC 多項 式,使其MSB 與第一個結果最左側的邏輯1 對齊,重復上述 步驟。最后,原始數據將減少至小于CRC 多項式的值。此值 即是8 位校驗和。圖2 演示了推演校驗和的方法。
圖2. 生成24 位數((0x654321))的校驗和
結論
圖2 中的示例采用(十六進制)值0x654321 作為24 位數據字。 對該數據應用CRC-8 多項式可生成校驗和0x86。數據和校驗 和發(fā)送至兼容的ADI 公司產品時,只有兩段數據都正確到達, 該數據才會被接收。此方法提高了數據傳輸的可靠性,并可確 保遭破壞的數據幾乎永遠不會被接收。
推薦閱讀:
升壓電源和高壓DAC為天線和濾波器提供調諧信號