基于FPGA的循環(huán)冗余校驗實(shí)驗系統的實(shí)現
摘要:文章首先分析了循環(huán)冗余校驗碼的功能,在此基礎上提出了基于FPGA的實(shí)現方法,詳細闡述了CRC校驗編解碼的實(shí)現方法,并提出了基于現有的實(shí)驗箱設備實(shí)現小型的CRC校驗系統的總體設計框架和設計思路,完成了CRC校驗實(shí)驗系統的設計,充分提高了設備的使用效率。
關(guān)鍵字:循環(huán)冗余校驗 CRC編解碼 實(shí)驗系統
一、引言
隨著(zhù)人們對數據業(yè)務(wù)的需求越來(lái)越多,數據通信在近來(lái)得到了長(cháng)足的發(fā)展。但是由于通信信道傳輸特性的不理想和加性噪聲的影響,設備之間的數據通信常會(huì )發(fā)生一些無(wú)法預測的錯誤,為確保高效而無(wú)差錯的傳輸數據,降低錯誤而帶來(lái)的影響,必須對數據進(jìn)行差錯檢測及控制。在諸多檢錯手段中,循環(huán)冗余檢測方法(CRC)是非常有效的一種方法。CRC是對傳送數據進(jìn)行校驗的特點(diǎn)是:檢錯能力極強,開(kāi)銷(xiāo)小,易于編程。從其檢錯能力來(lái)看,它所不能發(fā)現錯誤的幾率達0.0047%以下,從其性能及開(kāi)銷(xiāo)上均遠遠優(yōu)于奇偶校驗以及算術(shù)和檢錯等方式。因而,在數據存儲和數據通信領(lǐng)域,CRC無(wú)處不在。
FPGA是在PAL、GAL、PLD等可編程器件的基礎上進(jìn)一步發(fā)展的產(chǎn)物,采用了邏輯單元陣列這樣一個(gè)新概念,內部包括可配置邏輯模塊CLB、輸出輸入模塊IOB和內部連線(xiàn)三個(gè)部分。用戶(hù)可對FPGA內部的邏輯模塊和I/O模塊重新配置,以實(shí)現用戶(hù)的邏輯。它還具有靜態(tài)可重復編程和動(dòng)態(tài)在系統重構的特性,使得硬件的功能可以像軟件一樣通過(guò)編程來(lái)修改。FPGA如同一張白紙或是一堆積木,工程師可以通過(guò)傳統的原理圖輸入法,或是硬件描述語(yǔ)言自的設計一個(gè)數字系統。通過(guò)軟件仿真,我們可以事先驗證設計的正確性。因此,FPGA的使用非常靈活。利用FPGA實(shí)現CRC校驗是一個(gè)高效的切實(shí)可行的方法。
在教學(xué)過(guò)程中,我們嘗試利用現有的EDA實(shí)驗箱設備,設計實(shí)現小型的CRC校驗系統,拓展設備的功能,提高設備使用效率。
二、系統總體設計
循環(huán)冗余校驗CRC是數據通信領(lǐng)域中最常用的一種差錯校驗碼,其特征是信息字段和校驗字段的長(cháng)度可以任意選定。它的基本原理是:在K位信息碼后再拼接R位的校驗碼,整個(gè)編碼長(cháng)度為N位,因此,這種編碼又叫(N,K)碼。對于一個(gè)給定的(N,K)碼,可以證明存在一個(gè)最高次冪為N-K=R的多項式G(x)。根據G(x)可以生成K位信息的校驗碼,而G(x)叫做這個(gè)CRC碼的生成多項式。
校驗碼的具體生成過(guò)程為:假設發(fā)送信息用信息多項式C(x)表示,將C(x)左移R位,則可表示成C(x)*2R,這樣C(x)的右邊就會(huì )空出R位,這就是校驗碼的位置。通過(guò)C(x)*2R除以生成多項式G(x)得到的余數就是校驗碼。
生成多項式是接受方和發(fā)送方的一個(gè)約定,也就是一個(gè)二進(jìn)制數,在整個(gè)傳輸過(guò)程中,這個(gè)數始終保持不變。在發(fā)送方,利用生成多項式對信息多項式做模2除(異或運算)生成校驗碼。在接受方利用生成多項式對收到的編碼多項式做模2除(異或運算)檢測,當被傳送信息(CRC
碼)任何一位發(fā)生錯誤時(shí),被生成多項式做模2除(異或運算)后應該使余數不為0。
基于這樣的原理,利用FPGA實(shí)現的小型的循環(huán)冗余校驗實(shí)驗系統可以由五個(gè)部分組成:數據輸入電路、CRC編碼處理電路、CRC解碼處理電路、時(shí)鐘電路、顯示電路。作為CRC校驗的輸入部分,本設計采用通用的數字機械式鍵盤(pán)。本系統顯示信息電路采用共陰極8位7段數碼管顯示碼值,使用3-8譯碼器譯碼。CRC校驗結果提示電路用LED燈顯示,方便、簡(jiǎn)潔。時(shí)鐘電路使用可調數字信號源產(chǎn)生時(shí)鐘。編解碼處理電路使用FPGA適配器。發(fā)送端首先將數據寫(xiě)入設計好的FIFO存儲器,然后依次地調出數據進(jìn)行編碼,然后將生成的CRC碼發(fā)送出去,并給以接收端一個(gè)接收信號;接收端收到信號后,開(kāi)始對接收到的數據進(jìn)行解碼,并將解碼信息反饋給發(fā)送方。當解碼正確時(shí),發(fā)送方繼續發(fā)送下一個(gè)數據,當解碼錯誤時(shí),發(fā)送方把剛發(fā)的數據重新調出,進(jìn)行編碼,發(fā)送出去。系統原理圖見(jiàn)圖1。
fpga相關(guān)文章:fpga是什么
評論