发射机编程举例1

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

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

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

资源描述

发射机编程举例1训练序列的生成扰码模块的实现卷积编码1.训练序列的生成训练序列的生成方法:设计中直接将训练序列的时域样值存在片内存储器中,发送时只需按规定的时序读出即可。STS:ShortTrainingSymbol1.训练序列的生成STSGenerator硬件架构1.训练序列的生成moduleSHORT_generator(RESET,FFT_CLK,SHORT_ACK,SHORT_RE,SHORT_IM,SHORT_INDEX,SHORT_DV);inputRESET;inputFFT_CLK;inputSHORT_ACK;output[7:0]SHORT_RE;output[7:0]SHORT_IM;output[7:0]SHORT_INDEX;outputSHORT_DV;1.训练序列的生成reg[7:0]SHORT_RE;reg[7:0]SHORT_IM;reg[7:0]SHORT_INDEX;regSHORT_DV;reg[3:0]i;reg[3:0]j;reg[7:0]shortrom_re[15:8];reg[7:0]shortrom_im[7:0];1.训练序列的生成always@(negedgeRESETorposedgeFFT_CLK)//对存储器赋值if(!RESET)begini=0;j=0;SHORT_RE=0;SHORT_IM=0;SHORT_INDEX=0;SHORT_DV=0;1.训练序列的生成shortrom_re[0]=8'b00001100;shortrom_re[1]=8'b11011110;shortrom_re[2]=8'b11111101;shortrom_re[3]=8'b00100100;shortrom_re[4]=8'b00011000;shortrom_re[5]=8'b00100100;shortrom_re[6]=8'b11111101;shortrom_re[7]=8'b11011110;shortrom_re[8]=8'b00001100;1.训练序列的生成shortrom_re[9]=8'b00000001;shortrom_re[10]=8'b11101100;shortrom_re[11]=8'b11111101;shortrom_re[12]=8'b00000000;shortrom_re[13]=8'b11111101;shortrom_re[14]=8'b11101100;shortrom_re[15]=8'b00000001;1.训练序列的生成shortrom_im[0]=8'b00001100;shortrom_im[1]=8'b00000001;shortrom_im[2]=8'b11101100;shortrom_im[3]=8'b11111101;shortrom_im[4]=8'b00000000;shortrom_im[5]=8'b11111101;shortrom_im[6]=8'b11101100;shortrom_im[7]=8'b00000001;1.训练序列的生成shortrom_im[8]=8'b00001100;shortrom_im[9]=8'b11011110;shortrom_im[10]=8'b11111101;shortrom_im[11]=8'b00100100;shortrom_im[12]=8'b00011000;shortrom_im[13]=8'b00100100;shortrom_im[14]=8'b11111101;shortrom_im[15]=8'b11011110;end1.训练序列的生成elsebegin//重复10个周期读取存储16个数据短序列ROMif(SHORT_ACK)//当收到控制模块发出的SHORT_ACK信号时开始进行处理if(i=9)//i为输出重复计数,短训练序列共循环10次输出if(j15)//j为短训练序列ROM存储地址,为0至15共16个数据beginSHORT_RE=shortrom_re[j];SHORT_IM=shortrom_im[j];SHORT_DV=1;//与输出同步拉高的,表示输出有效1.训练序列的生成if(i==0&j==0)//第一个数据输出时考虑加窗处理,需除以2,因此通过右移一位实现beginSHORT_RE=SHORT_RE1;SHORT_IM=SHORT_IM1;endj=j+1;SHORT_INDEX=SHORT_INDEX+1;//输出短序列标号,与数据同时输出并计数end1.训练序列的生成elsebeginSHORT_RE=shortrom_re[j];SHORT_IM=shortrom_im[j];SHORT_INDEX=SHORT_INDEX+1;SHORT_DV=1;j=0;i=i+1;end1.训练序列的生成else//i=10,j=15时,即最后一个输出数据,进行加窗处理begini=0;SHORT_RE=shortrom_re[j]1;SHORT_IM=shortrom_im[j]1;SHORT_INDEX=SHORT_INDEX+1;end1.训练序列的生成elsebegini=0;j=0;SHORT_RE=0;SHORT_IM=0;SHORT_INDEX=0;SHORT_DV=0;endendendmodule2.扰码模块的实现数字通信中,若经常出现长的“0”或“1”序列,将会影响位同步的建立和保持。在发射机中使用扰码,可以避免这种数据对于接收机定时的不利影响。同时,为了限制电路中存在的不同程度的非线性特性对其它电路通信造成的串扰,要求数字信号的最小周期足够长。所谓加扰,就是不用增加冗余而搅乱信号,改变数字信号统计特性。这种技术的基础是建立在反馈移位寄存器序列(或伪随机序列)理论上的。2.扰码模块的实现采用加扰技术的通信系统组成原理是在发送端用加扰器来改变原始数字信号的统计特性,而在接收端用解扰器恢复出原始数字信号。在OFDM系统Data域数据的处理中,首先需要进行加扰操作。整个Data域数据使用一个长度为127的帧同步扰码器加扰。8位的PSDU数据帧转换成串行比特流,其中LSB在前,MSB在后。帧同步扰码器使用下列生成多项式:S(x)=x7+x4+12.扰码模块的实现移位寄存器除了具有寄存器的功能外,还有移位功能。即所存储的代码在时钟信号的作用下可实现左移或右移。主要用于数据的串-并行转换,数据运算(乘、除等)。扰码器能最有效地将输入序列搅乱,使输出数字码元之间相关性最小。2.扰码模块的实现2.扰码模块的实现2.扰码模块的实现moduleDATA_scramble(SCRAM_SEED,SCRAM_CLK,SCRAM_DIN,SCRAM_LOAD,SCRAM_ND,SCRAM_RST,SCRAM_DOUT,SCRAM_RDY);input[7:1]SCRAM_SEED;//扰码器初始设置信号,本程序采用7‘b1011101inputSCRAM_CLK;//时钟信号inputSCRAM_DIN;//扰码器输入信号,已经将并行数据变成串行数据inputSCRAM_LOAD;//扰码器初始设置信号,由MCU单元控制inputSCRAM_ND;//扰码器输入有效,与输入信号同步拉高inputSCRAM_RST;//复位信号outputSCRAM_DOUT;//扰码器输出信号outputSCRAM_RDY;//扰码器输出有效信号,与输出信号同步拉高reg[7:1]SCRAMBLER;//扰码器,一个7位的移位寄存器regSCRAM_DOUT;//扰码器输出信号定义成寄存器类型regSCRAM_RDY;//扰码器输出有效信号定义成寄存器类型2.扰码模块的实现always@(negedgeSCRAM_RSTorposedgeSCRAM_CLK)//加扰过程beginif(!SCRAM_RST)//复位信号低电平有效beginSCRAM_DOUT=0;SCRAM_RDY=0;SCRAMBLER=0;end2.扰码模块的实现elsebeginif(SCRAM_LOAD)//扰码器初始设置信号,高电平有效SCRAMBLER=SCRAM_SEED;//扰码器加载初始设置信号elsebeginif(SCRAM_ND)//扰码器输入有效beginSCRAM_DOUT=SCRAM_DIN+SCRAMBLER[7]+SCRAMBLER[4];//根据生成多项式S(X)=x^7+x^4+1写出扰码器输出信号的表达式SCRAM_RDY=1;//扰码器输出有效SCRAMBLER={SCRAMBLER[6:1],SCRAMBLER[7]+SCRAMBLER[4]};//移位寄存器的输入信号end2.扰码模块的实现elsebegin//扰码器输入无效SCRAM_DOUT=0;//扰码器输出信号为零SCRAM_RDY=0;//扰码器输出有效为低电平endendendendendmodule3.卷积编码卷积码也是分组的,但它的监督码元不仅与本组的信息元有关,而且还与前若干组的信息元有关。这种码的纠错能力强,不仅可以纠正随机误差,而且可纠正突发错差。卷积码根据需要,有不同的结构及相应的纠错能力,但其编码规律都是相同的。编码器由移位寄存器和加法器组成。约束长度决定了移位寄存器数目。编码与约束长度有关,译码也与约束长度有关。码率为1/2的卷积码,它只有1位监督位,编码效率高,也比较简单。如果使用的约束长度较长,则即可以纠正突发差错,也可以纠正随机差错。3.卷积编码输出数据A的生成多项式:S(x)=x6+x5+x3+x2+1输出数据B的生成多项式:S(x)=x6+x3+x2+x1+1可以使用6个移位寄存器实现卷积编码。每输入1比特数据,将会依次输出A和B,输出的数据变为2比特,实现了1/2码率的卷积编码。3.卷积编码3.卷积编码moduleconv_encoder(clk,aclr,data_in,nd,data_out_v,rdy);inputaclr;inputclk;inputdata_in;inputnd;output[1:0]data_out_v;outputrdy;reg[6:1]shift_reg;reg[1:0]data_out_v;regrdy;3.卷积编码always@(negedgeaclrorposedgeclk)beginif(!aclr)beginshift_reg=6'b000000;data_out_v=0;rdy=0;end3.卷积编码elseif(nd)begindata_out_v[0]=shift_reg[6]+shift_reg[5]+shift_reg[3]+shift_reg[2]+data_in;data_out_v[1]=shift_reg[6]+shift_reg[3]+shift_reg[2]+shift_reg[1]+data_in;rdy=1;shift_reg={shift_reg[5:1],data_in};end3.卷积编码elserdy=0;endendmodule

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

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

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

×
保存成功