版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p> 本科畢業(yè)設(shè)計(jì)(論文)</p><p><b> (二零 屆)</b></p><p> 基于FPGA的差錯(cuò)控制編碼的設(shè)計(jì)與實(shí)現(xiàn)</p><p> 所在學(xué)院 </p><p> 專業(yè)班級(jí) 電子信息工程 &l
2、t;/p><p> 學(xué)生姓名 學(xué)號(hào) </p><p> 指導(dǎo)教師 職稱 </p><p> 完成日期 年 月 </p><p><b> 摘 要</b></p><p
3、> 本文主要介紹了電子設(shè)計(jì)自動(dòng)化(EDA)技術(shù)的主要特點(diǎn)、現(xiàn)狀、前景及意義,并就課題的研究方向做了相關(guān)的論述。進(jìn)一步論述了EDA技術(shù)的發(fā)展對(duì)電路設(shè)計(jì)應(yīng)用的影響,探討了通過VHDL語言和可編程門陣列(FPGA)進(jìn)行電路設(shè)計(jì)開發(fā)的流程。以其作為應(yīng)用對(duì)象,進(jìn)一步編程開發(fā)了(8,4)增余漢明碼的編碼、譯碼,循環(huán)冗余差錯(cuò)校驗(yàn)編碼(CRC)和MD5編碼。通過對(duì)前兩種編碼各個(gè)模塊進(jìn)行設(shè)計(jì),完整闡述了對(duì)前兩種編碼軟件部分的設(shè)計(jì)。同時(shí),通過測(cè)試,
4、完善,修改,最終完成了各自獨(dú)立的編碼程序?;赩HDL硬件描述語言,利用FPGA器件開發(fā)的差錯(cuò)控制編碼系統(tǒng),采用了自頂向下的設(shè)計(jì)方法用VHDL語言進(jìn)行設(shè)計(jì),選用當(dāng)前應(yīng)用最廣泛的EDA軟件XILINX ISE作為開發(fā)平臺(tái)及配套的MULTISIM仿真工具。所有程序全部通過了該平臺(tái)的編譯和功能仿真測(cè)試,得出了實(shí)際的仿真波形,最后,對(duì)設(shè)計(jì)調(diào)試過程中出現(xiàn)的問題進(jìn)行了分析、研究、解決。我還對(duì)上述這些各種編碼的異同點(diǎn)進(jìn)行了分析總結(jié),對(duì)MD5編碼進(jìn)行了
5、算法分析,進(jìn)而對(duì)這些編碼進(jìn)行討論。</p><p> 關(guān)鍵詞:FPGA,VHDL,漢明碼,循環(huán)冗余碼,MD5碼</p><p> The Design and Implementation of Error Control Coding based on FPGA</p><p><b> Abstract</b></p>
6、<p> 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 d
7、iscussed the 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 cod
8、ing and MD5 coding are further designed. Through the design of module in first tw</p><p> Keywords: FPGA,VHDL, Hamming code, CRC code, MD5 </p><p><b> 目 錄</b></p><
9、p><b> 摘 要I</b></p><p> AbstractII</p><p><b> 1 緒 論1</b></p><p> 1.1課題的來源1</p><p> 1.1.1 EDA技術(shù)綜述1</p><p> 1.1.2差錯(cuò)控制編碼
10、技術(shù)介紹3</p><p> 1.2課題的意義5</p><p> 1.3差錯(cuò)控制編碼發(fā)展現(xiàn)狀6</p><p> 1.4課題研究的主要內(nèi)容6</p><p> 2 基于FPGA的差錯(cuò)控制編碼技術(shù)8</p><p> 2.1差錯(cuò)控制編碼的總體設(shè)計(jì)方案8</p><p>
11、2.2(8,4)增余漢明碼的差錯(cuò)控制編碼譯碼設(shè)計(jì)8</p><p> 2.2.1漢明碼編碼譯碼原理8</p><p> 2.2.2 (8,4)增余漢明碼的算法與實(shí)現(xiàn)8</p><p> 2.2.3 (8,4)漢明碼編碼波形仿真圖10</p><p> 2.2.4 (8,4)漢明碼譯碼算法實(shí)現(xiàn)10</p><
12、;p> 2.2.5 (8,4)漢明碼譯碼波形仿真圖13</p><p> 2.2.6 (8,4)漢明碼編碼譯碼綜合模塊13</p><p> 2.2.7 (8,4)漢明碼編碼譯碼綜合波形仿真圖14</p><p> 2.3 循環(huán)冗余差錯(cuò)控制校驗(yàn)碼的設(shè)計(jì)15</p><p> 2.3.1 CRC循環(huán)校驗(yàn)碼編碼校驗(yàn)原理1
13、5</p><p> 2.3.2 CRC循環(huán)碼編碼規(guī)則15</p><p> 2.3.3 CRC循環(huán)碼算法分析15</p><p> 2.3.4 CRC校驗(yàn)生成模塊的設(shè)計(jì)實(shí)現(xiàn)17</p><p> 2.3.5 CRC校驗(yàn)生成模塊仿真波形圖18</p><p> 2.3.6 CRC校驗(yàn)接收模塊的設(shè)計(jì)實(shí)現(xiàn)
14、19</p><p> 2.3.7 CRC校驗(yàn)接收模塊仿真波形圖20</p><p> 2.4 MD5碼的算法分析20</p><p> 2.5.1 MD5的引言20</p><p> 2.5.2 MD5的原理21</p><p> 2.5.4 MD5的應(yīng)用22</p><p&
15、gt; 3差錯(cuò)控制編碼技術(shù)開發(fā)體會(huì)23</p><p> 3.1 算法的重要23</p><p> 3.2 硬件對(duì)軟件的制約影響23</p><p> 3.3 調(diào)試的重要性23</p><p><b> 4 結(jié)束語24</b></p><p> 致 謝錯(cuò)誤!未定義書簽。&
16、lt;/p><p><b> 附 錄I26</b></p><p><b> 附 錄II27</b></p><p> 附 錄III29</p><p><b> 附 錄IV32</b></p><p><b> 1 緒
17、論</b></p><p><b> 1.1課題的來源</b></p><p> 1.1.1 EDA技術(shù)綜述</p><p> 由于大規(guī)模集成電路開發(fā)技術(shù)的應(yīng)用和發(fā)展以及電子產(chǎn)品市場(chǎng)運(yùn)作的進(jìn)一步加快,涉及諸如通信、智能儀表、醫(yī)藥設(shè)備、軍事、民用電器等領(lǐng)域的現(xiàn)代電子科學(xué)技術(shù)與應(yīng)用已進(jìn)入了一個(gè)嶄新的階段,電子設(shè)計(jì)自動(dòng)化已成為當(dāng)今電
18、子設(shè)計(jì)領(lǐng)域的主流。</p><p> 電子設(shè)計(jì)自動(dòng)化技術(shù)是在電子計(jì)算機(jī)輔助設(shè)計(jì)技術(shù)基礎(chǔ)上發(fā)展起來的計(jì)算機(jī)軟件系統(tǒng),是指以計(jì)算機(jī)為工作平臺(tái),整合了應(yīng)用電子技術(shù)、計(jì)算機(jī)技術(shù)、信息處理等最新成果,進(jìn)行電子產(chǎn)品的自動(dòng)設(shè)計(jì)[1]。</p><p> 利用電子設(shè)計(jì)自動(dòng)化工具,電子設(shè)計(jì)師可以將大量工作通過計(jì)算機(jī)完成,并可以將電子產(chǎn)品從電路設(shè)計(jì)、性能分析到設(shè)計(jì)出IC版圖或PCB版圖的整個(gè)過程的計(jì)算機(jī)上
19、自動(dòng)處理完成。</p><p> 上世紀(jì)的最后10年以來,微電子技術(shù)發(fā)展迅速,其工藝水平達(dá)到了深亞微米級(jí),一個(gè)芯片上可集成幾千萬只晶體管,工作速度已經(jīng)可以達(dá)到GHz的時(shí)鐘頻率,這些都為設(shè)計(jì)、制造出更大規(guī)模的、更快速度和更大信息容量的芯片系統(tǒng)提供了有利條件,于此同時(shí),對(duì)EDA系統(tǒng)也提出了更高的要求。此階段,主要出現(xiàn)了以高級(jí)硬件語言描述、計(jì)算機(jī)系統(tǒng)仿真、綜合技術(shù)為特征的第三代EDA技術(shù),不僅大大地提高了系統(tǒng)的設(shè)計(jì)效
20、率,而且,使設(shè)計(jì)人員擺脫了大量基礎(chǔ)性驗(yàn)證、測(cè)試工作,將精力主要集中在創(chuàng)造性的方案與概念的構(gòu)思上,下面就來簡(jiǎn)單介紹這個(gè)階段EDA技術(shù)的主要特征[2]:</p><p> ?。?) 高層綜合的理論與方法取得較大進(jìn)展,將EDA設(shè)計(jì)層次提高到行為級(jí),并劃分為邏輯綜合和測(cè)試綜合。</p><p> ?。?) 采用硬件描述語言HDL來描述10萬門以上的設(shè)計(jì),并形成了VHDL和Verilog HDL兩種
21、IEEE標(biāo)準(zhǔn)硬件描述語言。它們均支持不同層次的描述,使得復(fù)雜IC的描述規(guī)范化,便于重復(fù)使用。它們多應(yīng)用于FPGA及其他可編程邏輯器件的設(shè)計(jì)中。</p><p> ?。?)可測(cè)性綜合設(shè)計(jì)。隨著ASIC的規(guī)模,復(fù)雜性的增加,測(cè)試難度和費(fèi)用急劇增加,因此,產(chǎn)生了將可測(cè)性電路結(jié)構(gòu)制造在ASIC芯片上的想法,于是開發(fā)了掃描插入、內(nèi)建自測(cè)試和邊界掃描等可測(cè)性設(shè)計(jì)工具,并已集成到EDA系統(tǒng)中。</p><p
22、> (4)建立并行設(shè)計(jì)工程CE框架結(jié)構(gòu)的IDE,以適應(yīng)當(dāng)今ASIC器件的一些特點(diǎn)。隨著百萬門規(guī)模的復(fù)雜的可編程邏輯器件的推出及應(yīng)用,EDA技術(shù)在仿真、時(shí)序分析、集成電路自動(dòng)測(cè)試、高速印刷電路板設(shè)計(jì)及操作平臺(tái)的擴(kuò)展等方面都面臨著新的問題,這些問題實(shí)際上也是新一代EDA技術(shù)的未來發(fā)展趨勢(shì)。</p><p> 用VHDL語言開發(fā)FPGA的設(shè)計(jì)流程如圖1-1所示:</p><p> 圖
23、1-1 可編程邏輯器件開發(fā)設(shè)計(jì)流程圖</p><p> 接受任務(wù):進(jìn)行系統(tǒng)設(shè)計(jì)之前,先要由總體設(shè)計(jì)部門給出設(shè)計(jì)的任務(wù)和設(shè)計(jì)的一些要求。</p><p> 確定功能:對(duì)給出的設(shè)計(jì)任務(wù)和設(shè)計(jì)的一些要求進(jìn)行分析,確定出具體的功能及要求。</p><p> 進(jìn)行分析:決定設(shè)計(jì)中所要采用的設(shè)計(jì)方法。</p><p> 源代碼模擬:在設(shè)計(jì)中,利用
24、VHDL硬件描述語言仿真器進(jìn)行源代碼仿真可以在早期開發(fā)中發(fā)現(xiàn)設(shè)計(jì)上的缺陷、錯(cuò)誤,并及時(shí)進(jìn)行改正,既而,縮短了開發(fā)周期節(jié)省了大量的設(shè)計(jì)時(shí)間。</p><p> 綜合、優(yōu)化和布局布線:所謂綜合就是將較高層次的抽象描述,轉(zhuǎn)化到較低級(jí)描述的一種方法,即將設(shè)計(jì)的VHDL描述轉(zhuǎn)化成底層電路表示。優(yōu)化是指將設(shè)計(jì)的時(shí)延縮小到最小,有效利用資源。布局布線就是把通過綜合、優(yōu)化所得到的邏輯,安放到一個(gè)邏輯器件中的過程,一個(gè)較好的布局
25、布線過程,就是將電路的相關(guān)部分放置在一起,以消除布線延遲。</p><p> 布局布線后的設(shè)計(jì)模擬:布局布線后的設(shè)計(jì)模擬與源代碼模擬不同,源代碼模擬只是對(duì)設(shè)計(jì)的邏輯功能進(jìn)行模擬,而布局布線后的設(shè)計(jì)模擬不僅可以對(duì)邏輯功能進(jìn)行驗(yàn)證,而且還能對(duì)設(shè)計(jì)時(shí)序功能進(jìn)行驗(yàn)證。</p><p> 器件編程和配置:器件編程就是將VHDL設(shè)計(jì)描述經(jīng)過模擬、綜合、優(yōu)化和布局布線的結(jié)果,經(jīng)過一定映射轉(zhuǎn)化成一個(gè)器
26、件編程所用的數(shù)據(jù)文件格式。器件配置就是在功能仿真和時(shí)序仿真正確的前提下,將綜合后的文件下載到具體的芯片中進(jìn)行電路驗(yàn)證。</p><p> 1.1.2差錯(cuò)控制編碼技術(shù)介紹</p><p> 差錯(cuò)控制在數(shù)據(jù)通信過程中能發(fā)現(xiàn)也能糾正差錯(cuò),把錯(cuò)誤限制在盡可能小的范圍內(nèi)的技術(shù)和方法。在信息傳輸中常利用編碼方法對(duì)傳輸中產(chǎn)生的差錯(cuò)進(jìn)行差錯(cuò)控制以提高數(shù)字消息傳輸?shù)臏?zhǔn)確率。差錯(cuò)控制系統(tǒng)的組成和原理如圖1
27、-2:</p><p> 圖1-2 差錯(cuò)控制系統(tǒng)原理圖</p><p> 圖中虛線內(nèi)的部分就是信號(hào)傳輸中的差錯(cuò)控制系統(tǒng)。當(dāng)沒有差錯(cuò)控制系統(tǒng)時(shí),信源輸出的信息將直接送往信宿。但是由于信道中存在干擾,信道的輸出將發(fā)生錯(cuò)誤。信號(hào)在傳輸中發(fā)生差錯(cuò)的概率是傳輸準(zhǔn)確率的一個(gè)重要指標(biāo)。在數(shù)據(jù)傳輸中信道給定以后,如果誤碼率不能滿足既定的要求,就要采取差錯(cuò)控制了。具體的實(shí)現(xiàn)方法各有不同,差錯(cuò)控制可以分為
28、前向糾錯(cuò)法、反饋重傳法和混合法三種類型[3]。</p><p><b> ?。?)前向糾錯(cuò)法</b></p><p> 差錯(cuò)控制系統(tǒng)只含有編碼器和譯碼器。從信源輸出的傳輸信號(hào)在信道編碼器中被編碼,然后輸出送往信道。因?yàn)樾诺谰幋a器使用的是糾錯(cuò)碼,所以譯碼器可以改正傳輸過程中所帶來的大部分差錯(cuò)進(jìn)而使信宿得到相對(duì)比較正確的序列。</p><p>&
29、lt;b> (2)反饋重傳法</b></p><p> 僅僅只利用了檢錯(cuò)碼來發(fā)現(xiàn)傳輸中帶來的差錯(cuò),并且在發(fā)現(xiàn)差錯(cuò)以后通過信道反向通知發(fā)信端再重新傳輸相應(yīng)的一組數(shù)字,以此來提高傳輸信號(hào)的準(zhǔn)確性。反饋重傳法根據(jù)重傳方法的不同還可以分成很多種種實(shí)現(xiàn)方式。其中最普遍,最簡(jiǎn)單的一種被稱為等待重傳方式。采用這種方式時(shí)發(fā)信端每送出一組信號(hào)就停下來等待收信端的應(yīng)答。這時(shí)信道譯碼器如果沒有發(fā)現(xiàn)差錯(cuò)便通過反向信
30、道向發(fā)信端發(fā)出表示正確的回答,否則信源會(huì)重新傳輸原先那組信號(hào)。</p><p><b> ?。?)混合法 </b></p><p> 在信道存在交大干擾時(shí),僅用反饋重傳會(huì)因不斷重傳,而使信息的傳輸速率下降過多,從而僅用前向糾錯(cuò)又不能保證傳輸信息足夠的準(zhǔn)確性。這時(shí)兩者兼用比較有利,這就是所說的混合法。此方法所用的信道編碼是一種既能糾正部分差錯(cuò),又能發(fā)現(xiàn)大部分差錯(cuò)的碼。
31、信道譯碼器首先糾正那些可以糾正的差錯(cuò),只對(duì)那些不能糾正,但能發(fā)現(xiàn)的差錯(cuò)才要求重傳。這會(huì)大大降低重傳的次數(shù)。同時(shí),由于這種碼的檢錯(cuò)能力非常強(qiáng),最終所得到的信息的準(zhǔn)確率是比較高的。差錯(cuò)控制編碼又可區(qū)分為檢錯(cuò)碼和糾錯(cuò)碼兩種。檢錯(cuò)碼只能檢查出傳輸中信號(hào)出現(xiàn)的差錯(cuò),發(fā)送方只有重傳數(shù)據(jù)才能夠糾正這種差錯(cuò);而糾錯(cuò)碼不僅能檢查出差錯(cuò)而且還能能自動(dòng)糾正差錯(cuò),避免了重傳機(jī)制。</p><p><b> 1.2課題的意義&
32、lt;/b></p><p> 如今各種數(shù)字通信系統(tǒng)已廣泛用于我們的生產(chǎn)生活中。然而數(shù)字信號(hào)在傳輸過程中,由于受到干擾的影響,碼元波形將變壞。接收端收到后可能發(fā)生錯(cuò)誤判決。由乘性干擾引起的碼間串?dāng)_,可以采用均衡的辦法糾正。而加性干擾的影響則需要用其它辦法解決。在設(shè)計(jì)數(shù)字通信系統(tǒng)時(shí),應(yīng)該首先從合理選擇調(diào)制制度、解調(diào)方法以及發(fā)送功率等方面考慮,使加性干擾不足以影響達(dá)到誤碼率的要求。在仍不能滿足要求時(shí),就要考慮
33、差錯(cuò)控制措施了,這就是我們研究差錯(cuò)控制技術(shù)的意義所在。</p><p> 現(xiàn)代電子產(chǎn)品面臨高功能、設(shè)計(jì)周期短、上市快的要求,其復(fù)雜度日益加深。一個(gè)電子系統(tǒng),可能由數(shù)萬個(gè)中小規(guī)模的集成電路構(gòu)成,這就帶來了體積大、功耗大和可靠性差的問題,解決這一問題的有效方法,就是來用可編程邏輯器件(PLD)進(jìn)行設(shè)計(jì)??删幊踢壿嬈骷?,尤其是FPGA器件,即現(xiàn)場(chǎng)可編程門陣列,它是在PAL、GAL、CPLD等可編程器件的基礎(chǔ)上進(jìn)一步發(fā)
34、展的產(chǎn)物。它是作為專用集成電路領(lǐng)域中的一種半定制電路而出現(xiàn)的,既解決了定制電路的不足,又克服了原有可編程器件門電路數(shù)有限的缺點(diǎn),具有集成度高、運(yùn)行速度快、可靠性強(qiáng)、設(shè)計(jì)方式靈活、快速等特點(diǎn),現(xiàn)已成為現(xiàn)代高層次電子設(shè)計(jì)方法的實(shí)現(xiàn)載體[4]。本課題研究了EDA技術(shù)發(fā)展對(duì)電路設(shè)計(jì)方法的影響,深入探討了用VHDL語言和可編程邏輯器件FPGA開發(fā)的基本方法,為開發(fā)專用集成電路提供了基本的設(shè)計(jì)步驟。作為應(yīng)用對(duì)象,進(jìn)一步開發(fā)差錯(cuò)控制編碼技術(shù)。<
35、/p><p> 開發(fā)這一系統(tǒng)的目的并不是為了實(shí)際的應(yīng)用或應(yīng)用到市場(chǎng)中去,只是通過一個(gè)簡(jiǎn)單系統(tǒng)的整體設(shè)計(jì)完成過程,深入體會(huì)FPGA技術(shù)優(yōu)勢(shì)性,了解這些編碼的特性及其應(yīng)用,使這幾類編碼得到更廣泛的應(yīng)用。在數(shù)字系統(tǒng)過程中,為了減少誤碼率,使這些編碼技術(shù)很好的應(yīng)用到相關(guān)的一些領(lǐng)域中去,我總結(jié)出這些編碼的異同點(diǎn),為以后選擇這些編碼時(shí)在相關(guān)領(lǐng)域的應(yīng)用奠定一定的基礎(chǔ)。</p><p> 1.3差錯(cuò)控制編
36、碼發(fā)展現(xiàn)狀</p><p> 1948年C.E.香農(nóng)(Shannon)發(fā)表論文指出,只要采用適當(dāng)?shù)募m錯(cuò)碼,就可在多類信道上傳輸消息。宣告了糾錯(cuò)碼的誕生。自Shannon之后,人們不斷向逼近信道容量努力,取得重大發(fā)展,如分組碼,代數(shù)碼,卷積碼,網(wǎng)格碼和Turbo碼。所能達(dá)到的性能也越來越接近Shannon限間的距離[5]。現(xiàn)在利用FPGA技術(shù)實(shí)現(xiàn)差錯(cuò)控制編碼的種類很多,而且這些具有很強(qiáng)的糾錯(cuò)、檢錯(cuò)碼,被廣泛應(yīng)用到
37、密碼學(xué)、通信、磁盤陣列及光存儲(chǔ)、衛(wèi)星通信、移動(dòng)通信、深空通信等眾多領(lǐng)域[6]。</p><p> 1.4課題研究的主要內(nèi)容</p><p> 漢明碼是一種能糾一位錯(cuò)的線性分組碼, 由于它的編譯碼簡(jiǎn)單,在數(shù)據(jù)通信和計(jì)算機(jī)存儲(chǔ)系統(tǒng)中廣泛應(yīng)用,如在藍(lán)牙和硬盤陣列中[6]。它可以糾正一位錯(cuò)誤,但對(duì)于兩位錯(cuò)不能檢測(cè),還可能會(huì)造成誤糾。盡管,發(fā)生一位錯(cuò)的概率相對(duì)最高, 但在一些要求較高的應(yīng)用中,漢
38、明碼不能滿足要求。常用的能檢測(cè)兩位錯(cuò)同時(shí)能糾正1位錯(cuò)的糾錯(cuò)碼有(8,4)擴(kuò)展?jié)h明碼。</p><p> CRC即循環(huán)冗余校驗(yàn)碼:是數(shù)據(jù)通信領(lǐng)域中最常用的一種差錯(cuò)校驗(yàn)碼,其特征是信息字段和校驗(yàn)字段的長(zhǎng)度可以任意選定。CRC 常用硬件電路和軟件編程的方法實(shí)現(xiàn),采用CRC 串行算法,即一個(gè)時(shí)鐘周期內(nèi),有一位數(shù)據(jù)輸入, k 位長(zhǎng)度的信息元連續(xù)計(jì)算k次后得出校驗(yàn)碼[7]。這種傳統(tǒng)CRC的產(chǎn)生、校驗(yàn)方法對(duì)于現(xiàn)代實(shí)時(shí)高速的通
39、信系統(tǒng)已經(jīng)不能滿足其對(duì)于信息處理高速化、并行化的要求。因此,本文提出一種新的并行CRC 編碼方法,用VHDL 語言在FPGA 芯片上編程,實(shí)現(xiàn)在一個(gè)時(shí)鐘周期內(nèi)完成一次并行CRC 碼的計(jì)算及校驗(yàn)。該方法可以對(duì)不同長(zhǎng)度的數(shù)據(jù)進(jìn)行差錯(cuò)控制,而且大大縮短了CRC碼的校驗(yàn)周期,為實(shí)現(xiàn)循環(huán)冗余校驗(yàn)提供了一種新思路。</p><p> MD5的全稱是Message-Digest Algorithm 5,在90年代初由MIT的
40、計(jì)算機(jī)科學(xué)實(shí)驗(yàn)室和RSA Data Security Inc發(fā)明,經(jīng)MD2、MD3和MD4發(fā)展而來。Message-Digest一般是指字節(jié)串信息的Hash變換,即把一個(gè)任意長(zhǎng)度的字節(jié)串變換成一定長(zhǎng)的大整數(shù)。MD5還廣泛用于加密和解密技術(shù)上,在很多操作系統(tǒng)中,用戶的密碼是以MD5值的方式保存的[8]。</p><p> 對(duì)于差錯(cuò)控制編碼技術(shù)的研究,我主要是研究(8,4)增余漢明碼編譯碼、CRC循環(huán)編碼和MD5編
41、碼,首先分別研究這幾種編碼的算法,對(duì)前兩種分別應(yīng)用FPGA技術(shù)去實(shí)現(xiàn),用VHDL語言去編寫代碼,然后再進(jìn)行編譯,下載,仿真及其去了解這些編碼;然后是對(duì)MD5碼進(jìn)行研究和算法分析;最后總結(jié)出它們的異同點(diǎn),以適應(yīng)在以后需要的時(shí)候選擇適當(dāng)?shù)木幋a應(yīng)用到相應(yīng)的領(lǐng)域中去。</p><p> 2 基于FPGA的差錯(cuò)控制編碼技術(shù)</p><p> 2.1差錯(cuò)控制編碼的總體設(shè)計(jì)方案</p>
42、<p> 在具體設(shè)計(jì)過程中,采取自上而下的設(shè)計(jì)思路。首先根據(jù)整體的規(guī)劃設(shè)計(jì)出模塊的外部輸入輸出引腳定義以及功能,即根據(jù)需求設(shè)計(jì)出功能模塊的整體外部特性,然后根據(jù)設(shè)計(jì)的這一外部特性以及功能描述模塊內(nèi)部的實(shí)現(xiàn)細(xì)節(jié)。</p><p> 2.2(8,4)增余漢明碼的差錯(cuò)控制編碼譯碼設(shè)計(jì)</p><p> 2.2.1漢明碼編碼譯碼原理</p><p> 漢
43、明碼,是由Richard Hamming于1950年提出的,它屬于線性分組編碼方式,用來糾正單個(gè)錯(cuò)誤的線性分組碼。</p><p> 假設(shè),原代碼的碼長(zhǎng)為k 比特,附加糾錯(cuò)編碼部分為r比特,當(dāng)碼字長(zhǎng)度n=2r-1,r=n-k,r=1,2···時(shí)就稱這種線性分組碼為漢明碼。其基本原理是,將信息碼元、監(jiān)督碼元通過線性方程式聯(lián)系起來,每一個(gè)監(jiān)督位被編在傳輸碼字的特定比特位置上。系統(tǒng)對(duì)于錯(cuò)
44、誤的那一位不管是原有信息位中的,或者是附加監(jiān)督位中的都能把它分離開來[9]。從漢明碼的性質(zhì)可以得知,(8,4) 增余漢明碼能夠糾正1位錯(cuò),檢測(cè)出兩位錯(cuò)。</p><p> 2.2.2 (8,4)增余漢明碼的算法與實(shí)現(xiàn)</p><p> (8,4)增余漢明碼全碼碼元數(shù)n=8,其中信息碼元數(shù)k=4 ,監(jiān)督碼元數(shù)d=4,其監(jiān)督矩陣為:</p><p> 對(duì)于任何給定
45、的信息碼組,都可以由下式求出相應(yīng)的監(jiān)督碼元,即:</p><p> 若用方程式來表示, 則上式可以寫成:</p><p> 從而形成全碼這就是(8,4)增余漢明碼的編碼過程。由于漢明碼編碼VHDL語言描述比較簡(jiǎn)單,在這里就不詳細(xì)做介紹,具體見附錄I代碼。</p><p> ?。?,4)漢明碼編碼的頂層設(shè)計(jì)模塊如圖2-1所示:</p><p&g
46、t; 圖2-1 漢明碼編碼模塊圖</p><p> 可以看出,輸入為四位并行輸入,編碼后為一個(gè)八位的并行輸出。</p><p> (8,4)漢明碼編碼的底層設(shè)計(jì)模塊如圖2-2所示:</p><p> 圖2-2 漢明碼編碼模塊底層關(guān)系圖</p><p> 底部的各個(gè)分模塊為兩位的輸入模通過各種邏輯運(yùn)算,并最終組合在一起形成一個(gè)8位的最
47、終編碼輸出。</p><p> 2.2.3 (8,4)漢明碼編碼波形仿真圖:</p><p> 圖2-3 漢明碼編碼仿真圖</p><p> 2.2.4 (8,4)漢明碼譯碼算法實(shí)現(xiàn)</p><p> [n,k,d]分組碼的譯碼步驟可歸結(jié)為以下三步:</p><p> (1) 根據(jù)接收到的R計(jì)算伴隨式S=R&
48、#183;HT;</p><p> (2) 當(dāng)S=0時(shí),認(rèn)為接收正確。若S≠0,由表2-1找出錯(cuò)誤圖樣E^;</p><p> (3) 由E^和R 找出C^=R-E^。</p><p> 漢明碼的譯碼較簡(jiǎn)單,它可由S 直接得到錯(cuò)誤圖樣E^。其他分組碼如何由S 求得E^就比較復(fù)雜。而一個(gè)譯碼器的復(fù)雜性及其譯碼錯(cuò)誤概率也是由這一步?jīng)Q定的。</p>&
49、lt;p> 設(shè)接收方收到發(fā)送方傳來的一個(gè)完整的編碼為:X11,X22,X33,X44,X55,X66,X77,X88,根據(jù)漢明碼校驗(yàn)矩陣:</p><p> S1 S2 S3 S4為(8 ,4) 增余漢明碼的校驗(yàn)子。當(dāng)S1 S2 S3 S4 =0000 時(shí),傳送無誤;當(dāng)S1 S2 S3 S4為偶數(shù)時(shí),可判接收到的全碼中有兩位錯(cuò)誤,但不能判斷哪兩位錯(cuò),可要求發(fā)送方重新發(fā)送全碼;當(dāng)S1 S2 S3 S4為奇
50、數(shù)時(shí),可根據(jù)表2-1判斷哪一位錯(cuò),然后通過軟件來糾錯(cuò),完成譯碼過程。</p><p> 表2-1 (8,4)漢明碼校驗(yàn)參數(shù)</p><p> 譯碼算法的流程圖如圖所示:</p><p> 圖2-4 漢明碼譯碼流程圖</p><p> 根據(jù)上述流程圖,用VHDL語言描述(8,4)漢明譯碼算法功能模塊如圖2-5所示:</p>
51、<p> 圖2-5 漢明碼譯碼頂層模塊圖</p><p> Hamin為漢明8位數(shù)據(jù)輸入,dataout為漢明4位數(shù)據(jù)輸出,sec、ded、ne為診斷輸出。部分代碼如下:</p><p> IF(syndrome ="0000")THEN -- 沒出錯(cuò)的情況;</p><p><b> ne<='1
52、39;;</b></p><p><b> ded<='0';</b></p><p><b> sec<='0';</b></p><p> dataout(0 to 3)<=hamin(0 to 3);</p><p> EL
53、SIF (syndrome(0) = '1') THEN -- 一位出錯(cuò)情況;</p><p><b> ne<='0';</b></p><p><b> ded<='0';</b></p><p><b> sec<='1'
54、;;</b></p><p> case syndrome (3 DOWNTO 1) IS -- 查表糾錯(cuò)</p><p> when"000"|"001"|"010"|"100"=></p><p> dataout(0 to 3)<=hamin(0 to
55、 3);</p><p> when"011"=>dataout(0)<= NOT hamin (0);</p><p> dataout(1 to 3)<=hamin(1 to 3);</p><p> when"101"=>dataout(1)<= NOT hamin(1);</p
56、><p> dataout(0)<=hamin(0);</p><p> dataout(2 to 3)<= hamin(2 to 3);</p><p> when"110"=>dataout(2)<= NOT hamin(2) ;</p><p> dataout(3)<= hamin
57、(3);</p><p> dataout(0 to 1)<= hamin(0 to 1);</p><p> when"111"=>dataout(3)<= NOT hamin(3) ;</p><p> dataout(0 to 2)<=hamin(0 to 2);</p><p> w
58、hen others=>dataout<="0000";</p><p><b> end CASE;</b></p><p> elsif(syndrome(0)='0')AND(syndrome(3 DOWNTO 1)/="000") THEN -- 兩位出錯(cuò)情況;</p>&l
59、t;p><b> ne<='0';</b></p><p><b> ded<='1';</b></p><p><b> sec<='0';</b></p><p> dataout(0 to 3)<="
60、0000";</p><p><b> END IF ;</b></p><p> 當(dāng)接受校驗(yàn)無誤,則診斷輸出ne、ded、sec按“100”標(biāo)識(shí),若一位出錯(cuò),則按“001”標(biāo)識(shí),然后在根據(jù)syndrome各位數(shù)判斷是哪位出錯(cuò)并糾錯(cuò),出錯(cuò)兩位則按“010”標(biāo)識(shí)并清0,需要重傳機(jī)制。</p><p> 2.2.5(8,4)漢明碼譯
61、碼波形仿真圖:</p><p> 圖2-6 漢明碼譯碼仿真圖</p><p> 可以看出,通過譯碼模塊,8位全碼又重新譯碼成原輸入數(shù)據(jù),其中,第三第四組數(shù)據(jù)認(rèn)為制造了數(shù)據(jù)錯(cuò)誤,第三組數(shù)據(jù)出錯(cuò)一位,仿真輸出結(jié)果得到了糾正,第四組數(shù)據(jù)由于出錯(cuò)兩位,清0處理。</p><p> 2.2.6 (8,4)漢明碼編碼譯碼綜合模塊</p><p>
62、 通過原件例化,對(duì)編碼、譯碼電路進(jìn)行連接得到綜合頂層模塊如下:</p><p> 圖2-7 漢明碼編碼譯碼綜合頂層模塊圖</p><p> 對(duì)頂層模塊進(jìn)行細(xì)化,如圖所示:</p><p> 圖2-8 漢明碼編碼譯碼綜合底層模塊圖</p><p> 2.2.7 (8,4)漢明碼編碼譯碼綜合波形仿真圖</p><p&g
63、t; 圖2-9 漢明碼綜合模塊仿真圖</p><p> 2.3 循環(huán)冗余差錯(cuò)控制校驗(yàn)碼的設(shè)計(jì)</p><p> 2.3.1 CRC循環(huán)校驗(yàn)碼編碼校驗(yàn)原理</p><p> CRC校驗(yàn)采用的是多項(xiàng)式編碼的方法。被處理的數(shù)據(jù)塊可以看作是一個(gè)n 階的二進(jìn)制多項(xiàng)式,如一個(gè)12 位二進(jìn)制數(shù)10101010101010可以表示為:x11+x9+x7+x5+x3+x1+1
64、。多項(xiàng)式乘除法運(yùn)算的過程與普通代數(shù)多項(xiàng)式的乘除法大體相同。多項(xiàng)式的加減法運(yùn)算以2為模,加減時(shí)不用進(jìn)位、錯(cuò)位,和邏輯的異或運(yùn)算一致。利用CRC 校驗(yàn)時(shí),發(fā)送方和接收方用要有同一個(gè)生成多項(xiàng)式P(x),并且要使P(x)的首位和最后一位的系數(shù)必須為1。CRC 的處理的方法是:發(fā)送方以P(x)去除T(x),得到余數(shù)R作為CRC 校驗(yàn)碼。校驗(yàn)的時(shí)候,以計(jì)算的校正結(jié)果的余數(shù)是否為0為據(jù),判斷數(shù)據(jù)幀是否出錯(cuò)[10]。</p><p&
65、gt; CRC 校驗(yàn)可以準(zhǔn)確地檢測(cè)出所有奇數(shù)個(gè)隨機(jī)錯(cuò)誤和長(zhǎng)度小于等于k(k為P(x)的階數(shù))的隨機(jī)錯(cuò)誤。所以CRC 的生成多項(xiàng)式P(x)的階數(shù)越高,那么誤判的概率就會(huì)更小。</p><p> 2.3.2 CRC循環(huán)碼編碼規(guī)則</p><p> CRC編碼實(shí)際上就是將要發(fā)送的M 位二進(jìn)制多項(xiàng)式T(x)轉(zhuǎn)換成為可以被P(x)除盡的M+R位二進(jìn)制多項(xiàng)式T'(x),因此在解碼時(shí)可以用
66、接受到的數(shù)據(jù)去除P(x),如果余數(shù)R為零,則表示傳輸過程沒有發(fā)生錯(cuò)誤;如果余數(shù)R不為零,那么在傳輸過程中必定存在錯(cuò)誤。很多CRC的硬件電路就是按這種方式進(jìn)行校驗(yàn)的。同時(shí)T'(x) 可以看做是由T(x)和CRC 校驗(yàn)碼的組合,所以解碼時(shí)將接收到的二進(jìn)制數(shù)據(jù)去掉尾部的R位數(shù)據(jù),得到的就是原始傳輸?shù)臄?shù)據(jù)。</p><p> 2.3.3 CRC循環(huán)碼算法分析</p><p> CRC校
67、驗(yàn)碼的編碼方法是用待發(fā)送的二進(jìn)制數(shù)據(jù)T(x)除以生成多項(xiàng)式P(x),將最后的余數(shù)作為CRC校驗(yàn)碼。其實(shí)現(xiàn)步驟如下[11]:</p><p> ?。?)設(shè)要發(fā)送的數(shù)據(jù)塊是一個(gè)M位的二進(jìn)制多項(xiàng)式T(x),生成多項(xiàng)式為R階的P(x)。在數(shù)據(jù)塊的末尾添加R個(gè)0,數(shù)據(jù)塊的長(zhǎng)度增加到M+R位,對(duì)應(yīng)的二進(jìn)制多項(xiàng)式為T(x)。</p><p> ?。?) 用生成多項(xiàng)式P(x)去除T(x) ,求得余數(shù)為階數(shù)
68、為R-1 的二進(jìn)制多項(xiàng)式Y(jié)(x)。此二進(jìn)制多項(xiàng)式Y(jié)(x)就是T(x)經(jīng)過生成多項(xiàng)式P(x)編碼的CRC校驗(yàn)碼。</p><p> ?。?) 用T(x) 以模2的方式減去Y(x),得到二進(jìn)制多項(xiàng)式T'(x) 。T'(x) 即為包含了CRC校驗(yàn)碼的待發(fā)送的字符串。</p><p> 由于CRC-32、CRC-16、CCITT和CRC-4的編碼過程基本一致,只有位數(shù)和生成多項(xiàng)式
69、不一樣。為了敘述上的方便,我們用CRC-4編碼的例子來說明CRC的編碼過程。</p><p> 設(shè)待發(fā)送的數(shù)據(jù)T(x)為一個(gè)12位的二進(jìn)制數(shù)據(jù)100110100110;已知CRC-4的生成多項(xiàng)式為P(x)=x4+x+1,階數(shù)R為4。首先我們?cè)赥(x)的末尾添加4個(gè)0,數(shù)據(jù)塊就成了1001101001100000。然后用P(x)去除,商的值我們無需考慮,只需要求得余數(shù)Y(x)。表2-1給出了舉例數(shù)據(jù)的除法過程。&
70、lt;/p><p> 表2-1用移位除法求校驗(yàn)碼的過程表</p><p> 從表2-1中可以看出,CRC編碼實(shí)際上是一個(gè)循環(huán)移位的模2運(yùn)算。對(duì)于CRC-4而言,我們假設(shè)有一個(gè)5位的數(shù)據(jù)以為寄存器,通過反復(fù)的移位和進(jìn)行二進(jìn)制的除法,最終該寄存器中的值去掉最高一位就是我們所要求的余數(shù)。</p><p> 2.3.4 CRC 校驗(yàn)生成模塊的設(shè)計(jì)實(shí)現(xiàn)</p>
71、<p> CRC 校驗(yàn)生成模塊是在XILINX ISE 平臺(tái)編程實(shí)現(xiàn),程序首先執(zhí)行了11次異或運(yùn)算,流程圖如2-10所示,然后在作一次異或運(yùn)算,得到的記過就是crc校驗(yàn)碼</p><p> 圖2-10 CRC校驗(yàn)生成模塊流程圖</p><p> 根據(jù)上述流程圖,用VHDL語言描述CRC編碼生成模塊如圖2-11所示:</p><p> 圖2-11
72、CRC校驗(yàn)生成模塊</p><p> CRC 校驗(yàn)生成模塊如圖2-11 所示. 其中sdata 是12 位發(fā)送信息,datald 是sdata 的裝載信號(hào),clk是時(shí)鐘信號(hào),datacrco 是附加上4 位CRC 校驗(yàn)碼的16 位CRC 碼,hsend 是與檢錯(cuò)模塊的握手信號(hào)。 </p><p> 2.3.5 CRC校驗(yàn)生成
73、模塊仿真波形圖</p><p> 圖2-12 CRC校驗(yàn)生成模塊仿真波形圖</p><p> 2.3.6 CRC 校驗(yàn)接收模塊的設(shè)計(jì)實(shí)現(xiàn)</p><p> CRC 校驗(yàn)檢錯(cuò)模塊編程思想和生成模塊類似,從接收到的CRC 碼中,提取出信息碼,然后將信息碼與生成多項(xiàng)式進(jìn)行異或運(yùn)算,最后判斷得到的余數(shù)與CRC 生成模塊中得到的校驗(yàn)碼是否相同,如果相同,認(rèn)為信息發(fā)送正
74、確,將輸出的誤碼警告標(biāo)志信號(hào)crcerror 設(shè)置為“0”;反之,則認(rèn)為信息發(fā)送錯(cuò)誤,將crcerror 設(shè)置為“1”。</p><p> CRC 校驗(yàn)檢錯(cuò)模塊如圖2-13所示,其端口數(shù)據(jù)說明如下:</p><p> clk :時(shí)鐘信號(hào);</p><p> rdata :接收模塊(檢錯(cuò)模塊) 接收的12 位有效信息數(shù)據(jù);</p><p>
75、; hrecv :接收控制信號(hào);</p><p> datafini :數(shù)據(jù)接收校驗(yàn)完成標(biāo)志信號(hào);</p><p> datacrci :附加上5 位CRC 校驗(yàn)碼的17 位CRC 碼;</p><p> crcerror :錯(cuò)誤標(biāo)志信號(hào);</p><p> 圖2-13 CRC校驗(yàn)接收模塊的設(shè)計(jì)實(shí)現(xiàn)</p><p
76、> 2.3.7 CRC校驗(yàn)接收模塊仿真波形圖</p><p> 圖2-14 CRC校驗(yàn)接收模塊仿真波形圖</p><p> 2.4 MD5碼的算法分析</p><p> MD5碼就是把一個(gè)任意長(zhǎng)度的字節(jié)串變換成一定長(zhǎng)的大整數(shù)。即MD5將任意長(zhǎng)度的“字節(jié)串”變換成一個(gè)128位的大整數(shù),并且它是一個(gè)不可逆的字符串變換算法,換言之,即使你看到源程序和算法描述
77、也無法將一個(gè)MD5的值變換回原始的字符串[12]。從數(shù)學(xué)原理上說是因?yàn)樵嫉淖址袩o窮多個(gè),這有點(diǎn)像不存在反函數(shù)的數(shù)學(xué)函數(shù)。</p><p> 2.5.1 MD5的引言</p><p> MD5算法就是把不同長(zhǎng)度的信息串轉(zhuǎn)化到128位編碼中形成Hash值。然后比較這個(gè)數(shù)值是否正確從而確定通信雙方的合法性。這也可以說是一種數(shù)字認(rèn)證,在數(shù)據(jù)傳輸以后,我們可以通過比較Hash值,來判斷信息
78、傳輸途中有沒有被被修改,是否是合法人發(fā)送或者是有合法人接收的[13]。利用這種方式,來防止密鑰丟失。由于MD5加密算法的隨機(jī)生成性,沒有正確的Hash 值是不可能解開加密部分的。而且MD5算法同時(shí)具備數(shù)字認(rèn)證的功能,可以證明發(fā)送方和接收方的合法性,比較適用于那些商業(yè)信息的傳遞。</p><p> 2.5.2 MD5的原理</p><p> 該算法輸入任意長(zhǎng)度的消息,輸出128 位消息
79、摘要,處理以512位輸入數(shù)據(jù)塊為單位。處理報(bào)文摘要的過程如下[14]:</p><p> ?。?)添加填充位。在消息的最后,添加適當(dāng)?shù)奶畛湮皇箶?shù)據(jù)位的長(zhǎng)度滿足與448模512同余。</p><p> ?。?)添加長(zhǎng)度。原消息長(zhǎng)度我們用64位表示,且附加在(1)的結(jié)果后面。由這兩個(gè)步驟得到了512整數(shù)倍的報(bào)文。將其表示為L(zhǎng)個(gè)512 位的數(shù)據(jù)塊:Y0,Y1 ,…,YL-1。他們的長(zhǎng)度為L(zhǎng)
80、15;512位,設(shè)N=L×16,則得到了長(zhǎng)度為N個(gè)32 位的字。M[0…N-1]表示以字為單位的消息。</p><p> ?。?)初始化MD緩沖區(qū)。一個(gè)128位MD緩沖區(qū)用以保存中間和最終散列函數(shù)的結(jié)果。它可以表示成4個(gè)32位的寄存器A、B、C、D。并對(duì)其進(jìn)行初始化:</p><p> A=67452301</p><p> B=EFCDAB89<
81、;/p><p> C=98BADCFE</p><p> D=10325476</p><p><b> 寄存器內(nèi)容</b></p><p> Word A : 01 23 45 67</p><p> Word B: 89 AB CD EF</p><p&g
82、t; Word C: FE DC BA 98</p><p> Word D: 76 54 32 10</p><p> 這里采用小數(shù)在前的格式進(jìn)行存儲(chǔ)。</p><p> (4)處理消息塊。它包括4輪處理,每次處理都具有相似的結(jié)構(gòu),但每次使用不同的基本邏輯函數(shù),記為F、G、H、I。每次使用64元素表T[1…64]四分之一。T由正弦函
83、數(shù)構(gòu)造而成。T的第i個(gè)元素表示為T[i],其值等于232×abs(sin(i))的整數(shù)部分,其中i是弧度。T的每一個(gè)元素是一個(gè)可以表示成32位的整數(shù)。T表提供了隨機(jī)化的32 位模板,消除了在輸入數(shù)據(jù)中的任何規(guī)律性的特征</p><p><b> T 表</b></p><p> T[ 1] = D76AA478 T[ 49] = F4292244
84、</p><p> T[ 2] = E8C7B756 T[ 50] = 432AFF97</p><p> T[ 3] = 242070DB T[ 51] = AB9423A7</p><p> T[ 4] = C1BDCEEE T[ 52] = FC93A039</p><p> ……
85、 ……</p><p> T[ 16] = 49b40821 T[ 64] = EB86D391</p><p><b> (5)輸出結(jié)果。</b></p><p> 2.5.4 MD5的應(yīng)用</p><p> MD5碼的應(yīng)用,主要是在加密、解密兩個(gè)方面[15]。在我們的解壓縮文件中,有很多就是應(yīng)
86、用到了MD5碼。由于它的保密工作具有一次性保密工作的特點(diǎn),不僅保留了一次性口令的優(yōu)點(diǎn),而且克服了序列密碼一次性口令系統(tǒng)中的小數(shù)攻擊和IP地址欺騙攻擊的漏洞,同時(shí)又避免了RSA算法中大整數(shù)質(zhì)因數(shù)分解的計(jì)算效率問題。</p><p> 3差錯(cuò)控制編碼技術(shù)開發(fā)體會(huì)</p><p><b> 3.1 算法的重要</b></p><p> 在剛開始
87、設(shè)計(jì)這個(gè)畢設(shè)的時(shí)候,我可以說的這個(gè)課題不甚了解,有點(diǎn)無從下手的感覺,通過上網(wǎng)查詢和陳老師的教導(dǎo),我的課題是一個(gè)研究性的課題,所以我就要搜集好幾種編碼來分別進(jìn)行研究,來找出它們的異同點(diǎn),首先找到的是漢明碼和CRC碼,這兩種廣泛應(yīng)用于數(shù)字通訊中的編碼,但是我要用FPGA去實(shí)現(xiàn),這種用硬件實(shí)現(xiàn)起來傳輸速度會(huì)很快,可是在這之中算法就是一個(gè)很難的問題,我只有理解了算法才能用VHDL的語言來做出來,包括我后來做的MD5編碼,算法也是相當(dāng)?shù)闹匾?,?/p>
88、且我覺得很難,這些花費(fèi)我很多的時(shí)間。 </p><p> 算法可以說是一種編碼的靈魂,沒有算法我是不可能實(shí)現(xiàn)我的研究課題的,這些涉及到很多別的問題,不是很容易明白,我就要不斷地去分析和查找書籍,找出這些原理的所在,為下面的工作做準(zhǔn)備。</p><p> 3.2 硬件對(duì)軟件的制約影響</p><p> 在畢業(yè)設(shè)計(jì)的過程中,尤其到了硬件調(diào)試的時(shí)候,還有一點(diǎn)感受比較
89、深刻,那就是硬件對(duì)軟件設(shè)計(jì)的影響。由于試驗(yàn)臺(tái)硬件和小組設(shè)計(jì)試驗(yàn)板硬件性能不完全相同,致使軟件系統(tǒng)從試驗(yàn)臺(tái)到試驗(yàn)板的過程中遇到了很多意想不到的問題,最終還是通過修改軟件來適應(yīng)硬件的標(biāo)準(zhǔn)。</p><p> 3.3 調(diào)試的重要性</p><p> 程序?qū)懗鰜碇螅枰M(jìn)行大量的硬件調(diào)試工作,否則的話,一旦出現(xiàn)問題,就搞不清楚問題究竟是軟件設(shè)計(jì)的錯(cuò)誤還是硬件電路板的錯(cuò)誤,所以首先解決硬件調(diào)試
90、是必須的。在調(diào)試的過程中,需要有清晰的邏輯思維作基礎(chǔ),對(duì)硬件知識(shí)有熟練的掌握和靈活的應(yīng)用。</p><p><b> 4 結(jié)束語</b></p><p> 本課題的研究設(shè)計(jì)至此就基本完成了。本文研究了EDA技術(shù)的發(fā)展對(duì)電路設(shè)計(jì)方法的影響,深入討論了用VHDL語言和復(fù)雜系統(tǒng)可編程邏輯器件開發(fā)的基本方法,作為應(yīng)用對(duì)象,基于VHDL語言、應(yīng)用FPGA開發(fā)的差錯(cuò)控制編碼技
91、術(shù),系統(tǒng)采用了“自頂向下”的設(shè)計(jì)方法,系統(tǒng)的頂層設(shè)計(jì)和底層設(shè)計(jì)采用原理圖輸入描述和VHDL語言進(jìn)行描述,選用了當(dāng)前流行的EDA軟件平臺(tái)XINLIX ISE作為開發(fā)平臺(tái),所有程序全部通過了該平臺(tái)的編譯和功能仿真實(shí)驗(yàn),在配有SPATANIII芯片的實(shí)驗(yàn)臺(tái)上通過了硬件測(cè)試。最后,把程序下載到一個(gè)獨(dú)立的硬件系統(tǒng),經(jīng)過不斷的調(diào)試和改進(jìn),終于完成了編碼算法的硬件實(shí)現(xiàn)。通過上述工作,我對(duì)設(shè)計(jì)、調(diào)試過程中出現(xiàn)的問題進(jìn)行了分析、研究、解決。</p&
92、gt;<p> 通過對(duì)EDA技術(shù)的學(xué)習(xí)和對(duì)這些編碼的初步嘗試,對(duì)前幾年的軟硬件方面的知識(shí)有了進(jìn)一步的了解和加深,進(jìn)一步對(duì)軟硬件的結(jié)合有了更深的認(rèn)識(shí)。經(jīng)過這個(gè)課題的研究使我們已經(jīng)開始掌握了復(fù)雜可編程邏輯器件的開發(fā)流程和步驟,并可以展開進(jìn)一步的提高,比如開發(fā)更為復(fù)雜的系統(tǒng)。我們研究的這個(gè)編碼譯碼模塊完全可以嵌入到一個(gè)更大大的通信系統(tǒng)內(nèi)部,作為其中的子模塊使用。</p><p> 回顧畢業(yè)設(shè)計(jì)的整個(gè)過
93、程,感受最深的并不是自己開發(fā)的這么一個(gè)差錯(cuò)控制編碼FPGA的實(shí)現(xiàn),而是一個(gè)設(shè)計(jì)從起步到終止整個(gè)過程的整體性,連貫性;在這個(gè)過程中,初步有了系統(tǒng)開發(fā)的概念和經(jīng)驗(yàn),為以后的學(xué)習(xí)工作打下了堅(jiān)實(shí)的基礎(chǔ);通過整個(gè)學(xué)習(xí)新知識(shí),運(yùn)用新知識(shí)的過程,鍛煉了自己獨(dú)立自主學(xué)習(xí),分析解決問題等等方面的能力。</p><p> 總之一句話,通過畢業(yè)設(shè)計(jì)階段的學(xué)習(xí)和鍛煉,受益頗深。 </p><p><b&g
94、t; 參考文獻(xiàn)</b></p><p> [1]潘松,黃繼業(yè) EDA技術(shù)與VHDL[M].北京:清華大學(xué)出版社, 2005-07:15-18. </p><p> [2]黃智偉.FPGA 系統(tǒng)設(shè)計(jì)與實(shí)踐[M].北京:電子工業(yè)出版社,2005</p><p> [3]王興亮.數(shù)字通信原理與技術(shù)[M].西安.西安電子科技大學(xué)出版社.2000
95、年.</p><p> [4]R. W. Hamming.Coding and Information Theory.Prentice-Hall.Englewood Cliffs.New Jersey.1980.</p><p> [5]劉科峰,張沙清, 田豐.EDA技術(shù)在電子設(shè)計(jì)中的應(yīng)用[J].廣西物理, 2004,(02)</p><p> [6]侯伯亨
96、顧 新.VHDL硬件描述語言與數(shù)字邏輯電路設(shè)計(jì)[M].西安:西安電子科技大學(xué)出版社, 1999.</p><p> [7]吳繼華,王誠.Altera FPGA/ CPLD 設(shè)計(jì)[M].北京:人民郵電出版,2005.</p><p> [8]劉佳,焦斌亮.FPGA 的發(fā)展趨勢(shì)及其新應(yīng)用[J].電子技術(shù),2008.</p><p> [9]樊昌信,等.通信原理[M
97、].北京:國防工業(yè)出版社,2005.</p><p> [10]周賢偉.差錯(cuò)控制編碼與安全[M].北京:國防工業(yè)出版社,2004.</p><p> [11]辛英.漢明碼糾錯(cuò)檢錯(cuò)能力分析與應(yīng)用[J].鹽城工學(xué)院報(bào):自然科學(xué)版,2008,21(1):34.</p><p> [12]郭瑛,俞宗佐.基于FPGA 的循環(huán)冗余校驗(yàn)?zāi)K設(shè)計(jì)[J],內(nèi)蒙古大學(xué)學(xué)報(bào):自然科
98、學(xué)版2010年第4期.</p><p> [13]王新梅,肖國鎮(zhèn).糾錯(cuò)碼-原理與方法[M].西安:西安電子科技大學(xué)出版社,1991.</p><p> [14]Shu Lin,Daniel J.Costello.Error Control Coding[M]:Fundamentals and Applications, 2nd Edition</p><p>
99、 [15]Tsfasman MA. Moduar curves,Shimura curves and Goppa codes,better than V arshamov2Gilbert bound[J].Math N ach r,1982,104:13~28.</p><p><b> 附 錄I</b></p><p> ?。?,4)漢明碼編碼的VHDL代碼:&
100、lt;/p><p> library IEEE;</p><p> use IEEE.STD_LOGIC_1164.ALL;</p><p> use IEEE.STD_LOGIC_ARITH.ALL;</p><p> use IEEE.STD_LOGIC_UNSIGNED.ALL;</p><p> --
101、Uncomment the following lines to use the declarations that are</p><p> -- provided for instantiating Xilinx primitive components.</p><p> --library UNISIM;</p><p> --use UNISIM.
102、VComponents.all;</p><p> entity hammbm is</p><p> port(hammin:in std_logic_vector(0 to 3);</p><p> hammout:out std_logic_vector(0 to 7));</p><p> end hammbm;</p&
103、gt;<p> architecture lab1 of hammbm is</p><p> signal p:std_logic_vector(0 to 3);</p><p><b> begin</b></p><p> p(0)<=(hammin(0)xor hammin(1))xor hammin(2);
104、</p><p> p(1)<=(hammin(0)xor hammin(1))xor hammin(3);</p><p> p(2)<=(hammin(0)xor hammin(2))xor hammin(3);</p><p> p(3)<=(hammin(1)xor hammin(2))xor hammin(3);</p>
105、<p> hammout(4 to 7)<=p(0 to 3);</p><p> hammout(0 to 3)<=hammin(0 to 3);</p><p><b> end lab1;</b></p><p><b> 附 錄II</b></p><p>
106、; ?。?,4)漢明碼譯碼的VHDL代碼:</p><p> ENTITY hammym IS</p><p> port(hamin:IN std_logic_VECTOR(0 to 7);</p><p> dataout:OUT std_logic_VECTOR(0 to 3);</p><p> sec,ded,ne:OUT
107、std_logic);</p><p> END hammym;</p><p> ARCHITECTURE ver1 OF hammym IS</p><p><b> begin</b></p><p> PROCESS(hamin)</p><p> variable syndro
108、me:std_logic_VECTOR(3 DOWNTO 0);</p><p><b> begin</b></p><p> syndrome(0):=(((((((hamin(0) XOR hamin(1)) XOR hamin(2))XOR hamin(3))XOR hamin(4))XOR hamin(5))XOR</p><p>
109、; hamin(6))XOR hamin(7));</p><p> syndrome(1):=(((hamin(0)XOR hamin(1))XOR hamin(3))</p><p> XOR hamin(5));</p><p> syndrome(2):=(((hamin(0)XOR hamin(2))XOR hamin(3))</p>
110、<p> XOR hamin(6)) ;</p><p> syndrome(3):=(((hamin(1)XOR hamin(2))XOR hamin(3))</p><p> XOR hamin(7));</p><p> IF(syndrome ="0000")THEN</p><p><b
111、> ne<='1';</b></p><p><b> ded<='0';</b></p><p><b> sec<='0';</b></p><p> dataout(0 to 3)<=hamin(0 to 3);<
112、/p><p> ELSIF (syndrome(0) = '1') THEN</p><p><b> ne<='0';</b></p><p><b> ded<='0';</b></p><p><b> sec<=
113、'1';</b></p><p> case syndrome (3 DOWNTO 1) IS</p><p> when"000"|"001"|"010"|"100"=></p><p> dataout(0 to 3)<=hamin(0
114、to 3);</p><p> when"011"=>dataout(0)<= NOT hamin (0);</p><p> dataout(1 to 3)<=hamin(1 to 3);</p><p> when"101"=>dataout(1)<= NOT hamin(1);<
115、/p><p> dataout(0)<=hamin(0);</p><p> dataout(2 to 3)<= hamin(2 to 3);</p><p> when"110"=>dataout(2)<= NOT hamin(2) ;</p><p> dataout(3)<= ham
116、in(3);</p><p> dataout(0 to 1)<= hamin(0 to 1);</p><p> when"111"=>dataout(3)<= NOT hamin(3) ;</p><p> dataout(0 to 2)<=hamin(0 to 2);</p><p>
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 基于fpga的差錯(cuò)控制編碼的設(shè)計(jì)與實(shí)現(xiàn)【文獻(xiàn)綜述】
- 基于fpga的差錯(cuò)控制編碼的設(shè)計(jì)與實(shí)現(xiàn)【畢業(yè)設(shè)計(jì)】
- 基于fpga的差錯(cuò)控制編碼的設(shè)計(jì)與實(shí)現(xiàn)【開題報(bào)告】
- gps儀的設(shè)計(jì)與實(shí)現(xiàn)【畢業(yè)設(shè)計(jì)+開題報(bào)告+文獻(xiàn)綜述】
- linux shell的設(shè)計(jì)與實(shí)現(xiàn)【畢業(yè)設(shè)計(jì)+開題報(bào)告+文獻(xiàn)綜述】
- 基于fpga的dds信號(hào)發(fā)生器設(shè)計(jì)【開題報(bào)告+文獻(xiàn)綜述+畢業(yè)設(shè)計(jì)】
- 基于.net人才招聘系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)【畢業(yè)設(shè)計(jì)+開題報(bào)告+文獻(xiàn)綜述】
- 基于.net短信發(fā)送平臺(tái)的設(shè)計(jì)與實(shí)現(xiàn)【畢業(yè)設(shè)計(jì)+開題報(bào)告+文獻(xiàn)綜述】
- 基于lamp的網(wǎng)上書店的設(shè)計(jì)與實(shí)現(xiàn)【畢業(yè)設(shè)計(jì)+開題報(bào)告+文獻(xiàn)綜述】
- 網(wǎng)絡(luò)考試系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)【開題報(bào)告+文獻(xiàn)綜述+畢業(yè)設(shè)計(jì)】
- 基于java的下載工具的設(shè)計(jì)與實(shí)現(xiàn)【畢業(yè)設(shè)計(jì)+開題報(bào)告+文獻(xiàn)綜述】
- 基于java的“博客”論壇系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)【畢業(yè)設(shè)計(jì)+開題報(bào)告+文獻(xiàn)綜述】
- 基于jsp的網(wǎng)上書店設(shè)計(jì)的與實(shí)現(xiàn)【畢業(yè)設(shè)計(jì)+開題報(bào)告+文獻(xiàn)綜述】
- 基于web的畢業(yè)論文管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)【畢業(yè)設(shè)計(jì)+開題報(bào)告+文獻(xiàn)綜述】
- 顯微視頻圖像的編碼與壓縮【開題報(bào)告+文獻(xiàn)綜述+畢業(yè)設(shè)計(jì)】
- 泛洪攻擊設(shè)計(jì)與實(shí)現(xiàn)【畢業(yè)設(shè)計(jì)+開題報(bào)告+文獻(xiàn)綜述】
- 基于ajax的社交網(wǎng)站交互平臺(tái)設(shè)計(jì)與實(shí)現(xiàn)【畢業(yè)設(shè)計(jì)+開題報(bào)告+文獻(xiàn)綜述】
- 基于內(nèi)容的圖像檢索系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)【畢業(yè)設(shè)計(jì)+開題報(bào)告+文獻(xiàn)綜述】
- 基于ajax的課程教學(xué)網(wǎng)站的設(shè)計(jì)與實(shí)現(xiàn)【畢業(yè)設(shè)計(jì)+開題報(bào)告+文獻(xiàn)綜述】
- 梵塔動(dòng)畫演示的設(shè)計(jì)與實(shí)現(xiàn)【畢業(yè)設(shè)計(jì)+開題報(bào)告+文獻(xiàn)綜述】
評(píng)論
0/150
提交評(píng)論