1. 从LFM到NLFM为什么我们需要更好的脉冲压缩信号如果你接触过雷达信号处理或者正在学习相关的课程那你一定对线性调频LFM信号不陌生。它就像是信号世界里的“万金油”原理简单实现方便通过匹配滤波器进行脉冲压缩后能有效提高距离分辨率。我刚开始做项目时也最喜欢用LFM因为它“稳”不容易出错。但用久了你就会发现它的一个“硬伤”脉冲压缩后的旁瓣太高了。这就像你拍照时主体很清晰但背景里总有一些恼人的、模糊的重影。在雷达里这些“重影”——也就是高旁瓣——会带来大问题。比如一个微弱的目标回波可能被旁边强目标的旁瓣完全淹没导致你“看”不见它或者旁瓣能量太高会被误判为虚假目标干扰你的判断。这时候非线性调频NLFM信号就该登场了。你可以把它理解为LFM的“升级版”或“优化版”。它的核心思想很直接既然LFM信号的频谱接近矩形导致其匹配滤波后的旁瓣性能不理想典型值在-13.2dB左右那我们能不能设计一种信号让它本身的频谱形状就不是矩形的而是某种我们期望的、能压制旁瓣的形状呢答案是肯定的。NLFM信号正是通过非线性的频率变化规律来塑造其发射信号的频谱。这个被塑造的频谱通常就是我们熟悉的窗函数的形状比如汉明窗、汉宁窗、凯泽窗等。这些窗函数在数字信号处理里本来就是用来抑制频谱泄露、压低旁瓣的。现在我们把这个思想“反向工程”一下先选定一个我们希望得到的、低旁瓣的频谱形状窗函数然后反推出能产生这个频谱的时域信号NLFM信号。最后用这个NLFM信号去发射接收后直接用匹配滤波器其系数是发射信号的共轭时间反转进行脉冲压缩理论上就能得到旁瓣很低的输出结果。所以NLFM信号设计的根本目的就是在不显著损失信噪比的前提下极大地提升脉冲压缩后的主副瓣比同时保持与LFM信号相近的距离分辨率。这对于现代高性能雷达尤其是在强杂波背景下检测小目标、或者需要高精度成像的场景意义重大。接下来我们就抛开复杂的公式推导直接上手看看怎么用最实用的方法把NLFM信号“造”出来。2. 相位逗留法手把手设计你的第一个NLFM信号设计NLFM信号的方法有好几种比如驻定相位法、频域加权法、最优化方法等。但对于工程师来说相位逗留法或叫驻定相位法结合窗函数法是最直观、也最容易在MATLAB里实现的。我们不需要深究其背后艰深的数学证明关键是理解它的工程实现步骤并能在代码里跑通。整个设计流程可以看作一个“频谱形状-时域信号”的逆向映射过程。我们目标是得到一个时域信号s(t)它的幅度是恒定的方便发射机功率放大但相位θ(t)是精心设计的使得s(t)的频谱幅度|S(f)|逼近我们选定的窗函数W(f)。2.1 设计流程拆解五步走策略我们来一步步拆解这个设计过程我会用最直白的语言解释每一步在干什么。第一步挑选你的“频谱模具”——窗函数这是设计的起点也是影响最终性能的关键。窗函数决定了你期望的频谱形状。常用的有汉明窗Hamming旁瓣衰减较快第一旁瓣约-41dB但旁瓣衰减速率慢。综合性能好很常用。汉宁窗Hann第一旁瓣约-31dB但旁瓣衰减速率快。有时能获得更好的整体旁瓣性能。凯泽窗Kaiser通过参数β可以灵活地在主瓣宽度和旁瓣电平之间进行权衡非常强大。高斯窗Gaussian理论上没有旁瓣但实际中由于截断会有非常低的旁瓣。你可以根据你对主瓣宽度影响距离分辨率和旁瓣电平的具体要求来选。初次尝试我建议从汉明窗开始它比较均衡。第二步计算群延迟函数 T(f)这一步可以理解为为了得到频谱W(f)信号的频率需要以什么样的“时间表”扫过频带。T(f)表示的是频率达到f时所需要的时间。计算公式来源于驻定相位原理的积分T(f) K_T * ∫从负无穷到f W(v) dv其中K_T T / ∫负无穷到正无穷 W(v) dv。T是你设定的信号脉冲宽度。K_T是个归一化因子确保当f扫过整个带宽时时间刚好从-T/2变化到T/2。在实际的MATLAB计算中“积分”就是“求和”我们会对离散化的窗函数序列进行累加运算。第三步求反函数得到频率函数 f(t)上一步我们得到了T(f)即“频率-时间”关系。但我们设计信号时需要的是“时间-频率”关系即f(t)。所以我们需要求T(f)的反函数f(t) T^{-1}(f)。 问题是这个反函数通常没有简单的数学表达式。怎么办数值插值是我们的好帮手。我们把T(f)和f看作两组数据点然后用插值方法比如线性插值、样条插值去求对于给定的时间点t对应的频率f是多少。在MATLAB里interp1函数干这个活非常顺手。第四步对频率积分得到相位函数 θ(t)有了频率随时间变化的曲线f(t)相位就是频率的积分。这很好理解相位是频率的累积量。θ(t) 2π * ∫从负无穷到t f(v) dv同样在离散域用求和实现。这个θ(t)就是我们最终要的NLFM信号的相位调制函数。第五步生成NLFM复信号最后一步最简单有了相位直接生成复指数信号s(t) exp(j * θ(t))这个s(t)就是设计好的NLFM基带信号。它的实部和虚部就是正交的I、Q两路信号可以直接用于调制发射。2.2 MATLAB实战代码逐行解读与避坑指南光说不练假把式。我们直接上代码用汉明窗设计一个参数为带宽B8MHz脉宽T64μs的NLFM信号。我会在代码中加入大量注释并分享几个我踩过的“坑”。close all; clear all; clc; % 1. 基本参数设置 B 8e6; % 带宽 8 MHz T 64e-6; % 脉冲宽度 64 us int_num 8; % 插值倍数为了精度我们先在高密度点上计算 % 计算采样率和点数基于Nyquist定理至少2倍带宽这里用带宽作为采样间隔的倒数是LFM的常见做法 ts 1 / B; % 采样间隔 N round(T / ts); % 采样点数 t (0:N-1) * ts; % 时间向量 t_centered t - T/2; % 中心化到 -T/2 到 T/2方便理解 % 2. 生成并插值窗函数 % 注意我们是对称地使用窗函数。先生成N点的汉明窗。 wa hamming(N); % N点汉明窗 % 为了后续计算群延迟积分更精确我们对窗函数进行插值增加点数。 wa_interp interp(wa, int_num); % 插值到 int_num*N 点 % 对应的频率轴也需要插值。我们假设信号的频率范围是 -B/2 到 B/2。 f_axis linspace(-B/2, B/2, N); % 中心化的频率轴N点 f_axis_interp interp(f_axis, int_num); % 插值到高密度点 t_axis_interp interp(t_centered, int_num); % 时间轴也同步插值 % 3. 计算群延迟函数 Tg(f) % 公式: Tg(f) K * ∫_{-∞}^{f} W(v) dv - T/2 % 先计算归一化因子 K T / ∫_{-∞}^{∞} W(v) dv % 离散下积分就是求和。窗函数已经中心化求和范围就是整个序列。 K T / sum(wa_interp); % 初始化群延迟数组 Tg zeros(size(wa_interp)); % 用循环计算累积和积分。这里注意我们的频率轴f_axis_interp是从负到正的。 % 累积和从第一个点负频率端开始。 for i 1:length(wa_interp) Tg(i) K * sum(wa_interp(1:i)); % 计算到当前频率点的积分 end Tg Tg - T/2; % 减去T/2使群延迟在时间上中心化 % 4. 求反函数得到 f(t) % 我们现在有 (Tg, f_axis_interp) 的数据对想求对于给定时间t对应的频率f。 % 但Tg可能不是严格单调的实际上因为W(f)是正的积分是单调增的所以Tg是单调的。 % 为了更精确地求反函数我们对时间轴进行更高倍的插值然后查找。 interp_coe_fine 4; % 用于求反函数的精细插值倍数 t_fine_interp interp(t_axis_interp, interp_coe_fine); % 更精细的时间点 % 关键函数interp1。它以(Tg, f_axis_interp)为已知数据查询对于t_fine_interp的f值。 % pchip 插值能保证单调性比线性插值更平滑。 f_from_Tg_fine interp1(Tg, f_axis_interp, t_fine_interp, pchip); % 因为我们最终需要的是和原始插值后时间轴 t_axis_interp 对应的频率所以再降采样回来 f_target f_from_Tg_fine(2:interp_coe_fine:end); % 注意对齐起点 % 5. 对频率积分得到相位 phase zeros(size(f_target)); for i 2:length(f_target) % 离散积分相位增量 2π * 频率 * 时间间隔 % 时间间隔是 ts / int_num因为我们的时间轴是插值后的 phase(i) phase(i-1) 2 * pi * f_target(i) * (ts / int_num); end % 6. 生成NLFM信号 nlfm_signal exp(1j * phase); % 作为对比生成一个相同参数的LFM信号 lfm_signal exp(1j * pi * (B/T) * (t_axis_interp.^2)); % 注意是 pi * B/T * t^2 % 7. 画图分析 figure(Position, [100, 100, 1200, 800]); % 子图1窗函数和群延迟 subplot(2,3,1); plot(f_axis_interp, wa_interp); grid on; xlabel(频率 (Hz)); ylabel(幅度); title((a) 插值后的窗函数汉明); subplot(2,3,2); plot(f_axis_interp, Tg); grid on; xlabel(频率 (Hz)); ylabel(时间 (s)); title((b) 群延迟函数 T(f)); % 子图2频率函数和相位函数 subplot(2,3,3); plot(t_axis_interp, f_target); grid on; xlabel(时间 (s)); ylabel(频率 (Hz)); title((c) 非线性调频曲线 f(t)); subplot(2,3,4); plot(t_axis_interp, phase); grid on; xlabel(时间 (s)); ylabel(相位 (rad)); title((d) 相位函数 \theta(t)); % 子图3信号时域波形实部 subplot(2,3,5); plot(t_axis_interp, real(nlfm_signal)); hold on; plot(t_axis_interp, real(lfm_signal), r--); xlabel(时间 (s)); ylabel(幅度); title((e) 时域波形实部); legend(NLFM, LFM); grid on; % 子图4信号频谱 subplot(2,3,6); N_fft 2^nextpow2(length(nlfm_signal)); freq_axis (-N_fft/2:N_fft/2-1) * ( (B*int_num) / N_fft ); % 近似频率轴 spec_nlfm 20*log10(fftshift(abs(fft(nlfm_signal, N_fft)))); spec_nlfm spec_nlfm - max(spec_nlfm); % 归一化到0dB spec_lfm 20*log10(fftshift(abs(fft(lfm_signal, N_fft)))); spec_lfm spec_lfm - max(spec_lfm); plot(freq_axis, spec_nlfm); hold on; plot(freq_axis, spec_lfm, r--); xlabel(频率 (Hz)); ylabel(幅度 (dB)); title((f) 信号频谱对比); legend(NLFM, LFM); grid on; xlim([-B, B]);几个我踩过的坑和关键提示插值倍数的选择int_num不能太小否则在计算群延迟积分和求反函数时精度不够会导致最终信号的频谱畸变旁瓣性能不达标。一般建议8倍或以上。但也不是越大越好会显著增加计算量。我通常先试8倍如果结果不理想再提高到16倍。频率轴的定义一定要清楚你的频率轴范围。我们设计的是基带信号通常假设中心频率为0频率范围是[-B/2, B/2]。窗函数也是定义在这个频率轴上的。如果范围搞错设计出的调频曲线就是错的。求反函数时的插值方法interp1的插值方法很关键。‘linear’线性插值最简单但可能在曲线拐点处引入误差。‘spline’样条插值或‘pchip’保形分段三次插值更平滑能更好地保持单调性通常效果更好。我上面代码用了‘pchip’。相位积分的初始值相位是相对值通常我们关心的是相位变化。所以积分从0开始即可。但要注意如果你关心绝对相位需要根据系统要求确定积分常数。运行这段代码你就能得到从窗函数到NLFM信号的完整链条图像。你会看到NLFM的调频曲线f(t)不再是LFM那样一条直线而是一条中间变化快、两边变化慢的曲线对于汉明窗这正是为了匹配窗函数的形状。3. 性能优化实战如何把主副瓣比压到-50dB以下用上面的方法设计出的NLFM信号进行匹配滤波脉冲压缩后主副瓣比PSLR大概能到-40dB左右这相比LFM的-13.2dB已经是巨大的提升。但在一些极端要求的情况下比如要探测隐身目标或者在高密度目标环境中-40dB可能还不够我们希望进一步压低旁瓣朝着-50dB甚至更低努力。这需要一些优化技巧。3.1 窗函数组合与加权给你的频谱“微整形”单一的标准窗函数可能无法满足极致的要求。我们可以尝试组合窗将两种窗函数相乘或相加构造一个新的窗。例如W_new(f) Hamming(f) * Kaiser(f, β)通过调整β可以在汉明窗较好的第一旁瓣性能和凯泽窗灵活的旁瓣衰减之间取得折中。你需要手动调整权重或参数观察脉冲压缩后的结果。自定义加权在频域直接对期望的频谱幅度|S(f)|进行微调。比如你觉得-40dB的第一旁瓣可以接受但希望第二、第三旁瓣衰减得更快可以在这些频点位置手动增加一点加权值。这相当于在窗函数设计的基础上做一次“精修”。在MATLAB里你可以先得到初始的W(f)然后生成一个修正向量H(f)令W_optimized(f) W(f) .* H(f)再用这个优化后的窗去重新走一遍设计流程。这里有个简单的组合窗例子我们用汉明窗和布莱克曼窗做一个凸组合% 假设已有汉明窗 wa_hamming 和 布莱克曼窗 wa_blackman alpha 0.7; % 汉明窗的权重 wa_combined alpha * wa_hamming (1-alpha) * wa_blackman; % 对 wa_combined 进行归一化使其最大值为1或面积满足要求 wa_combined wa_combined / max(wa_combined); % 然后用 wa_combined 代替原来的 wa_interp 进行后续计算通过扫描alpha从0到1你可以观察脉冲压缩输出旁瓣的变化找到一个最优值。3.2 迭代优化设计让计算机帮你找最优解上面手动调窗的方法有点“碰运气”。更系统的方法是采用迭代优化算法。思路是我们把脉冲压缩后的输出旁瓣电平比如积分旁瓣比ISLR或峰值旁瓣比PSLR作为优化目标把NLFM信号的调频曲线参数或相位函数作为优化变量建立一个优化问题。一个常用的方法是最小二乘迭代加权法。我简化一下步骤用相位逗留法设计一个初始NLFM信号s0(t)进行脉冲压缩得到输出y0(t)。计算y0(t)的旁瓣区域除掉主瓣附近的部分得到一个误差向量。根据这个误差在频域对期望的频谱W(f)施加一个反比的权重旁瓣高的地方增加权重期望下次迭代在这里压得更低。用加权后的新W_new(f)重新设计NLFM信号s1(t)。重复步骤2-4直到旁瓣性能满足要求或不再显著改善。这种方法可以实现自动化优化但计算量较大。你可以用MATLAB的fmincon、lsqnonlin等优化工具箱函数来实现。这里给一个概念性的代码框架% 定义优化目标函数 function cost nlfm_optimizer(params) % params: 可能是一组描述调频曲线的参数或直接是相位采样点 % 1. 用params生成NLFM信号 s(t) % 2. 对 s(t) 做匹配滤波脉冲压缩得到输出 y(t) % 3. 从 y(t) 中提取主瓣和旁瓣部分 % 4. 计算代价例如cost sum( (旁瓣幅度 - 目标旁瓣电平).^2 ) % 目标旁瓣电平可以设为一个很低的常数比如 -50 dB 对应的幅度值。 end % 调用优化器 initial_params ...; % 初始猜测比如用相位逗留法得到的相位值 options optimoptions(fmincon, Display, iter, MaxIterations, 50); optimized_params fmincon(nlfm_optimizer, initial_params, [], [], [], [], [], [], [], options); % 用 optimized_params 生成最终的优化NLFM信号通过这种迭代我有一次成功将特定带宽和脉宽下的NLFM信号旁瓣压到了-48dB左右。当然优化过程需要耐心调整优化目标和约束条件。3.3 失配滤波最后一公里的“微调”即使优化了NLFM信号本身有时脉冲压缩结果仍不完美或者系统存在一些失真。这时可以引入失配滤波器。顾名思义它不再是严格的匹配滤波器即发射信号的共轭时间反转而是对其进行微调以进一步抑制旁瓣。设计失配滤波器的方法很多比如最小二乘误差准则LS、线性规划法等。其核心思想是在保证主瓣响应比如主瓣宽度展宽不超过5%的前提下最小化旁瓣能量。在MATLAB中你可以使用firls或firpmremez函数来设计一个FIR滤波器作为失配滤波器。% 假设 s_tx 是设计好的NLFM发射信号作为匹配滤波器系数 matched_filter conj(fliplr(s_tx)); % 匹配滤波器 % 设计一个失配滤波器其长度可以比匹配滤波器长以提供更多自由度 filter_order length(matched_filter) 20; % 增加一些阶数 % 定义理想的频率响应在通带内为1在阻带旁瓣区域为0 % 这里需要你根据信号频谱确定通带和阻带边界 f_bands [0, 0.1, 0.15, 1]; % 示例归一化频率[0,0.1]是主瓣通带[0.15,1]是阻带 a_bands [1, 1, 0, 0]; % 对应的理想幅度 mismatch_filter firpm(filter_order, f_bands, a_bands); % 使用Parks-McClellan算法设计 % 脉冲压缩时先经过匹配滤波再经过失配滤波或直接设计一个联合滤波器 % 方法1级联 output_cascade conv(received_signal, matched_filter); output_cascade conv(output_cascade, mismatch_filter); % 方法2设计一个综合滤波器 composite_filter conv(matched_filter, mismatch_filter); output conv(received_signal, composite_filter);使用失配滤波需要小心因为它会引入一定的信噪比损失通常很小零点几dB和主瓣展宽。你必须在旁瓣抑制、主瓣宽度和信噪比损失之间做一个权衡。在我的经验里对于已经优化过的NLFM信号失配滤波通常能再带来2-5dB的旁瓣改善。4. 多普勒效应NLFM的阿喀琉斯之踵与应对策略NLFM信号有一个众所周知的缺点多普勒敏感性。这意味着如果探测的目标有径向速度回波信号会产生一个多普勒频移。对于LFM信号这个频移主要导致脉冲压缩后主峰的位置距离发生偏移距离-多普勒耦合但主瓣形状和旁瓣电平变化相对不大。但对于NLFM信号多普勒频移会破坏其精心设计的频谱形状与匹配滤波器之间的匹配关系导致两个严重后果主瓣展宽和幅度下降脉冲压缩输出的主峰不再尖锐峰值降低距离分辨率变差。旁瓣电平急剧升高辛辛苦苦优化到-40dB以下的旁瓣可能因为一个不大的多普勒频移就恶化到-20dB甚至更高。这无疑是NLFM在实际应用中的一个重大挑战。我们必须正视它并想办法缓解。4.1 影响量化分析速度带来的性能衰减首先我们得知道影响有多大。我们可以通过仿真给NLFM回波信号叠加一个多普勒频移fd然后观察脉冲压缩输出的变化。% 接续之前的代码假设 nlfm_signal 是发射信号 fd 1000; % 多普勒频率单位 Hz假设目标速度为 v fd * lambda / 2 lambda为波长 % 生成带有频移的回波信号忽略时延只关注频移影响 doppler_shift exp(1j * 2 * pi * fd * t_axis_interp); % 多普勒相位项 received_signal nlfm_signal .* doppler_shift; % 带多普勒频移的回波 % 进行匹配滤波脉冲压缩 matched_filter conj(fliplr(nlfm_signal)); % 匹配滤波器基于零多普勒设计 compressed_output conv(received_signal, matched_filter); compressed_output compressed_output(ceil(length(matched_filter)/2):end-floor(length(matched_filter)/2)); % 取中间有效部分 % 画图对比零多普勒和多普勒下的压缩结果 output_db 20*log10(abs(compressed_output)); output_db output_db - max(output_db); % 归一化 figure; plot(output_db); hold on; % 同时画出零多普勒下的结果作为对比 received_signal_zero nlfm_signal; compressed_output_zero conv(received_signal_zero, matched_filter); compressed_output_zero compressed_output_zero(ceil(length(matched_filter)/2):end-floor(length(matched_filter)/2)); output_db_zero 20*log10(abs(compressed_output_zero)); output_db_zero output_db_zero - max(output_db_zero); plot(output_db_zero, r--); xlabel(采样点); ylabel(归一化幅度 (dB)); title([多普勒频移 fd , num2str(fd), Hz 对脉冲压缩的影响]); legend(有多普勒, 零多普勒); grid on; ylim([-60, 0]); % 聚焦旁瓣区域运行这段代码改变fd的值你会直观地看到主瓣如何展宽、分裂旁瓣如何抬升。通常多普勒频移fd与信号带宽B的比值fd/B是衡量影响程度的关键参数。当fd/B很小时比如 0.01影响可能可以接受当fd/B增大到0.05或更高时性能恶化会非常严重。4.2 应对策略从信号设计到处理流程知道了问题我们来看看有哪些应对策略。策略一多普勒容限优化设计在最初设计NLFM信号时就把多普勒容限作为一个优化目标。我们可以修改优化问题的代价函数使其不仅包含零多普勒下的旁瓣电平还包含在一定多普勒范围[-fd_max, fd_max]内的最差旁瓣性能。这样设计出的信号虽然零多普勒性能可能不是最优的但在一个预期的速度范围内性能更加稳健。这需要更复杂的优化算法计算量也更大。策略二多普勒滤波器组这是一种经典的处理方法。既然不知道目标的多普勒频率我们就准备一系列针对不同多普勒频移fd的匹配滤波器构成一个滤波器组。处理回波时用每一个滤波器去匹配相当于在距离-多普勒二维平面上进行搜索。哪个滤波器输出的峰值最高就对应了目标的速度和距离。这种方法性能好但计算量巨大因为滤波器数量与多普勒通道数成正比。策略三速度补偿NLFM对于某些应用如果可以通过其他方式如跟踪环路粗略估计目标速度可以先对回波信号进行速度补偿乘以一个相反的多普勒相位项补偿到接近零多普勒然后再用标准的NLFM匹配滤波器处理。这能有效扩展NLFM的可用速度范围。策略四采用多普勒不敏感波形如果目标速度范围很宽且对旁瓣要求极其严格可能需要考虑放弃纯粹的NLFM转而采用对多普勒更不敏感的波形例如相位编码信号如巴克码、Frank码或者频率编码与相位编码的混合信号。这些信号的旁瓣性能可能不如理想NLFM但它们受多普勒影响小得多。在实际的雷达系统设计中选择哪种策略需要综合考虑性能要求、计算资源、系统复杂度。对于机载雷达或弹载雷达目标速度高多普勒效应显著可能需要采用滤波器组或混合波形。对于地面监视雷达目标速度相对较低优化后的NLFM配合一定的速度补偿可能就足够了。5. 工程实现要点与FPGA资源考量理论设计和仿真通过后最终要落到硬件上比如用FPGA来实现NLFM信号的产生和脉冲压缩处理。这里有几个工程实现上的关键点。信号产生DDS与相位累加在FPGA中生成NLFM信号核心是产生那个非线性的相位函数θ(t)。最常用的方法是直接数字频率合成DDS。你需要预先计算好相位函数θ(t)的离散值并存入一个ROM只读存储器作为查找表。DDS控制器通过一个相位累加器来产生ROM的地址。对于NLFM你的频率控制字即相位累加步进不再是常数LFM而是需要根据f(t)曲线实时变化。因此你需要另一个ROM来存储频率控制字随时间变化的序列或者实时计算。这里有个简化方案由于θ(t)是平滑的我们可以只存储θ(t)的采样点DDS通过查表并配合线性插值来产生高精度的相位。这能节省大量ROM资源。脉冲压缩频域处理与FFT时域的卷积运算匹配滤波计算量巨大尤其是对于长脉冲。工程上几乎无一例外地采用频域相乘的方式来实现即利用卷积定理时域卷积等于频域相乘。 处理流程如下将一段接收到的回波数据可能包含多个脉冲和匹配滤波器系数发射信号的共轭时间反转分别做FFT。将两个FFT结果逐点相乘。对相乘结果做IFFT得到脉冲压缩后的时域输出。在FPGA中这需要调用FFT IP核。你需要仔细选择FFT点数通常是2的整数次幂且大于信号长度以避免循环卷积效应、数据位宽和缩放策略以平衡精度、动态范围和资源消耗。资源与精度权衡ROM深度存储θ(t)或频率控制字表的ROM深度决定了时间分辨率。深度不够信号逼近误差大旁瓣性能会下降。通常需要做仿真确定满足性能要求的最小深度。相位和幅度位宽DDS输出的相位位宽影响频率精度幅度位宽从相位到正弦值的查找表输出影响信号质量。位宽越大性能越好但消耗的BRAM块RAM和逻辑资源也越多。FFT点数与流水线大点数的FFT需要更多的蝶形运算单元和存储。使用流水线结构的FFT IP核可以提高吞吐率但也会增加资源使用。你需要根据雷达的脉冲重复频率PRF和数据率来确定需要多快的处理速度。我做过一个项目用Xilinx的Kintex-7 FPGA实现一个带宽10MHz、脉宽100μs的NLFM信号产生和压缩。最终使用了18bits的相位累加器16bits的幅度输出FFT点数1024整个脉冲压缩链路的信噪比损失控制在1dB以内旁瓣性能与仿真结果基本一致但消耗了相当可观的DSP slice和BRAM资源。所以在算法仿真阶段就要考虑到硬件实现的可行性尽早进行定点化仿真确定合适的数据位宽。