扰码解扰码器设计Word格式文档下载.docx

上传人:b****2 文档编号:14685895 上传时间:2022-10-23 格式:DOCX 页数:11 大小:51.32KB
下载 相关 举报
扰码解扰码器设计Word格式文档下载.docx_第1页
第1页 / 共11页
扰码解扰码器设计Word格式文档下载.docx_第2页
第2页 / 共11页
扰码解扰码器设计Word格式文档下载.docx_第3页
第3页 / 共11页
扰码解扰码器设计Word格式文档下载.docx_第4页
第4页 / 共11页
扰码解扰码器设计Word格式文档下载.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

扰码解扰码器设计Word格式文档下载.docx

《扰码解扰码器设计Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《扰码解扰码器设计Word格式文档下载.docx(11页珍藏版)》请在冰豆网上搜索。

扰码解扰码器设计Word格式文档下载.docx

常用的扰码器的实现可采用小m序列进行。

扰码器是在发端使用移位寄存器产生m序列,然后将信息序列跟m序列做模二加,其输出即为加扰码的随即序列。

解扰码是在接收机端使用相同的扰码序列与收到的被扰信号模二加,将原信息得到恢复。

本文设计的扰码和解扰码器采用FPGA实现。

与传统的电路设计方法相比,PLD(ProgrammableLogicDevice,PLD)具有功能强大、开发周期短、投资风险小、产品上市速度快、灵活性高、可反复编程修改、易于升级、保密性能好、开发工具智能化等特点。

特别是FPGA(FieldProgrammableGateArray)以其集成度高,开发灵活,成本适中,可完成极其复杂的时序与组合逻辑电路功能,适应于高速、高密度的高端数字逻辑电路设计的优点,使其成为当今硬件设计的首选方式之一。

图1为利用FPGA开发应用程序的流程图:

图1FPGA开发流程图使用CPLD可以轻松实现m序列信号发生器,对信息序列进行扰码和解扰码。

本文采用VerilogHDL语言,利用ALTERA公司的QuartusII7.1软件工具进行各功能模块的编程和仿真。

图2为利用FPGA实现扰码和解扰码器的框图。

接收端同步信息提取发射端发端m序列发生器信息序列解扰码输出扰码序列输出本地m序列发生器图2FPGA实现扰码和解扰码器的框图如图所示,待发送的信息序列与发端产生的m序列进行模二加(扰码),扰码序列通过传输信道传送到接受端,接受端通过同步模块提取位定时信息,驱动本地m序列发生器产生与发端一样的m序列,然后再跟接受到的扰码序列进行模二加,恢复原来信息。

m序列具有类似于随机信号较好的自相关特性。

m序列由线反馈移位寄存器加权产生,其原理图如图3所示。

根据反馈系数的取值不同,电路可以产生出各种具有不同特性的数字序列。

对于一定的移位寄存器级数r,存在一些特殊的Ci取值,使得输出序列的周期达到最长,即为。

这样的序列被称为最长线性反馈移位寄存器序列,即m序列。

采用VerilogHDL语言编程实现。

图3m序列产生原理图作为测试用,本文设计了一个5级31位的m序列发生器,其输出的m伪随机序列作为待扰码的信息序列;

设计了一个级数可调的m序列发生器作为扰码序列,通过外部拨码开关选择级数,以满足不同系统对稳定性的要求。

采用QuartusII7.1软件工具实现的顶层文件如图4所示。

图4扰码和解扰码器顶层文件其中NRZ_in为信息输入,yaoma_out为扰码后序列输出,yaoma_in为解码器输入,jishu3.0为m序列发生器级数选择(415级),NRZ_out为内部产生的用于测试数据用的m序列,out_dat为解码后输出,mmm为扰码m序列输出。

仿真图如图5所示。

图5系统仿真图将程序下载到EPM3256ACPLD上运行,得到了很好的效果。

本设计的扰码解扰码器在CPLD上实现,简单灵活,适用性强并且可以随意定制,具有很大的应用价值。

参考文献1齐洪喜,陆颖.VHDL电路设计实用教程.北京:

清华大学出版社,20042王兴亮.数字通信原理与计数.西安电子科技大学出版社.2003附录1.顶层文件源程序:

moduletop(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序列输出inputclk_in;

inputRST;

inputNRZ_in;

input3:

0jishu;

inputyaoma_in;

outputNRZ_out;

outputyaoma_out;

outputout_dat;

outputmmm;

regclk_33;

/分频后时钟wirem;

/中间变量,接受M序列产生的M序列reg7:

0cnt;

/分频计数assignmmm=m;

/扰码用的M序列输出assignyaoma_out=NRZ_inm;

/NRZ码与M序列异或,进行扰码assignout_dat=yaoma_inm;

/扰码输入与M序列异或,进行解码nrzu0(.clk(clk_in),/数据输入时钟.outdata(NRZ_out),/输出数据.rst(RST),/启动信号);

mmu1(.clk(clk_in),/数据输入时钟.outdata(m),/输出数据.rst(RST),/启动信号.jishu(jishu),/级数选择);

always(posedgeclk_in)beginif(!

RST)cnt=8h0;

elsebegincnt=cnt+1;

if(cnt=33)begincnt=8h0;

clk_33=clk_33;

endendendendmodule2.m序列发生器,级数可选。

modulemm(clk,/数据输入时钟outdata,/输出数据rst,/启动信号jishu,/级数选择);

inputclk;

inputrst;

outputoutdata;

/输出信号reg15:

0shift_buf;

/M序列产生的N位移位寄存器assignoutdata=shift_buf0;

/M序列输出always(posedgeclk)beginif(!

rst)shift_buf=16b1111111111111000;

/15位初始为111111*elsebegincase(jishu)15:

/15级beginshift_buf14=shift_buf0shift_buf14;

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_buf9=shift_buf10;

shift_buf10=shift_buf11;

shift_buf11=shift_buf12;

shift_buf12=shift_buf13;

shift_buf13=shift_buf14;

end14:

/14级beginshift_buf13=shift_buf0shift_buf13;

end13:

/13级beginshift_buf12=shift_buf0shift_buf12;

end12:

/12级beginshift_buf11=shift_buf0shift_buf11;

end11:

/11级beginshift_buf10=shift_buf0shift_buf10;

end10:

beginshift_buf9=shift_buf0shift_buf9;

end9:

beginshift_buf8=shift_buf0shift_buf8;

sh

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 艺术

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1