基于VHDL的CRC編解碼設(shè)計(jì)說明_第1頁
基于VHDL的CRC編解碼設(shè)計(jì)說明_第2頁
基于VHDL的CRC編解碼設(shè)計(jì)說明_第3頁
基于VHDL的CRC編解碼設(shè)計(jì)說明_第4頁
基于VHDL的CRC編解碼設(shè)計(jì)說明_第5頁
已閱讀5頁,還剩22頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

./摘要循環(huán)冗余校驗(yàn)碼是一種廣泛應(yīng)用檢錯(cuò)編碼,本設(shè)計(jì)以MaxPlusII為開發(fā)平臺(tái)利用VHDL語言完成了CRC編解碼設(shè)計(jì)。設(shè)計(jì)采用了模塊化的方法,給出了CRC編解碼的結(jié)構(gòu)框圖和部分仿真結(jié)果,結(jié)果表明該系統(tǒng)的設(shè)計(jì)方案正確。關(guān)鍵詞:VHDL;循環(huán)冗余校驗(yàn)〔CRC;檢錯(cuò)ABSTRACTCyclicredundancycheckcodeisawidelyusederrordetectioncode,thedesignoftheMaxPlusIIdevelopmentplatformforthecompletionoftheCRCusingVHDLlanguagecodecdesign.Designusesamodularapproach,giventhestructureofCRCdecodingblockdiagramandsomesimulationresults,theresultsshowthatthesystemisdesignedcorrectly.Keywords:VHDL;Cyclicredundancycheck<CRC>;Errordetection.目錄摘要IABSTRACTII第1章引言11.1概述11.2容概要3第2章CRC編解碼理論42.1糾錯(cuò)編碼的基本原理42.2模2運(yùn)算原理62.3CRC分類72.3.1標(biāo)準(zhǔn)的CRC82.3.2非標(biāo)準(zhǔn)的CRC82.4循環(huán)碼理論基礎(chǔ)82.5循環(huán)碼編碼方法102.5.1CRC產(chǎn)生操作過程112.6循環(huán)碼解碼方法112.6.1CRC解碼操作過程12第3章方案設(shè)計(jì)133.1實(shí)現(xiàn)方案分析133.1.1查表法實(shí)現(xiàn)方案分析13逐位運(yùn)算法實(shí)現(xiàn)方案分析143.1.3現(xiàn)實(shí)需求分析153.2系統(tǒng)硬件設(shè)計(jì)163.2.1電源模塊173.2.2時(shí)鐘模塊173.2.3調(diào)試測(cè)試接口183.2.4復(fù)位電路設(shè)計(jì)183.3設(shè)計(jì)工具及開發(fā)流程19第4章程序模塊設(shè)計(jì)及仿真204.1程序設(shè)計(jì)與仿真204.1.1編碼模塊設(shè)計(jì)與仿真214.1.2解碼模塊設(shè)計(jì)與仿真234.1.3循環(huán)冗余碼編碼模塊與解碼模塊聯(lián)合運(yùn)行25第5章結(jié)束語27致28參考文獻(xiàn)29附錄A30附錄B32.第1章引言1.1概述通信,指人與人或人與自然之間通過某種行為或媒介進(jìn)行的信息交流與傳遞,從廣義上指需要信息的雙方或多方在不違背各自意愿的情況下無論采用何種方法,使用何種媒質(zhì),將信息從某方準(zhǔn)確安全傳送到另方。模擬通信是利用正弦波的幅度、頻率或相位的變化,或者利用脈沖的幅度、寬度或位置變化來模擬原始信號(hào),以達(dá)到通信的目的。模擬信息源模擬信息源調(diào)制器信道解調(diào)器受信者噪聲源圖1-1模擬通信系統(tǒng)模型數(shù)字通信是用數(shù)字信號(hào)作為載體來傳輸消息,或用數(shù)字信號(hào)對(duì)載波進(jìn)行數(shù)字調(diào)制后再傳輸?shù)耐ㄐ欧绞健K蓚鬏旊妶?bào)、數(shù)字?jǐn)?shù)據(jù)等數(shù)字信號(hào),也可傳輸經(jīng)過數(shù)字化處理的語聲和圖像等模擬信號(hào)。信息源信息源信源編碼加密信道編碼數(shù)字調(diào)制信道數(shù)字解調(diào)信道譯碼解密信源譯碼受信者圖1-2數(shù)字通信系統(tǒng)模型與模擬數(shù)據(jù)通信相比較,數(shù)字?jǐn)?shù)據(jù)通信具有下列優(yōu)點(diǎn):數(shù)字技術(shù)的發(fā)展較模擬技術(shù)更快,數(shù)字設(shè)備通過集成電路很容易實(shí)現(xiàn),并與計(jì)算機(jī)相結(jié)合,而由于超大規(guī)模集成電路技術(shù)的迅速發(fā)展,數(shù)字設(shè)備的體積與成本的下降速度大大超過模擬設(shè)備,性能價(jià)格比高;來自視頻、聲音和其他信息源的各類數(shù)據(jù)均可統(tǒng)一為數(shù)字信號(hào)的形式,并通過數(shù)字通信系統(tǒng)傳輸;在長(zhǎng)距離數(shù)字通信中可以通過中繼器放大和整形來保證數(shù)字信號(hào)的完整性而不累積噪音;以數(shù)據(jù)幀為單位傳輸數(shù)據(jù),并通過檢錯(cuò)編碼和重發(fā)數(shù)據(jù)幀來發(fā)現(xiàn)與糾正通信錯(cuò)誤,從而有效保證通信的可靠性;使用加密技術(shù)可有效增強(qiáng)通信的安全性;多路光纖技術(shù)的發(fā)展大大提高了數(shù)字通信的效率。"信息社會(huì)""信息經(jīng)濟(jì)"等名稱越來越多的出現(xiàn)在我們的生活中,生活離不開信息,隨著社會(huì)生產(chǎn)的發(fā)展,科學(xué)技術(shù)的進(jìn)步,人們對(duì)傳輸信息的要求急劇增加.到了20世紀(jì)20年代,如何提高傳遞信息的能力和可靠性已成為普遍重視的課題,在傳輸過程中發(fā)生錯(cuò)誤后能在收端自行發(fā)現(xiàn)或糾正的碼。數(shù)字信號(hào)在傳輸過程中,由于受到干擾的影響,碼元波形變壞。接收端收到后可能發(fā)生錯(cuò)誤的判決。由于乘性干擾引起的碼間串?dāng)_,可以采用均衡的辦法糾正.而加性的影響則需要用其他的辦法解決。在設(shè)計(jì)數(shù)字?jǐn)?shù)字通信系統(tǒng)時(shí),應(yīng)該首先從合理選擇調(diào)制制度,解調(diào)方法以及發(fā)生功率等方面考慮,使加性干擾不足以影響達(dá)到誤碼率的要求,在仍不能滿足要,就要考慮采用查錯(cuò)控制措施了。一些通用的系統(tǒng),其誤碼率要求因用途而異,也可以把查錯(cuò)控制作為附加手段,在需要時(shí)加用。從查錯(cuò)控制角度看,按照加性干擾引起的錯(cuò)碼分布規(guī)律的不同,信道可以分為三類。即隨機(jī)信道、突發(fā)信道和混合信道。在隨機(jī)信道中,錯(cuò)碼的出現(xiàn)是隨機(jī)的,而且錯(cuò)碼之間的統(tǒng)計(jì)是獨(dú)立的。在突發(fā)信道中,錯(cuò)碼是成串集中出現(xiàn)的,即在一些短促的時(shí)間段會(huì)出現(xiàn)大量錯(cuò)碼,而在這些短促的時(shí)間段之間存在較長(zhǎng)的無錯(cuò)碼區(qū)間。查錯(cuò)控制技術(shù)主要有以下四種:檢錯(cuò)重發(fā):在發(fā)生碼元序列中加入差錯(cuò)控制碼元,接收端利用這些碼元檢測(cè)到有碼元時(shí),利用反相信道通知發(fā)送端,要求發(fā)送端重發(fā),直到正確接收為止。所謂檢測(cè)到有碼錯(cuò),是指在一組接收碼元中知道有一個(gè)或一些錯(cuò)碼,但是不知道該錯(cuò)碼該如何糾正。采用檢錯(cuò)重發(fā)技術(shù)時(shí),通信系統(tǒng)需要有雙向信道傳送重發(fā)指令。前向糾錯(cuò):前向糾錯(cuò)一般簡(jiǎn)稱FEC〔ForwardErrorCorrection。這時(shí)接收端利用發(fā)送端在發(fā)送碼元序列中加入的差錯(cuò)控制碼元,不但能夠發(fā)現(xiàn)錯(cuò)碼,還能將錯(cuò)碼恢復(fù)其正確取值。在二進(jìn)制碼元的情況下,能夠確定錯(cuò)碼的位置,就相當(dāng)于能夠就糾正錯(cuò)碼。采用FEC是,不需要反相信道傳送重發(fā)指令,也沒有因反復(fù)重發(fā)而產(chǎn)生的時(shí)延,故實(shí)時(shí)性好。但是為了能夠糾正錯(cuò)碼,而不是僅僅檢測(cè)到有錯(cuò)碼,和檢測(cè)重發(fā)相比,需要加入更多的差錯(cuò)控制碼元。故設(shè)備要比檢測(cè)重發(fā)設(shè)備復(fù)雜。反饋校驗(yàn)〔FeedCheckout:這時(shí)不需要在發(fā)送序列中加入差錯(cuò)控制碼元。接收端將接收到的碼元原封不動(dòng)地轉(zhuǎn)發(fā)回發(fā)送端。在發(fā)送端將它和原發(fā)送碼元逐一比較。若發(fā)現(xiàn)有不同,就認(rèn)為接收端收到的序列中有錯(cuò)碼,發(fā)送端立即重發(fā)。這種技術(shù)的原理和設(shè)備都很簡(jiǎn)單。但是需要雙向信道,傳輸效率也比較低,因?yàn)槊總€(gè)碼元都需要占用兩次傳輸時(shí)間。檢錯(cuò)刪除〔deletion:它和檢錯(cuò)重發(fā)的區(qū)別在于,在接收端發(fā)現(xiàn)錯(cuò)誤碼后,立即將其刪除,不要求重發(fā)。這種方法只適用在少數(shù)特定系統(tǒng)中,在那里發(fā)送碼元中有大量多余度,刪除不分接收碼元不影響應(yīng)用。循環(huán)碼是線性分組碼中最重要的一個(gè)子類,它的結(jié)構(gòu)完全建立在有限域的基礎(chǔ)上,可以用近似代數(shù)的方法精確描述,循環(huán)碼是1957年由普蘭奇<Prange>提出的,此后幾十年中得到了充分的研究和發(fā)展。起初人們認(rèn)識(shí)到并感興趣的是循環(huán)碼的外在特點(diǎn),即循環(huán)碼碼字的循環(huán)移位后仍然是碼字,這個(gè)特點(diǎn)給循環(huán)碼的編譯碼實(shí)現(xiàn)帶來了便利。在以后的實(shí)踐中,人們從循環(huán)群的角度,在代數(shù)機(jī)構(gòu)、糾錯(cuò)性能控制等方面找到了循環(huán)碼更加吸引人的優(yōu)越之處。目前,使用查錯(cuò)控制系統(tǒng)中使用的線性分組碼幾乎都是循環(huán)碼或循環(huán)碼的子類。循環(huán)冗余校驗(yàn)碼〔CRC是一種系統(tǒng)的縮短循環(huán)碼,廣泛應(yīng)用于幀校驗(yàn)。1.2容概要本設(shè)計(jì)主要分析循環(huán)冗余碼理論,在理論基礎(chǔ)上探討其運(yùn)用VHDL語言實(shí)現(xiàn)其算法,設(shè)計(jì)主要分為兩個(gè)模塊,即循環(huán)冗余碼編碼模塊和循環(huán)冗余解碼模塊,主要編程工具為MaxPlusII。本設(shè)計(jì)主要容首先從了解循環(huán)冗余校驗(yàn)碼的實(shí)際應(yīng)用入手,然后分析糾錯(cuò)編碼的基本原理,研究程序設(shè)計(jì)中的基本運(yùn)算規(guī)則〔模2運(yùn)算入手,深入分析循環(huán)冗余碼的編解碼理論及其工程實(shí)現(xiàn)算法。提出編解碼方案并進(jìn)行比較分析,選出符合本設(shè)計(jì)要求的實(shí)現(xiàn)方案,進(jìn)行硬件設(shè)計(jì),最后進(jìn)行程序的模塊化設(shè)計(jì),并進(jìn)行仿真驗(yàn)證,模塊仿真驗(yàn)證無誤進(jìn)行模塊組合調(diào)試仿真。分析仿真結(jié)果得出結(jié)論。第2章CRC編解碼理論2.1糾錯(cuò)編碼的基本原理信道編碼是在被傳送的信息中附加一些監(jiān)督碼元,來檢錯(cuò)和糾錯(cuò)。下面以三位二進(jìn)制碼組為例,說明檢錯(cuò)糾錯(cuò)的基本原理。三位二進(jìn)制碼元共有=8種可能的組合;000、001、010、011、100、101、110、111。下面分三種情況討論〔l如果這8種碼組都用于傳送消息,即每個(gè)碼組都是許用碼組。在傳輸過程中若發(fā)生一個(gè)或多個(gè)誤碼,則一種碼組會(huì)錯(cuò)誤地變成另一種碼組。這樣的編碼既不能檢錯(cuò),也不能糾錯(cuò),完全沒有抗干擾能力;

