資源描述:
《CRC16、擾碼、解擾碼器并行方案原理和Verilog HDL程序設(shè)計(jì)》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫(kù)。
1、課程設(shè)計(jì)課程名稱現(xiàn)代通信原理與技術(shù)課程設(shè)計(jì)題目名稱CRC16、擾碼/解擾碼器并行方案原理和VerilogHDL程序設(shè)計(jì)2013年10月25日目錄一、CRC16并行算法原理二、CRC16并行算法的VerilogHDL程序設(shè)計(jì)三、擾碼/解擾碼器并行算法原理四、擾碼/解擾碼器并行算法的VerilogHDL程序設(shè)計(jì)五、參考文獻(xiàn)0一、CRC16并行算法原理1、CRC編碼原理在數(shù)字通信中,可能會(huì)因?yàn)楦鞣N原因?qū)е聰?shù)據(jù)在傳輸過(guò)程中或接收時(shí)發(fā)生錯(cuò)誤,為了保證數(shù)據(jù)傳輸?shù)目煽啃院蛿?shù)據(jù)校驗(yàn)的高效性,常常采用一些差錯(cuò)控制
2、方法。冗余校驗(yàn)(CRC)就是一種被廣泛采用的差錯(cuò)控制方法和數(shù)據(jù)編碼方法。它具有編碼和解碼方法簡(jiǎn)單,剪錯(cuò)和糾錯(cuò)能力強(qiáng)等特點(diǎn),能有效地對(duì)數(shù)據(jù)進(jìn)行編碼,并可以顯著的提高系統(tǒng)的剪錯(cuò)能力,從而保證數(shù)據(jù)的可靠性和正確性,因此在大多數(shù)的以太網(wǎng)協(xié)議中都采用了CRC的校驗(yàn)來(lái)進(jìn)行差錯(cuò)控制。CRC主要有兩種,即非標(biāo)準(zhǔn)的由用戶定義的CRC的生成多項(xiàng)式和國(guó)際標(biāo)準(zhǔn)化組織規(guī)定的標(biāo)準(zhǔn)的生成多項(xiàng)式。其中第二中應(yīng)用廣泛,國(guó)際標(biāo)準(zhǔn)化組織規(guī)定的幾種主要常見(jiàn)的CRC如表所示。CRC編碼是根據(jù)CRC檢驗(yàn)原理得出的一種編碼方法,其基本思想是
3、:利用線性編碼理論,在發(fā)送方向根據(jù)要傳輸?shù)腒位二進(jìn)制序列,以一定的規(guī)則產(chǎn)生r位校驗(yàn)用的監(jiān)督嗎(CRC碼),并附在信息位之后,構(gòu)成一個(gè)新的二進(jìn)制代碼序列共n=k+r位。在接收方,則根據(jù)信息碼和CRC碼之間的規(guī)則進(jìn)行校驗(yàn),以確定傳輸中是否出現(xiàn)錯(cuò)誤。對(duì)一個(gè)數(shù)據(jù)進(jìn)行編碼,就是原始數(shù)據(jù)通過(guò)某種算法,得到一個(gè)新的數(shù)據(jù)。而這個(gè)新的數(shù)據(jù)與原始數(shù)據(jù)有著固定的內(nèi)在聯(lián)系。通過(guò)把原始數(shù)據(jù)和新的數(shù)據(jù)組合在一起形成新的數(shù)據(jù),因此這個(gè)數(shù)據(jù)具有自我校驗(yàn)的能力。將原始數(shù)據(jù)表示為P(x),它是一個(gè)n階多項(xiàng)式表示為;式子中,為數(shù)據(jù)位
4、;x為偽變量,用指明各位間的排列位置。在對(duì)這個(gè)數(shù)據(jù)進(jìn)行編碼的時(shí),CRC生成多項(xiàng)式G(x),并在帶編碼的二進(jìn)制多項(xiàng)式P(x)的末尾添加r個(gè)0,這樣對(duì)應(yīng)的二進(jìn)制多項(xiàng)式升冪為。再用生成多項(xiàng)式G(x)去除,求得余數(shù)為r-1階的二進(jìn)制多項(xiàng)式R(x)。R(x)即為所求的CRC校驗(yàn)碼多項(xiàng)式。最后用以模2的方法減去R(x),則對(duì)應(yīng)的二進(jìn)制序列就是包含了CRC校驗(yàn)碼的待發(fā)送字符串,也就是編碼后的數(shù)據(jù)。12式中:Q(x)是商多項(xiàng)式;R(x)是余數(shù)多項(xiàng)式;T(x)是編碼后的數(shù)據(jù)。2、CRC_16并行算法原理在利用CR
5、C_16串行編碼電路對(duì)輸入進(jìn)行編碼時(shí),它的輸入數(shù)據(jù)是串行輸入的,因此數(shù)據(jù)傳輸效率低,它的運(yùn)算速度的提高完全依賴于系統(tǒng)時(shí)鐘頻率的提高,不能滿足現(xiàn)在的低功耗下的數(shù)據(jù)快速傳輸,如果將數(shù)據(jù)進(jìn)行并行處理,就可以在較低的時(shí)鐘頻率下快速的處理數(shù)據(jù),因此,本次設(shè)計(jì)采用并行的CRC_16。最常見(jiàn)的CRC校驗(yàn)碼電路采用的是線性反饋寄存器LFSR實(shí)現(xiàn),對(duì)于CRC_16,其生成多項(xiàng)式為,所以對(duì)應(yīng)的系數(shù)0—16為::1010000000000011,由此可以得到CRC_16編碼電路結(jié)構(gòu)圖,如圖所示。從圖中可以看出,各位移
6、位寄存器當(dāng)前存儲(chǔ)的數(shù)據(jù)為CRC余數(shù)值,16個(gè)D觸發(fā)器輸出從右至左依次為。輸入的信息碼元為I。令表示編碼以為寄存器當(dāng)前所處的狀態(tài),I=[I0I1...I7]表示第1至第8個(gè)時(shí)鐘的信息碼元輸入,向量表示編碼器的下一個(gè)狀態(tài),D(8)表示第8個(gè)時(shí)鐘周期后CRC編碼器中移位寄存器所處的狀態(tài),則設(shè)計(jì)8bit并行的CRC邏輯編碼器就是找出函數(shù)關(guān)系。第1個(gè)時(shí)鐘周期后的編碼寄存器狀態(tài)為:12可以將以上表達(dá)式組成矩陣乘法,有:其中,第2個(gè)時(shí)鐘周期后的編碼寄存器狀態(tài)為:以此類推則有:假設(shè)用crc_reg[15:0]表
7、示移位寄存器初始狀態(tài),crc_in[8:0]表示并行輸入的8bit數(shù)據(jù),crc_reg8[15:0]表示8bit并行編碼后的移位寄存器狀態(tài),則123、CRC_16并行仿真輸出波形如圖所示是CRC_16并行編碼電路測(cè)試程序的仿真結(jié)果,輸入信號(hào)時(shí)crc_in,沒(méi)有完全輸入編碼器是,輸入信號(hào)crc_in作為crc_out端口輸出數(shù)據(jù);當(dāng)d_finish信號(hào)為高電平指示數(shù)據(jù)輸入完成時(shí),將線性移位寄存器crc_reg中的校驗(yàn)位并行8位輸出到crc_out端口。由圖可以看出輸入信號(hào)與輸出存在一個(gè)時(shí)鐘周期的延
8、時(shí)。二、CRC16并行算法的VerilogHDL程序設(shè)計(jì)1、CRC_16校驗(yàn)碼的并行編碼程序moduleCRC_16(clk,rst,load,d_finish,crc_in,crc_out);inputclk,rst;inputload;//開(kāi)始編碼信號(hào)inputd_finish;//編碼結(jié)束信號(hào)input[7:0]crc_in;//編碼器并行8bit數(shù)據(jù)輸入output[7:0]crc_out;//編碼器并行8bit數(shù)據(jù)輸出reg[7:0]crc_out;//數(shù)據(jù)輸出寄存器reg[15:0]