CRC16、擾碼、解擾碼器并行方案原理和VerilogHDL程序設(shè)計要點_第1頁
CRC16、擾碼、解擾碼器并行方案原理和VerilogHDL程序設(shè)計要點_第2頁
CRC16、擾碼、解擾碼器并行方案原理和VerilogHDL程序設(shè)計要點_第3頁
CRC16、擾碼、解擾碼器并行方案原理和VerilogHDL程序設(shè)計要點_第4頁
CRC16、擾碼、解擾碼器并行方案原理和VerilogHDL程序設(shè)計要點_第5頁
已閱讀5頁,還剩10頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、課程設(shè)計課程名稱現(xiàn)代通信原理與技術(shù)課程設(shè)計題目名稱 CRC16擾碼/解擾碼器并行方案原理和Verilog HDL程序設(shè)計2013年10月25日目錄一、CRC16并行算法原理二、CRC16并行算法的 Verilog HDL 程序設(shè)計三、擾碼/解擾碼器并行算法原理四、擾碼/解擾碼器并行算法的 Verilog HDL程序設(shè)計五、參考文獻、CRC16并行算法原理1、CRC編碼原理在數(shù)字通信中,可能會因為各種原因?qū)е聰?shù)據(jù)在傳輸過程中或接收時發(fā)生錯誤,為了保證數(shù)據(jù)傳輸?shù)目煽啃院蛿?shù)據(jù)校驗的高效性,常常采用一些差錯控制方法。冗余校驗(CRC就是一種被廣泛采用的差錯控制方法和數(shù)據(jù)編碼方法。它具有編碼和解碼方法簡

2、單,剪錯和糾錯能力強等特點, 能有效地對數(shù)據(jù)進行編碼,并可以顯著的提高系統(tǒng)的剪錯能力,從而保證數(shù)據(jù)的可靠性和正確性,因此在大多數(shù)的以太網(wǎng)協(xié)議中都采用了 CRC勺校驗來進行差錯控制。CRC主要有兩種,即非標準的由用戶定義的 CRC的生成多項式和國際標準化組織規(guī)定的 標準的生成多項式。 其中第二中應(yīng)用廣泛, 國際標準化組織規(guī)定的幾種主要常見的CRC如表所示。御記應(yīng)舟CRC-14m G,704CRC-S0x13005BM SDLCCRC-CCIIT0x110211SOIIDLC. FTUX.25CRC-320k1O4CHDB7ZIP, RAR. IEEE802LAN.TDD h PPP-FCSCRC

3、編碼是根據(jù)CRC僉驗原理得出的一種編碼方法,其基本思想是:利用線性編碼理論,在發(fā)送方向根據(jù)要傳輸?shù)?K位二進制序列,以一定的規(guī)則產(chǎn)生r位校驗用的監(jiān)督嗎(CRC碼), 并附在信息位之后, 構(gòu)成一個新的二進制代碼序列共n=k+r位。在接收方,則根據(jù)信息碼和CRC碼之間的規(guī)則進行校驗,以確定傳輸中是否出現(xiàn)錯誤。對一個數(shù)據(jù)進行編碼, 就是原始數(shù)據(jù)通過某種算法,得到一個新的數(shù)據(jù)。 而這個新的數(shù)據(jù)與原始數(shù)據(jù)有著固定的內(nèi)在聯(lián)系。通過把原始數(shù)據(jù)和新的數(shù)據(jù)組合在一起形成新的數(shù)據(jù), 因此這個數(shù)據(jù)具有自我校驗的能力。將原始數(shù)據(jù)表示為 P(x),它是一個n階多項式表示為;P(x) =X + a2xH 2 十丄+珂兀