〔2若只選其中的000、011、101、110四種碼組作為許用碼組。除上述4種許用碼組以外的另外4種碼組001、010、100、111稱為禁用碼組。經(jīng)觀察我們可以發(fā)現(xiàn),許用碼組中"1"的個(gè)數(shù)為偶數(shù)個(gè),禁用碼組中"1"的個(gè)數(shù)為奇數(shù)個(gè)。如果在傳輸過程中發(fā)生了一位或三位的錯(cuò)碼,則"1"的個(gè)數(shù)就變?yōu)槠鏀?shù)個(gè),許用碼組就變?yōu)榻么a組;接收端一旦發(fā)現(xiàn)這些禁用碼組,就表明傳輸過程中發(fā)生了錯(cuò)誤。用這種簡(jiǎn)單的校驗(yàn)關(guān)系可以發(fā)現(xiàn)一個(gè)和三個(gè)錯(cuò)誤,但不能糾正錯(cuò)誤。例如,當(dāng)接收到的碼組為010時(shí),我們可以斷定這是禁用碼組,但無法判斷原來的正確碼組是哪個(gè)許用碼組。雖然原發(fā)送碼組為101的可能性很小〔因?yàn)榘l(fā)生三個(gè)誤碼的情況極少,但不能絕對(duì)排除;即使傳輸過程中只發(fā)生一個(gè)誤碼,也有三種可能的發(fā)送碼組:000、011和110。顯然,上述編碼無法發(fā)現(xiàn)2個(gè)錯(cuò)碼。以上編碼方法相當(dāng)于只傳遞00、01、10、11四種信息,而第三位是附加的監(jiān)督位。這位附加的監(jiān)督碼位與前面兩位信息碼元和在一起,保證碼組中"1"碼的個(gè)數(shù)為偶數(shù)。下表示出了這種情況:表2-1信息位與監(jiān)督位的關(guān)系信息位監(jiān)督位晴000云011陰101雨110〔3如果進(jìn)一步將許用碼組限制為二種:000和111。則不難看出,用這種方法可以發(fā)現(xiàn)所有不超過2個(gè)的誤碼;或能糾正一位錯(cuò)碼。糾正一位錯(cuò)碼的方法是:將8個(gè)碼組分成二個(gè)子集,其中{000、100、010、001}與許用碼組000對(duì)應(yīng),{111、011、101、110}與許用碼組111對(duì)應(yīng);這樣,在接收端如果認(rèn)為碼組中僅有一個(gè)錯(cuò)碼,只要收到第一子集中的碼組即判為000,收到第二子集中的碼組即判為111。例如,當(dāng)收到的碼組為禁用碼組100時(shí),如果認(rèn)為該碼組中僅有1個(gè)錯(cuò)碼,則可判斷此錯(cuò)碼發(fā)生在"1"位,從而糾正為000;若認(rèn)為上述接收碼組中的錯(cuò)碼數(shù)不超過兩個(gè),則存在兩種可能性:000錯(cuò)一位和111錯(cuò)兩位都可能變成100,因而只能檢測(cè)出存在錯(cuò)碼而無法糾正它。分組碼一般用符號(hào)<n,k>表示,其中k是每個(gè)碼組中二進(jìn)信息碼元的數(shù)目;n是每個(gè)碼組的總位數(shù),又稱為碼組長(zhǎng)度<碼長(zhǎng)>;n-k=r為每碼組中的監(jiān)督碼元數(shù)目,或稱監(jiān)督位數(shù)目。通常,將分組碼規(guī)定為具有如下圖所示的結(jié)構(gòu)。圖中前面k位<an-1…ar>為信息位,后面附加個(gè)監(jiān)督位<ar-1…a0>。K個(gè)信息位K個(gè)信息位碼長(zhǎng)n=k+rr個(gè)監(jiān)督位圖2-1分組碼的結(jié)構(gòu)

