CRC(循環冗余校驗)是一種根據數據產生簡短固定位數校驗碼的常用方法,主要用來檢查數據傳輸或者保存后是否有錯誤。CRC計算單元的工作過程如下:
1. 首先,CRC計算單元會初始化一個寄存器(通常是一個32位或64位的寄存器),初始值是生成多項式(在這個問題中是0x4C11DB7)。
2. 然后,CRC計算單元會逐位處理輸入的數據緩沖區。對于每一個數據位,它都會將寄存器的當前值與這一位進行異或操作。
3. 如果結果的最高位(第31位或第63位)是1,那么CRC計算單元就會將寄存器與生成多項式進行模2除法,并將余數保留在寄存器中。
4. 這個過程會持續到所有的數據位都被處理完。最后,寄存器中的值就是CRC碼。
注意,這個過程中的關鍵步驟就是異或操作和模2除法,它們都是計算機科學中的基本操作。
審核編輯 黃宇
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。
舉報投訴
-
寄存器
+關注
關注
31文章
5608瀏覽量
129972 -
crc
+關注
關注
0文章
205瀏覽量
30834
發布評論請先 登錄
相關推薦
熱點推薦
【量產燒錄】Verify通過還報錯?拆一次CRC校驗的實現機制就明白問題在哪
+內核的MCU,采用I2C BSL方式燒錄。開發一套燒錄工具時,CRC算法完全參照官方BSL協議文檔實現,本地計算結果與芯片返回的CRC始終對不上。
換了地址范圍,換
發表于 02-13 10:10
查找表與多項式近似算法實現初等函數
查找表與多項式近似結合算法是一種把查找表算法和多項式近似算法綜合到一起的算法。這種算法綜合了兩種基本算法各自優勢,通過將多項式各項系數存入查找表提高計算效率。
發表于 10-28 08:10
想從linux系統讀回CYC65215部件的配置程序映像,并檢查其CRC是否正確(假設它有附加 CRC),圖像有CRC嗎?
我想從 linux 系統讀回 CYC65215 部件的配置程序映像,并檢查其 CRC 是否正確(假設它有附加 CRC)。圖像有 CRC 嗎? CRC 是否使用標準
發表于 05-23 06:22
FreeRTOS進階使用之流緩沖區:高效處理字節流的秘密武器
工具,通過合理設置觸發閾值和緩沖區大小,可顯著提升系統性能。實際開發中需注意多核同步、阻塞策略及數據格式設計,必要時結合消息緩沖區實現更復雜的通信需求。掌握這一機制,將助你在嵌入式開發
發表于 03-24 11:37
這個CRC計算單元是如何基于固定的生成多項式(0x4C11DB7)來獲取給定數據緩沖區的CRC碼的?
評論