基于USB的CRC算法及其VHDL實(shí)現(xiàn)_第1頁(yè)
基于USB的CRC算法及其VHDL實(shí)現(xiàn)_第2頁(yè)
基于USB的CRC算法及其VHDL實(shí)現(xiàn)_第3頁(yè)
全文預(yù)覽已結(jié)束

下載本文檔

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

文檔簡(jiǎn)介

1、基于USB的CRC算法及其VHDL實(shí)現(xiàn)     1概述    在數(shù)據(jù)通信中,由于隨機(jī)噪聲和干擾等因素的影響可能會(huì)產(chǎn)生數(shù)據(jù)傳輸錯(cuò)誤。為了檢測(cè)這類(lèi)錯(cuò)誤,一方面可采用硬件措施來(lái)提高數(shù)據(jù)傳輸?shù)目煽啃?,另一方面也可以在?shù)據(jù)包中加人檢測(cè)位來(lái)檢測(cè)數(shù)據(jù)在傳輸過(guò)程中是否發(fā)生錯(cuò)誤。檢測(cè)的方法很多,常用的有奇偶校驗(yàn)、重復(fù)碼校驗(yàn)、恒碼比校驗(yàn)、行列冗余碼校驗(yàn)等,這些方法都是通過(guò)增加數(shù)據(jù)的冗余量,將數(shù)據(jù)和校驗(yàn)碼一起發(fā)送到接收端。接收端對(duì)接收到的數(shù)據(jù)進(jìn)行相同的校驗(yàn),將算出的校驗(yàn)碼和接收到的校驗(yàn)碼進(jìn)行比較,如果相同則認(rèn)為傳輸正確,若不同,則認(rèn)為數(shù)據(jù)包已經(jīng)損

2、壞。循環(huán)冗余校驗(yàn)(Cyclic Redundancy Check)是由分組線(xiàn)性碼的分支而來(lái)的,其主要應(yīng)用于二元碼組。編碼簡(jiǎn)單且誤判率低,在數(shù)據(jù)通信中應(yīng)用廣泛。    VHDL是目前應(yīng)用廣泛的硬件描述語(yǔ)言之一,用于數(shù)字系統(tǒng)設(shè)計(jì)。應(yīng)用VHDL可以進(jìn)行數(shù)字系統(tǒng)的仿真、設(shè)計(jì)、時(shí)序分析和邏輯綜合等,是EDA技術(shù)中主要的輸人工具。隨著EDA技術(shù)的普及和發(fā)展,VHDL在嵌人式系統(tǒng)設(shè)計(jì)中應(yīng)用越來(lái)越廣泛。2循環(huán)冗余碼原理       CRC校驗(yàn)采用多項(xiàng)式編碼的方法,需要一個(gè)生成多項(xiàng)式,生成多項(xiàng)式通常用:次二進(jìn)制多項(xiàng)式g(x)=b1x

