ARTICLE DETAIL

资讯详情

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

BPSK通信系统转发式干扰Matlab仿真:机理、建模与性能评估

BPSK通信系统转发式干扰Matlab仿真:机理、建模与性能评估 做这个仿真的出发点其实是从一个很实际的问题开始的转发式干扰明明只是把收到的信号延迟一下再原样发回去为什么就能让一个本来工作正常的BPSK链路误码率飙升好几个数量级如果你也在做通信抗干扰方向的研究或者在做电子对抗相关的课程设计、毕业设计需要快速评估“干扰信号对BPSK解调性能的影响”并给出量化结果那么这篇文章就是给你准备的。我先把结论放在前面转发式干扰和普通噪声压制最大的不同在于它利用的是信号自身的结构特征。接收机本来设计用来接收的那套滤波器、同步环路、判决准则在转发干扰面前反而成了放大干扰的工具。这篇文章会从干扰机理、系统建模、Matlab仿真实现到结果解读完整拆开讲清楚代码和参数也都给到可以直接复现的程度。1. 转发式干扰为什么能让BPSK链路彻底失效1.1 BPSK解调器到底在判什么要理解转发式干扰怎么起作用先得知道BPSK接收机在做什么。BPSK二进制相移键控把比特信息编码在载波相位上发比特“1”时载波相位为0发比特“0”时载波相位为π。接收端做完下变频、匹配滤波后在每个符号周期的最佳采样点判一下信号的实部极性——大于0判“1”小于0判“0”。这里的关键是接收机本质上只做了一个“极性判决”。只要叠加干扰后采样点的实部被掰到了错误的一侧这个比特就错了。所以干扰不需要把信号完全淹没只要能在判决时刻把采样值“推过零点”就能稳定地制造误码。无干扰情况下BPSK在加性高斯白噪声信道下的理论误码率是BER 0.5 * erfc(sqrt(SNR))其中SNR是符号信噪比线性值。在这个公式里噪声是随机的、零均值的所以只要SNR够高采样点偏离理想位置的概率就很低。1.2 三种常见的转发式干扰模型“转发式干扰”在实现上并不是单一形态我做仿真时把它们分成三类每一类对BPSK的作用机理都不同第一类纯延迟转发。干扰机截获发射信号s(t)延迟τ后乘以增益G再转发出去。接收机收到的信号变成s(t) G·s(t-τ)。由于干扰信号和有用信号来自同一个源频率完全一致、相位高度相关当τ接近一个符号周期时本符号采样点的值会被前一个符号的尾巴叠加影响产生确定性符号间干扰ISI。第二类噪声调制转发。干扰机把截获信号和自身噪声混合后再转发也就是j(t) G·[s(t-τ) n_j(t)]。这种干扰兼具“欺骗性”和“压制性”——相关分量破坏解调噪声分量抬高底噪两者同时作用。第三类移频转发。干扰机对截获信号做多普勒搬移后再转发j(t) G·s(t-τ)·exp(j2πf_d·(t-τ))。f_d会造成接收信号的载波频率偏移破坏接收端的载波同步环路导致星座图整体旋转。对BPSK来说只要相位旋转超过90度判决就会大规模出错。其实还有更复杂的DRFM数字射频存储转发形式可以逐脉冲截获、调制再发射但从系统性能评估的角度看上述三种数学模型已经覆盖了转发式干扰的主要作用机制。1.3 为什么“自己干扰自己”比噪声压制更致命这个问题是很多人做仿真时忽略的。同样是让误码率从1e-5恶化到1e-2普通宽带噪声干扰需要把干扰功率抬到很高而转发式干扰可以在干信比JSR很低的情况下就奏效。原因有三点第一频率自动对准。噪声干扰需要干扰机知道目标信号的频点而转发式干扰截获的是信号本身频率天然精确对准不存在频谱失配的损耗。第二功率利用率高。转发干扰把信号能量搬回接收机等于借对方的发射功率来打对方。对BPSK这种没有扩频增益的系统来说干信比达到0dB左右就能造成数量级的误码率恶化。第三难以通过滤波剔除。有用信号和干扰信号占据同一带宽、具备相同的脉冲成型特征接收机前端任何线性滤波手段都无法区分它们。这一点在仿真里体现得很直接你在接收端加什么滤波器干扰信号也跟着过什么滤波器两路信号损失完全一致。所以评估BPSK系统在转发式干扰下的性能本质上是评估在“不完全相关叠加”条件下接收机判决量的统计分布变化。这个机理清楚了后面的仿真建模就有了方向。2. 仿真平台选型与系统参数设计2.1 复基带等效模型 vs 中频带通模型开始写代码之前先做一个选择是直接在复基带建模还是完整地做“载波调制-射频信道-下变频”的带通仿真我的建议是采用复基带等效模型。理由很实际转发式干扰对BPSK的影响机理发生在符号层面核心要素是延迟、增益、噪声叠加和判决这些在复基带里都能完整表达。带通仿真的载波频率、镜频抑制、射频前端非线性等问题对本次评估目标没有贡献反而会让代码变长、采样率要求变高、运行时间翻倍。复基带模型下BPSK的“相位0/π”体现为符号映射到1和-1发送端用根升余弦滤波器成型接收端用匹配滤波器然后按符号率采样判决。这套流程和带通系统在数学上是完全等价的只是没有显式搬移到指定的载波频率上。如果你后续非要出射频波形在复基带信号上乘以复数载波再取实部、接收端下变频加低通滤波即可这里不展开。2.2 关键参数取值与计算依据仿真参数直接决定结果的可信度和计算开销。我用的是下面这一组参数取值说明符号速率 Rs1 Mbps典型低速数据链速率便于观察干扰效果采样率 fs20 MHz每符号20个采样点能容纳成型滤波器的过渡带每符号采样数 sps20fs/Rs固定为整数便于采样点对齐脉冲成型滚降系数 alpha0.35频谱效率和符号间干扰的折中值滤波器符号跨度 span6根升余弦滤波器的截断长度符号数 numBits4e5 ~ 1e6蒙特卡洛统计所需比特数干信比 JSR-10 ~ 15 dB扫描范围信噪比 SNR0 ~ 12 dB符号信噪比转发延迟 tau_sym0.1 ~ 3 个符号周期可调采样率取20 MHz是基于Fs 2Rs(1alpha)/2这个条件估算的。基带信号单边带宽约0.675 MHz20 MHz的采样率意味着每个符号20个点既能看清波形细节又不会让仿真慢到没法跑参数扫描。滤波器滚降系数0.35是工程上最常见的折中选择0.2太窄、0.5太宽对干扰效果的量级判断影响不大且0.35的旁瓣衰减合适。2.3 干信比JSR的定义与功率对齐转发式干扰仿真里最容易出错的地方是功率定义。JSR干信比定义为JSR_dB 10 * log10(Pj / Ps)其中Pj是接收端干扰信号的平均功率Ps是有用信号的平均功率。这里有个隐藏的坑转发干扰信号是在“截获信号”基础上加增益得到的截获信号的功率在有噪声和无噪声时差异很大所以增益系数G的计算必须基于实际送入信道的信号序列而且最好先算待转发信号的功率再反推增益。另外信噪比SNR的定义我统一采用符号信噪比即信号平均功率与噪声平均功率之比而不是Eb/N0。这两者对于BPSK在基带等效模型中数值上等价但如果你要用理论误码率公式验证仿真平台务必保持同一套定义否则对不上曲线会查错查到怀疑人生。3. 核心Matlab实现与模块设计意图3.1 发送端从比特流到成型波形发送端做的事情是随机比特 → BPSK符号映射0映射为-11映射为1→ 上采样 → 根升余弦滤波。% 系统参数 Rs 1e6; % 符号速率 1Mbps fs 20e6; % 采样率 20MHz sps fs / Rs; % 每符号采样数 20 numBits 4e5; % 蒙特卡洛单次统计比特数 alpha 0.35; % 滚降系数 span 6; % 滤波器符号跨度 % 发送端 bits randi([0 1], numBits, 1); % 随机比特 symTx 2 * bits - 1; % BPSK 映射: 1-1, 0--1 upTx upsample(symTx, sps); % 上采样每符号sps个点 htx rcosdesign(alpha, span, sps, sqrt); % 根升余弦脉冲 s filter(htx, 1, upTx); % 成型滤波s为发送基带信号这里为什么用根升余弦滤波器而不是普通矩形脉冲因为根升余弦在发送端和接收端各用一次后级联等效为升余弦滤波器理论上在最佳采样点处不会引入符号间干扰ISI。这个特性对本次仿真有一个重要影响在无干扰时采样点处的信号分量就是干净的能量叠加而在转发干扰存在时延迟信号引入的ISI才能完全归因于干扰本身而不是滤波器设计缺陷。3.2 干扰链路延迟、增益与叠加转发式干扰的matlab实现核心就这么几步对发送信号s做延时的样点搬移计算干扰功率和信号功率按目标JSR反推增益然后叠加。% 转发式干扰链路 tau_sym 1.0; % 转发延迟符号周期数 JSR_dB 0; % 干信比 delaySamples round(tau_sym * sps); % 延迟样点数 % 延迟转发把前半段补零后段搬移 jDelay [zeros(delaySamples, 1); s(1:end - delaySamples)]; % 功率对齐先算功率再按JSR定增益 Ps mean(abs(s).^2); Pj_delay mean(abs(jDelay).^2); G sqrt(10^(JSR_dB/10) * Ps / Pj_delay); j G * jDelay; % 转发干扰信号功率对齐这一步是网上很多简略代码都没写对的。直接拿一个常数乘以延迟信号、不去算实际功率会导致实际JSR严重偏离设置值。用sqrt(10^(JSR_dB/10) * Ps / Pj_delay)计算增益本质上是把干扰功率校准到目标水平这被称为“恒定功率转发模型”。还有一种“恒定增益转发模型”即G固定、JSR随信号功率波动工程上更接近真实干扰机行为但做参数扫描时恒定功率模型更容易得到干净的性能对比结果。如果你要模拟噪声调制转发再加一行jNoise sqrt(Pj_delay / 10^(JNR_dB/10)) * randn(size(jDelay)); j G * (jDelay jNoise);其中JNR_dB是干扰机内部噪声比这个参数控制转发波形与原始信号的相干程度。3.3 接收端与误码率统计接收端是匹配滤波加采样判决但要注意滤波器延迟对齐——这是新手最容易出错的地方。% 信道叠加干扰和高斯白噪声 SNR_dB 10; Pn Ps / (10^(SNR_dB/10)); % 噪声功率 n sqrt(Pn/2) * (randn(size(s)) 1j*randn(size(s))); % 复基带噪声 rx s j n; % 接收匹配滤波 hrx htx; % 发送和接收共用根升余弦 y filter(hrx, 1, rx); % 匹配滤波输出 % 采样判决注意群延迟对齐 totalDelay span * sps; % 发端收端两级滤波器总延迟 idx totalDelay 1 : sps : totalDelay numBits * sps; ySym y(idx); bitsHat real(ySym) 0; % 极性判决 ber sum(bitsHat ~ bits) / numBits; % 误码率为什么采样索引要从totalDelay1开始根升余弦滤波器h的长度是spansps1它本身带有一个群延迟。发送滤波贡献了spansps/2个样点的延迟接收匹配滤波又贡献了spansps/2所以符号峰值的实际对齐位置偏移了spansps个样点。不把这个偏移量算进去采样的会是符号边缘而不是峰值点得到的误码率会明显大于理论值而且看起来似乎“干扰很严重”——这是虚假结果。3.4 主循环参数扫描的蒙特卡洛骨架单次仿真只能得到一个点的BER性能评估需要做参数扫描。通常外层循环遍历SNR或JSR内层做多次独立蒙特卡洛试验取平均降低统计波动。JSR_list -10:5:15; SNR_fixed 10; ber_results zeros(size(JSR_list)); for k 1:length(JSR_list) JSR_dB JSR_list(k); errCount 0; totalBits 0; for trial 1:20 % 每次trial重新生成比特、发送、干扰、接收、统计 % 累加errCount和totalBits end ber_results(k) errCount / totalBits; end蒙特卡洛次数要结合目标误码率量级来定。若某一条件下的BER大约是1e-4单次仿真用4e5比特只能期望约40个误码统计波动约±15%如果做20次平均波动能压到±3%以内。反之如果BER低到1e-64e5比特根本发现不了误码必须增加符号数。这是仿真的基本统计常识后面踩坑部分再细说。4. 仿真结果解读转发干扰对性能的量化影响4.1 无干扰基线验证仿真平台对不对先看这步任何干扰性能评估前先跑一遍无干扰链路把BER仿真值和理论公式对比。只有平台基线正确后面测出的干扰影响才是可信的。在SNR10dB时理论误码率约为2.4e-6量级用4e5比特、20次蒙特卡洛平均仿真值应该在1e-6~5e-6区间波动。如果偏差超过一个数量级先查三处功率定义是否是符号信噪比采样点是否对齐到符号峰值噪声是否按复基带方式拆分到实部虚部各Pn/2。基线验证通过后再把转发干扰链路加进来这时观察到的BER增加就完全来源于干扰。4.2 JSR扫描下的BER曲线恶化不是线性的我实测下来的典型趋势是在SNR10dB固定时JSR从-10dB扫到15dBBER变化大致呈“三段式”。JSR在-10dB以下时干扰功率只有信号的十分之一对判决点的扰动有限BER比无干扰时有所抬升但仍在可通信范围内1e-4附近波动。JSR从-5dB升到0dB是恶化最快的区间BER会直接掉到1e-2量级——通信质量从“基本可用”变成“基本不可用”。JSR超过5dB以后BER继续恶化但速度放缓最终逼近0.3左右接近随机猜测但受残余相位相关性影响略低于0.5。这个“非线性”特征非常重要。它说明转发式干扰不是简单的“功率越大越好”而是在干信比接近甚至略低于有用信号功率时性价比最高。从抗干扰设计的角度看你关心的是“让干扰机需要多大的JSR才能把BER压到某个阈值以下”仿真中用JSR-BER曲线来回答这个问题再直观不过。4.3 星座图与眼图从“两点簇”到“弥散云”BER曲线是宏观统计星座图则能直观展示干扰在信号空间里做了什么。无干扰时星座图上就是干净的两簇点一簇在实部1附近一簇在实部-1附近噪声让它们形成对称的圆形弥散。加入τ1个符号周期的转发干扰后星座图会明显变化原来“左右两簇”变成“左右各分出一支向原点挤压”的特征而且随着JSR增大两簇逐渐连成一片判决边界实轴零点附近出现大量散点——这些就是误码来源。眼图更明显。无干扰时的眼图眼高饱满、眼宽清晰转发干扰叠加后眼高明显收窄眼皮变厚交叉点抖动增加。特别是延迟接近一个符号周期时上一符号的尾巴正好落在当前符号的采样点上眼图会出现明显的“双线”结构。我建议在仿真里加一段scatterplot和eyediagram的代码这个视觉对比放进论文或者报告里很有说服力。4.4 转发延迟量对干扰效果的影响规律延迟τ不是一个无所谓的参数它直接决定干扰是否有效。我在仿真里扫了0.1、0.5、1.0、1.5、2.0倍符号周期几种延迟得到几条值得记录的规律。延迟为0.1个符号周期时干扰效果很弱。因为脉冲成型滤波器在采样点附近的响应是缓慢变化的0.1个符号的偏移带来的干扰分量很小。延迟为0.5个符号周期时干扰效果明显增强但不如整符号延迟。延迟取1个符号周期时干扰效果通常最强——延迟信号的前一个符号峰值正好叠加到当前符号采样点形成确定性破坏而且这个叠加的极性取决于相邻比特的状态四种组合里有强化也有翻转误码率呈现复杂但可复现的统计特性。延迟继续增大到2个符号周期干扰效果反而可能略降。原因是脉冲成型滤波器跨度为6个符号延迟2个符号时干扰信号在采样点处的响应已经进入滤波器尾部旁瓣衰减让叠加能量变小但如果你用的成型滤波器跨度很小、旁瓣很高这个规律会改变。所以做参数扫描时延迟范围至少要覆盖0.5~2倍符号周期才能看到完整的影响趋势。5. 那些文档里不会写的坑与扩展思路5.1 滤波器的群延迟最容易搞错的采样点说实话我做第一次仿真时在这里翻过车。当时没对齐群延迟采到的BER在SNR10dB时高达1e-3比理论值大了几百倍。起初以为是转发干扰算法写错了排查半天最后发现是采样点位置偏了——滤波器把波形整体往右推了span*sps个样点我却在没补偿的位置采样。这个坑常见到几乎每个做成型滤波仿真的新手都会踩一遍。建议养成一个习惯凡是涉及根升余弦滤波的仿真抽样判决的索引计算永远是totalDelay 1 : sps : totalDelay numBitssps不要用1:sps:numBitssps这种“裸索引”。同时可以加一段诊断代码直接打印无噪声条件下接收符号序列的均值如果是1和-1的干净两簇说明对齐正确否则调整索引。5.2 比特数不够BER曲线全是毛刺第二个高频踩坑点是蒙特卡洛统计量不足。做参数扫描时有些人为了追求仿真速度每个点只跑2万比特结果BER在1e-3附近剧烈抖动曲线像刀片一样乱跳。为什么因为2万比特里若只有20个误码误码数的相对波动就是百分之几十量级。一个实用的准则是目标BER越低需要的比特数越大。想测1e-4量级的BER至少跑50万比特想测1e-5至少500万比特并且每个仿真点最好做多次独立试验取平均。另外要注意一点如果你的仿真平台在“无干扰、SNR10dB”条件下的理论BER本身就在5e-6附近那么想在这个SNR下对比“无干扰”和“JSR-10dB干扰”的差异需要的比特数可能高达数百万——否则差异会被统计噪声淹没。5.3 仿真同步假设让结果偏乐观我在仿真里默认了一个理想化条件接收端知道载波相位的绝对同步并且判决时刻精确对齐到符号峰值。这在数学上很干净但实际接收机做不到。转发式干扰如果采用移频转发或者带有随机相位的延迟转发接收端的载波同步环路本身就会被干扰拉动产生额外的判决损失。所以如果你要分析更贴近实际的系统性能可以在信道模型中加一个载波相位误差项或者仿真中用锁相环PLL模型而不是理想相位参考。这个修正会让BER比理想同步假设下高出不少尤其是在JSR接近0dB和更高时差距最明显。从学术严谨性角度看论文里最好注明“本仿真采用理想同步假设”否则评审会质疑结果的乐观偏差。5.4 再往前走抗干扰与干扰检测的扩展方向这个仿真做完后顺着性能评估的结果可以自然延伸出几个后续课题都是很好的毕设或论文方向。一是加抗干扰手段后再评估。BPSK本身没有任何扩频增益对转发式干扰几乎裸奔。如果把调制方式换成直扩BPSKDSSS-BPSK转发干扰由于延迟失配会部分落入扩频码相关旁瓣误码率会有明显改善。你可以对比“无扩频”和“扩频增益10dB、20dB”在相同JSR下的BER之差这个结果对工程很有参考价值。二是做干扰检测与识别。既然转发式干扰的特征是信号高度相关可以在接收端对采样序列做自相关分析提取时延相关峰作为干扰特征设计一个转发干扰检测器。检测概率与JSR、延迟量之间的关系又是一个独立研究点。三是把任务拓展到更复杂的调制样式比如QPSK、8PSK甚至OFDM。转发干扰对相位判决类系统的损伤机理是共通的但每种系统的星座点位置不同对相位旋转和符号间干扰的容忍度也不同。OFDM因为子载波间隔窄转发干扰的延迟还可能造成子载波间干扰这个效应做频域分析会很有意思。我个人在做完这套仿真后最大的体会是大家都在追求代码写得多炫、多大但实际上BPSK加转发干扰的Matlab实现也就百行以内难点全在对“判决时刻”和“功率对齐”这些细节的把控。仿真结果跑出来的那一刻看看星座图上原来干净的两簇点变成一片弥散再对照BER曲线从1e-5跌到1e-2你会对“转发式干扰为什么被称为瞄准式干扰”这件事有远比教科书生动得多的理解。如果你也在跑类似仿真卡在结果对不上不妨先检查一下采样点索引和JSR的功率对齐——这两个地方对了问题通常就解决了一大半。
返回列表