4、+ 口。式子中,為數(shù)據(jù)位;x為偽變量,用指明各位間的排列位置。在對這個數(shù)據(jù)進行編碼的時,CRC生成多項式G(x),并在帶編碼的二進制多項式 P( x)的末尾添加r個0,這樣對應(yīng)的二進制多項式升幕為。再用生成多項式 G (x)去除,求得余數(shù)為r-1階的二進制多項式 R (x)。R (x)即為所求的CRC校驗碼多項式。最后用:(以模2的方法減去R( x),則對應(yīng)的二進制序列就是包含了CRC校驗碼的待發(fā)送字符串,也就是編碼后的數(shù)據(jù)。xrP(x)麗= G(x)e(x) = T(x)式中:Q(x)是商多項式;R(x)是余數(shù)多項式;T(x)是編碼后的數(shù)據(jù)。2、CRC_16并行算法原理在利用CRC_16串行

5、編碼電路對輸入進行編碼時,它的輸入數(shù)據(jù)是串行輸入的,因此數(shù) 據(jù)傳輸效率低,它的運算速度的提高完全依賴于系統(tǒng)時鐘頻率的提高,不能滿足現(xiàn)在的低功耗下的數(shù)據(jù)快速傳輸, 如果將數(shù)據(jù)進行并行處理, 就可以在較低的時鐘頻率下快速的處理數(shù) 據(jù),因此,本次設(shè)計采用并行的CRC_16最常見的CRC校驗碼電路采用的是線性反饋寄存器LFSR實現(xiàn),對于CRC_16其生成多項式為七F+1 ,所以對應(yīng)的系數(shù)0 16為:1010000000000011 ,由此可以得到CRC_16 編碼電路結(jié)構(gòu)圖,如圖所示。從圖中可以看出,各位移位寄存器當前存儲的數(shù)據(jù)為CRC余數(shù)值,16個D觸發(fā)器輸出從右至左依次為 1。輸入的信息碼元為I。

6、令1W,】- :J 表示編碼以為寄存器當前所處的狀態(tài),|=10 I1.I7 表示第1至第8個時鐘的信息碼元輸入,向量宀、丄珂上表示編碼器的下一個狀態(tài),D(8)表示第8個時鐘周期后 CRC編碼器中移位寄存器所處的狀態(tài),則設(shè)計 8bit并行的CRC 邏輯編碼器就是找出函數(shù)關(guān)系1 3,1 o第1個時鐘周期后的編碼寄存器狀態(tài)為:D= DO DI D15TDP DIS1DODISHD or=DO D2*=DI5+DH1OD3-D2D14-DBD15-D15+D14+1O可以將以上表達式組成矩陣乘法,有:其中,D*-T D+S400fe A v *r1 * * r0T-01 100 1 0iP * * 4

7、 w *0 A 4 di *1S=l 01 00 0 0 0000000 &1T第2個時鐘周期后的編碼寄存器狀態(tài)為:D=T D+SJ1-T(TD+S lOy+S-HT1 IT*SJO+S II以此類推則有:D(8) = T1 D + r7*S-/O + T S-/6 + 5 /7假設(shè)用crc_reg15:0表示移位寄存器初始狀態(tài),crc_in8:0表示并行輸 入的8bit數(shù)據(jù),crc_reg815:0表示8bit并行編碼后的移位寄存器狀態(tài),則 crc_reg80 = crc_in7 crc_in6 crc_in5 ffi crc 亠血4crc_incrc_in2crc inflcrcn0 cr

8、c_rcg 15J crc_reg14crc_reg13 crc_reg( 12 j Sure reg 11crc_reg10crc_rTeg9 crc_reg8Jcrc_reg8l = crc_ in6fficrc in5crc in|;4宙crc in可crc in2 crc inf 1crc_rcg 15 皿_regl 4 crc_reg13 crc regl 2 crc regll lffi crv_ reg 10 crc_ rcg9crc_reg82 j = gn7 crc in6 crc rcg9S crc_reg8 crc_reg8(3 = crc in6I crc_ in5 J

9、 cn;_regl Q crc_rcg9 ctc rcg8f4 -crc_in5crcn4的crc mgU l$crc re耐】Oj crc_reg85 = crcjn4ecrc_in3田 crc_rcg12 crcregll crc_reg8=crc.訶3crtjn2crcregf 13crc regl21crc_reg87 = crc_in2) crc_in 1 crc_reg 14田 crc_reg3CTC_reg88 = crcjnfncrc(田 crc_reg(l5J S ce_regi 4 crc_rcg0Jcrc_reg89 = cre_ in0 crc_reg15 crc_re

10、g cnc_rcg814:IO - crc_rtg6;2crcnegS15 = crcJn7 crc in6 crcjn5 crcJn4crc in cwri2 crcnl crc in0crc_R:gl 5 crc_reg14 crc rcg13| crc_reg12 crc_rcg 11 crc_rcg| J0| crc_reg9 crc regffi crc reg73、CRC_16并行仿真輸出波形如圖所示是CRC_16并行編碼電路測試程序的仿真結(jié)果,輸入信號時crc_in,沒有完全輸入編碼器是,輸入信號crc_in作為crc_out端口輸出數(shù)據(jù);當d_finish 信號為高電平指 示數(shù)

11、據(jù)輸入完成時,將線性移位寄存器crc_reg中的校驗位并行 8位輸出到crc_out端口。由圖可以看出輸入信號與輸出存在一個時鐘周期的延時。、CRC16并行算法的Verilog HDL程序設(shè)計1、CRC_16校驗碼的并行編碼程序module CRC_16(clk,rst,load,d_fi nish,crc_i n,crc_out);in put clk,rst;in put load;in put d_fini sh;in put 7:0 crc_in; / output 7:0 crc_out; / reg 7:0 crc_out; / reg 15:0 crc_reg; / reg 1:

12、0 count;/開始編碼信號/編碼結(jié)束信號編碼器并行8bit數(shù)據(jù)輸入 編碼器并行8bit數(shù)據(jù)輸出 數(shù)據(jù)輸出寄存器 編碼器移位寄存器移位寄存器輸入變量reg 1:0 state;wire 15:0 n ext_crc_reg; /parameter idle = 2b00;parameter compute = 2b01;parameter finish = 2b10;/寄存器輸出和寄存器初始狀態(tài)以及輸入碼字組合邏輯關(guān)系assig n next_crc_reg0 = (Acrc_i n7:0) A (Acrc_reg15:8);assig n next_crc_reg1 = (Acrc_i n

13、6:0) a (Acrc_reg15:9);assig n n ext_crc_reg2 = crc_i n7 a crc_in6 a crc_reg9 a crc_reg8;assignn ext_crc_reg3=crc_i n6a crc_i n5a crc_reg10a crc_reg9;assignn ext_crc_reg4=crc_i n5a crc_i n4a crc_reg11a crc_reg10;assignn ext_crc_reg5=crc_i n4a crc_i n3a crc_reg12a crc_reg11;assignn ext_crc_reg6=crc_i

14、n3a crc_i n2a crc_reg13a crc_reg12;assignn ext_crc_reg7=crc_i n2a crc_i n1a crc_reg14a crc_reg13;assignn ext_crc_reg8=crc_i n1a crc_i n0a crc_reg15a crc_reg14crc_reg0;assig n n ext_crc_reg9 = crc_in0 a crc_reg15 a crc_reg1; assig n n ext_crc_reg14:10 = crc_reg6:2;assig n next_crc_reg15 = (Acrc_i n7:

15、0) a (Acrc_reg15:7); always (posedge clk or n egedge rst) begi nif(!rst) begi nstate = idle; count = 2b00;endelse begi ncase(state)idle : begi nif(load)state = compute;elsestate = idle;endcompute : begi nif(d_fin ish)state = fini sh;elsestate = compute;endfinish : beg inif(co unt = 2) begi nstate =

16、idle;endelse begi n count = count + 1; state = fini sh;endendendcaseendendalways (posedge clk or n egedge rst) begi nif(!rst) begi ncrc_reg15:0 = 16b0000_0000_0000_0000;endelse begi ncase(state)idle : begin /寄存器裝初值狀態(tài)crc_reg15:0 = 16b0000_0000_0000_0000;endcompute : begin /編碼計算狀態(tài)crc_reg15:0 = n ext_c

17、rc_reg15:0; crc_out7:0 = crc_i n7:0;endfinish : begin /編碼結(jié)束狀態(tài)crc_reg15:0 = crc_reg7:0,8b0000_0000; crc_out7:0 = crc_reg15:8;endendcaseendendEn dmodule2、CRC_16仿真測試文件程序module CRC_16_test;reg clk;reg rst;reg load;reg d_fini sh;reg 7:0 crc_i n;wire 7:0 crc_out;parameter clk_period = 40;in itial beg in#c

18、lk_period clk = 1;#clk_period rst = 0;#clk_period rst = 1;#clk_period crc_i n 7:0 = 8b1010_1010; /輸入待編碼數(shù)據(jù)#clk_period load = 1;#clk_period load = 0;#clk_period d_finish = 0; #(10*clk_period) d_finish = 1;#clk_period d_finish = 0;end always #(clk_period/2) clk = clk;輸入待編碼數(shù)據(jù)always #(clk_period) crc_i n

19、 7:0 = crc_i n 7:0; / CRC_16 u1(.clk(clk),.rst(rst),o ad(load), .d_fi ni sh(d_fi ni sh), .crc_i n( crc_i n), .crc_out(crc_out);En dmodule三、擾碼/解擾碼器并行算法原理1、擾碼/解擾碼器并行算法原理在數(shù)字通信系統(tǒng)中,若經(jīng)常出現(xiàn)長的“ 0”或“ 1 ”系列,將會影響位同步的建立和保持。 為了解決這個問題以及限制電路中存在的不同程度的非線性特性對其他電路通信造成的串 擾,要求數(shù)字信號的最小周期足夠長。將數(shù)字信號變成具有近似于白噪聲統(tǒng)計特性的數(shù)字序列即可滿足要求,這

20、通常用加擾來實現(xiàn)。而所謂加擾,就是不用增加冗余而擾亂信號,改變數(shù)字信號統(tǒng)計特性,使其具有近似白噪聲統(tǒng)計特性的一種技術(shù)。這種擾亂是有規(guī)律可循的, 因此也是可以解除的。擾碼的作用就是對輸入的信號進行隨機化處理,以減少數(shù)據(jù)的連0連1數(shù)目,確保接收端的位同步提取,并同時擴展基帶信號頻率,起到加密效果。這種加擾的基礎(chǔ)建立在偽隨機 序列理論的基礎(chǔ)上,其工作原理就是在發(fā)送端用加擾來改變原來數(shù)字的統(tǒng)計特性,而在接收端用解擾器恢復(fù)原始的數(shù)字信號。擾碼產(chǎn)生是通過循環(huán)移位寄存器來實現(xiàn)的,而擾碼生成多項式?jīng)Q定循環(huán)移位寄存器的結(jié)構(gòu)。這次設(shè)計以ITU-T推薦的SDH(同步數(shù)字體系)使用的擾碼生成多項式:76X + X +

21、 1設(shè)擾碼的輸入數(shù)字序列為tk,輸出為S;解碼器的輸入為S,輸出為rk擾碼器的輸入和輸出序列關(guān)系為:解擾碼器的輸入和輸出序列關(guān)系為:lk= Sic涉 Xs X?=tk)X7( )X5 0x7=tlr2、并行加擾器設(shè)計在高速的數(shù)據(jù)傳輸過程中,為了滿足數(shù)據(jù)高速處理的需要, 一般擾碼器和解碼器通常采 用并行的方式來實現(xiàn)。并行擾碼的原理基于特征多項式 X7 + X6+ 1,加擾器電路結(jié)構(gòu)如圖所 示。假設(shè)每個觸發(fā)器的輸出端分別是S 1-假設(shè)為最低位觸發(fā)器的輸入,那么每個觸發(fā)器的關(guān)系如下令i=7以及i=6代入上式可得:XT二疋+斗對于上述的幾個關(guān)系式可以用矩陣乘法來表示。-X,兀兀XX,對于8位并行擾碼,

22、需要知道(N+8時刻輸出相對于N時刻的關(guān)系,在上 式中令經(jīng)過計算可得:0 0 0 0 01 0 0 0 0110 0 00 110 00 0 0 1 10 0 1100 0 0 0 11 0 0 0 0Ai42上述式子就是并行擾碼的理論基礎(chǔ)。根據(jù)上述式子,假設(shè)并行8位輸入數(shù)據(jù)為scramn7:0,擾碼器的并行8位輸出數(shù)據(jù)為scram_out7:0 ,shift_reg6:0,是加擾器的移位寄存器的初始狀態(tài)加擾器復(fù)位后初始狀態(tài)一般為shift_reg6:0=7b 111_1111,則可以得并行8位數(shù)據(jù)輸入后加擾器輸出數(shù) 據(jù)和加擾器輸入數(shù)據(jù)以及移位寄存器初始狀態(tài)的關(guān)系式:scram _ 0住瑋7

23、= shift _ rcg6 shift _ 舉 xcram _ 加7scram oM6 = shift reg5| shift _scramscram _ uut5 = shift _ reg4 ihifi re3 scram _ 詢scram out4 =_ 尸閉卩 hift _ 勒g2) scram /町4scram _ out3 - shift _ 尸紹 shtfl _ reg scram _ M3| scram out2 = shift ri7 scram _ mlscram _ out0 = shi _ reg6 shift _ 尸 g4 ffi scram _/n7scramfn

24、03、并行解擾器設(shè)計并行加擾器電路設(shè)計原理和并行加電路設(shè)計原理一樣, 如圖所示為解擾碼器 的電路圖:解擾器電路結(jié)構(gòu)假設(shè) 解擾器 電路輸入時descramn7:0,解碼電路輸出是 descram_out7:0,移位寄存器是shift_re n7:0,可以根據(jù)并行擾碼的推導(dǎo) 方法導(dǎo)出解軍擾器輸出和解擾器輸入以及移位寄存器初始狀態(tài)的邏輯關(guān)系式:descram ouf7 = shift _ rg(6 S shift reg5J 田 descram _in 7 descrum oui6j = shift _ reg(5J shift _ reg4 descram _in6 descram out5 ht

25、ft _ r6g4 G hift _ re3 des cram 訶 5 I descram ou/4 = shift _ reg3 shift 牝g2 descram _ 訶4 descram _ ouz|3 = Mft _ rcg2 shift _ reg ffi devcram _in3 deseram oui2 - hifi _jA/? regO descram _in2descram _out = shtfl _ regO descram _ 誠7 descram _ Ml dcscram= descram descram ;n6 descram4、仿真輸出波形1匚TTLTWULTLT

26、LTLJLRJr TLTLrLTLTIF1Lm15Z1t)2 63 M| tos Joe 1嘲朋山餉 Dk Kid 血 lof )10 ;11 112 II;fF加辻1 Kte 1&1 1抵0丹陌耐麗d封心ES5F11ZZTZ ZZC1肝加花加勺臉M能k偽図H肢LMU)H1 1 1 1EjEZE1洌皿5瞬曲詵OEEI咲図*2伽116恥Ik幅伽Ji詡曲夠楓|曲foe加142細創(chuàng)加7譏加卩8 IL& Ha悩M詡滋礦1KZZ如圖所示是并行加擾/解擾器的仿真輸出波形,從圖中可以看出測試文件輸入初始為 00000001的8位數(shù)據(jù),每來一個時鐘該數(shù)據(jù)加 1,該數(shù)據(jù)經(jīng)過加擾器并行擾碼后將數(shù)據(jù)送給 并行解碼器

27、解擾,加擾器的輸出作為解擾器的輸入,由圖中可以看出,連0和連1的個數(shù)最多8個,同時加擾器輸入數(shù)據(jù)與解擾器輸出數(shù)據(jù)相同,只差一個時鐘周期的運算延時。Messages15 e6帕制巳l_汨舟域/朮 parallel_Kraiijes?st_n Jparallel_Krnije5t/5crafn_lnftjarallel_saamJe5t/ij2/desjani_in Jparallel_Krafrj:est/de;crcfli_out iparallELsa 荀蟻加 L /shift jeg 陽 albl jaamJtest/dShlftj&g四、擾碼/解擾碼器并行算法的Verilog HDL 程

28、序設(shè)計為復(fù)位信號,低電平有效 擾碼數(shù)據(jù)輸入擾碼數(shù)據(jù)輸出1、擾碼器的程序module parallel_scrambler(clk, rst_n, scramn, scram_out);in putclk,rst_ n;rst_nin put 7:0 scram_ in;/output 7:0 scram_out;/reg 7:0 shift_reg; /反饋移位寄存器/ 輸出的反饋異或關(guān)系assig n scram_out7:0 = shift_reg 7:0;always (posedge clk or n egedge rst_n) begi n if(!rst_n) /已將rst改為!r

29、st(考慮到可綜合性問題)shift_reg = 8b1111_1111;else begi n/寄存器反饋異或關(guān)系shift_reg7:2 = shift_reg6:1 A shift_reg5:0 A scramn 7:2;shift_reg1= shift_reg0 a shift_reg6 a shift_reg5 a scramn7a scramn 1;shift_reg0= shift_reg6 a shift_reg4 a scramn7a scramn6a scramn 0;endendEn dmodule2、解擾碼器的程序為復(fù)位信號,低電平有效 擾碼數(shù)據(jù)輸入 擾碼數(shù)據(jù)輸出反饋移位寄存器module parallel decrambler(clk,rst n,descram in,descram out);in putclk,rst_ n;rst_ nin put 7:0 descram_i n;/output 7:0 descram_out;/reg 6:0 shift_reg; /assig n descram_out7:2 = shift_reg6:1 a shift_reg5:0 a descram_ in 7:2;assig n descram_out1 = shift_reg0 a descra

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論