【電子信息工程畢業(yè)設計 文獻綜述 開題報告】基于FPGA的差錯控制編碼的設計與實現(xiàn)
《【電子信息工程畢業(yè)設計 文獻綜述 開題報告】基于FPGA的差錯控制編碼的設計與實現(xiàn)》由會員分享,可在線閱讀,更多相關《【電子信息工程畢業(yè)設計 文獻綜述 開題報告】基于FPGA的差錯控制編碼的設計與實現(xiàn)(49頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、【電子信息工程畢業(yè)設計+文獻綜述+開題報告】基于FPGA的過失控制編碼的設計與實現(xiàn) 〔20_ _屆〕 本科畢業(yè)設計 基于FPGA的過失控制編碼的設計與實現(xiàn) 摘 要 本文主要介紹了電子設計自動化〔EDA〕技術的主要特點、現(xiàn)狀、前景及意義,并就課題的研究方向做了相關的論述。進一步論述了EDA技術的開展對電路設計應用的影響,探討了通過VHDL語言和可編程門陣列〔FPGA〕進行電路設計開發(fā)的流程。以其作為應用對象,進一步編程開發(fā)了 8,4 增余漢明碼的編碼、譯碼,循環(huán)冗余過失校驗編碼 CRC 和MD5編碼。通過對前兩種編碼各個模塊
2、進行設計,完整闡述了對前兩種編碼軟件局部的設計。同時,通過測試,完善,修改,最終完成了各自獨立的編碼程序?;赩HDL硬件描述語言,利用FPGA器件開發(fā)的過失控制編碼系統(tǒng),采用了自頂向下的設計方法用VHDL語言進行設計,選用當前應用最廣泛的EDA軟件XILINX ISE作為開發(fā)平臺及配套的MULTISIM仿真工具。所有程序全部通過了該平臺的編譯和功能仿真測試,得出了實際的仿真波形,最后,對設計調(diào)試過程中出現(xiàn)的問題進行了分析、研究、解決。我還對上述這些各種編碼的異同點進行了分析總結,對MD5編碼進行了算法分析,進而對這些編碼進行討論。 關鍵詞:FPGA,VHDL,漢明碼,循環(huán)冗余碼,MD5碼
3、 The Design and Implementation of Error Control Coding based on FPGA Abstract This paper mainly introduced the main characteristics, current situation and prospects and significance of EDA technology, and puts some elaboration in related to research directions of the topic.And further discussed th
4、e influence of EDA technology development to CAD, ?explored the VHDL language and FPGA for circuit design development process. As an applied objects, the coding and decoding of?Hamming code, CRC coding and MD5 coding are further designed. Through the design of module in first two coding each, the f
5、irst two coding software part of the design is completely elaborated .At the same time, through the testing and modification, the independent encoding program is completed eventually. The development of error-controlling codes based on VHDL, using the FPGA device use the top-down design methods , an
6、d select the most widely used ISE XILINX EDA software as the development platform ,and the MODELSIM as a simulation tools. The whole design is passed through the compiler and function simulation test, obtaining the actual simulation waveform. Finally, the debugging problems were analyzed, research
7、ed and solved. I also turned to summary the differences and similarities of these various codings , the algorithm of MD5 coding is also analyzed. Keywords: FPGA,, ?Hamming code, CRC code, MD5 目 錄 摘 要 III Abstract IV 1 緒 論 1 1.1課題的來源 1 1.1.1 EDA技術綜述 1 1.1.2過失控制編碼技術介紹 3 1.2課題的意義 5 1.3過失控制編
8、碼開展現(xiàn)狀 6 1.4課題研究的主要內(nèi)容 6 2 基于FPGA的過失控制編碼技術 8 2.1過失控制編碼的總體設計方案 8 2.2〔8,4〕增余漢明碼的過失控制編碼譯碼設計 8 2.2.1漢明碼編碼譯碼原理 8 2.2.2 〔8,4〕增余漢明碼的算法與實現(xiàn) 8 2.2.3 〔8,4〕漢明碼編碼波形仿真圖 10 2.2.4 〔8,4〕漢明碼譯碼算法實現(xiàn) 10 2.2.5 〔8,4〕漢明碼譯碼波形仿真圖 13 2.2.6 〔8,4〕漢明碼編碼譯碼綜合模塊 13 2.2.7 〔8,4〕漢明碼編碼譯碼綜合波形仿真圖 14 2.3 循環(huán)冗余過失控制校驗碼的設計 15 2.3.1
9、 CRC循環(huán)校驗碼編碼校驗原理 15 2.3.2 CRC循環(huán)碼編碼規(guī)那么 15 2.3.3 CRC循環(huán)碼算法分析 15 2.3.4 CRC校驗生成模塊的設計實現(xiàn) 17 2.3.5 CRC校驗生成模塊仿真波形圖 18 2.3.6 CRC校驗接收模塊的設計實現(xiàn) 19 2.3.7 CRC校驗接收模塊仿真波形圖 20 2.4 MD5碼的算法分析 20 2.5.1 MD5的引言 20 2.5.2 MD5的原理 21 2.5.4 MD5的應用 22 3過失控制編碼技術開發(fā)體會 23 3.1 算法的重要 23 3.2 硬件對軟件的制約影響 23 3.3 調(diào)試的重要性 23 4
10、結束語 24 致 謝 26 附 錄I 27 附 錄II 28 附 錄III 30 附 錄IV 33 1 緒 論 1.1.1 EDA技術綜述 由于大規(guī)模集成電路開發(fā)技術的應用和開展以及電子產(chǎn)品市場運作的進一步加快,涉及諸如通信、、、、技術是在電子技術根底上開展起來的計算機軟件系統(tǒng),是指以計算機為工作平臺,了應用電子技術、計算機技術、信息處理最新成果,進行電子產(chǎn)品的自動設計。利用工具,電子設計師大量工作通過計算機完成,并可以將電子產(chǎn)品從電路設計、性能分析到設計出IC幅員或PCB幅員的整個過程的計算機上自動處理完成。 圖1-1 可編程邏輯器件開發(fā)設計流程圖 接受任務
11、:進行系統(tǒng)設計之前,先要由總體設計部門給出設計的任務和設計的一些要求。 確定功能:對給出的設計任務和設計的一些要求進行分析,確定出具體的功能及要求。 進行分析:決定設計中所要采用的設計方法。 源代碼模擬:在設計中,利用VHDL硬件描述語言仿真器進行源代碼仿真可以在早期開發(fā)中發(fā)現(xiàn)設計上的缺陷、錯誤,并及時進行改正,既而,縮短了開發(fā)周期節(jié)省了大量的設計時間。 綜合、優(yōu)化和布局布線:所謂綜合就是將較高層次的抽象描述,轉化到較低級描述的一種方法,即將設計的VHDL描述轉化成底層電路表示。優(yōu)化是指將設計的時延縮小到最小,有效利用資源。布局布線就是把通過綜合、優(yōu)化所得到的邏輯,安放到一個邏輯器件中
12、的過程,一個較好的布局布線過程,就是將電路的相關局部放置在一起,以消除布線延遲。 布局布線后的設計模擬:布局布線后的設計模擬與源代碼模擬不同,源代碼模擬只是對設計的邏輯功能進行模擬,而布局布線后的設計模擬不僅可以對邏輯功能進行驗證,而且還能對設計時序功能進行驗證。 器件編程和配置:器件編程就是將VHDL設計描述經(jīng)過模擬、綜合、優(yōu)化和布局布線的結果,經(jīng)過一定映射轉化成一個器件編程所用的數(shù)據(jù)文件格式。器件配置就是在功能仿真和時序仿真正確的前提下,將綜合后的文件下載到具體的芯片中進行電路驗證。 過失控制在數(shù)據(jù)通信過程中能發(fā)現(xiàn)也能糾正過失,把錯誤限制在盡可能小的范圍內(nèi)的技術和方法。在信息傳輸
13、中常利用編碼方法對傳輸中產(chǎn)生的過失進行過失控制以提高數(shù)字消息傳輸?shù)臏蚀_率。過失控制系統(tǒng)的組成和原理如圖1-2: 圖1-2 過失控制系統(tǒng)原理圖 圖中虛線內(nèi)的局部就是信號傳輸中的過失控制系統(tǒng)。當沒有過失控制系統(tǒng)時,信源輸出的信息將直接送往信宿。但是由于信道中存在干擾,信道的輸出將發(fā)生錯誤。信號在傳輸中發(fā)生過失的概率是傳輸準確率的一個重要指標。在數(shù)據(jù)傳輸中信道給定以后,如果誤碼率不能滿足既定的要求,就要采取過失控制了。具體的實現(xiàn)方法各有不同,過失控制可以分為前向糾錯法、反應重傳法和混合法三種類型[3]。 〔1〕前向糾錯法 過失控制系統(tǒng)只含有編碼器和譯碼器。從信源輸出的傳輸信號在信道編碼器中被
14、編碼,然后輸出送往信道。因為信道編碼器使用的是糾錯碼,所以譯碼器可以改正傳輸過程中所帶來的大局部過失進而使信宿得到相比照擬正確的序列。 〔2〕反應重傳法 僅僅只利用了檢錯碼來發(fā)現(xiàn)傳輸中帶來的過失,并且在發(fā)現(xiàn)過失以后通過信道反向通知發(fā)信端再重新傳輸相應的一組數(shù)字,以此來提高傳輸信號的準確性。反應重傳法根據(jù)重傳方法的不同還可以分成很多種種實現(xiàn)方式。其中最普遍,最簡單的一種被稱為等待重傳方式。采用這種方式時發(fā)信端每送出一組信號就停下來等待收信端的應答。這時信道譯碼器如果沒有發(fā)現(xiàn)過失便通過反向信道向發(fā)信端發(fā)出表示正確的答復,否那么信源會重新傳輸原先那組信號。 〔3〕混合法 在信道存在交大干擾
15、時,僅用反應重傳會因不斷重傳,而使信息的傳輸速率下降過多,從而僅用前向糾錯又不能保證傳輸信息足夠的準確性。這時兩者兼用比擬有利,這就是所說的混合法。此方法所用的信道編碼是一種既能糾正局部過失,又能發(fā)現(xiàn)大局部過失的碼。信道譯碼器首先糾正那些可以糾正的過失,只對那些不能糾正,但能發(fā)現(xiàn)的過失才要求重傳。這會大大降低重傳的次數(shù)。同時,由于這種碼的檢錯能力非常強,最終所得到的信息的準確率是比擬高的。過失控制編碼又可區(qū)分為檢錯碼和糾錯碼兩種。檢錯碼只能檢查出傳輸中信號出現(xiàn)的過失,發(fā)送方只有重傳數(shù)據(jù)才能夠糾正這種過失;而糾錯碼不僅能檢查出過失而且還能能自動糾正過失,防止了重傳機制。 如今各種數(shù)字通信系
16、統(tǒng)已廣泛用于我們的生產(chǎn)生活中。然而數(shù)字信號在傳輸過程中,由于受到干擾的影響,碼元波形將變壞。接收端收到后可能發(fā)生錯誤判決。由乘性干擾引起的碼間串擾,可以采用均衡的方法糾正。而加性干擾的影響那么需要用其它方法解決。在設計數(shù)字通信系統(tǒng)時,應該首先從合理選擇調(diào)制制度、解調(diào)方法以及發(fā)送功率等方面考慮,使加性干擾缺乏以影響到達誤碼率的要求。在仍不能滿足要求時,就要考慮過失控制措施了,這就是我們研究過失控制技術的意義所在。 現(xiàn)代電子產(chǎn)品面臨高功能、設計周期短、上市快的要求,其復雜度日益加深。一個電子系統(tǒng),可能由數(shù)萬個中小規(guī)模的集成電路構成,這就帶來了體積大、功耗大和可靠性差的問題,解決這一問題的有效方法
17、,就是來用可編程邏輯器件〔PLD〕進行設計??删幊踢壿嬈骷?,尤其是FPGA器件,即現(xiàn)場可編程門陣列,它是在PAL、GAL、CPLD等可編程器件的根底上進一步開展的產(chǎn)物。它是作為專用集成電路領域中的一種半定制電路而出現(xiàn)的,既解決了定制電路的缺乏,又克服了原有可編程器件門電路數(shù)有限的缺點1948年C.E.香農(nóng)〔Shannon〕發(fā)表論文指出,只要采用適當?shù)募m錯碼,就可在多類信道上傳輸消息。宣告了糾錯碼的誕生。自Shannon之后,人們不斷向逼近信道容量努力,取得重大開展,如分組碼,代數(shù)碼,卷積碼,網(wǎng)格碼和Turbo碼。所能到達的性能也越來越接近Shannon限間的距離[5]?,F(xiàn)在利用FPGA技術實現(xiàn)
18、過失控制編碼的種類很多,而且這些具有很強的糾錯、檢錯碼,被廣泛應用到密碼學、通信、磁盤陣列及光存儲、衛(wèi)星通信、移動通信、深空通信等眾多領域[6]。 漢明碼是一種能糾一位錯的線性分組碼, 由于它的編譯碼簡單,在數(shù)據(jù)通信和計算機存儲系統(tǒng)中廣泛應用,如在藍牙和硬盤陣列中[6]。它可以糾正一位錯誤,但對于兩位錯不能檢測,還可能會造成誤糾。盡管,發(fā)生一位錯的概率相對最高, 但在一些要求較高的應用中,漢明碼不能滿足要求。常用的能檢測兩位錯同時能糾正1位錯的糾錯碼有 8,4 擴展?jié)h明碼。 CRC即循環(huán)冗余校驗碼:是數(shù)據(jù)通信領域中最常用的一種過失校驗碼,其特征是信息字段和校驗字段的長度可以任意選定。C
19、RC ,采用CRC 串行算法,即一個時鐘周期內(nèi),有一位數(shù)據(jù)輸入, k 位長度的信息元連續(xù)計算k次后得出校驗碼[7]。這種傳統(tǒng)CRC的產(chǎn)生、校驗方法對于現(xiàn)代實時高速的通信系統(tǒng)已經(jīng)不能滿足其對于信息處理高速化、并行化的要求。因此,本文提出一種新的并行CRC 編碼方法,用VHDL 語言在FPGA 芯片上編程,實現(xiàn)在一個時鐘周期內(nèi)完成一次并行CRC 碼的計算及校驗。該方法可以對不同長度的數(shù)據(jù)進行過失控制,而且大大縮短了CRC碼的校驗周期,為實現(xiàn)循環(huán)冗余校驗提供了一種新思路。 MD5的全稱是Message-Digest Algorithm 5,在90年代初由MIT的計算機科學實驗室和RSA Data
20、Security Inc創(chuàng)造,經(jīng)MD2、MD3和MD4開展而來。Message-Digest一般是指字節(jié)串信息的Hash變換,即把一個任意長度的字節(jié)串變換成一定長的大整數(shù)。MD5還廣泛用于加密和解密技術上,在很多操作系統(tǒng)中,用戶的密碼是以MD5值的方式保存的[8]。 對于過失控制編碼技術的研究,我主要是研究 8,4 增余漢明碼編譯碼、CRC循環(huán)編碼和MD5編碼,首先分別研究這幾種編碼的算法,對前兩種分別應用FPGA技術去實現(xiàn),用VHDL語言去編寫代碼,然后再進行編譯,下載,仿真及其去了解這些編碼;然后是對MD5碼進行研究和算法分析;最后總結出它們的異同點,以適應在以后需要的時候選擇適當?shù)木幋a
21、應用到相應的領域中去。 2 基于FPGA的過失控制編碼技術 在具體設計過程中,采取自上而下的設計思路。首先根據(jù)整體的規(guī)劃設計出模塊的外部輸入輸出引腳定義以及功能,即根據(jù)需求設計出功能模塊的整體外部特性,然后根據(jù)設計的這一外部特性以及功能描述模塊內(nèi)部的實現(xiàn)細節(jié)。 2.2〔8,4〕增余漢明碼的過失控制編碼譯碼設計 漢明碼,是由Richard Hamming于1950年提出的,它屬于線性分組編碼方式,用來糾正單個錯誤的線性分組碼。 假設,原代碼的碼長為k 比特,附加糾錯編碼局部為r比特,當碼字長度n 2r-1,r n-k,r 1,2??????時就稱這種線性分組碼為漢明碼。其根本原
22、理是,將信息碼元、監(jiān)督碼元通過線性方程式聯(lián)系起來,每一個監(jiān)督位被編在傳輸碼字的特定比特位置上。系統(tǒng)對于錯誤的那一位不管是原有信息位中的,或者是附加監(jiān)督位中的都能把它別離開來[9]。從漢明碼的性質可以得知, 8,4 增余漢明碼能夠糾正1位錯,檢測出兩位錯。 .2 〔8,4〕增余漢明碼的算法與實現(xiàn) 8,4 增余漢明碼全碼碼元數(shù)n 8,其中信息碼元數(shù)k 4 ,監(jiān)督碼元數(shù)d 4,其監(jiān)督矩陣為: 對于任何給定的信息碼組,都可以由下式求出相應的監(jiān)督碼元,即: 假設用方程式來表示, 那么上式可以寫成: 從而形成全碼這就是 8,4 增余漢明碼的編碼過程。由于漢明碼編碼VHDL語言描述比擬簡單,
23、在這里就不詳細做介紹,具體見附錄I代碼。 〔8,4〕漢明碼編碼的頂層設計模塊如圖2-1所示: 圖2-1 漢明碼編碼模塊圖 可以看出,輸入為四位并行輸入,編碼后為一個八位的并行輸出。 〔8,4〕漢明碼編碼的底層設計模塊如圖2-2所示: 圖2-2 漢明碼編碼模塊底層關系圖 底部的各個分模塊為兩位的輸入模通過各種邏輯運算,并最終組合在一起形成一個8位的最終編碼輸出。 2.2.3 〔8,4〕漢明碼編碼波形仿真圖: 圖2-3 漢明碼編碼仿真圖 2.2.4 〔8,4〕漢明碼譯碼算法實現(xiàn) [n,k,d]分組碼的譯碼步驟可歸結為以下三步: 1 根據(jù)接收到的R計算伴隨式S R??HT;
24、 2 當S 0時,認為接收正確。假設S≠0,由表2-1找出錯誤圖樣E^; 3 由E^和R 找出C^ R-E^。 漢明碼的譯碼較簡單,它可由S 直接得到錯誤圖樣E^。其他分組碼如何由S 求得E^就比擬復雜。而一個譯碼器的復雜性及其譯碼錯誤概率也是由這一步?jīng)Q定的。 設接收方收到發(fā)送方傳來的一個完整的編碼為:X11,X22,X33,X44,X55,X66,X77,X88,根據(jù)漢明碼校驗矩陣: S1 S2 S3 S4為 8 ,4 增余漢明碼的校驗子。當S1 S2 S3 S4 0000 時,傳送無誤;當S1 S2 S3 S4為偶數(shù)時,可判接收到的全碼中有兩位錯誤,但不能判斷哪兩位錯
25、,可要求發(fā)送方重新發(fā)送全碼;當S1 S2 S3 S4為奇數(shù)時,可根據(jù)表2-1判斷哪一位錯,然后通過軟件來糾錯,完成譯碼過程。 表2-1 〔8,4〕漢明碼校驗參數(shù) 錯位 S1 S2 S3 S4 錯位 S1 S2 S3 S4 1 0 1 1 1 5 1 0 0 1 2 1 0 1 1 6 0 1 0 1 3 1 1 0 1 7 0 0 1 1 4 1 1 1 1 8 0 0 0 1 譯碼算法的流程圖如下圖: 圖2-4 漢明碼譯碼流程圖 根據(jù)上述流程圖,用VHDL語言描述〔8,4〕漢明譯碼算法功能模塊如圖2-5所示: 圖2-5 漢明碼譯碼頂層模塊圖 Hamin為漢明8位數(shù)據(jù)輸入
26、,dataout為漢明4位數(shù)據(jù)輸出,sec、ded、ne為診斷輸出。局部代碼如下: IF syndrome "0000" THEN -- 沒出錯的情況; ne '1'; ded '0'; sec '0'; dataout 0 to 3 hamin 0 to 3 ; ELSIF syndrome 0 '1' THEN -- 一位出錯情況; ne '0'; ded '0'; sec '1'; case syndrome 3 DOWNTO 1 IS -- 查表糾錯 when"000"|"001"|"010"|"100" datao
27、ut 0 to 3 hamin 0 to 3 ; when"011" dataout 0 NOT hamin 0 ; dataout 1 to 3 hamin 1 to 3 ; when"101" dataout 1 NOT hamin 1 ; dataout 0 hamin 0 ; dataout 2 to 3 hamin 2 to 3 ; when"110" dataout 2 NOT hamin 2 ; dataout 3 hamin 3 ; dataout 0 to 1
28、hamin 0 to 1 ; when"111" dataout 3 NOT hamin 3 ; dataout 0 to 2 hamin 0 to 2 ; when others dataout "0000"; end CASE; elsif syndrome 0 '0' AND syndrome 3 DOWNTO 1 / "000" THEN -- 兩位出錯情況; ne '0'; ded '1'; sec '0'; dataout 0 to 3 "0000"; END IF ; 當接受校驗無誤,那么診斷輸出ne、ded、se
29、c按“100〞標識,假設一位出錯,那么按“001〞標識,然后在根據(jù)syndrome各位數(shù)判斷是哪位出錯并糾錯,出錯兩位那么按“010〞標識并清0,需要重傳機制。 2.2.5〔8,4〕漢明碼譯碼波形仿真圖: 圖2-6 漢明碼譯碼仿真圖 可以看出,通過譯碼模塊,8位全碼又重新譯碼成原輸入數(shù)據(jù),其中,第三第四組數(shù)據(jù)認為制造了數(shù)據(jù)錯誤,第三組數(shù)據(jù)出錯一位,仿真輸出結果得到了糾正,第四組數(shù)據(jù)由于出錯兩位,清0處理。 2.2.6 〔8,4〕漢明碼編碼譯碼綜合模塊 通過原件例化,對編碼、譯碼電路進行連接得到綜合頂層模塊如下: 圖2-7 漢明碼編碼譯碼綜合頂層模塊圖 對頂層模塊進行細化,如下圖:
30、 圖2-8 漢明碼編碼譯碼綜合底層模塊圖 2.2.7 〔8,4〕漢明碼編碼譯碼綜合波形仿真圖 圖2-9 漢明碼綜合模塊仿真圖 2.3 循環(huán)冗余過失控制校驗碼的設計 2.3.1 CRC循環(huán)校驗碼編碼校驗原理 CRC校驗采用的是多項式編碼的方法。被處理的數(shù)據(jù)塊可以看作是一個n 階的二進制多項式,如一個12 位二進制數(shù)1XXXXXXXXXX010可以表示為:x11+x9+x7+x5+x3+x1+1。多項式乘除法運算的過程與普通代數(shù)多項式的乘除法大體相同。多項式的加減法運算以2為模,加減時不用進位、錯位,和邏輯的異或運算一致。利用CRC 校驗時,發(fā)送方和接收方用要有同一個生成多項式P x
31、,并且要使P〔x〕的首位和最后一位的系數(shù)必須為1。CRC 的處理的方法是:發(fā)送方以P〔x〕去除T〔x〕,得到余數(shù)R作為CRC 校驗碼。校驗的時候,以計算的校正結果的余數(shù)是否為0為據(jù),判斷數(shù)據(jù)幀是否出錯[10]。 CRC 校驗可以準確地檢測出所有奇數(shù)個隨機錯誤和長度小于等于k〔k為P x 的階數(shù)〕的隨機錯誤。所以CRC 的生成多項式P〔x〕的階數(shù)越高,那么誤判的概率就會更小。 2.3.2 CRC循環(huán)碼編碼規(guī)那么 CRC編碼實際上就是將要發(fā)送的M 位二進制多項式T〔x〕轉換成為可以被P〔x〕除盡的M+R位二進制多項式T' x ,因此在解碼時可以用接受到的數(shù)據(jù)去除P〔x〕,如果余數(shù)R為零,那么
32、表示傳輸過程沒有發(fā)生錯誤;如果余數(shù)R不為零,那么在傳輸過程中必定存在錯誤。很多CRC的硬件電路就是按這種方式進行校驗的。同時T' x 可以看做是由T〔x〕和CRC 校驗碼的組合,所以解碼時將接收到的二進制數(shù)據(jù)去掉尾部的R位數(shù)據(jù),得到的就是原始傳輸?shù)臄?shù)據(jù)。 2.3.3 CRC循環(huán)碼算法分析 CRC校驗碼的編碼方法是用待發(fā)送的二進制數(shù)據(jù)T〔x〕除以生成多項式P〔x〕,將最后的余數(shù)作為CRC校驗碼。其實現(xiàn)步驟如下[11]: 〔1〕設要發(fā)送的數(shù)據(jù)塊是一個M位的二進制多項式T〔x〕,生成多項式為R階的P〔x〕。在數(shù)據(jù)塊的末尾添加R個0,數(shù)據(jù)塊的長度增加到M+R位,對應的二進制多項式為T x 。
33、 〔2〕 用生成多項式P〔x〕去除T x ,求得余數(shù)為階數(shù)為R-1 的二進制多項式Y〔x〕。此二進制多項式Y〔x〕就是T〔x〕經(jīng)過生成多項式P〔x〕編碼的CRC校驗碼。 〔3〕 用T x 以模2的方式減去Y〔x〕,得到二進制多項式T' x 。T' x 即為包含了CRC校驗碼的待發(fā)送的字符串。 由于CRC-32、CRC-16、CCITT和CRC-4的編碼過程根本一致,只有位數(shù)和生成多項式不一樣。為了表達上的方便,我們用CRC-4編碼的例子來說明CRC的編碼過程。 設待發(fā)送的數(shù)據(jù)T〔x〕為一個12位的二進制數(shù)據(jù)1XXXXXXXXXX0;CRC-4的生成多項式為P〔x〕 x4+x+1,
34、階數(shù)R為4。首先我們在T〔x〕的末尾添加4個0,數(shù)據(jù)塊就成了1XXXXXXXXXX00000。然后用P〔x〕去除,商的值我們無需考慮,只需要求得余數(shù)Y〔x〕。表2-1給出了舉例數(shù)據(jù)的除法過程。 表2-1用移位除法求校驗碼的過程表 除數(shù)次數(shù) 被除數(shù)/ P〔x〕/結果 余數(shù) 0 1XXXXXXXXXX10000 1001110000 10011 1001110000 1 1001110000 100000 10011 100000 2 100000 0011 10011 0011 從表2-1中可以看出,CRC編碼
35、實際上是一個循環(huán)移位的模2運算。對于CRC-4而言,我們假設有一個5位的數(shù)據(jù)以為存放器,通過反復的移位和進行二進制的除法,最終該存放器中的值去掉最高一位就是我們所要求的余數(shù)。 2.3.4 CRC 校驗生成模塊的設計實現(xiàn) CRC 校驗生成模塊是在XILINX ISE 平臺編程實現(xiàn),程序首先執(zhí)行了11次異或運算,流程圖如2-10所示,然后在作一次異或運算,得到的記過就是crc校驗碼 圖2-10 CRC校驗生成模塊流程圖 根據(jù)上述流程圖,用VHDL語言描述CRC編碼生成模塊如圖2-11所示: 圖2-11 CRC校驗生成模塊 CRC 校驗生成模塊如圖2-11 所示. 其中sdata 是12
36、 位發(fā)送信息,datald 是sdata 的裝載信號,clk是時鐘信號,datacrco 是附加上4 位CRC 校驗碼的16 位CRC 碼,hsend 是與檢錯模塊的握手信號。 2.3.5 CRC校驗生成模塊仿真波形圖 圖2-12 CRC校驗生成模塊仿真波形圖 2.3.6 CRC 校驗接收模塊的設計實現(xiàn) CRC 校驗檢錯模塊編程思想和生成模塊類似,從接收到的CRC 碼中,提取出信息碼,然后將信息碼與生成多項式進行異或運算,最后判斷得到的余數(shù)與CRC 生成模塊中得到的校驗碼是否相同,如果相同,認為信息發(fā)送正確,將輸出的誤碼
37、警告標志信號crcerror 設置為“0〞;反之,那么認為信息發(fā)送錯誤,將crcerror 設置為“1〞。 CRC 校驗檢錯模塊如圖2-13所示,其端口數(shù)據(jù)說明如下: clk :時鐘信號; rdata :接收模塊 檢錯模塊 接收的12 位有效信息數(shù)據(jù); hrecv :接收控制信號; datafini :數(shù)據(jù)接收校驗完成標志信號; datacrci :附加上5 位CRC 校驗碼的17 位CRC 碼; crcerror :錯誤標志信號; 圖2-13 CRC校驗接收模塊的設計實現(xiàn) 2.3.7 CRC校驗接收模塊仿真波形圖 圖2-14 CRC校驗接收模塊仿真波形圖 2.4 MD
38、5碼的算法分析 MD5碼就是把一個任意長度的字節(jié)串變換成一定長的大整數(shù)。即MD5將任意長度的“字節(jié)串〞變換成一個128位的大整數(shù),并且它是一個不可逆的字符串變換算法,換言之,即使你看到源程序和算法描述也無法將一個MD5的值變換回原始的字符串[12]。從數(shù)學原理上說是因為原始的字符串有無窮多個,這有點像不存在反函數(shù)的數(shù)學函數(shù)。 2.5.1 MD5的引言 MD5算法就是把不同長度的信息串轉化到128位編碼中形成Hash值。然后比擬這個數(shù)值是否正確從而確定通信雙方的合法性。這也可以說是一種數(shù)字認證,在數(shù)據(jù)傳輸以后,我們可以通過比擬Hash值,來判斷信息傳輸途中有沒有被被修改,是否是合法人發(fā)送
39、或者是有合法人接收的[13]。利用這種方式,來防止密鑰喪失。由于 MD5加密算法的隨機生成性,沒有正確的Hash 值是不可能解開加密局部的。而且MD5算法同時具備數(shù)字認證的功能,可以證明發(fā)送方和接收方的合法性,比擬適用于那些商業(yè)信息的傳遞。 2.5.2 MD5的原理 該算法輸入任意長度的消息,輸出128 位消息摘要,處理以512位輸入數(shù)據(jù)塊為單位。處理報文摘要的過程如下[14]: 〔1〕添加填充位。在消息的最后,添加適當?shù)奶畛湮皇箶?shù)據(jù)位的長度滿足與448模512同余。 〔2〕添加長度。原消息長度我們用64位表示,且附加在〔1〕的結果后面。由這兩個步驟得到了512整數(shù)倍的報文。將其表示為
40、L個512 位的數(shù)據(jù)塊:Y0,Y1 ,…,YL-1。他們的長度為L×512位,設N L×16,那么得到了長度為N個32 位的字。M[0…N-1]表示以字為單位的消息。 〔3〕初始化MD緩沖區(qū)。一個128位MD緩沖區(qū)用以保存中間和最終散列函數(shù)的結果。它可以表示成4個32位的存放器A、B、C、D。并對其進行初始化: A 67452301 B EFCDAB89 C 98BADCFE D 10325476 存放器內(nèi)容 Word A : 01 23 45 67 Word B: 89 AB CD EF Word C: FE DC BA 98 Word D: 7
41、6 54 32 10 這里采用小數(shù)在前的格式進行存儲。 〔4〕處理消息塊。它包括4輪處理,每次處理都具有相似的結構,但每次使用不同的根本邏輯函數(shù),記為F、G、H、I。每次使用64元素表T[1…64]四分之一。T由正弦函數(shù)構造而成。T的第i個元素表示為T[i],其值等于232×abs sin i 的整數(shù)局部,其中i是弧度。T的每一個元素是一個可以表示成32位的整數(shù)。T表提供了隨機化的32 位模板,消除了在輸入數(shù)據(jù)中的任何規(guī)律性的特征 T 表 T[ 1] D76AA478 T[ 49] F4292244 T[ 2] E8C7B756 T[ 50]
42、 432AFF97 T[ 3] 242070DB T[ 51] AB9423A7 T[ 4] C1BDCEEE T[ 52] FC93A039 …… …… T[ 16] 49b40821 T[ 64] EB86D391 5 輸出結果。 2.5.4 MD5的應用 MD5碼的應用,主要是在加密、解密兩個方面[15]。在我們的解壓縮文件中,有很多就是應用到了MD5碼。由于它的保密工作具有一次性保密工作的特點,不僅保存了一次性口令的優(yōu)點,而且克服了序列密碼一次性口令系統(tǒng)中的小數(shù)攻擊和IP地址欺騙攻擊的漏洞
43、,同時又防止了RSA算法中大整數(shù)質因數(shù)分解的計算效率問題。 3過失控制編碼技術開發(fā)體會 3.1 算法的重要 在剛開始設計這個畢設的時候,我可以說的這個課題不甚了解,有點無從下手的感覺,通過上網(wǎng)查詢和陳老師的教導,我的課題是一個研究性的課題,所以我就要搜集好幾種編碼來分別進行研究,來找出它們的異同點,首先找到的是漢明碼和CRC碼,這兩種廣泛應用于數(shù)字通訊中的編碼,但是我要用FPGA去實現(xiàn),這種用硬件實現(xiàn)起來傳輸速度會很快,可是在這之中算法就是一個很難的問題,我只有理解了算法才能用VHDL的語言來做出來,包括我后來做的MD5編碼,算法也是相當?shù)闹匾?,而且我覺得很難,這些花費我很多的時間。
44、 算法可以說是一種編碼的靈魂,沒有算法我是不可能實現(xiàn)我的研究課題的,這些涉及到很多別的問題,不是很容易明白,我就要不斷地去分析和查找書籍,找出這些原理的所在,為下面的工作做準備。 3.2 硬件對軟件的制約影響 在畢業(yè)設計的過程中,尤其到了硬件調(diào)試的時候,還有一點感受比擬深刻,那就是硬件對軟件設計的影響。由于試驗臺硬件和小組設計試驗板硬件性能不完全相同,致使軟件系統(tǒng)從試驗臺到試驗板的過程中遇到了很多意想不到的問題,最終還是通過修改軟件來適應硬件的標準。 3.3 調(diào)試的重要性 程序寫出來之后,需要進行大量的硬件調(diào)試工作,否那么的話,一旦出現(xiàn)問題,就搞不清楚問題究竟是軟件設計的錯誤還是硬件
45、電路板的錯誤,所以首先解決硬件調(diào)試是必須的。在調(diào)試的過程中,需要有清晰的邏輯思維作根底,對硬件知識有熟練的掌握和靈活的應用。 4 結束語 本課題的研究設計至此就根本完成了。本文研究了EDA技術的開展對電路設計方法的影響,深入討論了用VHDL語言和復雜系統(tǒng)可編程邏輯器件開發(fā)的根本方法,作為應用對象,基于VHDL語言、應用FPGA開發(fā)的過失控制編碼技術,系統(tǒng)采用了“自頂向下〞的設計方法,系統(tǒng)的頂層設計和底層設計采用原理圖輸入描述和VHDL語言進行描述,選用了當前流行的EDA軟件平臺XINLIX ISE作為開發(fā)平臺,所有程序全部通過了該平臺的編譯和功能仿真實驗,在配有SPATANIII芯片的實驗
46、臺上通過了硬件測試。最后,把程序下載到一個獨立的硬件系統(tǒng),經(jīng)過不斷的調(diào)試和改良,終于完成了編碼算法的硬件實現(xiàn)。通過上述工作,我對設計、調(diào)試過程中出現(xiàn)的問題進行了分析、研究、解決。 通過對EDA技術的學習和對這些編碼的初步嘗試,對前幾年的軟硬件方面的知識有了進一步的了解和加深,進一步對軟硬件的結合有了更深的認識。經(jīng)過這個課題的研究使我們已經(jīng)開始掌握了復雜可編程邏輯器件的開發(fā)流程和步驟,并可以展開進一步的提高,比方開發(fā)更為復雜的系統(tǒng)。我們研究的這個編碼譯碼模塊完全可以嵌入到一個更大大的通信系統(tǒng)內(nèi)部,作為其中的子模塊使用。 回憶畢業(yè)設計的整個過程,感受最深的并不是自己開發(fā)的這么一個過失控制編碼F
47、PGA的實現(xiàn),而是一個設計從起步到終止整個過程的整體性,連貫性;在這個過程中,初步有了系統(tǒng)開發(fā)的概念和經(jīng)驗,為以后的學習工作打下了堅實的根底;通過整個學習新知識,運用新知識的過程,鍛煉了自己獨立自主學習,分析解決問題等等方面的能力。 總之一句話,通過畢業(yè)設計階段的學習和鍛煉,受益頗深。 參考文獻 [1]潘松,黃繼業(yè) EDA技術與VHDL[M].北京:清華大學出版社, 2005-07:15-18.? [2]黃智偉.FPGA 系統(tǒng)設計與實踐[M].北京:電子工業(yè)出版社,2005 [3]王興亮數(shù)字通信原理與技術西安電子科技大學出版社2000年. [4]R. W. Hamming.Cod
48、ing and Information Theory.Prentice-Hall.Englewood Cliffs.New Jersey.1980. [5]劉科峰,張沙清, 田豐.EDA技術在電子設計中的應用[J].廣西物理, 2004, 02 [6]侯伯亨 顧 新.VHDL硬件描述語言與數(shù)字邏輯電路設計[M].西安:西安電子科技大學出版社, 1999. [7]吳繼華,王誠.Altera FPGA/ CPLD 設計[M].北京:人民郵電出版,2005. [8]劉佳,焦斌亮.FPGA 的開展趨勢及其新應用[J].電子技術,2021. [9]樊昌信,等.通信原理[M].北京:國防工業(yè)出
49、版社,2005. [10]周賢偉.過失控制編碼與平安[M].北京:國防工業(yè)出版社,2004. [11]辛英.漢明碼糾錯檢錯能力分析與應用[J].鹽城工學院報:自然科學版,2021,21 1 :34. [12]郭瑛,俞宗佐.基于FPGA 的循環(huán)冗余校驗模塊設計[J],內(nèi)蒙古大學學報自然科學版2021年第4期王新梅肖國鎮(zhèn)糾錯碼-原理與方法西安電子科技大學出版社1991. [14]Shu Lin,Daniel J.Costello.Error Control Coding[M]:Fundamentals and Applications, 2nd Edition [15]Tsfasman
50、MA. Moduar curves,Shimura curves and Goppa codes,better than V arshamov2Gilbert bound[J].Math N ach r,1982,104:13~28. 附錄Ilibrary IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; -- Uncomment the following lines to use the declarations that are
51、-- provided for instantiating Xilinx primitive components. --library UNISIM; --use UNISIM.VComponents.all; entity hammbm is port hammin:in std_logic_vector 0 to 3 ; hammout:out std_logic_vector 0 to 7 ; end hammbm; architecture lab1 of hammbm is signal p:std_logic_vector 0 to 3 ; begin p
52、 0 hammin 0 xor hammin 1 xor hammin 2 ; p 1 hammin 0 xor hammin 1 xor hammin 3 ; p 2 hammin 0 xor hammin 2 xor hammin 3 ; p 3 hammin 1 xor hammin 2 xor hammin 3 ; hammout 4 to 7 p 0 to 3 ; hammout 0 to 3 hammin 0 to 3 ; end lab1; 附錄IIENTITY hammym IS port hamin:IN std_log
53、ic_VECTOR 0 to 7 ; dataout:OUT std_logic_VECTOR 0 to 3 ; sec,ded,ne:OUT std_logic ; END hammym; ARCHITECTURE ver1 OF hammym IS begin PROCESS hamin variable syndrome:std_logic_VECTOR 3 DOWNTO 0 ; begin syndrome 0 : hamin 0 XOR hamin 1 XOR hamin 2 XOR hamin 3 XOR hamin 4 XOR ham
54、in 5 XOR hamin 6 XOR hamin 7 ; syndrome 1 : hamin 0 XOR hamin 1 XOR hamin 3 XOR hamin 5 ; syndrome 2 : hamin 0 XOR hamin 2 XOR hamin 3 XOR hamin 6 ; syndrome 3 : hamin 1 XOR hamin 2 XOR hamin 3 XOR hamin 7 ; IF syndrome "0000" THEN ne '1'; ded '0'; sec '0'; d
55、ataout 0 to 3 hamin 0 to 3 ; ELSIF syndrome 0 '1' THEN ne '0'; ded '0'; sec '1'; case syndrome 3 DOWNTO 1 IS when"000"|"001"|"010"|"100" dataout 0 to 3 hamin 0 to 3 ; when"011" dataout 0 NOT hamin 0 ; dataout 1 to 3 hamin 1 to 3 ; when"101" dataout 1 NO
56、T hamin 1 ; dataout 0 hamin 0 ; dataout 2 to 3 hamin 2 to 3 ; when"110" dataout 2 NOT hamin 2 ; dataout 3 hamin 3 ; dataout 0 to 1 hamin 0 to 1 ; when"111" dataout 3 NOT hamin 3 ; dataout 0 to 2 hamin 0 to 2 ; when others dataout "0000"; end CA
57、SE; elsif syndrome 0 '0' AND syndrome 3 DOWNTO 1 / "000" THEN ne '0'; ded '1'; sec '0'; dataout 0 to 3 "0000"; END IF ; END PROCESS ; END ver1 ; 附 錄III CRC校驗生成模塊VHDL代碼: library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; -
58、- Uncomment the following lines to use the declarations that are -- provided for instantiating Xilinx primitive components. --library UNISIM; --use UNISIM.VComponents.all; entity crc_lyd is port clk:in std_logic; datald:in std_logic; sdata: in std_logic_vector
59、11 downto 0 ; datacrc:out std_logic_vector 15 downto 0 ; hsend:out std_logic ; end crc_lyd; architecture myarch of crc_lyd is signal o: std_logic_vector 3 downto 0 ; signal input: std_logic_vector 15 downto 0 ; signal p:std_logic_vector 4 downto 0 ; begin process
60、clk variable crcvar: std_logic_vector 4 downto 0 ; variable c: std_logic_vector 3 downto 0 ; begin p "10011"; c: "0000"; input sdata&c; crcvar 4 : input 15 ; crcvar 3 : input 14 ; crcvar 2 : input 13 ; crcvar 1 : input 12 ;
61、 crcvar 0 : input 11 ; for i in 11 downto 1 loop -- 前11次計算 if crcvar 4 '0' then for j in 3 downto 0 loop c j : crcvar j xor '0'; end loop; else
62、 for j in 3 downto 0 loop c j : crcvar j xor p j ; end loop; end if; crcvar: c&input i-1 ; end loop; if crcvar 4 '0' then -- 第12次計算 for j in 3 downto 0 loop
63、 c j : crcvar j xor '0'; end loop; else for j in 3 downto 0 loop c j : crcvar j xor p j ; end loop; end if; hsend '1'; o c; -- 變量轉換成
64、信號 end process; datacrc input 15downto0 xor "000000000000"&o ; -- 輸出 end myarch; 附 錄IV CRC接收校驗模塊VHDL代碼: entity crcjy is port clk:in std_logic; hrecv:in std_logic; datacrc:in std_logic_vector 15 downto 0 ; rdata:out std_logic_v
65、ector 11 downto 0 ; crcerror:out bit; datafini:out bit ; end crcjy; architecture mycrcjy of crcjy is signal o: std_logic_vector 3 downto 0 ; signal input: std_logic_vector 15 downto 0 ; signal p:std_logic_vector 4 downto 0 ; begin process clk variable crcvar
66、: std_logic_vector 4 downto 0 ; variable c: std_logic_vector 3 downto 0 ; begin p "10011"; c: "0000"; input datacrc; crcvar 4 : input 15 ; crcvar 3 : input 14 ; crcvar 2 : input 13 ; crcvar 1 : input 12 ; crcvar 0 : input 11 ; for i in 11 downto 1 loop -- 前11次計算 if crcvar 4 '0' then for j in 3 downto 0 loop c j : crcvar j xor '0'
- 溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。