OFDM调制器及其FPGA实现专业:通信工程姓名:××指导教师:××一、课题背景•电力线通信(PowerLineCommunication,PLC)指以电力线为传输媒介进行数据传送和信息交换。由于电力线通信不需要重新布线,成本低廉等特点,在智能家庭网络和宽带接入等领域受到了极大的关注。•电力线信道固有的噪声干扰、频率选择性衰减和多径传播特性大大影响了通信性能。•正交频分复用(OFDM)具有频带利用率高、传输速度快、抗干扰能力强等优点,是目前具有频率选择性衰减特性通信环境中实现高速信号传输的主流技术。•因此,对OFDM及其在电力线通信中的应用是一个很有价值的研究课题。•论文主要内容安排如下:(1)OFDM基本思想;(2)OFDM调制器及其MATLAB实现;(3)OFDM调制器及其Verilog实现;(4)仿真结果的对比验证。-30-20-100102030-0.500.51单个子载波频谱示意图-30-20-100102030-0.500.51OFDM频谱示意图图2.1OFDM信号频谱示意图二、OFDM技术基础•OFDM的思想是通过串并转换将高速串行数据分散到N个正交的子载波上进行传输,则各个子载波的符号速率减为串行数据符号速率的1/N,这样就把一个带宽频率选择信道划分成了N个窄带平坦衰落信道。三、OFDM调制器的MATLAB仿真BPSK映射DBPSK映射IFFT添加循环前缀加窗成帧模块前导生成模块FrameDATAFCH图3.2OFDM调制器系统模型SYNCPSYNCMSYNCMSYNCPSYNCPSYNCPSYNCPSYNCPSYNCPSYNCPFCH1FCH3…FCH13OVERLAPGIFCH1OVERLAPGIOVERLAPGIOVERLAPGIOVERLAPGID1PreambleFCH……DATA图3.1G3-PLC协议的数据帧结构3.1IFFT模块•在进行IFFT运算时,IFFT的输入为36个子载波,其中第一个子载波放置到第23号位置,最后一个子载波放置到第58号位置,其余位置补零。其中IFFT运算结果有用的数据只为实部。02358IFFT255FCHDATA取实部运算Signal_ifft00图3.3IFFT模块结构图3.2添加循环前缀•由于信道具有记忆性,导致结果输出不仅与当前输入块有关,还与上一个输入块有关,这样就引起了块间干扰(ISI)。•由于多径传播的影响,会造成子载波间的干扰(ICI),即子载波的正交性遭到破坏。循环前缀CPc’0…c’29c’30……c’285带循环前缀的数据块OFDM符号c0c1c2……c226…c255图3.4添加循环前缀3.3加窗模块•采用特定的窗函数,每个符号边界的8个采样点使用升余弦函数,其余采样点窗函数值设置为1。8点8点Symbol8个采样点8个采样点升余弦函数窗函数图3.5升余弦窗函数头部尾部头部尾部头部尾部第n-1个符号第n个符号第n+1个符号++最终的符号…………•相邻符号间的头部8采样点和尾部8采样点进行覆盖叠加。示意图如下:图3.6符号的覆盖叠加3.4前导模块•前导是由8个SYNCP符号和1.5个SYNCM符号连接后加窗后构成,其中每个SYNCP和SYNCM符号都包含了256点。SYNCPSYNCPSYNCPSYNCPSYNCPSYNCPSYNCPSYNCPSYNCP1/2MSYNCM8个采样点8个采样点升余弦函数窗函数图3.7前导加窗示意图•SYNCP是由固定的36个初始相位为映射复数做IFFT后取实部的结果,SYNCM符号为SYNCP符号取反的结果。3.5成帧模块图3.8一帧信号波形图020004000600080001000012000140001600018000-0.08-0.06-0.04-0.0200.020.040.060.08OFDM信号00.20.40.60.811.21.41.61.82x105-30-20-1001020304050频率(单位Hz)功率谱密度/dB信号的功率谱图3.9一帧信号的功率谱示意图四、OFDM调制器的Verilog仿真图4.1基于Verilog仿真的OFDM调制器结构框图ROMBPSK/DBPSK映射IFFT前数据处理IFFT添加循环前缀和加窗前导生成模块成帧模块OFDM帧ROMSYNCPDATAFCH4.1IFFT前数据处理•IFFT前数据处理的主要目的是实现输入IFFT的数据流的控制,使输入数据能够满足IFFT模块的处理数据的要求。图4.4数据流控制示意图RAM1RAM2MUXMUX输入数据IFFT800K800K4.2IFFT模块•IFFT模块采用了经过优化的ALTER公司的IP核FFTV7.2。该IP核处理速度快、占用资源少、使用方便,能够满足本设计的应用要求。图4.5IFFT模块仿真波形图4.3添加循环前缀和加窗•将IFFT运算结果暂存于两块RAM中,用来交替存储流入的数据。•循环前缀的方案采用重复读取RAM中的数据的方式,将一部分数据重复复制,从而形成循环前缀。226-2550-2550123456789101112131415248249250251252253254255……保护间隔RAM中的数据有效数据图4.6数据流控制示意图4.3添加循环前缀和加窗•由于FPGA中乘法器需要占用很大的资源,所以在硬件设计中将升余弦函数部分用程序直接实现,其实现方法为将升余弦函数的数值转化为8位二进制,用移位代替乘法器,而其他数值保持不变。图4.7添加循环前缀和加窗函数仿真波形4.4前导生成模块图4.8前导仿真波形•将一个SYNCP符号预先存储于ROM中,而SYNCM符号采用SYNCP符号取反的结果,不在单独存放于ROM中。4.6成帧模块•由于前导长度2432点,需要设置移位寄存器进行cp的2432个时钟的输出延时,将前导的输出和数据的输出连续形成一帧。图4.9OFDM仿真波形图五、仿真结果的对比验证•将Modelsim的仿真结果与MATLAB的仿真结果进行比较,结果存在一定的误差,但这个均方误差值均小于10-5,完全能满足系统的设计要求。05010015020025030000.511.522.533.54x10-5误差分析采样点数均方误差值图5.1Modelsim的仿真值和MATLAB计算结果的均方误差值