扰码解扰码器设计_第1页
扰码解扰码器设计_第2页
扰码解扰码器设计_第3页
扰码解扰码器设计_第4页
扰码解扰码器设计_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

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

文档简介

1、基于CPLD的扰码解扰码器设计本文从光纤传输系统的线路码型出发,介绍了扰码解扰码器的原理,m序列产生原理,着重介绍了基于CPLD的扰码解扰码器设计方案,给出了仿真波形和源程序。关键字:扰码 解扰码CPLD m序列在数字通信中,当数据信息连“0”码或者连1码过长将会影响接受端位定时信息的恢复质量,造成抽样判决时刻发生变化,对系统的误码率产生影响,甚至有可能接受全错的信息。采用有冗余的传输编码可以消除数据源一部分信息模式对系统性能的影响,但是要以增加传输符号速率为代价。在实际的应用中,常使用扰码器将数据源变成近似于白噪声的数据序列,以增加定时的同步信息,消除信息模式对系统误码的影响。在系统光发射机

2、的调制之前,需要附加一个扰码器,将原始的二进制码序列加以变换,使其接近于随机序列。相应的,在光接收端的判决之后,附加一个解扰码器,以恢复原始序列。扰码与解码可以由反馈移位寄存器和对应的前馈移位寄存器实现。 扰码器(包括自同步扰码器和外同步扰码器)实际上是一种伪随机序列信号发生器,它产生的信号序列能使“0”和“1”分布均匀,这一特点正是数字光纤通信的传输特性所要求的,因此它可以在数字光纤通信传输线路码型中发挥很好作用。常用的扰码器的实现可采用小m序列进行。扰码器是在发端使用移位寄存器产生m序列,然后将信息序列跟m序列做模二加,其输出即为加扰码的随即序列。解扰码是在接收机端使用相同的扰码序列与收到

3、的被扰信号模二加,将原信息得到恢复。本文设计的扰码和解扰码器采用FPGA实现。与传统的电路设计方法相比,PLD (Programmable Logic Device, PLD)具有功能强大、开发周期短、投资风险小、产品上市速度快、灵活性高、可反复编程修改、易于升级、保密性能好、开发工具智能化等特点。特别是FPGA(Field Programmable GateArray)以其集成度高,开发灵活,成本适中,可完成极其复杂的时序与组合逻辑电路功能,适应于高速、高密度的高端数字逻辑电路设计的优点,使其成为当今硬件设计的首选方式之一。图1为利用FPGA开发应用程序的流程图: 图1 FPGA开发流程图使

4、用CPLD可以轻松实现m序列信号发生器,对信息序列进行扰码和解扰码。本文采用Verilog HDL语言,利用ALTERA 公司的 Quartus II 7.1软件工具进行各功能模块的编程和仿真。图2为利用 FPGA实现扰码和解扰码器的框图。接收端同步信息提取 发射端发端m序列发生器信息序列解扰码输出扰码序列输出 本地m序列发生器 图2 FPGA实现扰码和解扰码器的框图如图所示,待发送的信息序列与发端产生的m序列进行模二加(扰码),扰码序列通过传输信道传送到接受端,接受端通过同步模块提取位定时信息,驱动本地m序列发生器产生与发端一样的m序列,然后再跟接受到的扰码序列进行模二加,恢复原来信息。m序

5、列具有类似于随机信号较好的自相关特性。m序列由线反馈移位寄存器加权产生,其原理图如图3所示。根据反馈系数的取值不同,电路可以产生出各种具有不同特性的数字序列。对于一定的移位寄存器级数r,存在一些特殊的Ci取值,使得输出序列的周期达到最长,即为。这样的序列被称为最长线性反馈移位寄存器序列,即m序列。采用Verilog HDL语言编程实现。 图3 m序列产生原理图 作为测试用 ,本文设计了一个5级31位的m序列发生器,其输出的m伪随机序列作为待扰码的信息序列;设计了一个级数可调的m序列发生器作为扰码序列,通过外部拨码开关选择级数,以满足不同系统对稳定性的要求。采用Quartus II 7.1软件工

6、具实现的顶层文件如图4所示。 图4 扰码和解扰码器顶层文件 其中NRZ_in为信息输入,yaoma_out为扰码后序列输出,yaoma_in为解码器输入,jishu3.0为m序列发生器级数选择(415级),NRZ_out为内部产生的用于测试数据用的m序列,out_dat为解码后输出,mmm为扰码m序列输出。仿真图如图5所示。 图5 系统仿真图将程序下载到EPM3256A CPLD上运行,得到了很好的效果。本设计的扰码解扰码器在CPLD上实现,简单灵活,适用性强并且可以随意定制,具有很大的应用价值。参考文献1 齐洪喜,陆颖.VHDL电路设计实用教程.北京:清华大学出版社,20042 王兴亮. 数

7、字通信原理与计数 .西安电子科技大学出版社. 2003附录1. 顶层文件源程序:module top( clk_in, /时钟输入,若频率高可调用下面ALWAYS进行分频,修改CNT参数即可 NRZ_out, /系统内部产生的NRZ码输出 NRZ_in, /NRZ码输入 yaoma_out, /编码后扰码输出 yaoma_in, /解码时扰码输入 out_dat, /解码后数据输出 jishu, /M序列级数选择8-4-2-1,总共有154级 RST, /复位输入 mmm); /扰码用的M序列输出input clk_in;input RST;input NRZ_in;input 3:0 jis

