第四章 接收波束合成:动态聚焦、动态孔径、动态变迹

好,咱们进入接收波束合成的核心环节。

发射波束搞定后,回波信号怎么收?说白了,就是要把探头每个阵元收到的信号,通过延时、加权、求和,合成一条高质量的扫描线。这里面有三个关键动作:动态聚焦动态孔径动态变迹。我习惯叫它们「三驾马车」,缺一个,图像质量都会打折扣。

4.1 动态聚焦:让焦点跟着深度跑

先问个问题:为什么需要动态聚焦?

你想想看,发射时我们只能聚焦在一个深度上。但接收不一样——回波是从浅到深依次回来的。如果我只用一个固定焦点,那焦点以外的区域就会模糊。怎么办?让焦点随着接收深度动态移动

这就是动态聚焦的核心思想:实时计算每个深度对应的延时量

关键公式(简化版):

延时量 τ = (√(d² + x²) - d) / c

其中 d 是当前深度,x 是阵元到中心的距离,c 是声速。

注意:这个公式在 FPGA 里不能直接算,太慢了。我们一般用查表法。

我在项目中遇到过一个问题:查表法虽然快,但深度分辨率不够。比如每 1mm 换一次焦点,图像在焦点切换处会有「跳变感」。后来我改用线性插值,在相邻焦点之间平滑过渡,效果好了很多。

我的经验:

动态聚焦的更新频率建议不低于 10MHz。也就是说,每 100ns 左右就要更新一次延时参数。这在 FPGA 里完全做得到,用双口 RAM 存好预计算的延时表,深度地址直接查就行。

4.2 动态孔径:浅用小孔径,深用大孔径

动态孔径,说白了就是接收孔径的大小随深度变化

为什么?浅层回波强,用小孔径就能保证信噪比,还能避免近场伪像。深层回波弱,必须用大孔径多收信号,才能把微弱信号捞出来。

我刚开始做彩超时,犯过一个低级错误:固定孔径。结果浅层图像亮得刺眼,深层却黑乎乎一片。后来加了动态孔径,图像均匀度立马提升了一个档次。

深度范围 孔径大小(阵元数) 说明
0 - 20 mm 16 近场,小孔径抑制旁瓣
20 - 50 mm 32 中程,逐步打开
50 - 100 mm 64 远场,全孔径接收
100 mm 以上 128 最深,最大孔径

注意:

动态孔径的切换不能太突然。我曾经试过从 32 阵元直接跳到 64 阵元,结果图像上出现了一条明显的「接缝」。后来改成渐变切换,每次增加 4 个阵元,每 5mm 切换一次,接缝就消失了。

4.3 动态变迹:给阵元信号加个「窗」

动态变迹,就是给每个阵元的信号乘上一个加权系数

为什么要加权?因为如果不加权,阵元边缘的信号会产生很强的旁瓣,导致图像出现「鬼影」。加权后,旁瓣被压制,主瓣变宽一点但更干净。

常用的窗函数有:

  • 汉宁窗:旁瓣抑制好,主瓣稍宽
  • 海明窗:和汉宁类似,但旁瓣更低
  • 布莱克曼窗:旁瓣抑制最强,但主瓣最宽
  • 矩形窗:不加权,旁瓣高,一般不推荐

我个人习惯用汉宁窗,因为它平衡了分辨率和旁瓣抑制。在 FPGA 里实现也很简单,预存一组系数到 ROM 里,查表乘一下就行。

动态变迹的关键:

加权系数也要随深度变化!浅层用窄窗(旁瓣抑制强),深层用宽窗(灵敏度高)。这就是「动态」二字的含义。

嗯,这里要注意:动态变迹和动态孔径是联动的。孔径变大时,窗函数也要相应调整。我一般把孔径和变迹系数放在同一个查找表里,深度地址同时查两个参数,省逻辑资源。

4.4 FPGA 实现要点

好了,理论讲完,咱们看看 FPGA 里怎么干。

接收波束合成的核心模块就三个:

  1. 延时控制模块:根据深度查表,生成每个通道的延时量
  2. 变迹加权模块:根据深度查表,生成每个通道的加权系数
  3. 求和模块:把所有通道的延时加权后的信号累加

代码结构大概这样:

// 伪代码,实际用 Verilog 或 VHDL
always @(posedge clk) begin
    depth_addr <= depth_counter;  // 深度地址递增
    // 查延时表
    delay_val <= delay_lut[depth_addr][channel_id];
    // 查变迹表
    apod_val <= apod_lut[depth_addr][channel_id];
    // 延时 + 加权
    channel_out <= fifo_read(channel_id, delay_val) * apod_val;
end

// 求和
sum_out <= sum(channel_out[0:N-1]);

避坑指南:

我曾经在延时 FIFO 的深度上吃过亏。如果最大延时量是 10us,采样率 40MHz,那 FIFO 深度至少 400 个点。别算少了,否则数据会溢出。

4.5 三个动态的协同工作

最后说一句:动态聚焦、动态孔径、动态变迹,不是各自为战,而是协同工作的。

我习惯用一个深度索引来统一控制这三个参数。每来一个采样点,深度索引加 1,然后同时查三张表:延时表、孔径表、变迹表。这样逻辑清晰,时序也容易收敛。

举个例子:

  • 深度 10mm:孔径 16,汉宁窗,焦点在 10mm
  • 深度 30mm:孔径 32,汉宁窗,焦点在 30mm
  • 深度 60mm:孔径 64,海明窗,焦点在 60mm

你看,三个参数一起变,图像质量才能做到最优。

总结一句话:

接收波束合成的本质,就是用延时控制方向,用孔径控制灵敏度,用变迹控制旁瓣。三个动态配合好,你的彩超图像就能又亮又干净。

好,这一章就到这儿。下一章咱们聊聊正交解调与基带处理,那是从射频信号变成 B 模式图像的关键一步。