CRC16、扰码、解扰码器并行方案原理和VerilogHDL程序设计解读_第1页
CRC16、扰码、解扰码器并行方案原理和VerilogHDL程序设计解读_第2页
CRC16、扰码、解扰码器并行方案原理和VerilogHDL程序设计解读_第3页
CRC16、扰码、解扰码器并行方案原理和VerilogHDL程序设计解读_第4页
CRC16、扰码、解扰码器并行方案原理和VerilogHDL程序设计解读_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、课程设计课程名称现代通信原理与技术课程设计题目名称 CRC16扰码/解扰码器并行方案原理和Verilog HDL程序设计2013年10月25日目录一、CRC16并行算法原理二、CRC16并行算法的 Verilog HDL 程序设计三、扰码/解扰码器并行算法原理四、扰码/解扰码器并行算法的 Verilog HDL程序设计五、参考文献i、CRC16并行算法原理1、CRC编码原理在数字通信中,可能会因为各种原因导致数据在传输过程中或接收时发生错误,为了保证数据传输的可靠性和数据校验的高效性,常常采用一些差错控制方法。冗余校验(CRC就是一种被广泛采用的差错控制方法和数据编码方法。它具有编码和解码方法

2、简单,剪错和纠错能力强等特点, 能有效地对数据进行编码,并可以显著的提高系统的剪错能力,从而保证数据的可靠性和正确性,因此在大多数的以太网协议中都采用了 CRC勺校验来进行差错控制。CRC主要有两种,即非标准的由用户定义的 CRC的生成多项式和国际标准化组织规定的 标准的生成多项式。 其中第二中应用广泛, 国际标准化组织规定的几种主要常见的CRC如表所示。御记应舟CRC-14m G,704CRC-S0x13005BM SDLCCRC-CCIIT0x110211SOIIDLC. FTUX.25CRC-320k1O4CHDB7ZIP, RAR. IEEE802LAN.TDD h PPP-FCSCR

3、C编码是根据CRC佥验原理得出的一种编码方法,其基本思想是:利用线性编码理论,在发送方向根据要传输的 K位二进制序列,以一定的规则产生r位校验用的监督吗(CRC码), 并附在信息位之后, 构成一个新的二进制代码序列共n=k+r位。在接收方,则根据信息码和CRC码之间的规则进行校验,以确定传输中是否出现错误。对一个数据进行编码, 就是原始数据通过某种算法,得到一个新的数据。 而这个新的数据与原始数据有着固定的内在联系。通过把原始数据和新的数据组合在一起形成新的数据, 因此这个数据具有自我校验的能力。将原始数据表示为 P(x),它是一个n阶多项式表示为;P(x) =X + a2xH 2 十丄+珂兀

4、 + 口。式子中,为数据位;x为伪变量,用指明各位间的排列位置。在对这个数据进行编码的时,CRC生成多项式G(x),并在带编码的二进制多项式 P( x)的末尾添加r个0,这样对应的二进制多项式升幕为。再用生成多项式 G (x)去除,求得余数为r-1阶的二进制多项式 R (x)。R (x)即为所求的CRC校验码多项式。最后用:(以模2的方法减去R( x),则对应的二进制序列就是包含了CRC校验码的待发送字符串,也就是编码后的数据。xrP(x)丽= G(x)e(x) = T(x)式中:Q(x)是商多项式;R(x)是余数多项式;T(x)是编码后的数据。2、CRC_16并行算法原理在利用CRC_16串

5、行编码电路对输入进行编码时,它的输入数据是串行输入的,因此数 据传输效率低,它的运算速度的提高完全依赖于系统时钟频率的提高,不能满足现在的低功耗下的数据快速传输, 如果将数据进行并行处理, 就可以在较低的时钟频率下快速的处理数 据,因此,本次设计采用并行的CRC_16最常见的CRC校验码电路采用的是线性反馈寄存器LFSR实现,对于CRC_16其生成多项式为七F+1 ,所以对应的系数0 16为:1010000000000011 ,由此可以得到CRC_16 编码电路结构图,如图所示。从图中可以看出,各位移位寄存器当前存储的数据为CRC余数值,16个D触发器输出从右至左依次为 1。输入的信息码元为I

6、。令1W,】- :J 表示编码以为寄存器当前所处的状态,|=10 I1.I7 表示第1至第8个时钟的信息码元输入,向量宀、丄珂上表示编码器的下一个状态,D(8)表示第8个时钟周期后 CRC编码器中移位寄存器所处的状态,则设计 8bit并行的CRC 逻辑编码器就是找出函数关系1 3,1 o第1个时钟周期后的编码寄存器状态为:D= DO DI D15TDP DIS114DODISHD or=DO D2*=DI5+DH1OD3-D2D14-DBD15-D15+D14+1O可以将以上表达式组成矩阵乘法,有:其中,D*-T D+S400fe A v *r1 * * r0T-01 100 1 0iP *

7、* 4 w *0 A 4 di *1S=l 01 00 0 0 0000000 &1T第2个时钟周期后的编码寄存器状态为: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假设用crc_reg15:0表示移位寄存器初始状态,crc_in8:0表示并行输 入的8bit数据,crc_reg815:0表示8bit并行编码后的移位寄存器状态,则 crc_reg80 = crc_in7 crc_in6 crc_in5 ffi crc 亠血4crc_incrc_in2crc inflcrcn0

8、 crc_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_ in

9、5 J 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

10、_reg 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并行编码电路测试程序的仿真结果,输入信号时crc_in,没有完全输入编码器是,输入信号crc_in作为crc_out端口输出数据;当d_finish 信号为高电平指

11、 示数据输入完成时,将线性移位寄存器crc_reg中的校验位并行 8位输出到crc_out端口。由图可以看出输入信号与输出存在一个时钟周期的延时。、CRC16并行算法的Verilog HDL程序设计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

12、 1:0 count;/开始编码信号/编码结束信号编码器并行8bit数据输入 编码器并行8bit数据输出 数据输出寄存器 编码器移位寄存器reg 1:0 state;移位寄存器输入变量wire 15:0 n ext_crc_reg; /parameter idle = 2b00;parameter compute = 2b01;parameter finish = 2b10;/寄存器输出和寄存器初始状态以及输入码字组合逻辑关系assig n next_crc_reg0 = (Acrc_i n7:0) A (Acrc_reg15:8);assig n next_crc_reg1 = (Acrc_

13、i n6: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

14、_i 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

15、n7: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 /寄存器装初值状态crc_reg15:0 = 16b0000_0000_0000_0000;endcompute : begin /编码计算状态crc_reg15:0 = n ex

17、t_crc_reg15:0; crc_out7:0 = crc_i n7:0;endfinish : begin /编码结束状态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 i

18、n#clk_period clk = 1;#clk_period rst = 0;#clk_period rst = 1;#clk_period crc_i n 7:0 = 8b1010_1010; /输入待编码数据#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;输入待编码数据always #(clk_period) crc_

19、i n 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、扰码/解扰码器并行算法原理在数字通信系统中,若经常出现长的“ 0”或“ 1 ”系列,将会影响位同步的建立和保持。 为了解决这个问题以及限制电路中存在的不同程度的非线性特性对其他电路通信造成的串 扰,要求数字信号的最小周期足够长。将数字信号变成具有近似于白噪声统计特性的数字序列即可满足要

20、求,这通常用加扰来实现。而所谓加扰,就是不用增加冗余而扰乱信号,改变数字信号统计特性,使其具有近似白噪声统计特性的一种技术。这种扰乱是有规律可循的, 因此也是可以解除的。扰码的作用就是对输入的信号进行随机化处理,以减少数据的连0连1数目,确保接收端的位同步提取,并同时扩展基带信号频率,起到加密效果。这种加扰的基础建立在伪随机 序列理论的基础上,其工作原理就是在发送端用加扰来改变原来数字的统计特性,而在接收端用解扰器恢复原始的数字信号。扰码产生是通过循环移位寄存器来实现的,而扰码生成多项式决定循环移位寄存器的结构。这次设计以ITU-T推荐的SDH(同步数字体系)使用的扰码生成多项式:76X +

21、X + 1设扰码的输入数字序列为tk,输出为S;解码器的输入为S,输出为rk扰码器的输入和输出序列关系为:解扰码器的输入和输出序列关系为:lk= Sic涉 Xs X?=tk)X7( )X5 0x7=tlr2、并行加扰器设计在高速的数据传输过程中,为了满足数据高速处理的需要, 一般扰码器和解码器通常采 用并行的方式来实现。并行扰码的原理基于特征多项式 X7 + X6+ 1,加扰器电路结构如图所 示。假设每个触发器的输出端分别是S 1-假设为最低位触发器的输入,那么每个触发器的关系如下令i=7以及i=6代入上式可得:XT二疋+斗对于上述的几个关系式可以用矩阵乘法来表示。-X,兀兀XX,对于8位并行

22、扰码,需要知道(N+8时刻输出相对于N时刻的关系,在上 式中令经过计算可得: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上述式子就是并行扰码的理论基础。根据上述式子,假设并行8位输入数据为scramn7:0,扰码器的并行8位输出数据为scram_out7:0 ,shift_reg6:0,是加扰器的移位寄存器的初始状态加扰器复位后初始状态一般为shift_reg6:0=7b 111_1111,则可以得并行8位数据输入后加扰器输出数 据和加扰器输入数据以及移位寄存器初始状态的关系式:scram _ 0住

23、玮7 = 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 _/n7scra

24、mfn03、并行解扰器设计并行加扰器电路设计原理和并行加电路设计原理一样, 如图所示为解扰码器 的电路图:解扰器电路结构假设 解扰器 电路输入时descramn7:0,解码电路输出是 descram_out7:0,移位寄存器是shift_re n7:0,可以根据并行扰码的推导 方法导出解军扰器输出和解扰器输入以及移位寄存器初始状态的逻辑关系式:descram ouf7 = shift _ rg(6 S shift reg5J 田 descram _in 7 descrum oui6j = shift _ reg(5J shift _ reg4 descram _in6 descram out5

25、 htft _ 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 descram1匚TTLTWULTLTLTLJL

26、RJr 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細创加7讥加卩8 IL& Ha悩M诩滋矿1KZZ如图所示是并行加扰/解扰器的仿真输出波形,从图中可以看出测试文件输入初始为 00000001的8位数据,每来一个时钟该数据加 1,该数据经过加扰器并行扰码后将数据送给 并行解码器解扰,加扰

27、器的输出作为解扰器的输入,由图中可以看出,连0和连1的个数最多8个,同时加扰器输入数据与解扰器输出数据相同,只差一个时钟周期的运算延时。4、仿真输出波形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 HD

28、L 程序设计为复位信号,低电平有效 扰码数据输入扰码数据输出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; /反馈移位寄存器/ 输出的反馈异或关系assig n scram_out7:0 = shift_reg 7:0;always (posedge clk or n egedge rst_n) begi n if(!rst_n) /已将rst改

29、为!rst(考虑到可综合性问题)shift_reg = 8b1111_1111;else begi 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、解扰码器的程序为复位信号,低电平有效 扰码数据输入 扰码数据输出反馈移位寄存器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. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论