8、hu;input yaoma_in; output NRZ_out;output yaoma_out;output out_dat;output mmm;reg clk_33; /分频后时钟wire m; /中间变量,接受M序列产生的M序列reg 7:0 cnt; /分频计数assign mmm= m; /扰码用的M序列输出assign yaoma_out = NRZ_in m; /NRZ码与M序列异或,进行扰码assign out_dat = yaoma_in m; /扰码输入与M序列异或,进行解码nrz u0 (.clk(clk_in), /数据输入时钟 .outdata(NRZ_out)

9、, /输出数据 .rst(RST), /启动信号 );mm u1 (.clk(clk_in),/数据输入时钟 .outdata(m),/输出数据 .rst(RST),/启动信号 .jishu(jishu), /级数选择 );always(posedge clk_in)beginif(!RST) cnt=8h0;else begin cnt = cnt+1; if(cnt=33) begin cnt = 8h0; clk_33 = clk_33; end endendendmodule2. m序列发生器,级数可选。module mm(clk,/数据输入时钟 outdata,/输出数据 rst,/

10、启动信号 jishu, /级数选择 ); inputclk; inputrst; input 3:0 jishu; outputoutdata;/输出信号reg15:0shift_buf;/M序列产生的N位移位寄存器 assignoutdata=shift_buf0; /M序列输出always(posedge clk)beginif(!rst)shift_buf=16b11000;/15位初始为1000 else begin case(jishu) 15: /15级 begin shift_buf14 =shift_buf0shift_buf14; shift_buf0 =shift_buf1

11、; shift_buf1 =shift_buf2; shift_buf2 =shift_buf3; shift_buf3 =shift_buf4; shift_buf4 =shift_buf5; shift_buf5 =shift_buf6; shift_buf6 =shift_buf7; shift_buf7 =shift_buf8; shift_buf8 =shift_buf9; shift_buf9 =shift_buf10; shift_buf10 =shift_buf11; shift_buf11 =shift_buf12; shift_buf12 =shift_buf13; shi

12、ft_buf13 =shift_buf14; end 14: /14级 begin shift_buf13 =shift_buf0shift_buf13; shift_buf0 =shift_buf1; shift_buf1 =shift_buf2; shift_buf2 =shift_buf3; shift_buf3 =shift_buf4; shift_buf4 =shift_buf5; shift_buf5 =shift_buf6; shift_buf6 =shift_buf7; shift_buf7 =shift_buf8; shift_buf8 =shift_buf9; shift_

13、buf9 =shift_buf10; shift_buf10 =shift_buf11; shift_buf11 =shift_buf12; shift_buf12 =shift_buf13; end 13: /13级 begin shift_buf12 =shift_buf0shift_buf12; shift_buf0 =shift_buf1; shift_buf1 =shift_buf2; shift_buf2 =shift_buf3; shift_buf3 =shift_buf4; shift_buf4 =shift_buf5; shift_buf5 =shift_buf6; shif

14、t_buf6 =shift_buf7; shift_buf7 =shift_buf8; shift_buf8 =shift_buf9; shift_buf9 =shift_buf10; shift_buf10 =shift_buf11; shift_buf11 =shift_buf12; end 12: /12级 begin shift_buf11 =shift_buf0shift_buf11; shift_buf0 =shift_buf1; shift_buf1 =shift_buf2; shift_buf2 =shift_buf3; shift_buf3 =shift_buf4; shif

15、t_buf4 =shift_buf5; shift_buf5 =shift_buf6; shift_buf6 =shift_buf7; shift_buf7 =shift_buf8; shift_buf8 =shift_buf9; shift_buf9 =shift_buf10; shift_buf10 =shift_buf11; end 11: /11级 begin shift_buf10 =shift_buf0shift_buf10; shift_buf0 =shift_buf1; shift_buf1 =shift_buf2; shift_buf2 =shift_buf3; shift_

16、buf3 =shift_buf4; shift_buf4 =shift_buf5; shift_buf5 =shift_buf6; shift_buf6 =shift_buf7; shift_buf7 =shift_buf8; shift_buf8 =shift_buf9; shift_buf9 =shift_buf10; end 10: begin shift_buf9 =shift_buf0shift_buf9; shift_buf0 =shift_buf1; shift_buf1 =shift_buf2; shift_buf2 =shift_buf3; shift_buf3 =shift

17、_buf4; shift_buf4 =shift_buf5; shift_buf5 =shift_buf6; shift_buf6 =shift_buf7; shift_buf7 =shift_buf8; shift_buf8 =shift_buf9; end 9: begin shift_buf8 =shift_buf0shift_buf8; shift_buf0 =shift_buf1; shift_buf1 =shift_buf2; shift_buf2 =shift_buf3; shift_buf3 =shift_buf4; shift_buf4 =shift_buf5; shift_

18、buf5 =shift_buf6; shift_buf6 =shift_buf7; shift_buf7 =shift_buf8; end 8: begin shift_buf7 =shift_buf0shift_buf7; shift_buf0 =shift_buf1; shift_buf1 =shift_buf2; shift_buf2 =shift_buf3; shift_buf3 =shift_buf4; shift_buf4 =shift_buf5; shift_buf5 =shift_buf6; shift_buf6 =shift_buf7; end 7: begin shift_buf6 =shift_buf0shift_buf6

温馨提示

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

评论

0/150

提交评论