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

付费下载

下载本文档

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

文档简介

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

2、错和纠错能力强等特点,能有效地对数据进行编码, 并可以显著的提高系统的剪错能力,从而保证数据的可靠性和正确性,因此在大多数的以太网协议中都采用了 CRC勺校验来进行差错控制。CRH要有两种,即非标准的由用户定义的 CRC勺生成多项式和国际标准化组织规定的 标准的生成多项式。 其中第二中应用广泛, 国际标准化组织规定的几种主要常见的CR以口表所示。名称多项式筒圮应用CRC-14J+x+l0x13ITU G,704CRC-S0x13005BM SDLCCRC-CCIITf小0x110211SOIIDLC. FTUX.25CRC-32L八炉 +jrl0+jr,+*/+1+小 卜】0K1O4CHDB7

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

4、n阶多项式表示为;P(x) = X + a2xH 2+ %式子中,由;为数据位;x为伪变量,用y打旨明各位间的排列位置。在对这个数据进彳T编码的时,CRCfc成多项式G (x),并在带编码的二进制多项式 P (x)的末尾添加r个0,这样对应的二进制多项式升哥为 切淀工)。再用生成多项式 G (x)去除 工PQ),求得余数为r-1阶的二进制多项式 R (x)。R (x)即为所求的CR诙验码多项式。 最后用工以模2的方法减去R (x),则对应的二进制序列就是包含了CRCK验码的待发送字符串,也就是编码后的数据。甯W小器一砍x) = G Q(x) = T(x)式中:Q(x)是商多项式;R(x)是余数

5、多项式;T(x)是编码后的数据。2、CRC_16并行算法原理在利用CRC_16$行编码电路对输入进行编码时,它的输入数据是串行输入的,因此数据传输效率低,它的运算速度的提高完全依赖于系统时钟频率的提高,不能满足现在的低功耗下的数据快速传输, 如果将数据进行并行处理,就可以在较低的时钟频率下快速的处理数据,因此,本次设计采用并行的CRC_16最常见的CRC校验码电路采用的是线性反馈寄存器LFSR实现,对于CRC_16其生成多项式为七/+1,所以对应的系数016为:1010000000000011,由此可以得到CRC_16编码电路结构图,如图所示。从图中可以看出,各位移位寄存器当前存储的数据为CR

6、C余数彳1, 16个D触发器输出从右至左依次为DE D14.DO。输入的信息码元为I。令TDODlD15 .表示编码以为寄存器当前所处的状态,i=|0 11.17 表示第1至第8个时钟的信息码元输入,向量D气DO15T表示编码器的下一个状态,D(8)表示第8个时钟周期后 CRC码器中移位寄存器所处的状态,则设计 8bit并行的CRC 逻辑编码器就是找出函数关系盛产也,D。第1个时钟周期后的编码寄存器状态为:D= DO D1 D15TDI D151;D01-D15+I0Dr=DOD2*=DI5+DH1OD3'-D2D14-DBD15-D15+D14+1O可以将以上表达式组成矩阵乘法,有:

7、D*-T-rHS*ro其中,10100100S=l 01 00 0 0 0000000 01T第2个时钟周期后的编码寄存器状态为:D(2)=T D'+SJl-TCTD+S lOy+S-H=T1 I>T*SJ0+S II以此类推则有:D(8) = V /5 +尸 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_Ln4®cr

