1目录一、概述........................................................................................................................21、扩频通信的概念及特点.................................................................................................22、总体框图及设计要求.....................................................................................................2二、模块设计及仿真.....................................................................................................31、时钟模块.........................................................................................................................32、发射模块.........................................................................................................................53、卷积模块.........................................................................................................................74、扩频模块.........................................................................................................................85、极性变换与内插模块...................................................................................................106、FIR低通滤波模块.........................................................................................................11三、总体设计调试及结果的Matlab验证.....................................................................12四、实验中遇到的问题及解决方案..............................................................................141、发射模块输出首位时延问题.......................................................................................142、卷积码并串转换后的输出问题...................................................................................153、扩频PN码与卷积输出码的对齐问题.........................................................................174、毛刺问题.......................................................................................................................172一、概述1、扩频通信的概念及特点扩展频谱通信系统(SpreadSpectrumCommunicationSystem)是指将待传输信息的频谱用某个特定的扩频函数扩展后成为宽频带信号,送入信道中传输,接收端再利用相应手段将其解扩,从而获取传输信息的通信系统。扩频信号是不可预测的伪随机的宽带信号;它的带宽远大于欲传输信息(数据)带宽;具有类似于噪声的随机特性等。直接序列扩频(DSSS)是扩频通信方式中的一种,实现简单,应用广泛。2、总体框图及设计要求本实验是基于FPGA的直接序列扩频发射机的设计与仿真。实验中以QuartusII7.2为设计和仿真工具,各模块采用VerilogHDL设计并封装,顶层使用图形设计方式,最后得到的仿真结果使用Matlab描点来绘制出波形。实验框图如图1-1所示,实验要求如下:①待发射信息采用循环读ROM的方式,ROM中存储固定的200bit信息。②卷积采用(2.1.7)码,卷积后速率翻倍(并串转换)。卷积编码生成多项式为)171,133(;编码效率2/1R;约束长度7K。③扩频码采用KASAMI码,生成多项式为)4(231nm;)8(4352nm;m1和m2的初相(,...,...011011aaaaaaaannnn):010110100101④内插0值,一个码片插7个0,速率变为16.32M。⑤成型滤波器采用16阶FIR低通滤波器对上述信息(250bits)卷积(输出:400bits,8Kbps,量化位数:1bit)扩频(扩频码自选,扩频长度N=255,输出Chip速率:2.04Mchips,量化位数:1bit)待发射信息(输出:4Kbps、200bits,量化位数:1bit)极性变换(0-+1,1--1)(输出:2.04Mbps,量化位数:3bit)基带成型滤波器-FIR(输出:16.32Mbps,量化位数:8bits?)内插(2.04M变到16.32M)图1-1系统方框图3二、模块设计及仿真根据实验框图,可将本实验设计分成六个模块:时钟模块,发射模块,卷积模块,扩频模块,极性变换与内插模块,FIR低通滤波模块。所有的模块都采用全局reset信号低脉冲清零方式,即当reset信号低电平有效,所有的计数器和输出全部清零,同时对部分寄存器置位。reset信号在仿真开始16.32m时钟周期的第一个周期内产生。设计时采用逐级联调的方式,每设计好一个模块就进行级联仿真。各模块的详细设计及仿真如下:1、时钟模块从实验框图可以看出,本实验总共需要用到16.32m、2.04m、8k和4k共四种频率的时钟信号,由于机器只提供16.32m时钟信号,所以需要分频输出另外三种频率信号。时钟模块采用了同步设计思想,即分频时钟全部都在机器提供的16.32m时钟基础上进行分频产生,这样可以尽量保证不同时钟频率间的同步,使其跳变沿尽量对齐,为后面的码片对齐和消除毛刺打好基础。时钟模块的Verilog语言描述如下://Descriptionofclockmoduleclock(clk16_32m,clk2_04m,clk8k,clk4k,reset);//时钟模块inputclk16_32m,reset;//输入为机器提供的16.32M时钟和全局清零信号resetoutputclk2_04m,clk8k,clk4k;//分频后输出2.04m,8k和4k的时钟信号regclk2_04m,clk8k,clk4k;reg[1:0]count1;//2.04m分频时钟计数器reg[9:0]count2;//8k分频时钟计数器reg[10:0]count3;//4k分频时钟计数器always@(negedgeclk16_32mornegedgereset)//产生2.04M时钟beginif(reset==0)//reset全局清零信号,低电平有效begincount1=0;clk2_04m=0;endelsecase(count1)3'd3:begincount1=0;clk2_04m=~clk2_04m;enddefault:count1=count1+1;endcaseendalways@(negedgeclk16_32mornegedgereset)//产生8k时钟begin4if(reset==0)//reset全局清零信号,低电平有效begincount2=0;clk8k=0;endelsecase(count2)11'd1019:begincount2=0;clk8k=~clk8k;enddefault:count2=count2+1;endcaseendalways@(negedgeclk16_32mornegedgereset)//产生4k时钟beginif(reset==0)//reset全局清零信号,低电平有效begincount3=0;clk4k=1;//4k时钟初始化输出为高电平,//可以使rom模块输出无时延,详见后述endelsecase(count3)12'd2039:begincount3=0;clk4k=~clk4k;default:count3=count3+1;endcaseendendmodule时钟模块的时序仿真图如图1-1所示,其中输出4k时钟第一个周期的波形仿真如图1-2所示。仿真时16.32m时钟一个周期为20ns,在仿真开始由于有reset信号会使时钟输出延迟一个16.32m时钟周期,所以4k时钟的第一个周期跳变沿应该在81.62us处,由图1-1中所示可以看出三个输出时钟基本对齐,且延迟不大。5图2-1-1时钟模块输出波形图图2-1-2时钟模块输出4k时钟一个周期波形图2、发射模块发射模块由rom地址产生模块和rom模块共同组成。其中rom地址产生模块产生0~199共200个地址,并循环计数,rom模块中存入200bits的信息,通过地址的改变,在时钟跳变沿输出发射信息。rom地址产生模块的Verilog语言描述如下//Descriptionofrom_addressmodulerom_address(address,clk4k,reset);inputclk4k,reset;//输入4k时钟和全局清零信号resetoutput[7:0]address;//输出0~199共200个地址,用8位二进制寄存器保存reg[7:0]address;always@(negedgeclk4kornegedgereset)beginif(reset==0)//reset为全局清零信号,低电平有效beginaddress=0;endelsecase(address)199:address=0;//地址值到199时归零,实现循环计数default:address=address+1;endcaseendendmodulerom模块中的信息储存在rom.mif文件中,如图2-1所示,使用Quartus提供的电路产生rom模块,与rom地址模块级联后的方框图如图2-2所示,级联后的仿真波形如图2-3所示。6图2-2-1rom.mif文件中的信息图2-2-2rom地址产生模块和rom模块级联图图2-2-3rom地址产生模块和rom模块级联后的仿真波形图73、卷积模块卷积模块采用(2.1.7)码,编码效率2/1R,约束长度7K。生成多项式为(133,171)。卷积后进行并串转换,先输出133卷积码,后输出171卷积码。卷积电路图如图3-1所示,时序仿真如图3-2所示。考虑到同步设计思想,尽量使用原始时钟的分频输出,故对于4kbps的信息码输入和8kbps的卷积码输出,分别采用两种速