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