8、c_inf3fficrc_in2®crc infl®crc infO®crc_rcg 15J® crc_reg14®crc_reg13® crc_reg( 12 jSure regl 1crc_reg10®crc_rTeg9 ® crc_reg8Jcrc_reg8l = crc in6®crc in5®crc .m4®crc_ia(3®crc in2J ffi crc inflScrc_jjjOecrc_rcgl 5 © m_regl 4 ® crc_re

9、g13® crc regl 2©crc regll lffi erv reg 10 crc_rcg9crc_reg82 j = crujnp © crc in6 ® crc rcg9S crc_«g网crc_reg8(3 = crc in6ecrc_in5©crc_mg口0©crc_rcg9crc rcg8f4 - crc_in5® crc_in4 ©crc rcgf 11 e crc reg 10crc_reg85 = crcjn4ecrc_in3 © crc_rcg12 ® crc

10、regll crc_reg861 - crc. in3® cn:Jn2® crc_regl3由crc regl21 crc_reg87二 crc_in2) ® crc_in 1 ® crc_reg14 crc_reg3Bjr曜阴第=crcJnfnecrcJnfO crc_reg(l5J S cB_regl 4 © crc_rcgOJcrc_reg89 = crc_ in0 © crc_reg15® crc_reg cnc_rcg814:IO = crc_rtg6;2crcneg815 = crcJn7 © crc

11、in6 crcjn5« crcJn4由crc _in3J © crcjn2 ® crcjnl ® crc inO|6cm_ggl 5®crc_reg14 © crc rcg13|出 crc_reg12®crcregl I® crc_rcg JO|® crcreg9e crc_regR® crc reg7 reg 1:0 state;3、CRC_16并行仿真输出波形如图所示是CRC_1乘行编码电路测试程序的仿真结果,输入信号时crc_in ,没有完全输入编码器是,输入信号crc_in作为crc_o

12、ut端口输出数据;当d_finish 信号为高电平指 示数据输入完成时,将线性移位寄存器crc_reg中的校验位并行 8位输出到crc_out端口。由图可以看出输入信号与输出存在一个时钟周期的延时。、CRC1琳行算法的Verilog HDL程序设计1、CRC_16校验码的并行编码程序module CRC_16(clk,rst,load,d_finish,crc_in,crc_out);input clk,rst;input load;input d_finish;input 7:0 crc_in; / output 7:0 crc_out; / reg 7:0 crc_out; / reg 1

13、5:0 crc_reg; / reg 1:0 count;/开始编码信号编码结束信号编码器并行8bit数据输入编码器并行8bit数据输出数据输出寄存器编码器移位寄存器wire 15:0 next_crc_reg; /移位寄存器输入变量parameter idle = 2'b00;parameter compute = 2'b01;parameter finish = 2'b10;/寄存器输出和寄存器初始状态以及输入码字组合逻辑关系assign next_crc_reg0 = (Acrc_in7:0) A (Acrc_reg15:8);assign next_crc_re

14、g1 = (Acrc_in6:0) a (Acrc_reg15:9);assign next_crc_reg2 = crc_in7 a crc_in6 a crc_reg9 a crc_reg8;assignnext_crc_reg3=crc_in6a crc_in5a crc_reg10a crc_reg9;assignnext_crc_reg4=crc_in5a crc_in4a crc_reg11a crc_reg10;assignnext_crc_reg5=crc_in4a crc_in3a crc_reg12a crc_reg11;assignnext_crc_reg6=crc_in

15、3a crc_in2a crc_reg13a crc_reg12;assignnext_crc_reg7=crc_in2a crc_in1a crc_reg14a crc_reg13;assignnext_crc_reg8=crc_in1a crc_in0a crc_reg15a crc_reg14crc_reg0;assign next_crc_reg9 = crc_in0 a crc_reg15 a crc_reg1;assign next_crc_reg14:10 = crc_reg6:2;assign next_crc_reg15 = (Acrc_in7:0) a (Acrc_reg1

16、5:7);always (posedge clk or negedge rst) beginif(!rst) beginstate <= idle;count <= 2'b00;endelse begincase(state)idle : beginif(load)state <= compute;elsestate <= idle;endcompute : beginif(d_finish)state <= finish;elsestate <= compute;endfinish : beginif(count = 2) beginstate &

17、lt;= idle;endelse begincount <= count + 1;state <= finish;endendendcaseendendalways (posedge clk or negedge rst) beginif(!rst) begincrc_reg15:0 <= 16'b0000_0000_0000_0000;endelse begincase(state)idle : begin /寄存器装初值状态crc_reg15:0 <= 16'b0000_0000_0000_0000;endcompute : begin /编码计算

18、状态crc_reg15:0 <= next_crc_reg15:0;crc_out7:0 <= crc_in7:0;endfinish : begin /编码结束状态crc_reg15:0 <= crc_reg7:0,8'b0000_0000;crc_out7:0 <= crc_reg15:8;endendcaseendendEndmodule2、CRC_16仿真测试文件程序module CRC_16_test;reg clk;reg rst;reg load;reg d_finish;reg 7:0 crc_in;wire 7:0 crc_out;parame

19、ter clk_period = 40;initial begin# clk_period clk = 1;# clk_period rst = 0;# clk_period rst = 1;#clk_period crc_in7:0 = 8'b1010_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;endalways #(clk_period/2) c

20、lk = clk;输入待编码数据always #(clk_period) crc_in7:0 = crc_in7:0; /CRC_16 u1(.clk(clk),.rst(rst), .load(load), .d_finish(d_finish), .crc_in(crc_in), .crc_out(crc_out);Endmodule三、扰码/解扰码器并行算法原理1、扰码/解扰码器并行算法原理在数字通信系统中, 若经常出现长的“0”或“1”系列,将会影响位同步的建立和保持。 为了解决这个问题以及限制电路中存在的不同程度的非线性特性对其他电路通信造成的串扰,要求数字信号的最小周期足够长。将数

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

22、DH(同步数字体系)使用的扰码生成多项式:X7 + X6 + 1设扰码的输入数字序列为tk ,输出为&解码器的输入为输出为rk扰码器的输入和输出序列关系为:解扰码器的输入和输出序列关系为:lk= Sk6 X6 X?=% 4 XQX6. X7=tb2、并行加扰器设计在高速的数据传输过程中,为了满足数据高速处理的需要, 一般扰码器和解码器通常采 用并行的方式来实现。并行扰码的原理基于特征多项式X7 + X6+ 1,加扰器电路结构如图所示。假设每个触发器的输出端分别是即怎公莅' *、4假设改为最低位触发器的输入,那么每个触发器的关系如下""1=% = 1,2,3,

23、7令i=7以及i=6代入上式可得:对于上述的几个关系式可以用矩阵乘法来表示X,对于8位并行扰码, 式中令需要知道(0 0 0 0 0 0 0 010 0 0 0)00 0 0 10 0 0 0 0 0 0 0 0 0 0 000000010九X.X, / XN+$时刻输出相对于N时刻的关系,在上经过计算可得:000000 00 00 00 0I 1yn-d J>l0 0 1100 0 0 0 1+"d=QL .5上述式子就是并行扰码的理论基础。根据上述式子,假设并行 8位输入数据为scram_in7:0,扰码器的并行8位输出数据 为scram_out7:0 , shift_re

24、g6:0 ,是加扰器的移位寄存器的初始状态加扰器复位后初 始状态一般为shift_reg6:0=7b' 111_1111 ,则可以得并行8位数据输入后加扰器输出数据和加扰器输入数据以及移位寄存器初始状态的关系式:scram _=shift_ rcg6 shift _/空5 scram _ w7scram = shift reg5|® shift _®scramscram _ uut5 = shift _ reg4 ® ihifi 尸空3 ® scram _ in5scram out4三 sh诉 _ d划3 ® hift _ yg2 &#

25、174; scram _ 面14scram out3 = shift _reg2 ® shtfl _,空口 scram _ M3scram out2 = shift rfgfl ® shift _© xcram _ in2scram_outl = shift reg6®shift_reg5shift_,第0©jcram _?n7 ® scram _mlscram _ out0 = shyi _ reg6 shift _ reg4 ffi scram _in7 &scram 6 ©.scram 加03、并行解扰器设计并

26、行加扰器电路设计原理和并行加电路设计原理一样,如图所示为解扰码器的电路图:10解扰器电路结构假设 解扰器 电路 输入时descram_in7:0,解 码电路 输出是 descram_out7:0,移位寄存器是shift_ren7:0,可以根据并行扰码的推导 方法导出多单扰器输出和解扰器输入以及移位寄存器初始状态的逻辑关系式:descram OHf7 = shift _ rg(6 S shift reg5J © descram _in 7 descrum = shift _ r«gt5J ® shift _ reg4 © descram _in6 desc

27、ram out5 htft _4 G shift _ re3 ® descrant 词5 I descram ou/4 = shift _ reg3* shift 2 ® descram _ 加4 descram _ouz|3 = Mft _ rcg2 © shift _ reg ffi devcram _ 词3 deseram oui2 - hifi _诉 reg0® descram _in2descram_out = shtfl _ eg0 ® descram _irr:7 © descram _M1 dcscram= descr

28、am 由/7 ® descram 加6 ® descram _词04、仿真输出波形Mt55age$*帕allelf r部舔代k0irUtQTLl-JTm-LTLTLrLTLrLTLTLr_r_|iZjJ彘1_50部拿戈上式¥11D-J |parallel_scrafftje5t/5cm_ln15俄 b3 in| 105 J06 J加加朋加比在耻加的IL0 ;til 112 li:T14115D-J ftarallel_KramJedt/5cram_odte6ff bo 注|欣以J履脱屈Ba Hl8 116加加诲;hr n你E3-J ftjarallel_KramJ

29、estAjZ/desaamjn法if m &-1 IDs 121£2就饶加尔帏116 173加由:hf n甥 Ia8 fe6帕r部LsaamJ舔烛汨部/世14开求在|斛小5 M6昨疑am1m耻同肌就110 11 112In加h|阿兆l_sa苛i/核制/州上国e6针加10:Hoe 121£2如胡至忘h 116 F加场bf It 甥丽江K0-J帕r眦Lsaamjte川迎的胆与281蛇foe切心就加於1勺加屉现世括0叫帆班眄-如图所示是并行加扰/解扰器的仿真输出波形,从图中可以看出测试文件输入初始为 00000001的8位数据,每来一个时钟该数据加 1,该数据经过加扰器并

30、行扰码后将数据送给 并行解码器解扰,加扰器的输出作为解扰器的输入,由图中可以看出,连0和连1的个数最多8个,同时加扰器输入数据与解扰器输出数据相同,只差一个时钟周期的运算延时。四、扰码/解扰码器并行算法的Verilog HDL 程序设计1、扰码器的程序module parallel_scrambler(clk, rst_n, scram_in, scram_out);为复位信号,低电平有效扰码数据输入扰码数据输出input clk,rst_n;rst_ninput 7:0 scram_in; / output 7:0 scram_out; /11reg 7:0 shift_reg; /反馈移位

31、寄存器/ 输出的反馈异或关系assign scram_out7:0 = shift_reg 7:0;always (posedge clk or negedge rst_n) beginif(!rst_n) /已将rst改为!rst(考虑到可综合性问题)shift_reg <= 8'b1111_1111; else begin /寄存器反馈异或关系shift_reg7:2 <= shift_reg6:1 A shift_reg5:0 A scram_in7:2; shift_reg1<= shift_reg0 a shift_reg6 a shift_reg5 a s

32、cram_in7a scram_in1; shift_reg0<= shift_reg6 a shift_reg4 a scram_in7 a scram_in6a scram_in0; end end Endmodule 2、解扰码器的程序 module parallel_decrambler(clk,rst_n,descram_in,descram_out); input clk,rst_n; /rst_n为复位信号,低电平有效input 7:0 descram_in; /扰码数据输入output 7:0 descram_out; /扰码数据输出reg 6:0 shift_reg; /反馈移位寄存器assign descram_out7:2 = shift_reg6:1 a shift_reg5:

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论