本项目系XDU某课程作业,鉴于网上SC-FDE的资料实在少之又少,笔者开源出来仅供参考,欢迎读者star~
https://github.com/daviddou2023/SC-FDE-MATLAB-SYSTEM
一、SC-FDE简介
单载波频域均衡技术(Single Carrier Frequency Domain Equalization,SC-FDE)为了弥补 OFDM 技术的缺陷,人们将 SC-TDE 技术与 OFDM 技术结合,提出了 SC-FDE 技术。SC-FDE技术将传统的单载波传输接收端的均衡结构由时域均衡变为频域均衡。SC-FDE系统发送的是调制后的高速率单载波信号,接收端通过FFT和IFFT变换来实现频域均衡,实际上是对接收信号的频域分析。SC-FDE 技术与传统的单载波时域均衡相比,复杂度低,能够较好和其它技术结合,抗多径的能力强。
DFT扩频序列长度等于OFDM的IFFT长度,DFT-S-OFDM等效于SC-FDE。
二、模型描述
SC-FDE系统框图如上所示。数据输入之后通过映射成比特流,插入保护间隔以后,形成长度为N的符号送入信道,在接收端同步后去除前缀,串并转换(方便处理一段固定长度的数据)后对每个符号变换到频域进行均衡后再恢复到时域,并串转换(重新串联成连续的数据流)解映射之后就得到接收到的信息。
三、数学描述
四、重要参数
1、信道容量
2、信号峰值平均功率比(PAPR)
峰平比(PAPR)衡量的时信号的动态范围。发射机的末级是电子设备功耗的主要部分,也是成本最高的部分。发送端的功率总是一个关键问题,应该尽可能使用大功率放大器(HPA)工作在高效率状态。但是对大功率和信号失真两个指标之间的要求是矛盾的,这就要求系统中的功率放大器具有较大的动态范围,以避免信号失真引起传输信号的频谱扩散和带内失真造成的误码率增加。但是,提高放大器性能有时需要付出很大的代价,会导致系统成本大幅提高,所以我们一般希望发送信号的动态范围越小越好,以便降低对功放的要求。这就是我们讨论信号峰平比的原因和意义。
五、帧结构设计
SC-FDE 系统的保护间隔一般是循环前缀(Cyclic Prefix,CP)或者 UW 序列,通常有以上三种方式设计帧结构。UW 序列都是固定的,每一帧的 UW 序列都是相同的。
SC-FDE 使用 UW 替代 CP,不仅保留了循环卷积特性用于频域均衡,还引入了同步、信道估计、频谱压缩等多种系统优化能力,使其成为一种更高效、鲁棒、更适合实际通信系统(如5G候选方案)的结构设计。
a)帧结构直接采用CP作为保护间隔,即复制每个数据块的后面一段,每个数据库的CP不同。
b)帧结构可以利用每一帧数据块前的 UW 序列实现信道估计,实时跟踪信道变化,但是传输效率低于 2 型帧结构。
c)的帧结构适合慢衰落信道,在多个数据帧前添加一定长度的导频符号完成信道估计和同步。
六、均衡技术
均衡技术是指对信道特性的均衡,也就是说接收机均衡器与信道的特性正好相反,以此来抵消信道多径传播带来的码间干扰。均衡器可以消除信道的频域和时域选择性,由于信道是时变的,这样需要均衡器具有自动适应信道特性的能力,通常称为自适应均衡。
主要有以下几项均衡技术:
(1)迫零均衡技术
在理想的信道模型下,通过调整均衡器的抽头系数,使得均衡器与信道的联合冲激响应的抽样的取值在采样周期的采样点上。这样一来,除了0以外的其他抽样点都为零,消除了码间干扰。但是迫零均衡带来的问题就是会放大噪声,因此不适合噪声较大的信道
(2)最小均方误差均衡
基本思想是使均衡器的期望输出值与实际输出值之间的误差最小化。
(3)非线性均衡技术
当线性的均衡技术已经不能满足需求时,需要使用非线性均衡技术。非线性均衡器能够弥补失真频谱,对周围的失真频段进行修复,获得一定的增益。
七、MATLAB仿真设计
1、模块设计
(1)比特随机生成器
使用randi函数随机生成512个01比特作为输入数据。
(2)调制与解调
调制时通过查找星座点的 I/Q 值位置,选择对应的比特组合。
(3)添加UW序列
这里采用之前提到的b)帧结构,在数据块的首尾插入UW序列。UW序列主要有以下要求:
(1) UW序列的作用类似于OFDM前面的循环前缀CP,能够消除前一帧数据对本帧数据的干扰,不同于CP的是,UW序列还可以用作信道估计和同步,本文中同步不涉及,仅仅用于循环前缀和信道估计的作用。
(2) UW序列用作循环前缀时,要求UW的长度不能小于信道的最大时延的长度。
(3) UW序列用作信道估计时,要求UW序列具有平稳的频率响应及很好的相关性和带宽。
通常采用Chu序列或者Frank序列来产生UW序列。
(i)采用Chu序列
(ii)采用Frank序列
(4)AWGN信道
(5)频偏纠正与估计
(6)信道估计
首先是将接收到的序列分为前UW、数据、后UW三个部分,然后对于接收到的前后UW序列分别作FFT再平均作为接收到的UW,通过计算接收端的UW和发送端的UW比值作为信道的频率响应,再IFFT转到时域补0和FrameSize数据(一帧)长度一致,再进行一次FFT变换到频域得到完整的一帧频域信道估计。
(7)噪声估计与频域均衡
首先构造MMSE均衡器
在本代码中,我们仅考虑AWGN情况下,可以采用如下方法估计噪声。
(8)计算误码率
tx_1 - rx_1 == 0 表示该比特无误,length(tx_1) - length(I)表示发送的比特总数减去正确的比特数即错误的比特数,FrameSize * numframe:表示总的比特数量,最终 BER 是:总错误比特数 ÷ 总发送比特数。
(9)自行设计FFT算法
(i)采取Cooley-Tukey算法
对于自己设计FFT,采取Cooley-Tukey算法,核心思想是:
- 将长度为 NNN 的DFT分解为两个长度为 N/2 的DFT。
- 利用输入序列的 偶数项 和 奇数项 分别构造两个子序列。
当上式中k=0~(N/2-1),进行递归运算则有:
因此拼接两部分 [X[0:N/2-1], X[N/2:N-1]] 得到完整的长度为 N的DFT结果。
对于自己设计IFFT,通过观察与FFT表达式的差别:
DFT 与 IFFT 的唯一区别是指数符号的正负号,以及 IFFT 前有个 1/N 系数。
这在工程上很有用,因为相当于可以 用同一个函数实现 FFT和IFFT(节省代码),提高仿真效率。
(ii)Radix-2算法
在vivado中递归结构不能综合,因此必须展开为迭代或者流水线操作。但是递归操作容易造成内存访问混乱。因此采用Radix-2 DIT非递归结构。
首先进行位翻转操作,目的是为了让FFT运算按照层次结构展开,接下来进行蝶形运算