基於FPGA的循環冗餘校驗碼設計

2020-11-24 電子產品世界

     在現代數字通信中,要求信息在傳輸過程中造成的數字差錯必須足夠低。但由於通信信道存在噪聲和傳輸特性不 理想等原因造成了信號
的碼間串擾,導致信息在傳輸過程產 生差錯。為了最大限度地保證通信過程中信息的完整性,需 要採用信道編碼技術對可能發生的差錯進行有效地控制,而 循環冗餘校驗碼就是其中一個最有效的編碼技術。

本文引用地址:http://www.eepw.com.cn/article/201703/344838.htm


1  循環冗餘校驗碼基本思想
循環冗餘校驗碼是一種校錯能力很強且使用非常廣泛 的差錯檢驗方法。循環冗餘校驗碼採用在發送的有用碼後面 加入校驗碼來實現數字通信傳輸過程中數據的差錯檢測,通 常的構成可以描述為:K位的有效信息數據串和R位的循環 冗餘校驗碼並在一起傳輸。
1.1 循環冗餘校驗碼生成基本原理
循環冗餘校驗碼(亦稱CRC碼)在通信信號校錯裡廣泛使 用。其基本原理是,在發送端:將要發送的數據串序列當作 一個多項式T(x)的係數(比如,多項式為T(x)=x5+x3+x+1,則 此多項式的係數就為101011,同時可以自定義一個k次冪的 稱為生成多項式的多項式G(x),為了使原來的數據串序列在 後面加入校驗碼,就必須使其向左移,所以用Xk乘以T(x), 根據對二進位乘法的理解,得到的T(x)Xk,能起到把T(x) 原有數據串序列向左移動k位的結果。為了得到校驗碼,用 G(x)作除數,T(x)Xk作被除數,相除得到一個餘數多項式 R(x)。然後將餘數多項式R(x)並在待發送的數據串序列後 面,把這串新的數據串序列作為發送序列發送。在接收端: 再次使用自定義的生成多項式G(x)去除接收到的數據串序列多項式,如果相除所得到的餘數多項式和在發送端計算得到的餘數多項式相同,則表示信號傳輸正常,沒有出現差錯;
如果兩者不相同,就表明信號傳輸錯誤,就必須檢查各方面 因素,重新發送信息,直到兩者相同為止。為了更直觀地說明循環冗餘校驗碼的生成過程、校驗 過程,以8位的有效信息數據串和4位的循環冗餘校驗碼並在 一起傳輸為例。

生成過程:

(1)假設要發送的數據串序列為11011101。

(2)自定義的生成多項式G
(x)=x4+x3+x+1,其中k=4,相對應的序列為11011。
(3)把待發送的數據串序列向左移動4位,後面補0,從 而得到新的數據串序列為110111010000。
(4)使用模2除法,用生成多項式序列去除新生成的數據 串序列。即

這樣得到了餘數多項式R(x)對應序列為1010。
( 5 ) 將 餘 數 多 項 式 R ( x ) 對 應 序 列 並 到 新 數 據 串 序 列 後 面 , 得 到 帶 有 循 環 冗 餘 校 驗 碼 的 數 據 串 序 列 :
110111011010。 校驗過程: 假 如 信 息 在 傳 輸 過 程 中 沒 有 受 到 影 響 而 發 生 錯 誤 的話,接收到的帶有循環冗餘校驗碼的數據串序列必定可以被 在發送端所自定義的生成多項式整除,也就是:

1.2  生成多項式的注意事項 (1)生成多項式的最高位和最低位必須為1。 (2)當所要傳輸的數據序列任何一位發生錯誤時,用生
成多項式做模2除法(即加法不進位,減法不借位,實際上就 是數字邏輯裡的「異或」操作)後要使相除後的餘數不為0。 (3)對於不同的位產生錯誤時,要使餘數也不同。
(4)對餘數繼續做模2除法時,要使餘數循環。

2  Verilog HDL核心程序
2.1  Verilog HDL實現循環冗餘校驗碼的生成代碼

其中DXS表示生成多項式PROCESS(clk,rst_n )
VARIABLE dzl: STD_LOGIC_VECTOR(16 DOWNTO 0); VARIABLE sdzl:     S T D _ L O G I C _ V E C T O R ( 1 1
DOWNTO 0); BEGIN
IF (clk'event and clk='1') THEN IF    rst_n='0' THEN hsd_r<='0';
dcrco_r<=B"0_0000_0000_0000_0000"; ELSIF    dload='1'  THEN
dzl   :=sdata&'0'&'0'&'0'&'0'&'0';
sdzl  :=sdata;
IF dzl(16)='1' THEN
dzl(16 DOWNTO 11):=dzl(16 DOWNTO 11) XOR DXS; END IF;
IF dzl(15)='1' THEN
dzl(15 DOWNTO 10):=dzl(15 DOWNTO 10) XOR DXS; END IF;
IF dzl(14)='1' THEN
dzl(14 DOWNTO 9):=dzl(14 DOWNTO 9) XOR DXS; END IF;
IF dzl(5)='1' THEN

圖1  循環冗餘校驗碼的生成、校驗仿真
dzl(5 DOWNTO 0):=dzl(5 DOWNTO 0) XOR DXS; END IF;
dcrco_r<=sdzl & dzl(4 DOWNTO 0);

hsd_r<='1'; ELSE hsd_r<='0'; END IF; END IF;
END PROCESS;
2.2  循環冗餘校驗碼的校驗代碼

PROCESS(clk,rst_n)

VARIABLE rdzl:     STD_LOGIC_VECTOR(16 DOWNTO 0); BEGIN
IF (clk'event and clk='1') THEN IF rst_n='0'    THEN
rd_r    <=X"000";

dfsh_r    <='0';

err_r <='0';

ELSIF    hrecv='1'  THEN

rdcrc_r    <=datacrci;

rdzl         :=datacrci(16 DOWNTO 0); IF    rdzl(16)='1'     THEN
rdzl(16 DOWNTO 11):=rdzl(16 DOWNTO 11) XOR DXS; END IF;
IF    rdzl(15)='1'     THEN

rdzl(15 DOWNTO 10):=rdzl(15 DOWNTO 10) XOR DXS; END IF;
IF    rdzl(14)='1'     THEN

rdzl(14 DOWNTO 9):=rdzl(14 DOWNTO 9) XOR DXS; END IF;
IF rdzl(5)='1' THEN

rdzl(5 DOWNTO 0):=rdzl(5 DOWNTO 0) XOR DXS; END IF;
IF    rdzl(5 DOWNTO 0)="000000"
THEN

rd_r    < = r d c r c _ r ( 1 6DOWNTO 5);
dfsh_r    <='1';

err_r<='0'; ELSE rd_r<=X"000"; err_r<='1'; END IF;
ELSE dfsh_r<='0'; END IF; END IF;
END PROCESS;
對循環冗餘校驗碼的生成和校驗進行了功能仿真,結 果如圖1所示。

3  循環冗餘校驗碼的應用
由於循環冗餘校驗碼強大的校驗能力,在不同領域, 循環冗餘校驗碼的生成多項式位數也不同,根據IEEE官方 文件顯示,為了更好地保證校驗可靠度,現在的位數越來越 大,目前最長的循環冗餘校驗碼已達到160位。下面簡單介 紹幾種常見的循環冗餘校驗碼及其應用領域。
(1)USB接口用CRC5。對應的標準生成多項式:
P(x) = x5 + x2 + 1 (2)ATM協議等用CRC8。對應的標準生成多項式:P(x) = x8 + x2 + x + 1 (3)文件傳輸通信協議,X25協議等用CRC16。對應的標
準生成多項式:
P(x) = x16 + x12 + x5 + 1 (4)IEEE802.3標準用CRC32。對應的標準生成多項式: P(x) = x32 + x26 + x23 + x22 + x12 + x11 + x10 + x8 + x7 + x5 + x4 + x2
+ x + 1
(5)ISO 3309規定的CRC64。對應的生成多項式:
P(x) =x64 + x62 + x57 + x55 + x54 + x53 + x52 + x47 + x46 + x45 + x40
+ x39 + x38 + x37 + x35 + x33 + x32 + x31 + x29 + x27 + x24 + x23 + x22 + x21 +
x19 + x17 + x13 + x12 + x10 + x9 + x7 + x4 + x + 1

4  結語
循 環 冗 餘 校 驗 碼 已 經 成 為 各 行 各 業 通 信 校 驗 中 最 普 遍的校驗方式。本設計將循環冗餘校驗碼的生成與校驗過 程進行細緻的分析,最終採用Altera公司開發的FPFA晶片 EP1C12Q240C8進行結果驗證。實驗表明FPGA在實現循環 冗餘校驗碼方面有著簡單高效的優勢。在未來實現更多位的 循環冗餘校驗中有著更深遠的用途。


相關焦點

  • 可實現快速鎖定的FPGA片內延時鎖相環設計
    (DLL)是一種基於數字電路實現的時鐘管理技術。DLL可用以消除時鐘偏斜,對輸入時鐘進行分頻、倍頻、移相等操作。文中介紹了FPGA晶片內DLL的結構和設計方案,在其基礎上提出可實現快速鎖定的延時鎖相環OSDLL設計。在SMIC 0.25μm工藝下,設計完成OSDLL測試晶片,其工作頻率在20~200 MHz,鎖定時間相比傳統架構有大幅降低。關鍵詞:延時鎖相環
  • FPGA的FIR抽取濾波器設計
    本文介紹了一種採用Xilinx公司的XC2V1000實現FIR抽取濾波器的設計方法。本文引用地址:http://www.eepw.com.cn/article/270379.htm  具體實現  結構設計  基於抽取濾波器的工作原理,本文採用XC2V1000實現了一個抽取率為2、具有線性相位的3階FIR抽取濾波器,利用原理圖和VHDL共同完成源文件設 計。
  • 基於單片機的智能超聲波潔牙機設計
    1.4 強度控制  本潔牙機設計了靈敏的強度控制電路。PIC16F73的RAl腳外接電位器Rw1,調在不同位置則RAl輸入的模擬電壓不同,經PICl6F73內部A/D轉換為數位訊號,該信號決定由CCPl輸出的PWM信號的佔空比。
  • 如何有效防止FPGA設計被克隆?
    全數字設計的尺寸很小,一般在賽靈思的Spartan 3 FPGA中只佔用256個片(slice)。基於安全性考慮,這種內核只提供加密過的EDIF網表。該IP採用了多種技術來阻止「反向工程」,並且能夠將自己隱蔽起來防止受到篡改或檢測。DesignTag內核很大程度上獨立於用戶設計,因此對設計流程的影響很小。
  • 基於FPGA的數字下變頻的研究與實現
    2 信號下變頻方案的設計 設信號的中頻頻率為典型值70 MHz,帶寬為lO MHz,則基帶帶寬B為5 MHz。現階段商用數字下變頻晶片都是基於CIC和HBF級聯方式設計的,當採樣率大抽取倍數小時,晶片處理帶寬比較窄,濾波器組的濾波性能也不理想。同時DSP晶片數據處理速度達不到要求,所以採用FPGA實現該數字下變頻系統。2.1 採樣頻率fs的確定 由於過採樣的頻率要求達到150 MHz以上,速率比較高,不易實現,所以設計方案採用帶通採樣。
  • 基於FPGA的高階FIR抽取濾波器有效實現結構
    抽取濾波作為多速率信號處理中基本運算單元,基於FPGA的FIR抽取濾波器設計和實現是數字下變頻、信道化等眾多領域中一個重要環節。目前,採用FPGA實現FIR濾波器主要存在的問題是FPGA晶片中乘法器資源較少。在已知硬體FPGA晶片乘法器資源約束條件下,設計更為有效的FIR濾波器實現結構是致力研究的內容。
  • 分析高可用性系統的硬體和軟體設計模式
    高可用性系統的設計通過對冗餘硬體和軟體進行組合,無需人為幹預即可管理故障檢測和糾錯。本文首先簡要回顧了與高可用性系統和故障管理相關的一些概念,然後研究了容錯系統的一些硬體和軟體設計模式。容錯基於這樣的思想(或願望):多個獨立的故障不會同時攻擊系統。容錯系統應能規避單點失效,換言之,如果系統的某部分可能出現故障,那麼系統中應當存在解決該故障的冗餘部分,從而避免失效。 冗餘具有很多種形式: 1. 硬體冗餘(低端、高端或兩者兼有); 2. 軟體冗餘; 3.
  • Nature Communications | 基於SV的群體研究揭示了大西洋鮭魚的進化與適應性
    鮭科魚類在硬骨魚的共同祖先發生WGD事件後,又在80-100百萬年前發生了特異性的WGD事件,使得其基因組中保留了較多的冗餘基因,這可能會影響SV的選擇性保留。目前對大西洋鮭魚群體結構的研究大多基於SNP進行,因此開展大西洋鮭魚群體的SV研究可為其馴化機制解析提供新見解。
  • 基於Altera DE2 FPGA開發平臺實現TH-UWB窄脈衝信號發生器系統設計
    基於Altera DE2 FPGA開發平臺實現TH-UWB窄脈衝信號發生器系統設計 李曉歡,陳倩,李 發表於 2021-01-11 12:51:00   作者:李曉歡,陳倩,李全,陳石平 引言
  • 基於SHT75溫溼度傳感器的設計與應用
    摘要:系統基於SHT75溫溼度傳感器,利用EPA總線技術,實現有線網絡的通信和對工業現場溫度與溼度的監測,為用戶提供一個適時性與便利性的遠程監測系統。本系統就是基於SHT75溫溼度傳感器,利用工業乙太網技術,實現對工業現場的溫溼度的遠程監測。
  • 基於單片機的自動貓廁所設計(任務書)
    江蘇理工學院 2019屆畢業設計(論文)任務書學 院 電氣信息工程學院題 目 基於單片機的自動貓廁所設計 主要內容及基本要求 主要內容:基於單片機,設計一個自動開關門具有自動清理貓排廢物的簡易貓廁所。
  • 低成本小型循環水養殖系統是如何設計的?
    低成本小型循環水養殖系統是如何設計的?近期在天津出差,有幸親眼見證了一套低成本的循環水養殖系統。與我們傳統觀念裡,高大上造價高昂的循環水養殖場相比,這套循環水養殖系統又有哪些功能和特點呢?2016年12月21日,天津霧霾嚴重,偉倫萬特的梁超知道我過來想看看循環水養殖系統時,就驅車帶我去了在天津的兩個客戶基地,其中一家是利用循環養殖海馬的基地,這個基地面積不大,車間內總佔地面積感覺只有100平米左右。
  • 基於PID算法的速熱式飲水機控制器設計
    針對目前市場上的速熱式飲水機存在的溫度控制問題和幹燒現象,設計基於STC1 5F204單片機的溫控系統,以水箱水溫、出水水溫、電源電壓和水流量為反饋量的PID控制,結合外圍控制電路,實現對飲用水的快速加熱和水溫的控制。重點介紹了控制器硬體電路的設計和工作原理以及程序的結構和實現。
  • 基於AT89S52單片機的電子萬年曆系統設計
    摘要:為設計一款電路簡潔、走時準確、功能齊全的家用電子萬年曆,利用AT89S52單片機進行可編程控制,結合外圍溫度傳感器、液晶屏等,實現了萬年曆的時間日期準確顯示,人性化的鬧鐘設置以及環境溫度的實時顯示。
  • 基於單片機旋轉時鐘的設計
    摘要:目前,社會、家庭普遍使用的是機械錶盤時鐘,而一款打破傳統的電子旋轉時鐘如果推出就能夠以其新穎的創意來吸引人們,於是文章就研究並設計了一個基於單片機的電子旋轉時鐘。而一款旋轉時鐘不僅在創意上擺脫了傳統時鐘的設計而且也能迎合人們獵奇的心理,並且功能也可以多樣化,不僅可以顯示時間、日期,甚至連文字都能夠顯示。文章基於單片機設計了一款跟傳統機械時鐘一樣具有秒針、分針、時針和錶盤刻度的旋轉時鐘,並且具有準確顯示即時時間和校準時間功能,且均可由紅外遙控器方便完成。
  • 基於Atmega8的智能微波探測器設計
    摘要:微波具有直線傳播、波段寬、設備小、穿透力和抗幹擾能力強等優點,基於此設計了一種基於Atmega8低功耗智能微波探測器,經測試,該探測器靈敏度高、功耗低、穩定性好,適用於自動門控制開關、室內外安全防範系統、ATM自動提款機的自動錄像控制系統、野外安全警示等場所
  • 基於I2S的USB 音效卡系統設計
    本文介紹了一種基於ARM處理器的USB音效卡設計。USB音效卡原理由USB音效卡數據流圖(見圖1)可以看出USB音效卡的工作原理。在主機端播放音樂時,應用軟體或驅動程序把各類音頻信號轉換為統一的格式,如PCM、MPEG等格式的數據流,通過主機的USB接口發送給USB音效卡。
  • 基於51單片機的高級計算器設計
    本設計是基於51單片機科學型計算器。
  • 拒絕冗餘囤積 格調小型冰箱帶你重回健康賞味生活
    拒絕冗餘囤積 格調小型冰箱帶你重回健康賞味生活時間:2020-06-09 16:15   來源:搜狐   責任編輯:青青 川北在線核心提示:原標題:拒絕冗餘囤積,格調小型冰箱帶你重回健康賞味生活 有人說冰箱是拯救人類胃覺的偉大發明,它延緩了食物腐敗的速度,讓人們儘可能地不受時間和空間的限制享用到新鮮的食物和清爽的冷飲。