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