3、r+br-1xr-1+.+b1+bo來(lái)定義,其中bi=0或l,i=1,2,.,r。多項(xiàng)式的乘除法過(guò)程與普通代數(shù)多項(xiàng)式的乘除法相同。多項(xiàng)式的加減法以2為模,加減時(shí)不進(jìn)/借位時(shí),和邏輯異或運(yùn)算一致。 設(shè)被處理的數(shù)據(jù)塊t(x)可以看成是一個(gè)m位的二進(jìn)制多項(xiàng)式am-1xm-1+ am-2xm-2+.+ amx +a0 . CRC校驗(yàn)碼的編碼方法是用發(fā)送的二進(jìn)制數(shù)據(jù)t(x)除以生成多項(xiàng)式g(x),將最后的余數(shù)作為CRC校驗(yàn)碼。其實(shí)現(xiàn)如下: (1)設(shè)待發(fā)送的數(shù)據(jù)塊是m位多項(xiàng)式t(x),生成多項(xiàng)式為r階的g(x)。在數(shù)據(jù)塊2(x)的末尾添加r個(gè)0,數(shù)據(jù)塊的長(zhǎng)度增加到m+r,對(duì)應(yīng)的二進(jìn)制多項(xiàng)式可記為xrt(x

4、) o (2)用生成多項(xiàng)式g(x)去除xrt(x),求得的余數(shù)為階數(shù)為r-1階的二進(jìn)制多項(xiàng)式Y(jié)(x), Y(x)就是t(x)經(jīng)過(guò)多項(xiàng)式g(x)編碼的CRC校驗(yàn)碼。 (3)用xrt(x)以模2的方式減去y (x),得到二進(jìn)制多項(xiàng)式xrt1(x)o xrt1 (x)就是包含CRC校驗(yàn)碼的待發(fā)的字符串。 解碼時(shí)可以用接收到的數(shù)據(jù)除以g(x),如果余數(shù)為0,表示傳輸沒(méi)有錯(cuò)誤;如果余數(shù)不為。,則在傳輸過(guò)程中肯定存在錯(cuò)誤。xrt1 (x)可以看成是由t(x)和CRC校驗(yàn)碼的組合,解碼時(shí)將接收到的二進(jìn)制數(shù)據(jù)去掉尾部的r位數(shù)據(jù),得到的就是原始數(shù)據(jù)t(x)o3 USB協(xié)議中CRC的設(shè)計(jì)與實(shí)現(xiàn)在USB協(xié)議中,循環(huán)

5、冗余校驗(yàn)用來(lái)在令牌和數(shù)據(jù)包中保護(hù)所有的非PID字段,檢測(cè)傳輸中數(shù)據(jù)是否發(fā)生錯(cuò)誤。其中包括兩種類(lèi)型的CRC校驗(yàn):5位CRC校驗(yàn)和16位CRC校驗(yàn)。令牌包采用5位CRC校驗(yàn),數(shù)據(jù)包采用16位CRC校驗(yàn)。5位CRC校驗(yàn)采用的生成多項(xiàng)式為:g(x)=x5+x2+1其比特模型為00101.16位CRC校驗(yàn)使用的生成多項(xiàng)式是:g(x)=x16+x15+x2    5位CRC校驗(yàn)和16位CRC校驗(yàn)的設(shè)計(jì)與實(shí)現(xiàn)方法完全類(lèi)似,以下僅以5位CRC校驗(yàn)為例進(jìn)行設(shè)計(jì)。3.1  5位串行CRC校驗(yàn)的設(shè)計(jì)與實(shí)現(xiàn)    通常CRC校驗(yàn)可以通過(guò)線(xiàn)性反饋移位

6、寄存器(LFSRs)來(lái)實(shí)現(xiàn)。因此,串行5位CRC校驗(yàn)可以采用一個(gè)5位移位寄存器,幾個(gè)異或門(mén)和一條反饋回路實(shí)現(xiàn)。根據(jù)USB協(xié)議中的規(guī)定,;位寄存器初始值置為全"1",輸人的串行數(shù)據(jù)比特先與移位存器的最高位進(jìn)行異或,然后移位寄存器左移一位,并把右;的最低位置為"0"。如果前面異或結(jié)果為"1",則把移位寄·器和代表生成多項(xiàng)式的比特模型00101進(jìn)行異或,異或的結(jié);作為新的寄存器值;如果為"0",則不需要這步操作。由X由0=X,因此無(wú)論是否要與生成多項(xiàng)式的比特模型進(jìn)行或,除了第2位和第0位之外,移位寄存器的其余三位始終持不變。通過(guò)反復(fù)的移位和進(jìn)行CRC的除法,那么最該寄存:中的值去掉最高一位就是所要求的余數(shù)。實(shí)現(xiàn)串行CRC校驗(yàn)的VHDL函數(shù)(CRCS_D1)設(shè)計(jì)如下:      圖1是串行校驗(yàn)函數(shù)CRCS_ D1在Quartos I

溫馨提示

  • 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. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論