文档详情

通信系统中串行数据交织器的设计.doc

发布:2017-01-30约字共9页下载文档
文本预览下载声明
设计原理 1、交织器原理 交织器是通信编码中抗突发干扰的一种重要手段,将突发干扰产生的分布集中的误码分散到信息数据中,以便采用纠错编码的方法进行纠错。本项目设计一个行列交织器,其框架图图如图1所示,PN码发生器模拟数据源产生串行数据,按行写入一m行n列的RAM中,写满后按列读出。为避免数据丢失,需使用两个这样的RAM交替读写。这里统一m和n都选4,即两个4╳4 RAM。 图1 串行数据交织器整体框架图 程序设计原理 本实验制作一个通信系统中的串行数据交织器,其设计原理图如图1所示。程序整体由三个子模块构成:100KHz分频模块,利用FPGA上50MHz的晶振分频得到,作为产生伪随机码和读写RAM的时钟;伪随机码发生器模块,以16个数为一周期,模拟数据源产生串行数据;读写RAM模块,按行写入一4行4列的RAM中,写满后按列读出。为避免数据丢失,需使用两个这样的RAM交替读写,从而实现交织。电路图如图2所示: 图2 电路原理图 二、源程序代码 //顶层模块 module interleaver(endout,out,clk_50M); input clk_50M; output[0:0] endout,out; wire clk; wire[3:0] k; wire[0:0] pn16; divider U1(clk,clk_50M); pn U2(clk,pn16); array U3(endout,out,clk,pn16,k); endmodule //分频器 (50MHz--100KHz) module divider(clk,clk_50M); output clk; input clk_50M; reg clk; reg[23:0] cnt; always @(posedge clk_50M) begin if(cnt==249) begin cnt=0; clk=~clk; end else cnt=cnt+1; //计数 end endmodule //pn16(伪随机码发生器,以16个数为一周期) module pn(clk,pn16); input clk; output[0:0] pn16; reg q0; reg q1; reg q2; reg q3; wire set1; wire SYNTHESIZED_WIRE_0; wire SYNTHESIZED_WIRE_1; assign SYNTHESIZED_WIRE_1 = 0; always@(posedge clk ) begin if (!set1) begin q0 = 1; end else begin q0 = SYNTHESIZED_WIRE_0; end end always@(posedge clk) begin begin q1 = q0; end end always@(posedge clk) begin begin q2 = q1; end end always@(posedge clk) begin begin q3 = q2; end end assign SYNTHESIZED_WIRE_0 = q3 ^ q2; assign set1 = q0 | q2 | q1 | q3 | SYNTHESIZED_WIRE_1; assign pn16 = q3; endmodule //array(使用两个数组,作为两个4╳4RAM) module array(endout,out,clk,pn16,k); input clk; input[0:0] pn16; output[0:0] out,endout; output[3:0] k; reg[3:0] k,i; reg[0:0] out,endout; reg array1[15:0]; reg array2[15:0]; reg[1:0] j,flag; initial begin i=0; j=0; k=-1; flag=0; end always@(posedge clk) begin if(k==15) begin k=0; end else k=k+1; if(i==15) //用循环产生4╳4数组,即4╳4 RAM begin i=0; flag=~flag; end else i=i+1; if(j==3)
显示全部
相似文档