在信道編碼中,碼組的重量就是碼組中非零碼元的數(shù)目,簡(jiǎn)稱碼重,例如0010碼組的碼重為1,0011碼組的碼重為2。漢明〔Hamming距離就是兩個(gè)碼組中對(duì)應(yīng)碼位上具有不同二進(jìn)制碼元的位數(shù)定義為兩碼組的距離,簡(jiǎn)稱碼距。我們把某種編碼中各個(gè)碼組間距離的最小值稱為最小碼距,可記為。在上述三位二進(jìn)制碼組例子中,8種碼組均為許用碼組時(shí),兩碼組間的最小距離為1,常記作。在選四種碼組為許用碼組情況下,最小碼距式中;采用兩種許用碼組時(shí),。由上例可知,一種編碼的最小碼距直接關(guān)系到這種碼的檢錯(cuò)和糾錯(cuò)能力,碼距實(shí)際上是由一種碼組變成另一種碼組必須變化的比特?cái)?shù)。因此最小碼距是信道編碼的一個(gè)重要參數(shù)。在一般情況下,對(duì)于分組碼有以下結(jié)論:①為檢測(cè)e個(gè)誤碼,要求該編碼的最小碼距

〔2.1-1

②為糾正t個(gè)誤碼,要求該編碼的最小碼距

〔2.1-2

③為糾正t個(gè)誤碼,同時(shí)檢測(cè)e〔e>t個(gè)誤碼,要求最小碼距

〔2.1-3所謂"糾正t個(gè)誤碼,同時(shí)檢測(cè)e個(gè)誤碼",是指若接收碼組與某一許用碼組間的距離在糾錯(cuò)能力圍t,則按前向糾錯(cuò)方式工作,自動(dòng)將誤碼予以糾正;而當(dāng)與任何許用碼組間的距離都超過t時(shí),則按檢錯(cuò)方式工作。也就是按"糾檢結(jié)合的方式"工作。

在簡(jiǎn)要討論了編碼的糾〔檢錯(cuò)能力后,再來分析一下差錯(cuò)控制編碼的效用。

假設(shè)在信道中傳輸"0"和"l"的錯(cuò)誤概率p相等,且p<<1,則在碼長(zhǎng)為n位的碼組中發(fā)生r位錯(cuò)碼的概率〔誤碼率為〔2.1-4例如,當(dāng)碼長(zhǎng)n=7,時(shí),則有可見,采用了差錯(cuò)控制編碼,即使只能糾正〔或檢測(cè)碼組中的l~2個(gè)錯(cuò)0碼,也可以使誤碼率下降幾個(gè)數(shù)量級(jí)。這就表明,只能糾〔檢1~2個(gè)錯(cuò)碼的簡(jiǎn)單編碼也有很大實(shí)用價(jià)值。事實(shí)上,常用的差錯(cuò)控制編碼大多數(shù)也只能糾正〔或檢測(cè)碼組中的l~2個(gè)錯(cuò)碼。2.2模2運(yùn)算原理模2運(yùn)算是一種二進(jìn)制算法,CRC校驗(yàn)技術(shù)中的核心部分,因此,我們?cè)诜治鯟RC算法之前,必須掌握模2運(yùn)算的規(guī)則。與四則運(yùn)算相同,模2運(yùn)算也包括模2加、模2減、模2乘、模2除四種二進(jìn)制運(yùn)算。而且,模2運(yùn)算也使用與四則運(yùn)算相同的運(yùn)算符,即"+"表示模2加,"-"表示模2減,"×"或"·"表示模2乘,"÷"或"/"表示模2除。與四則運(yùn)算不同的是模2運(yùn)算不考慮進(jìn)位和借位,即模2加法是不帶進(jìn)位的二進(jìn)制加法運(yùn)算,模2減法是不帶借位的二進(jìn)制減法運(yùn)算。這樣,兩個(gè)二進(jìn)制位相運(yùn)算時(shí),這兩個(gè)位的值就能確定運(yùn)算結(jié)果,不受前一次運(yùn)算的影響,也不對(duì)下一次造成影響。

