成都理工大學信息科學與技術學院 周 亮 余小平
基于FPGA的循環冗余校驗碼設計
成都理工大學信息科學與技術學院 周 亮 余小平
本文主要介紹了循環冗余校驗碼的模塊設計及其基本原理,并利用Verilog HDL設計循環冗余校驗碼,給出了基于FPGA的可編程邏輯器件的實現方法及其仿真結果.同時闡述了循環冗余校驗碼的應用前景。
循環冗余校驗碼;Verilog;FPGA
在現代數字通信中,要求信息在傳輸過程中所造成的數字差錯必須足夠低。但由于通信信道里存在的噪聲和通信信道不理想的傳輸特性造成了信號的碼間串擾,從而導致了信息在傳輸過程產生了差錯。所以為了最大限度的保證通信過程中信息的完整性,就需要采用信道編碼技術對可能發生的差錯進行有效的控制,而循環冗余校驗碼就是其中一個最有效的編碼技術。
循環冗余校驗碼是一種校錯能力很強且使用非常廣泛的差錯檢驗方法。其通用的構成可以描述為:K位的有效信息數據串和R位的循環冗余校驗碼并在一起傳輸。
1.1 循環冗余校驗碼生成基本原理
循環冗余校驗碼在通信信號校錯里廣泛使用。其基本原理是在發送端:將要發送的數據串序列當作一個多項式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。自定義的生成多項式G(x)=x4+x3+x+1,其中k=4,相對應的序列為11011。
(2)把待發送的數據串序列向左移動4位,后面補0,從而得到新的數據串序列為110111010000。
(3)使用模2除法,用生成多項式序列去除新生成的數據串序列。即:
這樣得到了余數多項式R(x)對應序列為1010。
(4)將余數多項式R(x)對應序列并到新數據串序列后面,得到帶有循環冗余校驗碼的數據串序列:110111011010。
校驗過程:
假如信息傳輸正常,接收到的帶有循環冗余校驗碼的數據串序列必定可以被在發送端所自定義的生成多項式整除,也就是:
2.1 Verilog HDL實現循環冗余校驗碼的生成代碼
其中polynomial表示生成多項式
if(dtemp[11]) dtemp[11:6] = dtemp[11:6]?polynomial;
if(dtemp[10]) dtemp[10:5] = dtemp[10:5]?polynomial;
if(dtemp[9]) dtemp[9:4] = dtemp[9:4]?polynomial;
if(dtemp[8]) dtemp[8:3] = dtemp[8:3]?polynomial;
if(dtemp[7]) dtemp[7:2] = dtemp[7:2]?polynomial;
if(dtemp[6]) dtemp[6:1] = dtemp[6:1]?polynomial;
圖1
2.2 循環冗余校驗碼的校驗代碼
對循環冗余校驗碼的生成和校驗進行了功能仿真,結果如圖1所示。
由于循環冗余校驗碼強大的校驗能力,在不同領域,循環冗余校驗碼的生成多項式位數也不同,根據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。
對應的標準生成多項式:
循環冗余校驗碼己經成為各行各業通信校驗中最普遍的校驗方式。本設計將循環冗余校驗碼的生成與校驗過程進行細致的分析,最終采用Altera公司開發的FPFA芯片EP1C12Q240C8進行結果驗證。實驗表明FPGA在實現循環冗余校驗碼方面有著簡單高效優勢。在未來實現更多位的循環冗余校驗有著更深遠的用途。
[1]樊昌信,曹麗娜.通信原理[M].北京:國防工業出版社,2008.
[2]Volnei A.Pedroni.Circuit Design with VHDL[M].BeiJing:Publishing House of Electronics Industry,2005.
[3]蔣立平.數字邏輯電路與系統設計[M].北京:電子工業出版社,2008.
[4]閻石.數字電子技術基礎(第四版)[M].北京:高等教育出版社,2008.
[5]花漢兵,付文紅.EDA技術與實驗(第2版)[M].北京:機械工業出版社,2013.
[6]周立功.EDA實驗與實踐[M].北京:北京航空航天大學出版社,2006.
余小平(1970—),四川鄰水人,成都理工大學副教授,主要從事測試計量技術及儀器科研與教學工作。
周亮(1990—),江蘇沭陽人,碩士研究生,研究方向:電子技術及通信。