通信系统中串行数据交织器的设计_第1页
通信系统中串行数据交织器的设计_第2页
通信系统中串行数据交织器的设计_第3页
通信系统中串行数据交织器的设计_第4页
通信系统中串行数据交织器的设计_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

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

文档简介

1、1、 设计原理1、交织器原理交织器是通信编码中抗突发干扰的一种重要手段,将突发干扰产生的分布集中的误码分散到信息数据中,以便采用纠错编码的方法进行纠错。本项目设计一个行列交织器,其框架图图如图1所示,PN码发生器模拟数据源产生串行数据,按行写入一m行n列的RAM中,写满后按列读出。为避免数据丢失,需使用两个这样的RAM交替读写。这里统一m和n都选4,即两个44 RAM。图1 串行数据交织器整体框架图2、 程序设计原理本实验制作一个通信系统中的串行数据交织器,其设计原理图如图1所示。程序整体由三个子模块构成:100KHz分频模块,利用FPGA上50MHz的晶振分频得到,作为产生伪随机码和读写RA

2、M的时钟;伪随机码发生器模块,以16个数为一周期,模拟数据源产生串行数据;读写RAM模块,按行写入一4行4列的RAM中,写满后按列读出。为避免数据丢失,需使用两个这样的RAM交替读写,从而实现交织。电路图如图2所示:图2 电路原理图二、源程序代码/顶层模块module interleaver(endout,out,clk_50M);input clk_50M;output0:0 endout,out;wire clk;wire3:0 k;wire0:0 pn16;divider U1(clk,clk_50M);pn U2(clk,pn16);array U3(endout,out,clk,pn

3、16,k);endmodule/分频器 (50MHz-100KHz)module divider(clk,clk_50M);output clk;input clk_50M;reg clk;reg23:0 cnt;always (posedge clk_50M)beginif(cnt=249)begincnt<=0;clk<=clk;end elsecnt<=cnt+1; /计数endendmodule /pn16(伪随机码发生器,以16个数为一周期)module pn(clk,pn16);inputclk;output0:0pn16;regq0;regq1;regq2;re

4、gq3;wireset1;wireSYNTHESIZED_WIRE_0;wireSYNTHESIZED_WIRE_1;assignSYNTHESIZED_WIRE_1 = 0;always(posedge clk )beginif (!set1)beginq0 = 1;endelsebeginq0 = SYNTHESIZED_WIRE_0;endendalways(posedge clk)beginbeginq1 = q0;endendalways(posedge clk)beginbeginq2 = q1;endendalways(posedge clk)beginbeginq3 = q2;

5、endendassignSYNTHESIZED_WIRE_0 = q3 q2;assignset1 = q0 | q2 | q1 | q3 | SYNTHESIZED_WIRE_1;assignpn16 = q3;endmodule/array(使用两个数组,作为两个44RAM)module array(endout,out,clk,pn16,k);input clk;input0:0 pn16;output0:0 out,endout;output3:0 k;reg3:0 k,i;reg0:0 out,endout;reg array115:0;reg array215:0;reg1:0 j

6、,flag;initialbegini<=0;j<=0;k<=-1;flag<=0;endalways(posedge clk)beginif(k=15)begink<=0;endelsek<=k+1;if(i=15) /用循环产生44数组,即44 RAMbegini<=0;flag=flag;endelsei<=i+1;if(j=3)j<=0;elsej<=j+1;if(!flag)beginarray1i<=pn16; /伪随机码写入array1out<=array2i; /按行读出array2中的数据给out(未交织

7、)if(i<4) /按列读出array2中的数据给endout(交织后的) endout<=array20+4*j; else if(i<8)endout<=array21+4*j;else if(i<12)endout<=array22+4*j;elseendout<=array23+4*j;endelsebeginarray2i<=pn16; /伪随机码写入array2out<=array1i; /按行读出array1中的数据给out(未交织)if(i<4) /按列读出array1中的数据给endout(交织后的)endout&l

8、t;=array10+4*j;else if(i<8)endout<=array11+4*j;else if(i<12)endout<=array12+4*j;elseendout<=array13+4*j;endendendmodule三、仿真结果1、分屏器模块仿真结果如图3所示:图3 分屏器模块仿真结果2、伪随机码发生器模块仿真结果如图4所示:图4 伪随机码发生器模块仿真结果3、 最终仿真输出结果如图5、图6所示:图5 第一个周期图6 最终输出结果仿真结果分析:1、 如图5所示,在第一个循环周期,伪随机码写入array1,同时按行读出array2到out,按列

9、读出array2到endout,但由于此时array2里面的单元都为0,所以在第一个周期里,输出out(未交织)和endout(交织后)都为0。2、 如图6所示,结果为实现了交织功能。未交织的out输出为:0001 0011 0101 1110 0010 0110 1011 1100,即0 0 0 1 0 0 1 00 0 1 1 0 1 1 00 1 0 1 1 0 1 11 1 1 0 1 1 0 0交织后的endout输出为:01 0011 0101 1110 0011 0101 1110 0010 ,即0 0 0 1 0 0 1 10 0 1 1 0 1 0 10 1 0 1 1 1

10、1 01 1 1 0 0 0 1 0如此可见,endout实现了按列读出,即设计实现了交织功能。四、实验结果利用示波器观察交织前后的波形,如图7所示:图7 实验结果五、实验总结本实验内容为制作一个通信系统中串行数据交织器。由于对Verilog和Quartus II 软件、ModuleSim仿真软件的使用较熟悉,对用Verilog HDL语言来编写程序较熟练,因此在明白实验原理后,设计的实现就感觉较上一个实验简单。但是,此次实验也并不是如鱼得水的。实验过程中也遇到了一些小问题。起初,对此次交织器的原理不是很清楚,对其程序实现方案也不清晰。后来认真听了老师的解说,自己课后也在图书馆查阅了相关资料。经过自己的思考,最终明白了整个电路的原理。第二,刚开始搭建好电路进行观察时,示波器没有输出正确的波形。后面把DE2板和示波器表笔换了,波形就出来了,并且同时输出了交织前和交织后的波形,说明本次设计取得了成功。通过自己课下的努力和钻研,最终较快较好地成功完成了实验,

温馨提示

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

评论

0/150

提交评论