①模2加法運(yùn)算定義為:

0+0=0;0+1=1;1+0=1;1+1=0②模2減法運(yùn)算定義為:0-0=0;0-1=1;1-0=1;1-1=0③模2乘法運(yùn)算定義為:

0×0=0;0×1=0;1×0=0;1×1=1

多位二進(jìn)制模2乘法類似于普通意義上的多位二進(jìn)制乘法,不同之處在于后者累加中間結(jié)果〔或稱部分積時(shí)采用帶進(jìn)位的加法,而模2乘法對(duì)中間結(jié)果的處理方式采用的是模2加法。④模2除法運(yùn)算定義為:

0÷1=01÷1=1

多位二進(jìn)制模2除法也類似于普通意義上的多位二進(jìn)制除法,但是在如何確定商的問題上兩者采用不同的規(guī)則。后者按帶借位的二進(jìn)制減法,根據(jù)余數(shù)減除數(shù)夠減與否確定商1還是商0,若夠減則商1,否則商0。多位模2除法采用模2減法,不帶借位的二進(jìn)制減法,因此考慮余數(shù)夠減除數(shù)與否是沒有意義的。實(shí)際上,在CRC運(yùn)算中,總能保證除數(shù)的首位為1,則模2除法運(yùn)算的商是由余數(shù)首位與除數(shù)首位的模2除法運(yùn)算結(jié)果確定。因?yàn)槌龜?shù)首位總是1,按照模2除法運(yùn)算法則,那么余數(shù)首位是1就商1,是0就商0。2.3CRC分類在線性分組碼中,有一種重要的碼稱為循環(huán)碼<cycliccode>。循環(huán)碼是建立在嚴(yán)密的代數(shù)學(xué)理論基礎(chǔ)上之上的。這種碼的檢〔糾錯(cuò)能力較強(qiáng),而且編碼和解碼設(shè)備都不太復(fù)雜。循環(huán)碼除了具有線性碼的一般性質(zhì)外,還具有循環(huán)性。循環(huán)性是指任一碼組循環(huán)移位以后,仍是該碼中的一個(gè)碼組。作為數(shù)據(jù)傳輸中差錯(cuò)控制的基本方法之一,循環(huán)冗余校驗(yàn)〔CyclicRedundantCheck已被廣泛用于通信應(yīng)用中。目前CRC的應(yīng)用分為非標(biāo)準(zhǔn)和標(biāo)準(zhǔn)兩種,已被國(guó)際標(biāo)準(zhǔn)化組織規(guī)定的標(biāo)準(zhǔn)生成多項(xiàng)式為標(biāo)準(zhǔn),用戶自定義的生成多項(xiàng)式為非標(biāo)準(zhǔn),這也是目前廣泛使用的幾種。2.3.1標(biāo)準(zhǔn)的CRC在通信協(xié)議中常見并被廣泛使用的標(biāo)準(zhǔn)列于表中。表2-2標(biāo)準(zhǔn)CRC多項(xiàng)式名稱多項(xiàng)式簡(jiǎn)記應(yīng)用CRC-40x13ITUG.704CRC-160x8005IBMSDLCCRC-CCITT0x1201ISOHDLC,ITUX.25,SDLC,V.34/V.41/V.42,PPP-FCSCRC-320x104C11DB7ZIP,RAR,IEEE802LAN/FDDI,IEEE1394,PPP-FCSCRC-32C0x11EDC6F41SCTP2.3.2非標(biāo)準(zhǔn)的CRC非標(biāo)準(zhǔn)的CRC一般是為了某種用途而采用不同于標(biāo)準(zhǔn)的生成多項(xiàng)式,而實(shí)際的操作原理是相同的,主要用于需要CRC而需要低成本的應(yīng)用,或者為了減輕設(shè)計(jì)算機(jī)處理負(fù)擔(dān)而又能夠保證數(shù)據(jù)可靠性的折中辦法,此外,部分的加密算法也是采用CRC來生成。2.4循環(huán)碼理論基礎(chǔ)循環(huán)碼屬于分組碼也記為<n,k>,可分為線性循環(huán)碼和非線性循環(huán)碼兩種。循環(huán)碼仍是線性分組碼,但另有循環(huán)移位不變特性。循環(huán)碼的碼字和多項(xiàng)式:設(shè)循環(huán)碼的任一個(gè)碼字為:在二元情況下,只取1或0,為了完整描述一個(gè)碼字,需要知道的取值及其在碼字中的位置。用多項(xiàng)式來描述碼字是很方便的,于是表示的碼字用次多項(xiàng)式來表示,即:上式表示一個(gè)n位長(zhǎng)的碼字可以用一個(gè)次多項(xiàng)式來表示。可見多項(xiàng)式僅是碼字的一個(gè)數(shù)學(xué)描述工具,但不是碼字本身,但兩者有一一對(duì)應(yīng)的關(guān)系。如果改寫為:則表示碼字中碼元循環(huán)左移一位,其對(duì)應(yīng)的多項(xiàng)式相對(duì)于乘:上式中采用了模多項(xiàng)式運(yùn)算,表明碼字的左移,相對(duì)于多項(xiàng)式乘<升冪>后取的模剩余。同理左移位相對(duì)于乘。兩多項(xiàng)式間一個(gè)常用的運(yùn)算是加法,應(yīng)為同冪次項(xiàng)系數(shù)相加,在二元的情況下應(yīng)做模2加,例如:則:其中的一對(duì)和由于模2加消掉了,也可以認(rèn)為做了減法。多項(xiàng)式另一個(gè)常用的運(yùn)算是除法,可排豎式長(zhǎng)除法。已知多項(xiàng)式:列豎式做:可見不能除盡,故有余式。如果將余式加到被除式即:2.5循環(huán)碼編碼方法在編碼時(shí),首先要根據(jù)給定的<n,k>值選定生成多項(xiàng)式,即從〔的因子中選一個(gè)〔n-k次多項(xiàng)式作為。所有碼多項(xiàng)式都可以被整除。根據(jù)這條原則,就可以對(duì)給定的信息位進(jìn)行編碼:設(shè)為信息碼多項(xiàng)式,其次數(shù)小于k。用乘,得到的次數(shù)必定小于n。用除,得到余式,的次數(shù)必定小于的次數(shù),即小于。將此余式加于信息位之后作為監(jiān)督位,即將和相加,得到的多項(xiàng)式必定是一個(gè)碼多項(xiàng)式。因?yàn)樗囟軌虮徽?且商的次數(shù)不大于。根據(jù)上述原理,編碼步驟如下:用乘。用除,得到商和余式,即編出的碼組為2.5.1CRC產(chǎn)生操作過程以下是一個(gè)8位的數(shù)據(jù)0x02產(chǎn)生一個(gè)16位的CRC的過程。1234567891011121314151617181920212223240000001000000000000000000000000000000000000000010000000000000000000000000000000000100000000000000000000000000000000010000000000000000000000000000000001000000000000000000000000000000000100000000000000000000000000000000010000000000000000110000000000001010100000000000010101100000000000010101000000000001111800F表2-3,8位數(shù)據(jù)0x02的16位CRC數(shù)據(jù)產(chǎn)生在圖中我們可以看到,這個(gè)0x02數(shù)據(jù)被擴(kuò)充到24位〔原數(shù)據(jù)8位+16位CRC,不足的用零填充,然后再與0x8005〔CRC-16生成多項(xiàng)式做模2運(yùn)算。在運(yùn)算過程中,第17位總是被舍去〔圖中紅色的位。第16位如果是零,那么,只能與0x0000作異或運(yùn)算,即數(shù)據(jù)左移一位。如果為1,那么就要與0x8005作模2〔異或運(yùn)算。每次運(yùn)算完畢,丟棄最高位,然后將數(shù)據(jù)下一位移入,再進(jìn)行模2〔異或運(yùn)算,直到所有的位移完為止。2.6循環(huán)碼解碼方法接收端解碼的要求有兩個(gè):檢錯(cuò)和糾錯(cuò)。由于任意一個(gè)碼組多項(xiàng)式都應(yīng)該能被生成多項(xiàng)式整除,所以在接收端可以講接收的碼組用原生成多項(xiàng)式去除。當(dāng)傳輸中未發(fā)生錯(cuò)誤時(shí),接收碼組與發(fā)送碼組相同,即,故接收碼組必定能被整除;若碼組在傳輸中發(fā)生錯(cuò)誤,則,被除時(shí)可能除不盡而有余項(xiàng),即有因此,我們就以余項(xiàng)是否為零來判別接收碼組中有無錯(cuò)碼。需要指出,有錯(cuò)碼的接收碼組也有可能被整除。這時(shí)的錯(cuò)碼就不能檢出了。這種錯(cuò)誤稱為不可檢錯(cuò)誤。不可檢錯(cuò)誤中的誤碼數(shù)必定超過了這種編碼的檢錯(cuò)能力。2.6.1CRC解碼操作過程以前文0x02數(shù)據(jù)<CRC=0x800F>為例,計(jì)算如下:12345678910111213141516171819202122232400000010100000000000111100000000000000000000000101000000000000000000000000000000001010000000000000000000000000000000101000000000000000000000000000000010100000000000100000000000000000001010000000000011000000000000000000101000000000001111100000000000010101100000000000010111000000000000101000000000000000000000表2-4,8位數(shù)據(jù)0x02的16位CRC數(shù)據(jù)校驗(yàn)當(dāng)然,也可以使用比較直觀的辦法,只對(duì)數(shù)據(jù)0x02求CRC值,如果等于接收到的CRC,那么也說明數(shù)據(jù)沒有問題。.第3章方案設(shè)計(jì)3.1實(shí)現(xiàn)方案分析CRC算法可以用硬件實(shí)現(xiàn),也可以用軟件實(shí)現(xiàn),硬件實(shí)現(xiàn)的方式電路結(jié)構(gòu)復(fù)雜,使得應(yīng)用系統(tǒng)功能模塊增多,增大系統(tǒng)體積降低了集成度,批量生產(chǎn)的產(chǎn)品中提高了產(chǎn)品成本;使用軟件實(shí)現(xiàn)的方法計(jì)算的速度受限于系統(tǒng)CPU的速度,但是隨著CPU的集成度和運(yùn)行速度的提高,這樣的影響顯得微不足道,所以采用軟件實(shí)現(xiàn)的方法增加了系統(tǒng)集成度,從而提升系統(tǒng)的通信效率,在進(jìn)行批量生產(chǎn)時(shí)可以極大的降低成本。利用軟件實(shí)現(xiàn)可以采用的器件有MCU和CPLD,基于MCU的方案中由于MCU的處理數(shù)據(jù)的位寬固定,且運(yùn)行速度不如基于CPLD的方法快,基于CPLD的方案管腳配置更靈活,運(yùn)行速度更快更穩(wěn)定。故次設(shè)計(jì)中采用基于CPLD的軟件實(shí)現(xiàn)方法來完成CRC的編解碼校驗(yàn)。常用CRC軟件實(shí)現(xiàn)方法是串行計(jì)算方法,使用一位數(shù)據(jù)輸入,n位長(zhǎng)度的原始數(shù)據(jù)連續(xù)計(jì)算n次后得出校驗(yàn)碼,軟件串行方式處理需要較多個(gè)CPU時(shí)鐘周期,可以工作在較高的時(shí)鐘頻率下。但隨著通信速度的不斷提高,高的數(shù)據(jù)傳輸帶寬要求CRC的計(jì)算速度越來越快,串行計(jì)算的方法已經(jīng)不適應(yīng)要求,所以越來越多的使用并行計(jì)算方法。根據(jù)應(yīng)用的需要,有兩種常用的方法,來實(shí)現(xiàn)CRC的算法,查表法和逐位運(yùn)算法,它們特點(diǎn)如下。3.1.1查表法實(shí)現(xiàn)方案分析查表法,就是預(yù)先算好基本的CRC值,并存儲(chǔ)于存儲(chǔ)器中,需要時(shí)直接查詢存儲(chǔ)器中的CRC數(shù)據(jù)表,它是以字或字節(jié)為單位進(jìn)行操作的,而不進(jìn)行耗時(shí)的位運(yùn)算。這樣查表法的速度就會(huì)增加,與基于位運(yùn)算的方法相比在達(dá)到同等效果的時(shí)候就可以降低系統(tǒng)主頻,從而使功耗大大降低,但這樣的代價(jià)就是付出大容量的存儲(chǔ)器。以一個(gè)8位的數(shù)據(jù)為例,作一次異或操作就能夠完成著一個(gè)字節(jié)。表中的CRC值與其索引值有一個(gè)一一對(duì)應(yīng)的關(guān)系。8位數(shù)據(jù)的CRC查表法實(shí)現(xiàn)流程圖如下:CRC與表數(shù)據(jù)做異或運(yùn)算運(yùn)算結(jié)束嗎?CRC與表數(shù)據(jù)做異或運(yùn)算運(yùn)算結(jié)束嗎?CRC左移n位產(chǎn)生CRC表索引初始化CRC寄存器開始最后異或運(yùn)算結(jié)束圖3-1查表法流程圖3.1.2逐位運(yùn)算法實(shí)現(xiàn)方案分析逐位運(yùn)算法,直接根據(jù)表2-3的原理實(shí)現(xiàn)的。數(shù)據(jù)每次移入一位時(shí),就需要重新對(duì)每一位進(jìn)行再次運(yùn)算,因此:移位操作的次數(shù)=總的數(shù)據(jù)位數(shù)-16由此可以得出,當(dāng)數(shù)據(jù)位數(shù)比較多時(shí),CPU使用的時(shí)間還是比較多的,數(shù)據(jù)位數(shù)越多,就意味著使用更多的CPU機(jī)時(shí),為了達(dá)到查表法同樣的速度,就必須加倍的提高系統(tǒng)主頻,由此會(huì)帶來了功耗增加的問題。8位數(shù)據(jù)逐位運(yùn)算法實(shí)現(xiàn)CRC的流程圖如下:高位為1嗎?高位為1嗎?左移1位下一字節(jié)最高位移入異或運(yùn)算最后異或運(yùn)算結(jié)束運(yùn)算結(jié)束嗎?初始化CRC寄存器設(shè)定下一個(gè)字節(jié)開始左移1位下一字節(jié)最高位移入圖3-2逐位運(yùn)算法流程圖3.1.3現(xiàn)實(shí)需求分析CRC碼校驗(yàn)根據(jù)第二章理論分析可知,實(shí)現(xiàn)CRC的基本原理,簡(jiǎn)單的說,就是原始數(shù)據(jù)通過某種算法,得到一個(gè)新的數(shù)據(jù),而這個(gè)新的數(shù)據(jù)與原數(shù)據(jù)有著固定的在關(guān)系,通過把原數(shù)據(jù)和新數(shù)據(jù)組合在一起,形成新的數(shù)據(jù),因此這個(gè)新數(shù)據(jù)具有自我檢驗(yàn)的能力。然而,前面經(jīng)驗(yàn)證的理論公式僅適用于理論模型,而實(shí)際中還需要考慮幾個(gè)問題。首先要考慮CRC的數(shù)據(jù)位,不管有多長(zhǎng)的數(shù)據(jù)位,總是希望有一個(gè)固定位數(shù)的,以便在實(shí)現(xiàn)時(shí)可以節(jié)省很多資源。同時(shí)考慮到的數(shù)據(jù)位長(zhǎng)度可能比CRC位數(shù)短,為了得到一個(gè)16位〔或者32位的數(shù)據(jù)長(zhǎng)度,必須將原有數(shù)據(jù)擴(kuò)展到16位以上,才能得到一個(gè)16位的余數(shù)。通常的做法是在的右邊添加相應(yīng)的CRC位數(shù),例如16位則需要增加16個(gè)數(shù)據(jù)位,32位需要增加32個(gè)數(shù)據(jù)位。其次,規(guī)定CRC的最高位和最低位必須為1,由于標(biāo)準(zhǔn)的CRC是17位和32位,因此,如何在目前8位、16位、32位、64位等數(shù)據(jù)總線的計(jì)算機(jī)上實(shí)現(xiàn)通常是需要考慮的。在實(shí)際應(yīng)用中,我們并不需要考慮這個(gè)最高的CRC位,因?yàn)樗强偸潜簧崛?故只要考慮余下的16位〔或者32位就可以了。第三,商不需要,因此根本不要考慮。第四,除法運(yùn)算沒有數(shù)學(xué)上的含義,而是計(jì)算機(jī)中的模2算法,即每個(gè)數(shù)據(jù)位,與除數(shù)作邏輯異或運(yùn)算,因此不存在進(jìn)位或者借位問題。3.2系統(tǒng)硬件設(shè)計(jì)本設(shè)計(jì)以CPLD為核心進(jìn)行設(shè)計(jì),通過需求分析本設(shè)計(jì)中所需外圍電路主要有:控制器核心、電源模塊、時(shí)鐘模塊、調(diào)試測(cè)試接口、復(fù)位及復(fù)位配置系統(tǒng)。由于CPLD的I/O管腳的可配置性,在設(shè)計(jì)中必須考慮I/O管腳功能的分配,以便使系統(tǒng)設(shè)計(jì)中PCB布局布線簡(jiǎn)潔和操作方便。CPLD核心CPLD核心復(fù)位系統(tǒng)時(shí)鐘系統(tǒng)調(diào)試測(cè)試接口電源模塊圖3-3系統(tǒng)框圖3.2.1電源模塊電源模塊工作原理,首先接入220V市電電源,經(jīng)過變壓器降壓,然后經(jīng)橋式整流器并通過濾波電容濾波得到紋波電壓較小的直流電壓,此電壓輸入穩(wěn)壓器7805后輸出穩(wěn)定的5V直流電壓且紋波電壓較小,5V電壓輸入低壓差穩(wěn)壓器〔LDOAMS1117得到3.3V電壓即可供系統(tǒng)使用。同時(shí)在此系統(tǒng)中增加了USB供電設(shè)計(jì),在無外接電源的時(shí)候可采用USB供電。圖3-4電源模塊原理圖3.2.2時(shí)鐘模塊系統(tǒng)時(shí)鐘模塊猶如人的心臟汽車的發(fā)動(dòng)機(jī),系統(tǒng)時(shí)鐘的穩(wěn)定性決定了系統(tǒng)工作的穩(wěn)定性,且系統(tǒng)時(shí)鐘頻率越高系統(tǒng)運(yùn)行速度越快,常用使用晶振有無源和有源,有源晶振具有穩(wěn)定性高,且頻率更高,應(yīng)用更加簡(jiǎn)單。在本設(shè)計(jì)中采用有源晶振進(jìn)行設(shè)計(jì)。圖3-5時(shí)鐘模塊原理圖3.2.3調(diào)試測(cè)試接口程序設(shè)計(jì)完成需要下載到系統(tǒng)電路板上進(jìn)行相應(yīng)的調(diào)試,進(jìn)行系統(tǒng)級(jí)的軟硬件聯(lián)合測(cè)試,只有通過軟硬件聯(lián)合測(cè)試的系統(tǒng)才是完整的系統(tǒng),集成電路的集成度越來越高,如何進(jìn)行測(cè)試顯得極為重要。CPLD系統(tǒng)開發(fā)主要用JTAG進(jìn)行程序的下載及測(cè)試。標(biāo)準(zhǔn)的JTAG接口是4線:TMS、TCK、TDI、TDO,分別為模式選擇、時(shí)鐘、數(shù)據(jù)輸入和數(shù)據(jù)輸出線。圖3-6JTAG測(cè)試接口3.2.4復(fù)位電路設(shè)計(jì)復(fù)位就是將微機(jī)系統(tǒng)中的硬件邏輯恢復(fù)到一個(gè)初始的確定狀態(tài),復(fù)位是現(xiàn)代智能電子系統(tǒng)中不可缺少的組成部分,其與時(shí)鐘系統(tǒng)具有同等重要的地位。因此在電子系統(tǒng)設(shè)計(jì)中系統(tǒng)復(fù)位必須合理的考慮和設(shè)計(jì)。CPLD的復(fù)位采用低電平復(fù)位。圖3-7復(fù)位電路3.3設(shè)計(jì)工具及開發(fā)流程進(jìn)行基于VHDL語言的系統(tǒng)設(shè)計(jì),主要需要掌握相關(guān)電子基礎(chǔ)知識(shí),具備一定程序設(shè)計(jì)基礎(chǔ),熟練應(yīng)用基于Windows平臺(tái)的開發(fā)軟件。在本設(shè)計(jì)中主要應(yīng)用Max+PlusII開發(fā)軟件,以VHDL語言進(jìn)行程序設(shè)計(jì),通過Max+PlusII完成編譯及仿真驗(yàn)證。原理圖/VHDL文本編輯綜合原理圖/VHDL文本編輯綜合時(shí)序與功能門級(jí)仿真FPGA/CPLD編程下載FPGA/CPLD器件和電路系統(tǒng)FPGA/CPLD適配第4章程序模塊設(shè)計(jì)及仿真4.1程序設(shè)計(jì)與仿真本設(shè)計(jì)完成12位信息加5位CRC校驗(yàn)碼發(fā)送、接收,由兩個(gè)模塊構(gòu)成CRC校驗(yàn)生成模塊<發(fā)送>和CRC校驗(yàn)檢錯(cuò)模塊<接收>,其中CRC生成多項(xiàng)式采用,二進(jìn)制表示為110101。輸入、輸出都為并行的CRC校驗(yàn)生成方式。程序模塊設(shè)計(jì)端口數(shù)據(jù)定義:CRC校驗(yàn)生成模塊CRC校驗(yàn)生成模塊datacoded_dataclkloadsendCRC校驗(yàn)校驗(yàn)?zāi)Kcoded_datadecode_dataclkreceptionerror1datafini圖4-1CRC編解碼模塊框圖data:12位的待發(fā)送信息;clk:時(shí)鐘信號(hào);load:data的裝載信號(hào);error1:誤碼警告信號(hào);datafini:數(shù)據(jù)接收校驗(yàn)完成;send、reception:生成、檢錯(cuò)模塊的握手信號(hào),協(xié)調(diào)相互之間關(guān)系;decode_data:接收模塊<檢錯(cuò)模塊>接收的12位有效信息數(shù)據(jù);coded_data:附加上5位CRC校驗(yàn)碼的17位CRC碼,在生成模塊被發(fā)送,在接收模塊被接收;4.1.1編碼模塊設(shè)計(jì)與仿真根據(jù)前面的論述,用VHDL代碼實(shí)現(xiàn)逐位運(yùn)算的程序如下:process<clk>variablecrcvar:std_logic_vector<5downto0>; begin if<clk'eventandclk='1'>thenif<st='0'andload='1'>then dtemp<=data;sdatam<=data;cnt<=<others=>'0'>; send<='0';st<='1'; elsif<st='1'andt<7>then cnt<=cnt+1; if<dtemp<11>='1'>then crcvar:=dtemp<11downto6>xormulti_coef; dtemp<=crcvar<4downto0>&dtemp<5downto0>&'0'; elsedtemp<=dtemp<10downto0>&'0'; endif; elsif<st='1'andt=7>then coded_data<=sdatam&dtemp<11downto7>; send<='1';cnt<=cnt+1; elsif<st='1'andt=8>then send<='0';st<='0'; endif; endif;endprocess;endhev;圖4-2CRC生成模塊仿真波形:添加激勵(lì)信號(hào)clk時(shí)鐘信號(hào)周期為10ns,數(shù)據(jù)裝載load為1,輸入數(shù)據(jù)data:1,激勵(lì)信號(hào)添加完成按照軟件設(shè)計(jì)進(jìn)行仿真輸出數(shù)據(jù)為,同時(shí)按照理論公式進(jìn)行計(jì)算驗(yàn)證結(jié)果相同,CRC編碼模塊功能正常。1多項(xiàng)式表示為:110101多項(xiàng)式表示為:多項(xiàng)式五位二進(jìn)制表示01000編碼后的CRC編碼:用信息多項(xiàng)式表示為圖4-3CRC生成模塊仿真4.1.2解碼模塊設(shè)計(jì)與仿真根據(jù)前面的論述,程序校驗(yàn)采用CRC碼中包含的數(shù)據(jù)信息位與生成多項(xiàng)式相除,將得到的結(jié)果與CRC碼中的校驗(yàn)位作比較,如果相等則判為數(shù)據(jù)傳輸無誤,反之判為數(shù)據(jù)傳輸錯(cuò)誤,用VHDL代碼實(shí)現(xiàn)運(yùn)算的程序如下:process<clk,reception>variablercrcvar:std_logic_vector<5downto0>;beginif<clk'eventandclk='1'>then if<rt='0'andreception='1'>then rdtemp<=coded_data<16DOWNTO5>;rdatacrc<=coded_data; rcnt<=<others=>'0'>; error1<='0';rt<='1'; elsif<rt='1'andrcnt<7>then datafini<='0';rcnt<=rcnt+1; rcrcvar:=rdtemp<11downto6>xormulti_coef; if<rdtemp<11>='1'>then rdtemp<=rcrcvar<4downto0>&rdtemp<5downto0>&'0'; else rdtemp<=rdtemp<10downto0>&'0'; endif; elsif<rt='1'andrcnt=7>thendatafini<='1';decode_data<=rdatacrc<16downto5>;rt<='0';if<rdatacrc<4downto0>/=rdtemp<11downto7>>then error1<='1'; endif; endif; endif;endprocess;endhev;解碼功能模塊圖4-4CRC解碼模塊仿真波形:添加激勵(lì)信號(hào)clk時(shí)鐘信號(hào)周期為10ns,數(shù)據(jù)裝載reception為1,輸入數(shù)據(jù)coded_data:,激勵(lì)信號(hào)添加完成,按照軟件設(shè)計(jì)進(jìn)行仿真輸出數(shù)據(jù)decode_data為1,將解碼器模塊仿真數(shù)據(jù)與編碼器仿真數(shù)據(jù)做對(duì)比,可以看出編碼模塊的輸出數(shù)據(jù)coded_data輸入解碼模塊后解碼出的數(shù)據(jù)與編碼器的輸入數(shù)據(jù)相同,可以證明解碼器模塊功能能夠準(zhǔn)確實(shí)現(xiàn)。圖4-5CRC解碼仿真4.1.3循環(huán)冗余碼編碼模塊與解碼模塊聯(lián)合運(yùn)行模塊聯(lián)合連接示意圖:圖4-6CRC編解碼模塊連接聯(lián)合仿真波形圖:將CRC編碼器與CRC解碼器兩個(gè)程序模塊進(jìn)行組合,編碼和解碼一次仿真中完成,從仿真波形整數(shù)據(jù)可以看出數(shù)據(jù)結(jié)果與兩個(gè)模塊單獨(dú)工作時(shí)產(chǎn)生的數(shù)據(jù)相吻合,經(jīng)過多組數(shù)據(jù)的驗(yàn)證,表明CRC編解碼模塊聯(lián)合工作正常,數(shù)據(jù)結(jié)果正確可靠。圖4-7CRC編解碼聯(lián)合仿真.第5章結(jié)束語本文詳細(xì)的介紹了循環(huán)冗余校驗(yàn)碼的編解碼器的基本理論和方法,通過仿真實(shí)驗(yàn)驗(yàn)證正確無誤,方案切實(shí)可行。在進(jìn)行本設(shè)計(jì)之初對(duì)CRC知之甚少,在設(shè)計(jì)的開始階段感到非常的迷茫,常常感覺無從下手,在大量查閱資料之后慢慢的找到了一點(diǎn)突破口,了解到設(shè)計(jì)循環(huán)冗余校驗(yàn)碼需要深厚的理論基礎(chǔ),而且涉及的理論學(xué)科圍較廣囊括了大學(xué)期間的多門重要基礎(chǔ)課程。首先進(jìn)行了CRC的理論學(xué)習(xí),系統(tǒng)地對(duì)《信息論基礎(chǔ)》做了學(xué)習(xí),也再一次復(fù)習(xí)了《通信原理》、《線性代數(shù)》、《數(shù)字電子技術(shù)》、《EDA技術(shù)》。通過本次設(shè)計(jì)可以看出自己在基礎(chǔ)理論知識(shí)方面上存在的薄弱環(huán)節(jié),看到了自己理論聯(lián)系實(shí)際的不足。通過本次設(shè)計(jì)增強(qiáng)了自己的動(dòng)手能力,提高了自學(xué)能力。.致大學(xué)生活即將告一段落,在理工學(xué)院學(xué)習(xí)的四年將是我終身難忘,母校對(duì)我的培養(yǎng)和各位老師的付出我不甚感激,再此更要特別感我的導(dǎo)師彬老師,本設(shè)計(jì)的完成是在我們的導(dǎo)師彬老師的細(xì)心指導(dǎo)下進(jìn)行的。在每次設(shè)計(jì)遇到問題時(shí)老師不辭辛苦的講解才使得我的設(shè)計(jì)順利的進(jìn)行。從設(shè)計(jì)的選題到資料的搜集直至最后設(shè)計(jì)的修改的整個(gè)過程中,花費(fèi)了老師很多的寶貴時(shí)間和精力,在此向?qū)煴硎局孕牡馗?!?dǎo)師嚴(yán)謹(jǐn)?shù)闹螌W(xué)態(tài)度,開拓進(jìn)取的精神和高度的責(zé)任心都將使學(xué)生受益終生!其次在此還要感我的室友,在設(shè)計(jì)中遇到問題我們互相學(xué)習(xí),共同討論,使我受益匪淺??傊?感每一位關(guān)心過我,愛護(hù)過我的人。滴水之恩,當(dāng)涌泉相報(bào)。最后,再次感我的導(dǎo)師彬老師。此外,我還要對(duì)在這次設(shè)計(jì)中,幫助和支持我的同學(xué),表示感! 此外,我還要對(duì)在這次設(shè)計(jì)中,幫助和支持我的同學(xué),表示感!參考文獻(xiàn)[1]樊昌信,麗娜通信原理:國(guó)防工業(yè),2009[2]斗,殷悅,羅燕信息論與編碼理論:電子工業(yè),2004[3]廖海紅,通信系統(tǒng)的CRC算法的研究和工程實(shí)現(xiàn)[D]:郵電大學(xué)信息工程學(xué)院,2006[4]王新梅,肖國(guó)鎮(zhèn)糾錯(cuò)碼-原理與方法〔修訂版:電子科技大學(xué),2001[5]宗橙糾錯(cuò)編碼原理和應(yīng)用:電子工業(yè),2003[6]春陽基于FPGA的串行通信實(shí)現(xiàn)與CRC校驗(yàn):化工大學(xué),2006[7]傅祖蕓信息論-基礎(chǔ)理論與應(yīng)用:電子工業(yè),2001[8]萬哲先代數(shù)與編碼:科學(xué),1980[9]雪虹信息論與編碼:清華大學(xué),2009[10]同濟(jì)大學(xué)應(yīng)用數(shù)學(xué)系線性代數(shù):高等教育,2008[11]徐秀娟線性代數(shù):科學(xué),2007[12]松,王國(guó)棟VHDL實(shí)用教程〔第二版[M].:電子科技大學(xué),2001[13]松EDA技術(shù)實(shí)用教程〔第四版[M].:科學(xué),2005[14]宇,鳳榮,瑞朋基于FPGA的CRC算法和VHDL設(shè)計(jì):防空兵指揮學(xué)院,2010[15]井海明,高占鳳用VHDL設(shè)計(jì)CRC發(fā)生器和校驗(yàn)器:鐵道學(xué)院,2004[16]BerrouC,GlavieuxA,TthitimajshimaP.NearShannonLimitErrorCorrectingCodingandDecoding:TurboCodes.Proc.IEEEInt.Conf.Commun.,1993:1064-1070[17]GallagerR,Low-densityParity-checkcodes,IRETrans.onIT,1962,8<1>:21-28[18]JohnG.Proakis.DigitalCommunications.ThirdEdition1995[19]LuckyRW,SalzJ,Weldon,EJ.PrinciplesofDataCommunication,McGraw-Hill,1968.附錄A程序代碼CRC校驗(yàn)生成模塊:LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;USEIEEE.STD_LOGIC_ARITH.ALL;ENTITYCRCSENDISPORT<SDATA:INSTD_LOGIC_VECTOR<11DOWNTO0>;CLK,DATALD:INSTD_LOGIC;DATACRCO:OUTSTD_LOGIC_VECTOR<16DOWNTO0>;HSEND:OUTSTD_LOGIC>;ENDCRCSEND;ARCHITECTURECOMMOFCRCSENDISCONSTANTMULTI_COEF:STD_LOGIC_VECTOR<5DOWNTO0>:="110101";SIGNAL

溫馨提示

  • 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. 人人文庫網(wǎng)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論