基于MATLAB与FPGA的OFDM调制解调器设计与仿真实现 给IFFT前数据处理模块。(因为IPCore要输入下一符号的前7个点后才开始运算) IFFT前数据处理模块如图5.11所示。
图5.11 IFFT前数据处理模块
IFFT前数据处理模块输入输出信号端子如表5.2所示。
表5.2 IFFT前数据处理模块输入输出信号端子
输入信号端子 1) iData_valid表示有效数据,与BPSK/DBPSK映射模块的输出valid_map进行连接 输出信号端子 1) fft_valid表示输出的有效序列 2) fft_sop为符号的起点信号 2) iData_sop为映射数据的起点,表示映射数据的到来,3) fft_eop为符号的终点信号 直接连接BPSK/DBPSK映射模块的输出sop_map 3) iDate_real表示映射数据,为BPSK/DBPSK映射模块的输出数据,共有53个符号 4) oData_real为处理好的数据流 IFFT前数据处理模块仿真波形如图5.12所示。
图5.12 IFFT前数据处理模块仿真波形
第 34 页
基于MATLAB与FPGA的OFDM调制解调器设计与仿真实现 IFFT前数据处理模块波形解释:
CLK为系统时钟节拍。clk_ifft为IFFT时钟节拍。clk_en为使能信号。iData为输
入待处理数据。iData_Valid表示输入信号有效。iData_sop表示输入信号的起点。
oData表示输出数据。ifft_valid表示输出信号有效。ifft_sop表示输出信号的起点。
3、IFFT数据处理模块
IFFT数据处理模块主要完成数据的IFFT运算过程,如图5.13所示。
图5.13 IFFT数据处理模块
IFFT数据处理模块与IFFT前数据处理模块连接如表5.3所示。
表5.3 IFFT数据处理模块与IFFT前数据处理模块连接情况
IFFT前数据处理模块 fft_valid fft_sop fft_eop fft_real IFFT数据处理模块 sink_valid sink_sop sink_eop sink_real IFFT数据处理模块的仿真波形如图5.14所示。
IFFT数据处理模块波形解释:
clk为IFFT数据处理模块时钟。sink_valid表示输入数据有效。sink_sop为输入数据的起点。sink_eop为输入数据的终点。sink_real表示已输入完成的数据。 oData表示输出数据。oData_valid表示输出数据有效。
第 35 页
基于MATLAB与FPGA的OFDM调制解调器设计与仿真实现
图5.14 IFFT数据处理模块的仿真波形
4、循环前缀和加窗模块
实际应用中,加窗和循环前缀是同一模块且同时进行。从中读取数据的同时。将符号的前部和符号的尾部进行加窗。并将此符号前部的加窗部分与前一符号的尾部的加窗部分叠加。插入循环前缀方式如图5.15所示。循环前缀和加窗模块如图5.15所示。
图5.15 插入循环前缀
图5.16 循环前缀和加窗模块
添加循环前缀和加窗模块的仿真波形如图5.17所示。
第 36 页
基于MATLAB与FPGA的OFDM调制解调器设计与仿真实现
图5.17 添加循环前缀和加窗函数仿真波形
5、前导生成模块
当前导生成模块的输入使能ena有效时。前导生成模块启动。ROM2向其输入预先存储的SYNCP数据。生成前导信号。
前导生成模块如图5.18所示,其中输入信号表示前导模块的使能信号端,输出信号为前导模块的有效信号端。
图5.18 前导生成模块
前导生成模块的仿真波形如图5.19所示。
图5.19 前导生成模块的仿真波形
第 37 页
基于MATLAB与FPGA的OFDM调制解调器设计与仿真实现 6、成帧模块
成帧模块的输入数据包括两个部分:第一个部分是插入循环前缀和加窗后的数据。第二部分是前导生成模块产生的数据。
成帧模块按照G3-PLC协议数据帧结构将这两部分进行连接。形成一帧OFDM信号。 成帧模块的仿真波形如图5.20所示。
图5.20 OFDM帧信号仿真波形
第 38 页