ARTICLE DETAIL

资讯详情

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

TDCS低截获信号仿真:变换域通信原理与MATLAB实现

TDCS低截获信号仿真:变换域通信原理与MATLAB实现 简介这是一份面向通信工程与信号处理研究者的TDCS变换域通信系统仿真资源聚焦低截获LPI与抗截获技术适合正在学习扩频通信、军事安全通信或需要快速搭建TDCS仿真环境的读者。资源压缩包仅5KB共包含12个Matlab.m文件覆盖调制、解调、干扰建模、序列生成等关键算法模块主程序main.m负责整体仿真流程mseq.m用于生成伪随机调制序列interference.m模拟干扰环境多组modulation与demodulation脚本则提供不同变换域处理思路pha.m辅助相位分析。已有189人学习下载。通过研读并运行这些代码可以直观理解TDCS采用类似噪声的基函数代替传统载波调制从而降低信号被侦测概率、增强抗截获性能的原理同时掌握变换域通信系统的实际实现方法为后续开展低截获通信技术研究提供可复用的代码基础。1. TDCS 与 lpi signal为什么说“变换域”是抗截获的底气拿到“TDCS.rar_lpi signal_TDCS_低截获_变换域_抗截获”这个标题时我第一反应是这多半是一个带仿真代码的 TDCS 工程包想让人去复现并验证“变换域通信系统为什么能抗截获”。TDCS 的核心思路并不复杂先感知当前电磁环境把被干扰占用的频段剔掉在剩余频段上用随机相位构造一组看起来像噪声的基函数再用这组基函数携带数据。接收端只要掌握同样的频谱掩蔽和随机相位就能在很低信噪比下恢复信号而截获接收机即使看到这段波形也很难判断它是不是通信信号。这就是 lpi signal 的本义。这篇文章适合通信硕博、射频工程师和算法转工程的同学内容会从原理讲到可复现的 MATLAB 代码再讲到 LPI 指标怎么仿真、参数怎么调、哪里最容易翻车。2. 变换域通信原理与基函数构造频谱掩蔽、随机相位和接收恢复2.1 为什么把工作搬到“变换域”低截获性能才会更好传统的低截获手段主要靠扩频。直接序列扩频把信号能量分摊到很宽的频带上功率谱密度低看似难被发现但它的伪码周期、码片节奏在实际信号里会留下周期性特征。截获接收机只要做一次二阶统计或双谱分析就能把伪码周期识别出来然后用匹配伪码的滤波器去压缩处理信号照样能捞出来。跳频则靠载波随机跳变问题是跳频图案的统计规律一旦被积累很容易被盲解调算法估计出来。TDCS 换了一条路它不固定自己的频谱模板而是“环境是什么样我就长成什么样”。发射机先对目标频段做一次快速傅里叶变换得到背景噪声和干扰的功率谱再根据这个功率谱画出一个 0/1 掩蔽向量干扰强的子带置 0干净的子带置 1然后把可用的子带配上随机相位做 IFFT 得到时域基函数。因为相位随机基函数的时域波形在统计上和幅度高斯分布的噪声几乎无法区分因为掩蔽随环境变化信号频谱也跟着环境变不是教科书里那种固定谱线结构。能量检测器会发现“这一段噪声功率略高”但拿不出稳定的频域特征去确认它是有用信号。和 OFDM 对比会更直观。OFDM 虽然也是多子带并行传输但每个子带的输入星座点来自 QAM 集合子载波之间等间隔排列谱线上有明显峰值循环前缀又让它在循环频谱密度上留下周期性特征。TDCS 的子带相位是随机数没有星座格子也没有等间隔导频截获机最熟的“找谱线、估参数”套路在这边不好使。这也就是标题里“变换域”三个字的分量换的不只是处理位置而是把通信波形的设计从“固定星座映射”换成了“随环境调整的随机映射”。2.2 基函数生成的五个步骤掩蔽阈值、归一化和随机相位我一般在工程里把基函数生成拆成五步每一步都可以单独出指标、出测试用例。第一步是频谱感知。取一段时域采样做点数足够多的 FFT比如 N512 或 N1024再对幅度平方做多次平均得到背景功率谱估计 P(f)。实际系统里如果采用协作感知可以把频谱占用信息通过控制信道广播给收发两端。第二步是掩蔽估计。常见做法是设一个阈值低于阈值认为干净高于阈值认为被干扰占用。阈值怎么给很讲究我常用 threshold mean(P) k * std(P) k 取 1 到 3。k 越大可用的子带越少信号越干净但可用带宽下降k 越小占用率升高频谱环境适应性强但可能把干扰子带也放进来。下面这张表是我习惯的起点不同环境里要重新标定。k 值典型占用率信号特点适用场景1.00.6~0.8带宽大频谱环境适应强干扰较少、追求速率2.00.4~0.6均衡常规起调值3.00.2~0.4干净抗截获性好强干扰/电子对抗环境第三步是归一化。凡是被掩蔽选中的子带频域幅度统一设为 1未选中的设为 0。这一步保证后面每个子带贡献相同的能量基函数总能量只由可用子带数量决定。第四步是随机相位。用密钥种子生成每个可用子带的相位相位在 0 到 2π 上均匀分布。这个随机相位就是低截获的关键也是收发两端共享的“软密钥”。第五步做 IFFT得到时域基函数 b[n]。如果直接就用地用它的峰均比往往偏高后面还要做 CCDF 筛选或限幅处理。基函数出来后数据映射常用两种。第一种是反极性 BPSK发比特 0 就发送 b[n]发比特 1 就发送 -b[n]接收端做一个相关判决实现最简单。第二种是循环移位键控CSK把基函数循环移动 M 个相位每个相位代表一组比特比如 4 个移位代表 2bit传输效率上去但接收端需要并联 M 个相关器。TDCS 仿真包里最常见的是第一种因为用来验证抗截获链路足够快。2.3 接收端恢复的关键相关解调、同步和掩蔽版本号接收端要解调前提是能重建和发射端完全一致的频域向量 B[k] A[k]·exp(j·theta_k)。这里 A[k] 是频谱掩蔽theta_k 是随机相位。恢复过程可以完全放在频域接收符号做 FFT 得到 R[k]然后计算判决量 z real( sum( conj(B[k]) * R[k] ) ) z 大于 0 判为 1否则判为 0。这个结构和匹配滤波是一回事只是匹配滤波器被放到变换域里构造。但有两个工程细节仿真代码经常忽略。第一是同步。TDCS 基函数时域波形接近噪声用传统的延迟相关同步法很难找到可靠的符号边界。常规做法是在每个数据帧前面插入一段已知导频基函数接收端用本地导频做滑动相关相关峰出现的位置就是符号起点。第二是掩蔽版本号。掩蔽 A[k] 是随环境变化的发射端切换到新掩蔽之后如果接收端还在用旧掩蔽重建基函数相关值会直接塌掉。所以 TDCS 链路里必须有一个浅层控制信道把当前的掩蔽版本号或随机相位更新计数传给对端。这一点在 TDCS.rar 这类学习型代码里经常被省略能跑通二进制对称信道但拿到真实信道里就会变成玄学问题。2.4 处理增益从哪里来为什么它和低截获不矛盾扩频系统的处理增益来自带宽扩展比。TDCS 的处理增益来自“可利用子带数”如果总子带数为 N掩蔽后可用子带数为 M那么匹配滤波后信噪比大约会提升 10·log10(M) 分贝。比如 N512、M256 时处理增益约 24dB。这个增益是合法接收端通过知道 B[k] 拿到的而侦察接收机不知道 B[k]它只能得到整个带宽内的总功率拿不到相干积累增益。这就是 TDCS 能做低截获的根本原因收发双方用随机相位交换带宽换增益截获端却换不到。需要提醒的是处理增益越高不等于越安全。如果 M 太大频谱占用率过高信号的总功率分散在宽频带上虽然单位带宽功率低但会形成一片连续隆起的噪声底和周围环境噪声不一致反而容易被发现。所以实际设计里要在“可用子带尽量多”和“频谱背景尽量自然”之间找平衡这个取舍到第 4 章再展开。3. 用 MATLAB 复现 TDCS.rar 最小链路参数表、发射代码与误码率验证3.1 仿真参数表和频谱掩蔽生成函数先给一组我用来起调的参数能复现出一个稳定工作最小链路。参数取值说明FFT 点数 N512子载波总数越大频率分辨率越高采样率 fs1 MHz仿真带宽实际按波形带宽换算占用率 used_ratio0.5可用子带数占 N 的比例可用子带数 num_used256由 N 乘占用率得到随机种子 seed2024决定随机相位收发两端一致调制方式BPSK反极性映射判决最简单符号数4000足够看误码率曲线第一步是生成频谱掩蔽和频域基函数。我在仿真里习惯把基函数生成写成独立函数后面所有模块都能调用。function B tdcs_base(N, used_ratio, seed) % 生成 TDCS 频域基函数向量 B % B A .* exp(1j * phase) % A(k)1 表示第 k 个子带可用0 表示被干扰/占用 num_used round(N * used_ratio); rng(seed); used_idx randperm(N, num_used); % 随机挑可用子带 A zeros(N, 1); A(used_idx) 1; % 频谱掩蔽 phase 2 * pi * rand(num_used, 1) - pi; % 随机相位 B zeros(N, 1); B(used_idx) exp(1j * phase); % 可用子带幅度归一为 1 end这段代码里randperm(N, num_used) 模拟频谱感知结果真实系统里这里是根据阈值判出来原本就干净的子带不会随机挑但仿真里随机挑用来验证链路本身是完全成立的。随机相位 exp(1j*phase) 的幅度恒为 1这是为了保证每个可用子带贡献相同能量如果幅度不归一某些子带会突出频谱特征马上露馅。seed 参数两端共享MATLAB 里 rng(seed) 保证收发双方生成同一条相位序列。3.2 发射端调制与接收端相关解调发射端拿基函数 B 和待发送比特做反极性 BPSK 调制。对第 k 个符号如果符号值为 d频域发送向量就是 B·dIFFT 之后得到时域发送波形。N 512; fs 1e6; used_ratio 0.5; seed 2024; B tdcs_base(N, used_ratio, seed); % 数据位与 BPSK 符号 bits randi([0 1], 4000, 1); sym 2 * bits - 1; % 0 - -1, 1 - 1 % 发射时域波形每列一个符号 tx zeros(N, length(sym)); for k 1:length(sym) tx(:, k) ifft(B * sym(k)); end这里 ifft 默认实现没有做能量归一化所以每一列波形的能量等于子带数 num_used 除以 N 再乘符号能量。换句话说信号功率会随 N 和占用率一起变。这样写的好处是好懂坏处是换参数后功率标定不直观。严谨的仿真应该把每个符号归一化到单位能量也就是发 ifft(B * sym(k) / norm(B))我这里保留不归一的形式因为接下来加噪声时按实际信号功率换算结论等价。接收端解调同样放在频域。接收向量做 FFT 后用 B 的共轭做匹配% 加复高斯白噪声 snr_dB 8; snr 10^(snr_dB / 10); signal_power mean(abs(tx(:)).^2); noise_power signal_power / snr; % 接收端总噪声功率 noise sqrt(noise_power / 2) .* (randn(size(tx)) 1j*randn(size(tx))); rx tx noise; % 频域匹配解调 R fft(rx, N); z real(sum(conj(B) .* R, 1)); % 每个符号得到一个标量 rx_bits double(z 0).; % 大于 0 判 1 % 误码率 ber mean(rx_bits ~ bits);判决量 z 的本质是接收向量在 B 方向上的投影。因为 B 的相位随机时域上看起来全是噪声但频域投影会把 256 个子带的能量相干叠加起来信噪比被累积到 z 上。噪声部分因为是随机复高斯投影后仍然高斯不会出现相关积累所以这实际就是一个匹配滤波器。参数里 snr_dB 是按信号平均功率对噪声功率定义的如果改成标准的 Eb/N0 定义需要把每个符号能量单独归一后面小节会给扫点结果。3.3 扫 SNR 的误码率曲线与理论值对比光测一个点不够我把上面的收发流程包成循环扫 0 到 12dB并对比理论 BPSK 误码率。EbN0_dB 0:2:12; EbN0 10.^(EbN0_dB / 10); ber_sim zeros(size(EbN0)); ber_theory qfunc(sqrt(2 * EbN0)); % 理论 BPSK for i 1:length(EbN0) snr EbN0(i); signal_power mean(abs(tx(:)).^2); noise_power signal_power / snr; noise sqrt(noise_power / 2) .* (randn(size(tx)) 1j*randn(size(tx))); rx tx noise; R fft(rx, N); z real(sum(conj(B) .* R, 1)); rx_bits double(z 0).; ber_sim(i) mean(rx_bits ~ bits); end semilogy(EbN0_dB, ber_sim, o-, EbN0_dB, ber_theory, x-); grid on;跑出来正常情况下仿真点和理论点基本贴合高信噪比时会有少量偏差。偏差来源有两个一是 B 不是完美的白噪声它只在 256 个子带上置了幅度其他子带为 0匹配滤波器实际上等效于 256 条子信道的最大比合并而 b[n] 的时域包络并不平整偶尔会出现深衰落点二是这里没有做信道均衡和符号同步出自白噪声信道下损失不大。如果曲线在低信噪比明显抬高先检查信号功率是不是用整个 FFT 带宽平均的这是非常容易犯的标定错误。3.4 顺手测一下 CCDF给后续限幅一个底数TDCS 的基函数和 OFDM 一样有多载波峰均比问题。随机相位 IFFT 后时域信号是大量独立子载波的叠加峰均比经常到 12dB 以上。给射频前段加限幅前先用 CCDF 把当前基函数的分布量化。% 计算 b 的峰均比统计 b ifft(B); env_power abs(b).^2; papr env_power / mean(env_power); papr_db 10*log10(papr); % 画 CCDFP(PAPR x) x 0:0.5:16; ccdf zeros(size(x)); for i 1:length(x) ccdf(i) mean(papr_db x(i)); end % 找 0.1% 概率对应的 PAPR 门限 papr_999 x(find(ccdf 1e-3, 1));这里算出来的 papr_999 通常落在 11~14dB 之间。如果后面做限幅直接把大于这个门限的电平压到门限再观察误码率损失损失在 0.5dB 以内是常见可接受范围。CCDF 曲线是判断随机相位种子是否有问题的快速工具一个合格的基函数PAPR CCDF 应该和理想复高斯白噪声接近如果出现明显陡峭下降说明相位随机性不够可能存在子带相位聚集。4. 抗截获能力怎么评估截获概率、循环谱与频谱占用参数的取舍4.1 用能量检测器仿真算截获概率LPI 指标最核心的是截获概率。工程上常以“截获接收机在某观测窗口内做出存在判决的概率”来量化。最简单的截获机模型是能量检测器在带宽 W、时间 T 内计算信号能量超过门限就判定存在。把门限设成使虚警率 Pfa 1e-3再统计有 TDCS 信号时的检测概率 Pd用这个仿真就能对比 TDCS 和普通 BPSK 的低截获优势。% 截获接收机能量检测蒙特卡洛仿真 Ntrials 2000; M 256; % 观测样点数对应观测时间 Pfa 1e-3; % 纯噪声估计门限 noise_ref randn(M, Ntrials) 1j*randn(M, Ntrials); energy_noise sum(abs(noise_ref).^2, 1); threshold quantile(energy_noise, 1 - Pfa); % 保证虚警率 1e-3 % 对 TDCS 信号做能量检测 snr_dB -10:2:6; Pd zeros(size(snr_dB)); for i 1:length(snr_dB) snr 10^(snr_dB(i) / 10); % 生成一个 TDCS 符号并做功率归一 sig ifft(B); sig sig / sqrt(mean(abs(sig).^2)); sig_power mean(abs(sig).^2); noise_power sig_power / snr; noise sqrt(noise_power / 2) .* (randn(M, Ntrials) 1j*randn(M, Ntrials)); r repmat(sig, 1, Ntrials) noise; E sum(abs(r).^2, 1); Pd(i) mean(E threshold); end % 观察信噪比低于约 -6dB 时 Pd 迅速掉到 0这段代码里关键参数是 M 和 Pfa。M 越大能量检测器积累越久截获能力越强所以对抗低截获信号时截获机会用长观测时间去换检测增益。TDCS 对抗能量检测靠的就是“把频谱摊薄、让单点能量只比噪声底略高”。在仿真里你会发现普通 BPSK 信号在 -10dB 下仍有明显频谱突起能量检测器很容易抓到TDCS 在同样信噪比下和纯噪声的判决分布几乎重叠必须把观测时间拉到很长才能勉强识别。4.2 循环谱与双谱特征侦察机还能怎么识别 TDCS能量检测抓不到不代表完全抓不到。通信信号往往存在由符号周期、帧结构、重复前导造成的周期平稳性。TDCS 的随机相位打乱了子载波之间的固定相位关系但当多个符号连续发送时符号速率本身会在循环频率维度留下谱线。也就是说截获接收机可以在循环谱密度CSD上寻找 alpha 等于符号速率整数倍的分量。为了验证自己的实现是否被识别常见做法是计算信号的循环谱观察 alpha0 和 alpha符号速率处的峰值强度。TDCS 比 OFDM 少掉子载波间隔对应的周期分量但反极性 BPSK 仍然带符号刻度所以残留峰不可能完全为零。想进一步压低就随机化符号持续时间或者让基函数每 N 个符号才更新一次把帧周期节奏打散。双谱三阶累积量检测也类似主要看信号相位分布是否对称。TDCS 随机相位在统计上近似拉普拉斯/复高斯双谱幅度会比 QPSK 低很多但残留部分仍可能暴露相位种子相关性。手段检测对象TDCS 表现反制方案能量检测噪声底突起弱降占用率、限幅整形循环谱符号速率、帧周期中随机化符号周期双谱分析固定相位关系弱增加相位随机性模式识别时频图纹理弱到中掩蔽随环境自适应4.3 LPI 参数取舍占用率、基函数更新周期与帧长设计抗截获不是单一指标是在误码率、带宽效率、检测概率三者之间做生意。占用率 high0.7 以上合法接收端处理增益大、速率高但频谱底噪隆起明显能量检测器容易抓。占用率低0.3 以下信号更像噪声底抗截获好但速率也低合法接收端工作信噪比要更高才能维持误码率。基函数更新周期也一样。随机相位每符号更新一次截获端几乎拿不到稳定特征但接收端也要跟着换相关性同步压力极大。常规做法是把基函数重复使用几十个符号形成一个“块”这样合法接收端只要在块开始处做一次基函数同步块内直接解调。代价是块结构会在循环谱上形成新的周期特征。帧长的选择建议按 4 到 16 倍符号周期设置并用伪随机变化打破固定帧周期。我的起始参数是占用率 0.4、随机相位每个块更新一次、块长 16 个符号、帧头用 CAZAC 序列做同步。这个配置下合法接收端工作信噪比在 2~4dB 范围能量检测器想稳定发现则需要至少 6~8dB 的截获信噪比。这样两者的工作门槛拉开 4dB 以上就算有一定算法增益也还有余量。别把目标设成“永远发现不了”那是物理上做不到的工程目标是“让截获端需要比合法接收端多很多资源才能解调”。5. TDCS 仿真的 5 个常见问题排查误码率、峰均比与同步坑5.1 接收端基函数重建失败误码率稳定在 0.5 附近现象把仿真跑起来误码率从第一个点开始就在 0.5 浮动怎么调 SNR 都不下去。 原因收发两端的 B 向量不一致。最常见的是随机种子没有复位或者接收端重新调用 tdcs_base 时传入的 used_ratio 和应用在发射端的数值不同。因为随机相位一个数字对不上相关投影就完全失效输出接近猜硬币。 解决在仿真中把 B 向量直接传递而不是每次重新生成如果必须重生成先断言 norm(B_tx - B_rx) 等于 0。另外在代码里先使用相同 seed 调一次再把 seed 作为全局参数避免在循环里被重新赋值。5.2 限幅削波一加误码率出现不降的平层现象发射端做了 PAPR 限幅信噪比提高后误码率不再下降停在某个值比如 1e-3。 原因限幅削掉了波峰等于在频域注入与 B 相关的失真。失真功率不随噪声降低所以高信噪比时误码率被“失真底”卡住。这是 OFDM 与 TDCS 共性的问题但 TDCS 随机相位更容易出现极高峰值限幅后失真更严重。 解决不要做硬限幅改用迭代限幅滤波ICF或者用选择映射法生成多组随机相位候选选 PAPR 最低那一组而不是限幅。选择映射法每个块需要额外传输相位种子索引但这个开销通常比误码率平台的代价小得多。把 CCDF 里 0.1% 高概率对应的 PAPR 门限设为选择标准通常选 8~9dB 以内。5.3 频谱占用率选得过高掩蔽等于没做现象仿真时误码率正常但放到截获概率仿真里Pd 在很低的信噪比下就接近 1抗截获形同虚设。 原因占用率超过 0.7 后TDCS 信号的功率谱密度在很宽频段上高于背景噪声几个分贝。能量检测器只统计总能量TDCS 可用子带越多总能量越高检测越容易。频谱上虽然相位随机但幅度上的“高台”一眼就被识别。 解决把 used_ratio 从 0.5 降到 0.3 再跑一次观察误码率损失和 Pd 变化。占用率降低后合法接收端处理增益变小误码率曲线右移但 Pd 下降更快往往能换来更深的工作信噪比间隔。如果必须高占用率可以引入功率控制让发射总功率随占用率成比例下调把频谱底恢复到接近噪声。5.4 基函数更新过快频谱连续性反而变差现象周期性地看到接收星座点在某一时刻大面积滑落误码率呈周期性波动。 原因我见过把随机相位每个符号都重新生成的实现。这样每个符号的 B 都不同符号之间相位跳变频谱上出现大量宽带毛刺实际上破坏了频谱平坦性。而且接收端如果同步稍有偏差相关用的 B 和实际发送对不上误码率忽高忽低。 解决把基函数重复用一整个块块内保持 B 不变只在块边界更新随机相位。顺便在块边界插入已知导频用于同步和信道估计。这个结构既保证频谱连续又保留随机性。块长我建议从 8 个符号起调太长会让循环谱特征变强太短则同步压力大。5.5 同步相关峰被多径拉偏移误码率恶化现象单径白噪声信道下误码率正常改成多径信道后误码率在中高信噪比时突然恶化且用普通相关峰定位找不到稳定包络。 原因TDCS 基函数时域上是近随机序列自相关旁瓣不像 CAZAC 序列那么干净。多径扩展一旦超过循环前缀/保护间隔相关峰变成多个分支叠加峰值位置随信噪比游动选错符号边界后 FFT 窗口偏移子载波正交性和 B 的匹配关系同时被破坏。 解决不要在数据符号上找主峰专门在前面插入 CAZAC 前导序列做同步同步完成后再按固定偏移取数据块。如果信道时延扩展过长就在 TDCS 符号里加循环前缀长度取最大时延扩展的 2 到 4 倍。接收端拿到初始符号边界后再做一次频域相位校准抵消残余时偏。6. 再往前走一步用循环谱验证你的 TDCS 实现是否真的“低截获”6.1 循环谱验证识别残留周期特征前面第 4 章说过循环谱是截获方识别调制方式的重要手段。所以验证一个 TDCS 实现到底低不低截获不应该只看它“在噪声里看不见”还要看它在循环谱上有没有残留峰。我习惯把发射波形算一遍循环谱密度对比纯高斯噪声在相同参数下的结果。% 循环谱估算alpha 为循环频率 function S cyclic_spectrum(x, Nfft, alpha) L length(x); t (0:L-1).; X1 fft(x .* exp(-1j*pi*alpha*t), Nfft); X2 fft(x .* exp( 1j*pi*alpha*t), Nfft); S X1 .* conj(X2) / L; end % 用法观察 alpha 0 附近的谱是否有明显峰值 alpha 0; S0 cyclic_spectrum(tx(:), 512, alpha);alpha 0 时循环谱退化为普通功率谱只能验证频谱包络。更有效的做法是让 alpha 等于符号速率的整数倍看是否出现离散冲击。如果出现就要在帧结构上做随机化比如把导频间隔抖动、块长伪随机变化。注意TDCS 不可能消除所有周期特征目标是让这些特征和噪声基底之间的信噪比低于截获机可用的积累增益。6.2 我的验证习惯每种配置都留两个底线值做这套方向久了我最大的教训是别只盯着自己的合法接收端误码率看。每调一个参数我都会固定测两个数一个合法接收端在目标误码率下需要的最低 Eb/N0另一个截获端在 Pfa1e-3 下达到 Pd0.5 所需的最低信噪比。两数之差越大方案越值得投入。想出这样的习惯是因为曾经调了一版很漂亮的 BER 曲线拿到整个系统里才发现截获端更早把我的信号识别出来等于白调。另外一个习惯是每版代码保存随机种子和掩蔽向量版本号。TDCS 的“嫩挂”经常不是算法问题而是收发两端基函数不一致。只要我打开工程先跑一个断言检查发送端和接收端重建的 B 是否一致就可以避开一大半玄学问题。后面再做硬件验证或 FPGA 移植时这组断言还能帮我把仿真参数直接映射到定点实现。希望这些方法和踩坑记录能帮到你把这个方向跑通不难难的是让仿真里的“低截获”在真实接收机面前也站得住我的建议就是永远从截获方的视角主动攻击自己的波形。本文还有配套的精品资源点击获取
返回列表