从零开始USRP+GNURADIO系列(OFDM篇)
在观看本文章的时候,希望先掌握OFDM的基础知识,因为有很多文章对OFDM有深入浅出的讲解,推荐一个
https://zhuanlan.zhihu.com/p/646179637
简单讲下OFDM框架
OFDM:
Ieee定义802.11 52个子载波和一个直流分量。
-31到-27,27到31和0处为0,-21,-7,7,21为导频子载波。每两个导频之间有13个子载波。
导频为已知的序列(用于信道测量,载波估计)
保护间隔:多径信道会对OFDM符号造成ISI影响,破坏了子载波之间的正交性。加入保护间隔来消除多径信道带来的符号间干扰。循环前缀只能消除不同子载波之间多径的干扰,但是对自己的干扰无法消除。
OFDM系统经典的框架,当然在星座映射前面还有信源编码部分。
OFDM的GNURADIO实现
如下为一个标准的OFDM发射端。
按照顺序,先random生成8bit的数据,然后每96个数据打包成一个packet。然后加上crc32,crc32加上为4个8bit的数据。然后repack bits,8bit数据按二进制的顺序拆成2bit的数据(为了做qpsk),总数据流不变。然后header做bpsk,payload做qpsk,然后将header和payload组合起来。到这里已完成星座映射。图中ID为pre-OFDM。
然后经过OFDM载波映射,IFFT,生成OFDM的数据,然后加上循环前缀,完成OFDM信号的生成。
组件:
Stream to tagged stream:类似于packet,给stream流的第一个打上tag。
Stream crc32:给stream流加上crc32。
Packet_Header_Generator:为带标签的流式数据包生成标头。
Tagged Stream Mux:组合标签数据流。
OFDM_Carrier_Allocator:OFDM载波映射组件。通过确定OFDM组件的各个子载波的分配,如何数据,空子载波,导频子载波。
OFDM_Cyclic_Prefixer:OFDM添加循环前缀。
具体组件的信息查看官网手册
官方文档
上述是将OFDM_Carrier_Allocator,FFT,OFDM_Cyclic_Prefixer生成OFDM符号,在GNUradio中存在完整的OFDM调制组件,OFDM transmitter,是上述3个的整合。
具体例子如下所示,通过OFDM transmitter和OFDM receiver可以实现OFDM的收发。
例子连接如下
OFDM样例连接