ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

深度解析SC-FDE上采样与采样滤波:从原理到工程实践

深度解析SC-FDE上采样与采样滤波:从原理到工程实践 1. 整体设计与思路拆解1.1 为什么SC-FDE非谈上采样不可做SC-FDE单载波频域均衡的人绕不开一个基础问题符号率和采样率到底什么关系。很多人刚接触时想当然认为符号率和采样率一致就行发端按符号率发收端按符号率采反正均衡在频域做省掉一堆事。真这么干系统性能会非常脆弱。SC-FDE的核心逻辑在“频域均衡”四个字我们先把接收信号做FFT在频域做完信道补偿和均衡后再IFFT回时域恢复符号。问题是频域均衡对定时偏差、信道估计误差和噪声放大极其敏感。如果你在符号率采样那么任何定时偏移都会直接转化为符号间干扰ISI而且这种ISI在频域里表现为相位旋转均衡器能补偿一部分但对残余定时误差无能为力。更麻烦的是符号率采样时成形滤波器不管是升余弦还是根升余弦的过渡带会极其陡峭硬件上几乎做不出可实现的滤波器。上采样在这里就是那个“解药”。先把基带符号序列通过L倍上采样L一般是2或4在更高采样率下做脉冲成形滤波再送DAC。接收端同样以L倍过采样率工作前端用匹配滤波和定时恢复算法把最佳采样点找出来最后在符号率下做频域均衡。这套流程里上采样不仅是“过采样”这么简单它给系统保留了时域自由度——定时同步可以在采样点之间做插值、信道估计可以在过采样网格上做、均衡器可以采用分数间隔结构。用一句话说过采样率就是SC-FDE系统在处理精度上的“安全边际”。1.2 采样滤波在整个链路里的角色“采样滤波”四个字看似普通实际贯穿了SC-FDE的模拟前端和数字基带两端。摸过模拟前端电路的人应该熟悉电流采样电路的输入滤波——ADC前级必须加RC抗混叠滤波器否则高频噪声会折叠进基带。而在数字基带侧“采样滤波”指的是发送端的脉冲成形滤波、接收端的匹配滤波以及数字域的抗混叠与抽取滤波。两套东西原理同源但一个跑在模拟域一个跑在数字域设计逻辑却很一致都是在“你想保留的信号”和“你不想要的噪声/镜像/混叠”之间划清界限。很多工程师容易犯的毛病是只设计数字滤波器忽视了模拟RC滤波器和数字滤波器之间的配合。ADC的采样率定了模拟RC的截止频率、数字滤波器的通带宽度、插值滤波器的阻带衰减它们共同决定了整个链路的信噪比和误码率底线。单纯把某一级滤波做得很“完美”没有意义瓶颈永远在整条链路上最弱的那一环。1.3 方案选型上采样倍数与滤波结构怎么定上采样倍数L的选择本质上是在性能和复杂度之间找平衡。L2是最低要求能让定时恢复有可操作的余地L4在实现复杂度和性能增益之间最均衡是做SC-FDE系统最常见的配置L8以上性能收益极其有限但多相滤波器资源和时钟频率要求都成倍上去了除非你是在做高精度信道测量否则不推荐。滤波结构上发送端的成形滤波用多相分解实现资源消耗小而且每相就是一组短FIR流水线很容易处理。接收端匹配滤波同样用多相结构同时利用对称性还能砍掉一半乘法。说到抗混叠模拟前端RC滤波一定要做它是ADC之前的最后一道防线数字域的抽取滤波则把过采样数据降到符号率为FFT做频域均衡准备。我习惯把这三块当成一套整体来设计——RC滤波的截止频率、数字抽取滤波的过渡带宽度、多相滤波的阻带衰减三个参数必须放在一起联合仿真逐个孤立地调参只会反复返工。总结一下我的整体设计思路上采样给系统留出时域裕量采样滤波保证频域干净两者配合才能让SC-FDE的频域均衡真正发挥出对抗多径信道的能力。接下来的细节我把每条链路和每个设计参数掰开讲。2. 核心原理与关键细节解析2.1 上采样的频谱机理镜像、插值与过采样增益上采样在数学上是插值在频域上的后果是镜像。一个字符号率fsRs的基带序列L倍上采样后采样率变成L×Rs频谱上除了保留原来的主谱还会在整数倍Rs位置复制出L-1份镜像谱。这些镜像如果不过滤掉直接送进DAC或混频器会在邻信道产生严重的频谱泄漏违反发射频谱模板不说接收端也会多收进来一堆干扰。插值滤波器的作用就是把镜像谱压下去。拿零值插入加低通滤波来理解最简单每两个原始采样点之间插L-1个零再用一个截止频率在Rs/2以内的滤波器平滑输出等效于在频域保留主谱、衰减镜像。需要注意的是插值滤波器不仅要抑制镜像还必须保证通带内的幅度平坦和线性相位否则你插入的不仅是采样点还会把符号波形畸变带进去。升余弦和根升余弦之所以是SC-FDE的标配成形滤波器就是因为它们同时满足奈奎斯特无ISI准则和频谱受限需求。过采样还有一个常被忽略的好处抗噪声裕量。数字信号处理里量化噪声功率是均匀分布在奈奎斯特带宽上的过采样因子L本身就能带来最多10·log10(L)dB的量化噪声抑制前提是你后面确实做了低通滤波去掉带外噪声。这个增益在接收端ADC动态范围受限时非常宝贵实际测试里把接收过采样率从2提到4同等硬件条件下EVM能改善1到2个dB这是我实测过的数字不是理论空话。2.2 匹配滤波与成形滤波的配对逻辑SC-FDE的收发滤波设计遵循“根升余弦发送、根升余弦接收、等效升余弦”的经典配对。发端用根升余弦成形收端也用相同参数的根升余弦做匹配滤波两者卷在一起正好构成无ISI的升余弦响应同时收发各自独立满足频谱限制。这里滚降系数α的取值直接影响过采样倍数选择——α越小过渡带越窄滤波器阶数要求越高。工程上α0.2到0.3最常用配合L4的过采样率滤波器设计和定时恢复都处在舒适区。实际做的时候很多人会忽略匹配滤波的定时对齐问题。匹配滤波器的输出峰值只在最佳采样时刻出现如果定时恢复没有提前锁定匹配滤波输出波形会被“切歪”产生信号能量损失。过采样率的存在让定时恢复可以在采样点之间做分数间隔调整这也是为什么我坚持匹配滤波要在过采样域做而不是先降采样再做滤波。顺序错了定时同步的精度就上不来。2.3 模拟RC滤波与ADC采样的衔接再看网络热词里反复出现的“电流采样电路输入滤波”“电流采样RC滤波”。放在SC-FDE系统里这套东西对应的是ADC前端的抗混叠设计。RC滤波器是模拟域最简单可靠的抗混叠结构一个电阻一个电容截止频率设计在目标信号带宽附近把ADC采样率奈奎斯特频带以外的高频噪声和带外干扰压下去。RC截止频率不能随便定。定太高带外噪声压不住定太低信号边缘被削通带内幅度不平坦。我的经验值是RC截止频率取ADC采样率的20%到30%或者取信号带宽的1.5到2倍哪个方向都行关键是让RC曲线的-3dB点落在信号主瓣边缘之外这样既能压制带外又不影响数字域均衡器的补偿能力。还要记住RC滤波是一阶结构滚降只有-20dB/dec数字化之前如果你的过采样率不够高光靠RC是压不干净的所以数字域的抽取滤波器还必须补一刀。2.4 数字抽取滤波与抗混叠的本质接收端把高采样率数据降到符号率时必须再做一次数字抗混叠。抽取倍率等于过采样率L抽取前不做低通滤波的话目标频带之外的噪声和干扰会被折叠回带内而且这个折叠是不可逆的后面做什么均衡都救不回来。抗混叠的思路和上采样时压制镜像完全对称上采样是插值后用低通滤镜像抽取滤波是低通后再降采样两者本质上都是“先滤后采/插”的顺序顺序反了信号就废了。数字抽取滤波器我用的是FIR等波纹设计通带截止设置在0.95×Rs/2附近阻带从1.05×Rs/2开始阻带衰减做到60dB以上带内纹波控制在0.1dB以内。这个指标看起来不算苛刻但要注意滤波器阶数。L4时配合这种指标抽取滤波器阶数大约在30到50之间如果你再叠加匹配滤波两级级联的总群延迟会比较大做定时恢复时必须把群延迟补偿进去否则同步环路会有一个固定偏差。3. 实操过程与核心环节实现3.1 MATLAB原型仿真上采样匹配滤波抽取动手做SC-FDE链路验证我建议先建一个端到端的MATLAB基带仿真把上采样和滤波的行为模型拿到手再去碰FPGA实现。下面这段代码是我常用的原型框架覆盖了发端上采样成形、AWGN信道、收端匹配滤波和抽取滤波的主要步骤% SC-FDE 上采样 采样滤波 端到端原型 Rs 10e6; % 符号率 10 MHz L 4; % 过采样率 Fs L * Rs; % 采样率 40 MHz alpha 0.22; % 滚降因子 nSym 4096; % 符号数 % 发送端QPSK符号 - L倍上采样 - RRC成形 data randi([0 3], nSym, 1); modSym pskmod(data, 4, pi/4); % RRC滤波器时域长度按 span*L1 截断 span 8; rrcFilter rcosdesign(alpha, span, L, sqrt); upSym upsample(modSym, L); txSignal filter(rrcFilter, 1, upSym); % 信道简单多径 高斯噪声 h [1 0 0.3*exp(1j*pi/3)]; % 典型双径 rxSignal filter(h, 1, txSignal); rxSignal awgn(rxSignal, 20, measured); % 接收端RRC匹配滤波 - 抽取 - 理想定时 matchedSym filter(fliplr(rrcFilter), 1, rxSignal); % 找到滤波器群延迟足够的起始点按L倍抽取到符号率 groupDelay span * L / 2; decSym matchedSym(groupDelay1 : L : end); decSym decSym(1:nSym); % 频域均衡经典SC-FDEFFT - ZF/MMSE - IFFT rxBlock reshape(decSym, [], 1); % 这里省略信道估计和均衡系数计算实际用已知导频完成 eqSym rxBlock; % 占位 scatterplot(eqSym);有几个点必须提醒。散布图看不出来问题并不代表链路干净建议把发射信号的功率谱也画出来看镜像谱是否被压到-40dB以下。RRC滤波器截断长度span取8是做仿真和硬件的折中小于4时带外泄漏会很明显大于16时资源成本和群延迟都上来了收益非常有限。filter(fliplr())这种匹配滤波做法在仿真里没问题但系数顺序在FDA Tool里生成时容易搞反建议直接导出系数后核对第一拍和最后一拍的对称性。3.2 滤波器系数设计与关键参数表格滤波器参数是整个链路能否落地的关键。我把SC-FDE中最常用的一组参数整理成表格直接对着用就行滤波器采样率通带截止阻带起始阶数参考阻带衰减说明RRC成形发送4×Rs0.5×Rs归一化0.125过渡带内约32~6440dB以上滚降α决定过渡带宽度阶数按span×L1算RC抗混叠模拟ADC采样率0.25~0.3×Fs缓慢滚降1阶20dB/dec仅压制高频折叠细节靠数字滤波数字抽取滤波接收4×Rs0.95×Rs/21.05×Rs/230~5060dB以上在4×Rs域运行输出2×Rs或Rs域匹配滤波接收4×Rs同发送RRC同发送RRC同发送RRC40dB以上与发端RRC配对参数必须一致表格里的阶数都是按通常工程实践整理的经验值。你在做硬件实现时阶数可以适当缩小但阻带衰减不能低于40dB这是发射频谱模板和接收抗干扰能力的双重底线。滤波器系数量化到16位时阻带衰减大约会劣化3到6dB我建议做系数量化时目标留出5dB的余量别卡着指标设计。3.3 FPGA实现中的多相结构拆解MATLAB仿真跑通之后进入FPGA要做的第一件事是把上采样和匹配滤波改成多相结构。直接在高采样率下跑整段FIR不是不行但时钟资源和乘法器功耗都会很难看。以L4为例一个32阶RRC滤波器直接形式需要32个乘法器工作在4×Rs时钟频率改成4相分解后每一相只有8个系数工作时钟降到Rs4相并行处理流动数据乘法器总数不变但时钟要求降到原来的四分之一对时序收敛是质的改善。多相上采样的实现顺序是先把符号序列按L路串并分解每路各配一组子滤波器多相分量输出按一定相位次序拼合成L×Rs的流。不要搞错顺序——上采样输入是符号率数据每相处理的是符号序列的一个相位子序列输出交错排列才是正确的过采样序列。接收端匹配滤波同理但抽取逻辑不同多相匹配滤波的输出在每一组L个样本中只取一个有效点其他点可以丢弃计算量直接降为原来的1/L。工程上我习惯把匹配滤波和定时误差检测比如Gardner算法做在一起匹配滤波的L个相位输出正好提供给定时检测器计算误差信号不用额外增加缓存。这个细节等于把定时恢复和匹配滤波的资源复用了省掉不少状态寄存器和布线压力。3.4 接收链路顺序抗混叠→匹配滤波→抽取→频域均衡接收端信号处理顺序是SC-FDE最容易踩坑的地方。我见过不少新手先做抽取再做匹配滤波理由是“数据量少了好算”结果性能惨不忍睹。正确的顺序必须是先匹配滤波后抽取。原因很简单匹配滤波要在过采样域完整保留信号波形才能在最佳采样点输出最高信噪比的符号样本一旦先抽取到符号率多径分量的时间分辨率丢失后面怎么做都补不回那部分能量。AR完整链路我给出的参考顺序为ADC采样4×Rs→数字抗混叠抽取滤波降到2×Rs或直接降到Rs→匹配滤波如果需要再做一次分数间隔处理→定时恢复与符号抽取→FFT→频域均衡MMSE/ZF→IFFT→判决。需要注意数字抗混叠和匹配滤波这两级不要随意合并除非你确认滤波器参数可以同时满足两个需求否则合并只会让设计约束互相打架。频域均衡的MMSE系数计算里有一个细节和过采样率直接相关噪声方差估计的分母要按符号率带宽归一化不要在过采样域直接估噪。否则你的均衡系数会偏差约10·log10(L)dB等于把过采样增益白白送回去。这个归一化处理我在MPC和Xilinx参考设计里都见过被搞错的案例大家实现时务必把估计模块的带宽因子写清楚。4. 常见问题与排查技巧实录4.1 混叠被压住了但EVM仍然偏高一个常见场景上采样和滤波参数都按书上的做了频谱模板也过了实测EVM却高出仿真一大截。我的排查顺序是先查模拟RC再查数字滤波器的群延迟补偿最后查定时恢复的初始对齐。RC滤波截止频率如果偏高带外噪声没压住ADC量化后折算到符号域的信噪比就会下降如果RC偏低信号边缘被削ISI直接起来了。建议用信号源扫一个单音看RC前后的幅度响应是否平坦再用示波器抓ADC输入的频域底噪确认带外没有明显的高频隆起。群延迟是另一个隐蔽问题。RRC匹配滤波和多相抽取滤波都有固定群延迟工程上很容易只做长度对齐而漏掉整数倍采样点的偏移补偿。我的做法是在链路建模时加一个延时探针发一串已知的PN序列跑完整个接收链路后做互相关直接用相关峰的位置校准延迟补偿值。这个实测校准比单纯算滤波器群延迟公式可靠得多因为量化效应、多相切换的流水线延迟都会干扰理论值。4.2 上采样镜像泄漏压不下去的排查镜像泄漏主要有三个来源RRC成形滤波器的阻带衰减不够、DAC的零阶保持幅度滚降sinc响应没有补偿、I/Q两路幅度不一致导致镜频抑制变差。RRC滤波器的阻带衰减如果要做到60dB以上32阶往往不够需要把span从8加到10或12DAC的sinc滚降在前3个奈奎斯特区内可以预置一个反sinc数字滤波器来补偿这个很多人会忘记I/Q幅相不一致的影响特别容易在镜像频率上暴露先用单音校准I/Q失衡再用多音验证。排查时把频谱仪接到DAC输出分别看主瓣和L-1个镜像的差。如果主瓣和镜像幅度差不足40dB并且频谱呈对称分布优先查I/Q失衡如果镜像整体抬高但主瓣形状正常大概率是滤波器阻带衰减不够如果镜像在远离主瓣的高频位置特别明显那就是DAC重建端的问题和数字域无关。4.3 RC滤波器参数定不准的工程经验关于“电流采样RC滤波”这类问题很多工程师真正困惑的是RC值到底怎么选。我提供一个快速的起点假设ADC采样率是40MHz信号带宽是5MHzRs10MHzL4的情况下带宽在5MHz量级那么R和C的乘积满足f_cutoff 1 / (2πRC) ≈ 12到15MHz也就是取RC的-3dB点在信号带宽的2.4到3倍之间。这样既保证信号通带内衰减小于0.5dB又能把15MHz以上的带外噪声压掉一大截。电阻取值在50欧到500欧之间选太小了驱动功耗大太大了ADC输入偏置电流会引入误差电容则根据f_cutoff反推常用十几到几十pF。之后用矢量网络分析仪或信号源加示波器校准微调电容值让截止频率落在设计目标上。RC滤波的精度不需要太高5%以内的偏差完全可以在数字均衡器里被补偿掉真正重要的是不要让RC成为带宽的瓶颈。4.4 常见问题速查表现象可能原因排查方法解决方案ADC输出频谱有大量噪声折叠RC截止频率过高或数字抗混叠未生效看ADC频谱底噪RC取值下移确认抽取前有低通发射镜像谱高于-40dBcRRC阻带衰减不足频谱仪量主瓣与镜像差增加RRC阶数或spanEVM随定时偏移急剧恶化先抽取后匹配滤波打印链路中各级信噪比调整处理顺序为滤波后抽取均衡后仍有周期纹波群延迟未补偿用PN序列做互相关在链路中加显式延迟补偿MMSE均衡增益异常低噪声方差未按符号带宽归一化检查均衡系数幅度对噪声方差乘1/L因子I/Q镜频抑制差I/Q幅相失衡单音校准加数字I/Q失衡校正模块高滚降系数时滤波阶数不够α0.1以下过渡带过窄看滤波器阻带曲线提高滤波器阶数到64以上4.5 一个典型的调试案例复盘我最近帮朋友调一个SC-FDE原型现象是收发同源环回测试BER很正常但加了真实多径信道以后性能崩得厉害。先怀疑均衡系数但仿真里同样的信道模型性能没问题再怀疑定时同步Gardner环路在过采样域的采样点选择上看着也对。后来用频谱仪抓中频信号发现带外有一个明显的不对称旁瓣这才把注意力引到I/Q失衡——实际硬件里的I/Q幅度偏差有0.8dB相位偏差有3度折算到频域恰好落在镜像频率上和信号混在一起直接拉高了均衡后的等效噪声。解决方法是加了一个简单的数字I/Q失衡校正先在发端送单音分别解出I/Q幅度比和相位差然后在收端用复系数滤波器做逆校正。这个处理只需一个复数乘法器代价极低但把镜像抑制从35dB提升到了50dB以上。调试完的体会是SC-FDE系统里频域均衡对前端非理想因素的容忍度比时域均衡低得多因为频域均衡会把任何周期性失真都“平等地”补偿或放大前端一点点不平衡都会在结果里放出来。链路调优的顺序一定是从模拟前端往数字后端走先让频谱干净再谈均衡算法。5. 实际设计中的避坑心得5.1 过采样率不是越大越好我在多套系统里验证过接收端过采样率从2提到4性能提升非常明显但从4提到8EVM改善不超过0.5dB而ADC功耗、FPGA逻辑量、数据吞吐都上了一个台阶。L8只在少数需要超高精度的场景里有意义比如信道探测雷达或高阶QAM背靠背测试。SC-FDE的常规通信系统老老实实用L4就对了资源留出来给均衡器维度和信道估计才是正途。发送端过采样率同理。L2的成形滤波也能做但滤波器的过渡带约束会让阶数飙升L4配合α0.22到0.3是最顺手的组合。选L时还要考虑DAC的时钟方案过采样率倍数最好能和DAC插值模式对齐比如DAC内部自带4倍插值时FPGA输出基带只按符号率给数据数字侧的上采样就不必全部自己做硬件资源可以省一些。5.2 滤波器的定点化要留足余量定点实现时最容易低估滤波器系数量化对阻带衰减的影响。16位量化对40dB指标的滤波器通常还够用但对60dB的抽取滤波器就不行了。更隐蔽的问题是乘法器内部位宽——18×18乘法器累加后至少要保留20位以上否则截断噪声在频域会表现为一个抬高了的噪声基底最终限制整条链路的底噪。我建议做定点仿真时至少对每个滤波器做100次不同量化噪声的蒙特卡洛仿真观察EVM的统计分布而不是只看单次结果。另外多相滤波器的各相系数对称性在定点化后可能被破坏实现时让HLS或HDL生成器保留对称系数合并优化别手写展开——我吃过手写展开把对称性搞丢的亏阻带指标直接掉了8dB。5.3 定时恢复和匹配滤波配合的细节定时恢复环路的环路带宽选择会影响匹配滤波的性能体现。环带太宽定时误差抖动会把采样点甩出匹配滤波的主瓣环带太窄信道变化时无法及时跟踪。频率偏移较大时定时恢复前最好先做一次粗频率估计否则定时环路会被频偏产生的相位旋转干扰。把定时误差检测器放在匹配滤波器的输出侧、抽取之前这样误差信号反映的才是真正的最佳采样位置。5.4 给做硬件仿真的朋友补充一句软件仿真时所有滤波器都是“无限精度”的但硬件实现里每一级截断都在贡献噪声。SC-FDE里边做FFT边做滤波不同模块的位宽匹配需要全局规划不要每个模块单独优化我建议从ADC输出端开始逐级做噪声预算把每一级允许的噪声功率写进设计文档再按预算分配位宽。这话虽然有点老生常谈但真动手时能少返工很多次。说实话SC-FDE的上采样与采样滤波原理书上两三页就讲完了真正难的是把这些环节组装进一个真实的链路里让每一个滤波器都在自己的位置上发挥作用。我这些年做下来的最大感触是不要迷信任何单独的“完美设计”系统性能是每一级滤波、每一个采样点选择共同叠加出来的结果。把基础环节的细节抠到位后面调频域均衡、调信道估计时你会感激当初没有偷懒的自己。最后再分享一个小技巧做完上采样和滤波链路之后一定要留一级数字可变增益放在ADC后、匹配滤波前。模拟前端的增益裕量不够时这级数字增益能帮你压住信号峰值避免FIFO溢出它不会解决SNR问题但能防止系统级的偶发误码把性能曲线尾部拖垮。就这一级我至少三次靠它救回误码率平台属于低成本高回报的“保险丝”。
返回列表