基于FPGA的交织器-深圳大学-通信系统中串行数据交织器的设计

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

深圳大学实验报告课程名称:硬件描述语言与逻辑综合实验项目名称:通信系统中串行数据交织器的设计学院:电子科学与技术学院专业:电子科学与技术指导教师:刘春平报告人学号:班级:电子(2)班实验时间:实验报告提交时间:一、实验原理交织器是通信编码中抗突发干扰的一种重要手段,将突发干扰产生的分布集中的误码分散到信息数据中,以便采用纠错编码的方法进行纠错。本项目要求设计一个行列交织器,如图所示,PN码发生器模拟数据源产生串行数据,按行写入一m行n列的RAM中,写满后按列读出。为避免数据丢失,需使用两个这样的RAM交替读写。即一个读时,另一个写。一个写时,另一个读,这样交替循环。因此,会产生一个周期的延时。这里统一要求m和n都选4.二、源程序modulejiaozhiqi(out,waveout,clk);//输出未交织的out和交织后的waveout,输入50Mclk时钟outputout,waveout;inputclk;reg[0:0]out;reg[0:0]waveout;regA0,A1,A2,A3;regmem_A[3:0][3:0];//4*4的二维寄存器型数组mem_Aregmem_B[3:0][3:0];//4*4的二维寄存器型数组mem_Bintegeri,j;regclock,flag;reg[31:0]count;initial//初始化各变量begini=0;j=0;A0=1;A1=0;A2=0;A3=1;flag=0;count=0;clock=0;end//将clk分频,产生交织器所需的频率clockalways@(posedgeclk)beginif(count==1)begincount=0;clock=~clock;endelsecount=count+1;endalways@(posedgeclock)//伪随机码发生器beginA0=A0^A3;A1=A0;A2=A1;A3=A2;endalways@(posedgeclock)//对mem_A或mem_B中的数据进行交织beginj=j+1;if(j3)//利用i和j控制mem_A和mem_B按行输入,按列输出beginj=0;i=i+1;endif(i3)begini=0;flag=~flag;//每输入完16个数据,标志位发生一次变化。标志位用于控制mem_A写mem_B读,还是mem_B写mem_A读endif(flag==0)//这个周期实现mem_A按行写,mem_B按列读beginmem_A[i][j]=A3;//mem_A按行写out=mem_B[i][j];//mem_B按行读,即mem_B交织前的数据waveout=mem_B[j][i];//mem_B按列读,即mem_B交织后的数据endelse//这个周期实现mem_B按行写,mem_A按列读beginmem_B[i][j]=A3;//mem_B按行写out=mem_A[i][j];//mem_A按行读,即mem_A交织前的数据waveout=mem_A[j][i];//mem_A按列读,即mem_A交织后的数据endendendmodule三、实验结果与分析刚刚开始仿真时的第一个周期,由于flag=0,所以mem_A按行写,mem_B按列读,由于mem_B之前还未写入过数据,所以out(交织前)和waveout(交织后)输出均为0.第二个周期,flag=1,输出的为前一周期写入mem_A的数据,输出的out(未交织)为0000111101011001,即0000111101011001而输出的waveout(交织后)为0101011001000111,即0101011001000111可见,交织成功。第三个周期,flag=0,输出的为前一周期写入mem_B的数据,输出的out(未交织)为0001111010110010,即0001111010110010而输出的waveout(交织后)为0110010001111010,即0110010001111010可见,交织成功。一直这样循环下去,可见,源程序仿真通过。四、实验演示clk分配50MHz,out分配到GPIO0,waveout分配到GPIO1,然后用示波器双踪观察out与waveout,观察是否交织成功。实验结果:要在示波器中找到某一周期的起点不容易,但由于用的是伪随机码,有一定的规律。如上图,利用仿真器输出的波形,成功在示波器找出了某一周期起点的位置。由图可见仿真和示波器的out输出均为01011001000111101011001000111101······即01011011100100100001001111101101交织后的waveout为01011001000111101001000111101011,即01011001100100010001111011101011交织成功。可见,本次试验是成功的。五、心得体会通过本次实验,我掌握了串行数据交织器的原理,学会了串行数据交织器的设计。由于刚开始时不太懂,参考了一下网上的程序,结果老师说大家的版本都差不多,怀疑我是抄的。其实也算不上是抄,只是参考。本来我想自己写的,但见别人写得那么好了,我已经无法超越了,就把别人的改了改就拿来用了,其实网上那个版本也是有点问题的,我发现了四句是多余的,原来那个人也是未完全弄懂的啊!因此,我写了这个用二维数组来控制的,发现其实用二维数组来控制其实更加简单,程序更加简洁,可移植性也大大增强。只要肯努力,相信自己可以做得更加好!其实,velilog这东西基础真的很重要,基础不好真的很容易出错,出了错自己本人一般是很难看出来的。

1 / 7
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功