【電子信息工程畢業(yè)設(shè)計(jì) 文獻(xiàn)綜述 開(kāi)題報(bào)告】基于FPGA的差錯(cuò)控制編碼的設(shè)計(jì)與實(shí)現(xiàn)
《【電子信息工程畢業(yè)設(shè)計(jì) 文獻(xiàn)綜述 開(kāi)題報(bào)告】基于FPGA的差錯(cuò)控制編碼的設(shè)計(jì)與實(shí)現(xiàn)》由會(huì)員分享,可在線(xiàn)閱讀,更多相關(guān)《【電子信息工程畢業(yè)設(shè)計(jì) 文獻(xiàn)綜述 開(kāi)題報(bào)告】基于FPGA的差錯(cuò)控制編碼的設(shè)計(jì)與實(shí)現(xiàn)(49頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、【電子信息工程畢業(yè)設(shè)計(jì)+文獻(xiàn)綜述+開(kāi)題報(bào)告】基于FPGA的過(guò)失控制編碼的設(shè)計(jì)與實(shí)現(xiàn) 〔20_ _屆〕 本科畢業(yè)設(shè)計(jì) 基于FPGA的過(guò)失控制編碼的設(shè)計(jì)與實(shí)現(xiàn) 摘 要 本文主要介紹了電子設(shè)計(jì)自動(dòng)化〔EDA〕技術(shù)的主要特點(diǎn)、現(xiàn)狀、前景及意義,并就課題的研究方向做了相關(guān)的論述。進(jìn)一步論述了EDA技術(shù)的開(kāi)展對(duì)電路設(shè)計(jì)應(yīng)用的影響,探討了通過(guò)VHDL語(yǔ)言和可編程門(mén)陣列〔FPGA〕進(jìn)行電路設(shè)計(jì)開(kāi)發(fā)的流程。以其作為應(yīng)用對(duì)象,進(jìn)一步編程開(kāi)發(fā)了 8,4 增余漢明碼的編碼、譯碼,循環(huán)冗余過(guò)失校驗(yàn)編碼 CRC 和MD5編碼。通過(guò)對(duì)前兩種編碼各個(gè)模塊
2、進(jìn)行設(shè)計(jì),完整闡述了對(duì)前兩種編碼軟件局部的設(shè)計(jì)。同時(shí),通過(guò)測(cè)試,完善,修改,最終完成了各自獨(dú)立的編碼程序?;赩HDL硬件描述語(yǔ)言,利用FPGA器件開(kāi)發(fā)的過(guò)失控制編碼系統(tǒng),采用了自頂向下的設(shè)計(jì)方法用VHDL語(yǔ)言進(jìn)行設(shè)計(jì),選用當(dāng)前應(yīng)用最廣泛的EDA軟件XILINX ISE作為開(kāi)發(fā)平臺(tái)及配套的MULTISIM仿真工具。所有程序全部通過(guò)了該平臺(tái)的編譯和功能仿真測(cè)試,得出了實(shí)際的仿真波形,最后,對(duì)設(shè)計(jì)調(diào)試過(guò)程中出現(xiàn)的問(wèn)題進(jìn)行了分析、研究、解決。我還對(duì)上述這些各種編碼的異同點(diǎn)進(jìn)行了分析總結(jié),對(duì)MD5編碼進(jìn)行了算法分析,進(jìn)而對(duì)這些編碼進(jìn)行討論。 關(guān)鍵詞: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課題的來(lái)源 1 1.1.1 EDA技術(shù)綜述 1 1.1.2過(guò)失控制編碼技術(shù)介紹 3 1.2課題的意義 5 1.3過(guò)失控制編
8、碼開(kāi)展現(xiàn)狀 6 1.4課題研究的主要內(nèi)容 6 2 基于FPGA的過(guò)失控制編碼技術(shù) 8 2.1過(guò)失控制編碼的總體設(shè)計(jì)方案 8 2.2〔8,4〕增余漢明碼的過(guò)失控制編碼譯碼設(shè)計(jì) 8 2.2.1漢明碼編碼譯碼原理 8 2.2.2 〔8,4〕增余漢明碼的算法與實(shí)現(xiàn) 8 2.2.3 〔8,4〕漢明碼編碼波形仿真圖 10 2.2.4 〔8,4〕漢明碼譯碼算法實(shí)現(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)冗余過(guò)失控制校驗(yàn)碼的設(shè)計(jì) 15 2.3.1
9、 CRC循環(huán)校驗(yàn)碼編碼校驗(yàn)原理 15 2.3.2 CRC循環(huán)碼編碼規(guī)那么 15 2.3.3 CRC循環(huán)碼算法分析 15 2.3.4 CRC校驗(yàn)生成模塊的設(shè)計(jì)實(shí)現(xiàn) 17 2.3.5 CRC校驗(yàn)生成模塊仿真波形圖 18 2.3.6 CRC校驗(yàn)接收模塊的設(shè)計(jì)實(shí)現(xiàn) 19 2.3.7 CRC校驗(yàn)接收模塊仿真波形圖 20 2.4 MD5碼的算法分析 20 2.5.1 MD5的引言 20 2.5.2 MD5的原理 21 2.5.4 MD5的應(yīng)用 22 3過(guò)失控制編碼技術(shù)開(kāi)發(fā)體會(huì) 23 3.1 算法的重要 23 3.2 硬件對(duì)軟件的制約影響 23 3.3 調(diào)試的重要性 23 4
10、結(jié)束語(yǔ) 24 致 謝 26 附 錄I 27 附 錄II 28 附 錄III 30 附 錄IV 33 1 緒 論 1.1.1 EDA技術(shù)綜述 由于大規(guī)模集成電路開(kāi)發(fā)技術(shù)的應(yīng)用和開(kāi)展以及電子產(chǎn)品市場(chǎng)運(yùn)作的進(jìn)一步加快,涉及諸如通信、、、、技術(shù)是在電子技術(shù)根底上開(kāi)展起來(lái)的計(jì)算機(jī)軟件系統(tǒng),是指以計(jì)算機(jī)為工作平臺(tái),了應(yīng)用電子技術(shù)、計(jì)算機(jī)技術(shù)、信息處理最新成果,進(jìn)行電子產(chǎn)品的自動(dòng)設(shè)計(jì)。利用工具,電子設(shè)計(jì)師大量工作通過(guò)計(jì)算機(jī)完成,并可以將電子產(chǎn)品從電路設(shè)計(jì)、性能分析到設(shè)計(jì)出IC幅員或PCB幅員的整個(gè)過(guò)程的計(jì)算機(jī)上自動(dòng)處理完成。 圖1-1 可編程邏輯器件開(kāi)發(fā)設(shè)計(jì)流程圖 接受任務(wù)
11、:進(jìn)行系統(tǒng)設(shè)計(jì)之前,先要由總體設(shè)計(jì)部門(mén)給出設(shè)計(jì)的任務(wù)和設(shè)計(jì)的一些要求。 確定功能:對(duì)給出的設(shè)計(jì)任務(wù)和設(shè)計(jì)的一些要求進(jìn)行分析,確定出具體的功能及要求。 進(jìn)行分析:決定設(shè)計(jì)中所要采用的設(shè)計(jì)方法。 源代碼模擬:在設(shè)計(jì)中,利用VHDL硬件描述語(yǔ)言仿真器進(jìn)行源代碼仿真可以在早期開(kāi)發(fā)中發(fā)現(xiàn)設(shè)計(jì)上的缺陷、錯(cuò)誤,并及時(shí)進(jìn)行改正,既而,縮短了開(kāi)發(fā)周期節(jié)省了大量的設(shè)計(jì)時(shí)間。 綜合、優(yōu)化和布局布線(xiàn):所謂綜合就是將較高層次的抽象描述,轉(zhuǎn)化到較低級(jí)描述的一種方法,即將設(shè)計(jì)的VHDL描述轉(zhuǎn)化成底層電路表示。優(yōu)化是指將設(shè)計(jì)的時(shí)延縮小到最小,有效利用資源。布局布線(xiàn)就是把通過(guò)綜合、優(yōu)化所得到的邏輯,安放到一個(gè)邏輯器件中
12、的過(guò)程,一個(gè)較好的布局布線(xiàn)過(guò)程,就是將電路的相關(guān)局部放置在一起,以消除布線(xiàn)延遲。 布局布線(xiàn)后的設(shè)計(jì)模擬:布局布線(xiàn)后的設(shè)計(jì)模擬與源代碼模擬不同,源代碼模擬只是對(duì)設(shè)計(jì)的邏輯功能進(jìn)行模擬,而布局布線(xiàn)后的設(shè)計(jì)模擬不僅可以對(duì)邏輯功能進(jìn)行驗(yàn)證,而且還能對(duì)設(shè)計(jì)時(shí)序功能進(jìn)行驗(yàn)證。 器件編程和配置:器件編程就是將VHDL設(shè)計(jì)描述經(jīng)過(guò)模擬、綜合、優(yōu)化和布局布線(xiàn)的結(jié)果,經(jīng)過(guò)一定映射轉(zhuǎn)化成一個(gè)器件編程所用的數(shù)據(jù)文件格式。器件配置就是在功能仿真和時(shí)序仿真正確的前提下,將綜合后的文件下載到具體的芯片中進(jìn)行電路驗(yàn)證。 過(guò)失控制在數(shù)據(jù)通信過(guò)程中能發(fā)現(xiàn)也能糾正過(guò)失,把錯(cuò)誤限制在盡可能小的范圍內(nèi)的技術(shù)和方法。在信息傳輸
13、中常利用編碼方法對(duì)傳輸中產(chǎn)生的過(guò)失進(jìn)行過(guò)失控制以提高數(shù)字消息傳輸?shù)臏?zhǔn)確率。過(guò)失控制系統(tǒng)的組成和原理如圖1-2: 圖1-2 過(guò)失控制系統(tǒng)原理圖 圖中虛線(xiàn)內(nèi)的局部就是信號(hào)傳輸中的過(guò)失控制系統(tǒng)。當(dāng)沒(méi)有過(guò)失控制系統(tǒng)時(shí),信源輸出的信息將直接送往信宿。但是由于信道中存在干擾,信道的輸出將發(fā)生錯(cuò)誤。信號(hào)在傳輸中發(fā)生過(guò)失的概率是傳輸準(zhǔn)確率的一個(gè)重要指標(biāo)。在數(shù)據(jù)傳輸中信道給定以后,如果誤碼率不能滿(mǎn)足既定的要求,就要采取過(guò)失控制了。具體的實(shí)現(xiàn)方法各有不同,過(guò)失控制可以分為前向糾錯(cuò)法、反應(yīng)重傳法和混合法三種類(lèi)型[3]。 〔1〕前向糾錯(cuò)法 過(guò)失控制系統(tǒng)只含有編碼器和譯碼器。從信源輸出的傳輸信號(hào)在信道編碼器中被
14、編碼,然后輸出送往信道。因?yàn)樾诺谰幋a器使用的是糾錯(cuò)碼,所以譯碼器可以改正傳輸過(guò)程中所帶來(lái)的大局部過(guò)失進(jìn)而使信宿得到相比照擬正確的序列。 〔2〕反應(yīng)重傳法 僅僅只利用了檢錯(cuò)碼來(lái)發(fā)現(xiàn)傳輸中帶來(lái)的過(guò)失,并且在發(fā)現(xiàn)過(guò)失以后通過(guò)信道反向通知發(fā)信端再重新傳輸相應(yīng)的一組數(shù)字,以此來(lái)提高傳輸信號(hào)的準(zhǔn)確性。反應(yīng)重傳法根據(jù)重傳方法的不同還可以分成很多種種實(shí)現(xiàn)方式。其中最普遍,最簡(jiǎn)單的一種被稱(chēng)為等待重傳方式。采用這種方式時(shí)發(fā)信端每送出一組信號(hào)就停下來(lái)等待收信端的應(yīng)答。這時(shí)信道譯碼器如果沒(méi)有發(fā)現(xiàn)過(guò)失便通過(guò)反向信道向發(fā)信端發(fā)出表示正確的答復(fù),否那么信源會(huì)重新傳輸原先那組信號(hào)。 〔3〕混合法 在信道存在交大干擾
15、時(shí),僅用反應(yīng)重傳會(huì)因不斷重傳,而使信息的傳輸速率下降過(guò)多,從而僅用前向糾錯(cuò)又不能保證傳輸信息足夠的準(zhǔn)確性。這時(shí)兩者兼用比擬有利,這就是所說(shuō)的混合法。此方法所用的信道編碼是一種既能糾正局部過(guò)失,又能發(fā)現(xiàn)大局部過(guò)失的碼。信道譯碼器首先糾正那些可以糾正的過(guò)失,只對(duì)那些不能糾正,但能發(fā)現(xiàn)的過(guò)失才要求重傳。這會(huì)大大降低重傳的次數(shù)。同時(shí),由于這種碼的檢錯(cuò)能力非常強(qiáng),最終所得到的信息的準(zhǔn)確率是比擬高的。過(guò)失控制編碼又可區(qū)分為檢錯(cuò)碼和糾錯(cuò)碼兩種。檢錯(cuò)碼只能檢查出傳輸中信號(hào)出現(xiàn)的過(guò)失,發(fā)送方只有重傳數(shù)據(jù)才能夠糾正這種過(guò)失;而糾錯(cuò)碼不僅能檢查出過(guò)失而且還能能自動(dòng)糾正過(guò)失,防止了重傳機(jī)制。 如今各種數(shù)字通信系
16、統(tǒng)已廣泛用于我們的生產(chǎn)生活中。然而數(shù)字信號(hào)在傳輸過(guò)程中,由于受到干擾的影響,碼元波形將變壞。接收端收到后可能發(fā)生錯(cuò)誤判決。由乘性干擾引起的碼間串?dāng)_,可以采用均衡的方法糾正。而加性干擾的影響那么需要用其它方法解決。在設(shè)計(jì)數(shù)字通信系統(tǒng)時(shí),應(yīng)該首先從合理選擇調(diào)制制度、解調(diào)方法以及發(fā)送功率等方面考慮,使加性干擾缺乏以影響到達(dá)誤碼率的要求。在仍不能滿(mǎn)足要求時(shí),就要考慮過(guò)失控制措施了,這就是我們研究過(guò)失控制技術(shù)的意義所在。 現(xiàn)代電子產(chǎn)品面臨高功能、設(shè)計(jì)周期短、上市快的要求,其復(fù)雜度日益加深。一個(gè)電子系統(tǒng),可能由數(shù)萬(wàn)個(gè)中小規(guī)模的集成電路構(gòu)成,這就帶來(lái)了體積大、功耗大和可靠性差的問(wèn)題,解決這一問(wèn)題的有效方法
17、,就是來(lái)用可編程邏輯器件〔PLD〕進(jìn)行設(shè)計(jì)??删幊踢壿嬈骷绕涫荈PGA器件,即現(xiàn)場(chǎng)可編程門(mén)陣列,它是在PAL、GAL、CPLD等可編程器件的根底上進(jìn)一步開(kāi)展的產(chǎn)物。它是作為專(zhuān)用集成電路領(lǐng)域中的一種半定制電路而出現(xiàn)的,既解決了定制電路的缺乏,又克服了原有可編程器件門(mén)電路數(shù)有限的缺點(diǎn)1948年C.E.香農(nóng)〔Shannon〕發(fā)表論文指出,只要采用適當(dāng)?shù)募m錯(cuò)碼,就可在多類(lèi)信道上傳輸消息。宣告了糾錯(cuò)碼的誕生。自Shannon之后,人們不斷向逼近信道容量努力,取得重大開(kāi)展,如分組碼,代數(shù)碼,卷積碼,網(wǎng)格碼和Turbo碼。所能到達(dá)的性能也越來(lái)越接近Shannon限間的距離[5]?,F(xiàn)在利用FPGA技術(shù)實(shí)現(xiàn)
18、過(guò)失控制編碼的種類(lèi)很多,而且這些具有很強(qiáng)的糾錯(cuò)、檢錯(cuò)碼,被廣泛應(yīng)用到密碼學(xué)、通信、磁盤(pán)陣列及光存儲(chǔ)、衛(wèi)星通信、移動(dòng)通信、深空通信等眾多領(lǐng)域[6]。 漢明碼是一種能糾一位錯(cuò)的線(xiàn)性分組碼, 由于它的編譯碼簡(jiǎn)單,在數(shù)據(jù)通信和計(jì)算機(jī)存儲(chǔ)系統(tǒng)中廣泛應(yīng)用,如在藍(lán)牙和硬盤(pán)陣列中[6]。它可以糾正一位錯(cuò)誤,但對(duì)于兩位錯(cuò)不能檢測(cè),還可能會(huì)造成誤糾。盡管,發(fā)生一位錯(cuò)的概率相對(duì)最高, 但在一些要求較高的應(yīng)用中,漢明碼不能滿(mǎn)足要求。常用的能檢測(cè)兩位錯(cuò)同時(shí)能糾正1位錯(cuò)的糾錯(cuò)碼有 8,4 擴(kuò)展?jié)h明碼。 CRC即循環(huán)冗余校驗(yàn)碼:是數(shù)據(jù)通信領(lǐng)域中最常用的一種過(guò)失校驗(yàn)碼,其特征是信息字段和校驗(yàn)字段的長(zhǎng)度可以任意選定。C
19、RC ,采用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í)高速的通信系統(tǒng)已經(jīng)不能滿(mǎn)足其對(duì)于信息處理高速化、并行化的要求。因此,本文提出一種新的并行CRC 編碼方法,用VHDL 語(yǔ)言在FPGA 芯片上編程,實(shí)現(xiàn)在一個(gè)時(shí)鐘周期內(nèi)完成一次并行CRC 碼的計(jì)算及校驗(yàn)。該方法可以對(duì)不同長(zhǎng)度的數(shù)據(jù)進(jìn)行過(guò)失控制,而且大大縮短了CRC碼的校驗(yàn)周期,為實(shí)現(xiàn)循環(huán)冗余校驗(yàn)提供了一種新思路。 MD5的全稱(chēng)是Message-Digest Algorithm 5,在90年代初由MIT的計(jì)算機(jī)科學(xué)實(shí)驗(yàn)室和RSA Data
20、Security Inc創(chuàng)造,經(jīng)MD2、MD3和MD4開(kāi)展而來(lái)。Message-Digest一般是指字節(jié)串信息的Hash變換,即把一個(gè)任意長(zhǎng)度的字節(jié)串變換成一定長(zhǎng)的大整數(shù)。MD5還廣泛用于加密和解密技術(shù)上,在很多操作系統(tǒng)中,用戶(hù)的密碼是以MD5值的方式保存的[8]。 對(duì)于過(guò)失控制編碼技術(shù)的研究,我主要是研究 8,4 增余漢明碼編譯碼、CRC循環(huán)編碼和MD5編碼,首先分別研究這幾種編碼的算法,對(duì)前兩種分別應(yīng)用FPGA技術(shù)去實(shí)現(xiàn),用VHDL語(yǔ)言去編寫(xiě)代碼,然后再進(jìn)行編譯,下載,仿真及其去了解這些編碼;然后是對(duì)MD5碼進(jìn)行研究和算法分析;最后總結(jié)出它們的異同點(diǎn),以適應(yīng)在以后需要的時(shí)候選擇適當(dāng)?shù)木幋a
21、應(yīng)用到相應(yīng)的領(lǐng)域中去。 2 基于FPGA的過(guò)失控制編碼技術(shù) 在具體設(shè)計(jì)過(guò)程中,采取自上而下的設(shè)計(jì)思路。首先根據(jù)整體的規(guī)劃設(shè)計(jì)出模塊的外部輸入輸出引腳定義以及功能,即根據(jù)需求設(shè)計(jì)出功能模塊的整體外部特性,然后根據(jù)設(shè)計(jì)的這一外部特性以及功能描述模塊內(nèi)部的實(shí)現(xiàn)細(xì)節(jié)。 2.2〔8,4〕增余漢明碼的過(guò)失控制編碼譯碼設(shè)計(jì) 漢明碼,是由Richard Hamming于1950年提出的,它屬于線(xiàn)性分組編碼方式,用來(lái)糾正單個(gè)錯(cuò)誤的線(xiàn)性分組碼。 假設(shè),原代碼的碼長(zhǎng)為k 比特,附加糾錯(cuò)編碼局部為r比特,當(dāng)碼字長(zhǎng)度n 2r-1,r n-k,r 1,2??????時(shí)就稱(chēng)這種線(xiàn)性分組碼為漢明碼。其根本原
22、理是,將信息碼元、監(jiān)督碼元通過(guò)線(xiàn)性方程式聯(lián)系起來(lái),每一個(gè)監(jiān)督位被編在傳輸碼字的特定比特位置上。系統(tǒng)對(duì)于錯(cuò)誤的那一位不管是原有信息位中的,或者是附加監(jiān)督位中的都能把它別離開(kāi)來(lái)[9]。從漢明碼的性質(zhì)可以得知, 8,4 增余漢明碼能夠糾正1位錯(cuò),檢測(cè)出兩位錯(cuò)。 .2 〔8,4〕增余漢明碼的算法與實(shí)現(xiàn) 8,4 增余漢明碼全碼碼元數(shù)n 8,其中信息碼元數(shù)k 4 ,監(jiān)督碼元數(shù)d 4,其監(jiān)督矩陣為: 對(duì)于任何給定的信息碼組,都可以由下式求出相應(yīng)的監(jiān)督碼元,即: 假設(shè)用方程式來(lái)表示, 那么上式可以寫(xiě)成: 從而形成全碼這就是 8,4 增余漢明碼的編碼過(guò)程。由于漢明碼編碼VHDL語(yǔ)言描述比擬簡(jiǎn)單,
23、在這里就不詳細(xì)做介紹,具體見(jiàn)附錄I代碼。 〔8,4〕漢明碼編碼的頂層設(shè)計(jì)模塊如圖2-1所示: 圖2-1 漢明碼編碼模塊圖 可以看出,輸入為四位并行輸入,編碼后為一個(gè)八位的并行輸出。 〔8,4〕漢明碼編碼的底層設(shè)計(jì)模塊如圖2-2所示: 圖2-2 漢明碼編碼模塊底層關(guān)系圖 底部的各個(gè)分模塊為兩位的輸入模通過(guò)各種邏輯運(yùn)算,并最終組合在一起形成一個(gè)8位的最終編碼輸出。 2.2.3 〔8,4〕漢明碼編碼波形仿真圖: 圖2-3 漢明碼編碼仿真圖 2.2.4 〔8,4〕漢明碼譯碼算法實(shí)現(xiàn) [n,k,d]分組碼的譯碼步驟可歸結(jié)為以下三步: 1 根據(jù)接收到的R計(jì)算伴隨式S R??HT;
24、 2 當(dāng)S 0時(shí),認(rèn)為接收正確。假設(shè)S≠0,由表2-1找出錯(cuò)誤圖樣E^; 3 由E^和R 找出C^ R-E^。 漢明碼的譯碼較簡(jiǎn)單,它可由S 直接得到錯(cuò)誤圖樣E^。其他分組碼如何由S 求得E^就比擬復(fù)雜。而一個(gè)譯碼器的復(fù)雜性及其譯碼錯(cuò)誤概率也是由這一步?jīng)Q定的。 設(shè)接收方收到發(fā)送方傳來(lái)的一個(gè)完整的編碼為:X11,X22,X33,X44,X55,X66,X77,X88,根據(jù)漢明碼校驗(yàn)矩陣: S1 S2 S3 S4為 8 ,4 增余漢明碼的校驗(yàn)子。當(dāng)S1 S2 S3 S4 0000 時(shí),傳送無(wú)誤;當(dāng)S1 S2 S3 S4為偶數(shù)時(shí),可判接收到的全碼中有兩位錯(cuò)誤,但不能判斷哪兩位錯(cuò)
25、,可要求發(fā)送方重新發(fā)送全碼;當(dāng)S1 S2 S3 S4為奇數(shù)時(shí),可根據(jù)表2-1判斷哪一位錯(cuò),然后通過(guò)軟件來(lái)糾錯(cuò),完成譯碼過(guò)程。 表2-1 〔8,4〕漢明碼校驗(yàn)參數(shù) 錯(cuò)位 S1 S2 S3 S4 錯(cuò)位 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語(yǔ)言描述〔8,4〕漢明譯碼算法功能模塊如圖2-5所示: 圖2-5 漢明碼譯碼頂層模塊圖 Hamin為漢明8位數(shù)據(jù)輸入
26、,dataout為漢明4位數(shù)據(jù)輸出,sec、ded、ne為診斷輸出。局部代碼如下: IF syndrome "0000" THEN -- 沒(méi)出錯(cuò)的情況; ne '1'; ded '0'; sec '0'; dataout 0 to 3 hamin 0 to 3 ; ELSIF syndrome 0 '1' THEN -- 一位出錯(cuò)情況; ne '0'; ded '0'; sec '1'; case syndrome 3 DOWNTO 1 IS -- 查表糾錯(cuò) 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 -- 兩位出錯(cuò)情況; ne '0'; ded '1'; sec '0'; dataout 0 to 3 "0000"; END IF ; 當(dāng)接受校驗(yàn)無(wú)誤,那么診斷輸出ne、ded、se
29、c按“100〞標(biāo)識(shí),假設(shè)一位出錯(cuò),那么按“001〞標(biāo)識(shí),然后在根據(jù)syndrome各位數(shù)判斷是哪位出錯(cuò)并糾錯(cuò),出錯(cuò)兩位那么按“010〞標(biāo)識(shí)并清0,需要重傳機(jī)制。 2.2.5〔8,4〕漢明碼譯碼波形仿真圖: 圖2-6 漢明碼譯碼仿真圖 可以看出,通過(guò)譯碼模塊,8位全碼又重新譯碼成原輸入數(shù)據(jù),其中,第三第四組數(shù)據(jù)認(rèn)為制造了數(shù)據(jù)錯(cuò)誤,第三組數(shù)據(jù)出錯(cuò)一位,仿真輸出結(jié)果得到了糾正,第四組數(shù)據(jù)由于出錯(cuò)兩位,清0處理。 2.2.6 〔8,4〕漢明碼編碼譯碼綜合模塊 通過(guò)原件例化,對(duì)編碼、譯碼電路進(jìn)行連接得到綜合頂層模塊如下: 圖2-7 漢明碼編碼譯碼綜合頂層模塊圖 對(duì)頂層模塊進(jìn)行細(xì)化,如下圖:
30、 圖2-8 漢明碼編碼譯碼綜合底層模塊圖 2.2.7 〔8,4〕漢明碼編碼譯碼綜合波形仿真圖 圖2-9 漢明碼綜合模塊仿真圖 2.3 循環(huán)冗余過(guò)失控制校驗(yàn)碼的設(shè)計(jì) 2.3.1 CRC循環(huán)校驗(yàn)碼編碼校驗(yàn)原理 CRC校驗(yàn)采用的是多項(xiàng)式編碼的方法。被處理的數(shù)據(jù)塊可以看作是一個(gè)n 階的二進(jìn)制多項(xiàng)式,如一個(gè)12 位二進(jìn)制數(shù)1XXXXXXXXXX010可以表示為:x11+x9+x7+x5+x3+x1+1。多項(xiàng)式乘除法運(yùn)算的過(guò)程與普通代數(shù)多項(xiàng)式的乘除法大體相同。多項(xiàng)式的加減法運(yùn)算以2為模,加減時(shí)不用進(jìn)位、錯(cuò)位,和邏輯的異或運(yùn)算一致。利用CRC 校驗(yàn)時(shí),發(fā)送方和接收方用要有同一個(gè)生成多項(xiàng)式P x
31、,并且要使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]。 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ì)更小。 2.3.2 CRC循環(huán)碼編碼規(guī)那么 CRC編碼實(shí)際上就是將要發(fā)送的M 位二進(jìn)制多項(xiàng)式T〔x〕轉(zhuǎn)換成為可以被P〔x〕除盡的M+R位二進(jìn)制多項(xiàng)式T' x ,因此在解碼時(shí)可以用接受到的數(shù)據(jù)去除P〔x〕,如果余數(shù)R為零,那么
32、表示傳輸過(guò)程沒(méi)有發(fā)生錯(cuò)誤;如果余數(shù)R不為零,那么在傳輸過(guò)程中必定存在錯(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ù)。 2.3.3 CRC循環(huán)碼算法分析 CRC校驗(yàn)碼的編碼方法是用待發(fā)送的二進(jìn)制數(shù)據(jù)T〔x〕除以生成多項(xiàng)式P〔x〕,將最后的余數(shù)作為CRC校驗(yàn)碼。其實(shí)現(xiàn)步驟如下[11]: 〔1〕設(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(mén) x 。
33、 〔2〕 用生成多項(xiàng)式P〔x〕去除T x ,求得余數(shù)為階數(shù)為R-1 的二進(jìn)制多項(xiàng)式Y(jié)〔x〕。此二進(jìn)制多項(xiàng)式Y(jié)〔x〕就是T〔x〕經(jīng)過(guò)生成多項(xiàng)式P〔x〕編碼的CRC校驗(yàn)碼。 〔3〕 用T x 以模2的方式減去Y〔x〕,得到二進(jìn)制多項(xiàng)式T' x 。T' x 即為包含了CRC校驗(yàn)碼的待發(fā)送的字符串。 由于CRC-32、CRC-16、CCITT和CRC-4的編碼過(guò)程根本一致,只有位數(shù)和生成多項(xiàng)式不一樣。為了表達(dá)上的方便,我們用CRC-4編碼的例子來(lái)說(shuō)明CRC的編碼過(guò)程。 設(shè)待發(fā)送的數(shù)據(jù)T〔x〕為一個(gè)12位的二進(jìn)制數(shù)據(jù)1XXXXXXXXXX0;CRC-4的生成多項(xiàng)式為P〔x〕 x4+x+1,
34、階數(shù)R為4。首先我們?cè)赥〔x〕的末尾添加4個(gè)0,數(shù)據(jù)塊就成了1XXXXXXXXXX00000。然后用P〔x〕去除,商的值我們無(wú)需考慮,只需要求得余數(shù)Y〔x〕。表2-1給出了舉例數(shù)據(jù)的除法過(guò)程。 表2-1用移位除法求校驗(yàn)碼的過(guò)程表 除數(shù)次數(shù) 被除數(shù)/ P〔x〕/結(jié)果 余數(shù) 0 1XXXXXXXXXX10000 1001110000 10011 1001110000 1 1001110000 100000 10011 100000 2 100000 0011 10011 0011 從表2-1中可以看出,CRC編碼
35、實(shí)際上是一個(gè)循環(huán)移位的模2運(yùn)算。對(duì)于CRC-4而言,我們假設(shè)有一個(gè)5位的數(shù)據(jù)以為存放器,通過(guò)反復(fù)的移位和進(jìn)行二進(jìn)制的除法,最終該存放器中的值去掉最高一位就是我們所要求的余數(shù)。 2.3.4 CRC 校驗(yàn)生成模塊的設(shè)計(jì)實(shí)現(xiàn) CRC 校驗(yàn)生成模塊是在XILINX ISE 平臺(tái)編程實(shí)現(xiàn),程序首先執(zhí)行了11次異或運(yùn)算,流程圖如2-10所示,然后在作一次異或運(yùn)算,得到的記過(guò)就是crc校驗(yàn)碼 圖2-10 CRC校驗(yàn)生成模塊流程圖 根據(jù)上述流程圖,用VHDL語(yǔ)言描述CRC編碼生成模塊如圖2-11所示: 圖2-11 CRC校驗(yàn)生成模塊 CRC 校驗(yàn)生成模塊如圖2-11 所示. 其中sdata 是12
36、 位發(fā)送信息,datald 是sdata 的裝載信號(hào),clk是時(shí)鐘信號(hào),datacrco 是附加上4 位CRC 校驗(yàn)碼的16 位CRC 碼,hsend 是與檢錯(cuò)模塊的握手信號(hào)。 2.3.5 CRC校驗(yàn)生成模塊仿真波形圖 圖2-12 CRC校驗(yàn)生成模塊仿真波形圖 2.3.6 CRC 校驗(yàn)接收模塊的設(shè)計(jì)實(shí)現(xiàn) CRC 校驗(yàn)檢錯(cuò)模塊編程思想和生成模塊類(lèi)似,從接收到的CRC 碼中,提取出信息碼,然后將信息碼與生成多項(xiàng)式進(jìn)行異或運(yùn)算,最后判斷得到的余數(shù)與CRC 生成模塊中得到的校驗(yàn)碼是否相同,如果相同,認(rèn)為信息發(fā)送正確,將輸出的誤碼
37、警告標(biāo)志信號(hào)crcerror 設(shè)置為“0〞;反之,那么認(rèn)為信息發(fā)送錯(cuò)誤,將crcerror 設(shè)置為“1〞。 CRC 校驗(yàn)檢錯(cuò)模塊如圖2-13所示,其端口數(shù)據(jù)說(shuō)明如下: clk :時(shí)鐘信號(hào); rdata :接收模塊 檢錯(cuò)模塊 接收的12 位有效信息數(shù)據(jù); hrecv :接收控制信號(hào); datafini :數(shù)據(jù)接收校驗(yàn)完成標(biāo)志信號(hào); datacrci :附加上5 位CRC 校驗(yàn)碼的17 位CRC 碼; crcerror :錯(cuò)誤標(biāo)志信號(hào); 圖2-13 CRC校驗(yàn)接收模塊的設(shè)計(jì)實(shí)現(xiàn) 2.3.7 CRC校驗(yàn)接收模塊仿真波形圖 圖2-14 CRC校驗(yàn)接收模塊仿真波形圖 2.4 MD
38、5碼的算法分析 MD5碼就是把一個(gè)任意長(zhǎng)度的字節(jié)串變換成一定長(zhǎng)的大整數(shù)。即MD5將任意長(zhǎng)度的“字節(jié)串〞變換成一個(gè)128位的大整數(shù),并且它是一個(gè)不可逆的字符串變換算法,換言之,即使你看到源程序和算法描述也無(wú)法將一個(gè)MD5的值變換回原始的字符串[12]。從數(shù)學(xué)原理上說(shuō)是因?yàn)樵嫉淖址袩o(wú)窮多個(gè),這有點(diǎn)像不存在反函數(shù)的數(shù)學(xué)函數(shù)。 2.5.1 MD5的引言 MD5算法就是把不同長(zhǎng)度的信息串轉(zhuǎn)化到128位編碼中形成Hash值。然后比擬這個(gè)數(shù)值是否正確從而確定通信雙方的合法性。這也可以說(shuō)是一種數(shù)字認(rèn)證,在數(shù)據(jù)傳輸以后,我們可以通過(guò)比擬Hash值,來(lái)判斷信息傳輸途中有沒(méi)有被被修改,是否是合法人發(fā)送
39、或者是有合法人接收的[13]。利用這種方式,來(lái)防止密鑰喪失。由于 MD5加密算法的隨機(jī)生成性,沒(méi)有正確的Hash 值是不可能解開(kāi)加密局部的。而且MD5算法同時(shí)具備數(shù)字認(rèn)證的功能,可以證明發(fā)送方和接收方的合法性,比擬適用于那些商業(yè)信息的傳遞。 2.5.2 MD5的原理 該算法輸入任意長(zhǎng)度的消息,輸出128 位消息摘要,處理以512位輸入數(shù)據(jù)塊為單位。處理報(bào)文摘要的過(guò)程如下[14]: 〔1〕添加填充位。在消息的最后,添加適當(dāng)?shù)奶畛湮皇箶?shù)據(jù)位的長(zhǎng)度滿(mǎn)足與448模512同余。 〔2〕添加長(zhǎng)度。原消息長(zhǎng)度我們用64位表示,且附加在〔1〕的結(jié)果后面。由這兩個(gè)步驟得到了512整數(shù)倍的報(bào)文。將其表示為
40、L個(gè)512 位的數(shù)據(jù)塊:Y0,Y1 ,…,YL-1。他們的長(zhǎng)度為L(zhǎng)×512位,設(shè)N L×16,那么得到了長(zhǎng)度為N個(gè)32 位的字。M[0…N-1]表示以字為單位的消息。 〔3〕初始化MD緩沖區(qū)。一個(gè)128位MD緩沖區(qū)用以保存中間和最終散列函數(shù)的結(jié)果。它可以表示成4個(gè)32位的存放器A、B、C、D。并對(duì)其進(jìn)行初始化: 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ù)在前的格式進(jìn)行存儲(chǔ)。 〔4〕處理消息塊。它包括4輪處理,每次處理都具有相似的結(jié)構(gòu),但每次使用不同的根本邏輯函數(shù),記為F、G、H、I。每次使用64元素表T[1…64]四分之一。T由正弦函數(shù)構(gòu)造而成。T的第i個(gè)元素表示為T(mén)[i],其值等于232×abs sin i 的整數(shù)局部,其中i是弧度。T的每一個(gè)元素是一個(gè)可以表示成32位的整數(shù)。T表提供了隨機(jī)化的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 輸出結(jié)果。 2.5.4 MD5的應(yīng)用 MD5碼的應(yīng)用,主要是在加密、解密兩個(gè)方面[15]。在我們的解壓縮文件中,有很多就是應(yīng)用到了MD5碼。由于它的保密工作具有一次性保密工作的特點(diǎn),不僅保存了一次性口令的優(yōu)點(diǎn),而且克服了序列密碼一次性口令系統(tǒng)中的小數(shù)攻擊和IP地址欺騙攻擊的漏洞
43、,同時(shí)又防止了RSA算法中大整數(shù)質(zhì)因數(shù)分解的計(jì)算效率問(wèn)題。 3過(guò)失控制編碼技術(shù)開(kāi)發(fā)體會(huì) 3.1 算法的重要 在剛開(kāi)始設(shè)計(jì)這個(gè)畢設(shè)的時(shí)候,我可以說(shuō)的這個(gè)課題不甚了解,有點(diǎn)無(wú)從下手的感覺(jué),通過(guò)上網(wǎng)查詢(xún)和陳老師的教導(dǎo),我的課題是一個(gè)研究性的課題,所以我就要搜集好幾種編碼來(lái)分別進(jìn)行研究,來(lái)找出它們的異同點(diǎn),首先找到的是漢明碼和CRC碼,這兩種廣泛應(yīng)用于數(shù)字通訊中的編碼,但是我要用FPGA去實(shí)現(xiàn),這種用硬件實(shí)現(xiàn)起來(lái)傳輸速度會(huì)很快,可是在這之中算法就是一個(gè)很難的問(wèn)題,我只有理解了算法才能用VHDL的語(yǔ)言來(lái)做出來(lái),包括我后來(lái)做的MD5編碼,算法也是相當(dāng)?shù)闹匾模椅矣X(jué)得很難,這些花費(fèi)我很多的時(shí)間。
44、 算法可以說(shuō)是一種編碼的靈魂,沒(méi)有算法我是不可能實(shí)現(xiàn)我的研究課題的,這些涉及到很多別的問(wèn)題,不是很容易明白,我就要不斷地去分析和查找書(shū)籍,找出這些原理的所在,為下面的工作做準(zhǔn)備。 3.2 硬件對(duì)軟件的制約影響 在畢業(yè)設(shè)計(jì)的過(guò)程中,尤其到了硬件調(diào)試的時(shí)候,還有一點(diǎn)感受比擬深刻,那就是硬件對(duì)軟件設(shè)計(jì)的影響。由于試驗(yàn)臺(tái)硬件和小組設(shè)計(jì)試驗(yàn)板硬件性能不完全相同,致使軟件系統(tǒng)從試驗(yàn)臺(tái)到試驗(yàn)板的過(guò)程中遇到了很多意想不到的問(wèn)題,最終還是通過(guò)修改軟件來(lái)適應(yīng)硬件的標(biāo)準(zhǔn)。 3.3 調(diào)試的重要性 程序?qū)懗鰜?lái)之后,需要進(jìn)行大量的硬件調(diào)試工作,否那么的話(huà),一旦出現(xiàn)問(wèn)題,就搞不清楚問(wèn)題究竟是軟件設(shè)計(jì)的錯(cuò)誤還是硬件
45、電路板的錯(cuò)誤,所以首先解決硬件調(diào)試是必須的。在調(diào)試的過(guò)程中,需要有清晰的邏輯思維作根底,對(duì)硬件知識(shí)有熟練的掌握和靈活的應(yīng)用。 4 結(jié)束語(yǔ) 本課題的研究設(shè)計(jì)至此就根本完成了。本文研究了EDA技術(shù)的開(kāi)展對(duì)電路設(shè)計(jì)方法的影響,深入討論了用VHDL語(yǔ)言和復(fù)雜系統(tǒng)可編程邏輯器件開(kāi)發(fā)的根本方法,作為應(yīng)用對(duì)象,基于VHDL語(yǔ)言、應(yīng)用FPGA開(kāi)發(fā)的過(guò)失控制編碼技術(shù),系統(tǒng)采用了“自頂向下〞的設(shè)計(jì)方法,系統(tǒng)的頂層設(shè)計(jì)和底層設(shè)計(jì)采用原理圖輸入描述和VHDL語(yǔ)言進(jìn)行描述,選用了當(dāng)前流行的EDA軟件平臺(tái)XINLIX ISE作為開(kāi)發(fā)平臺(tái),所有程序全部通過(guò)了該平臺(tái)的編譯和功能仿真實(shí)驗(yàn),在配有SPATANIII芯片的實(shí)驗(yàn)
46、臺(tái)上通過(guò)了硬件測(cè)試。最后,把程序下載到一個(gè)獨(dú)立的硬件系統(tǒng),經(jīng)過(guò)不斷的調(diào)試和改良,終于完成了編碼算法的硬件實(shí)現(xiàn)。通過(guò)上述工作,我對(duì)設(shè)計(jì)、調(diào)試過(guò)程中出現(xiàn)的問(wèn)題進(jìn)行了分析、研究、解決。 通過(guò)對(duì)EDA技術(shù)的學(xué)習(xí)和對(duì)這些編碼的初步嘗試,對(duì)前幾年的軟硬件方面的知識(shí)有了進(jìn)一步的了解和加深,進(jìn)一步對(duì)軟硬件的結(jié)合有了更深的認(rèn)識(shí)。經(jīng)過(guò)這個(gè)課題的研究使我們已經(jīng)開(kāi)始掌握了復(fù)雜可編程邏輯器件的開(kāi)發(fā)流程和步驟,并可以展開(kāi)進(jìn)一步的提高,比方開(kāi)發(fā)更為復(fù)雜的系統(tǒng)。我們研究的這個(gè)編碼譯碼模塊完全可以嵌入到一個(gè)更大大的通信系統(tǒng)內(nèi)部,作為其中的子模塊使用。 回憶畢業(yè)設(shè)計(jì)的整個(gè)過(guò)程,感受最深的并不是自己開(kāi)發(fā)的這么一個(gè)過(guò)失控制編碼F
47、PGA的實(shí)現(xiàn),而是一個(gè)設(shè)計(jì)從起步到終止整個(gè)過(guò)程的整體性,連貫性;在這個(gè)過(guò)程中,初步有了系統(tǒng)開(kāi)發(fā)的概念和經(jīng)驗(yàn),為以后的學(xué)習(xí)工作打下了堅(jiān)實(shí)的根底;通過(guò)整個(gè)學(xué)習(xí)新知識(shí),運(yùn)用新知識(shí)的過(guò)程,鍛煉了自己獨(dú)立自主學(xué)習(xí),分析解決問(wèn)題等等方面的能力。 總之一句話(huà),通過(guò)畢業(yè)設(shè)計(jì)階段的學(xué)習(xí)和鍛煉,受益頗深。 參考文獻(xiàn) [1]潘松,黃繼業(yè) EDA技術(shù)與VHDL[M].北京:清華大學(xué)出版社, 2005-07:15-18.? [2]黃智偉.FPGA 系統(tǒng)設(shè)計(jì)與實(shí)踐[M].北京:電子工業(yè)出版社,2005 [3]王興亮數(shù)字通信原理與技術(shù)西安電子科技大學(xué)出版社2000年. [4]R. W. Hamming.Cod
48、ing and Information Theory.Prentice-Hall.Englewood Cliffs.New Jersey.1980. [5]劉科峰,張沙清, 田豐.EDA技術(shù)在電子設(shè)計(jì)中的應(yīng)用[J].廣西物理, 2004, 02 [6]侯伯亨 顧 新.VHDL硬件描述語(yǔ)言與數(shù)字邏輯電路設(shè)計(jì)[M].西安:西安電子科技大學(xué)出版社, 1999. [7]吳繼華,王誠(chéng).Altera FPGA/ CPLD 設(shè)計(jì)[M].北京:人民郵電出版,2005. [8]劉佳,焦斌亮.FPGA 的開(kāi)展趨勢(shì)及其新應(yīng)用[J].電子技術(shù),2021. [9]樊昌信,等.通信原理[M].北京:國(guó)防工業(yè)出
49、版社,2005. [10]周賢偉.過(guò)失控制編碼與平安[M].北京:國(guó)防工業(yè)出版社,2004. [11]辛英.漢明碼糾錯(cuò)檢錯(cuò)能力分析與應(yīng)用[J].鹽城工學(xué)院報(bào):自然科學(xué)版,2021,21 1 :34. [12]郭瑛,俞宗佐.基于FPGA 的循環(huán)冗余校驗(yàn)?zāi)K設(shè)計(jì)[J],內(nèi)蒙古大學(xué)學(xué)報(bào)自然科學(xué)版2021年第4期王新梅肖國(guó)鎮(zhèn)糾錯(cuò)碼-原理與方法西安電子科技大學(xué)出版社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校驗(yàn)生成模塊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次計(jì)算 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次計(jì)算 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; -- 變量轉(zhuǎn)換成
64、信號(hào) end process; datacrc input 15downto0 xor "000000000000"&o ; -- 輸出 end myarch; 附 錄IV CRC接收校驗(yàn)?zāi)KVHDL代碼: 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次計(jì)算 if crcvar 4 '0' then for j in 3 downto 0 loop c j : crcvar j xor '0'
- 溫馨提示:
1: 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 6.煤礦安全生產(chǎn)科普知識(shí)競(jìng)賽題含答案
- 2.煤礦爆破工技能鑒定試題含答案
- 3.爆破工培訓(xùn)考試試題含答案
- 2.煤礦安全監(jiān)察人員模擬考試題庫(kù)試卷含答案
- 3.金屬非金屬礦山安全管理人員(地下礦山)安全生產(chǎn)模擬考試題庫(kù)試卷含答案
- 4.煤礦特種作業(yè)人員井下電鉗工模擬考試題庫(kù)試卷含答案
- 1 煤礦安全生產(chǎn)及管理知識(shí)測(cè)試題庫(kù)及答案
- 2 各種煤礦安全考試試題含答案
- 1 煤礦安全檢查考試題
- 1 井下放炮員練習(xí)題含答案
- 2煤礦安全監(jiān)測(cè)工種技術(shù)比武題庫(kù)含解析
- 1 礦山應(yīng)急救援安全知識(shí)競(jìng)賽試題
- 1 礦井泵工考試練習(xí)題含答案
- 2煤礦爆破工考試復(fù)習(xí)題含答案
- 1 各種煤礦安全考試試題含答案