本文是《从0到1:打造一款无线超声评估套件,踩过的坑和总结的路》的续篇,聚焦于评估套件的硬件构成与设计细节。
一、硬件架构概述
当前主流超声系统的硬件架构普遍采用以下框架:
AFE + HV Pulser + HV Switch + FPGA + USB/WIFI/PCIe
各功能模块的典型选型如下:
模块 | 代表器件 | 供应商 |
|---|---|---|
AFE(模拟前端) | AD927x 系列 | ADI |
AFE(模拟前端) | AFE58 系列 | TI |
Pulser(发射脉冲发生器) | HDL6M05584 | 日立/ABLIC |
Pulser(高集成度) | TX7332 | TI |
HV Switch(高压开关) | ECN3297 系列 | 日立/Microchip |
FPGA | Zynq 7000 系列 | AMD(原Xilinx) |
数据传输 | USB 2.0/3.0 / WiFi / PCIe | — |
二、核心BOM清单
无线超声评估套件的核心物料清单如下:
组件 | 型号 | 功能说明 |
|---|---|---|
| FPGA SoC | ZYNQ7020 / ZYNQ7010 | ARM + FPGA异构计算平台,负责AFE控制、波束合成、信号处理与数据传输 |
| AFE器件 | AD9278 | 8通道完整信号链芯片,集成LNA+VGA+AAF+12位ADC+I/Q解调器 |
| Pulser器件 | HDL6M05584 | 8通道3电平高压高速超声脉冲发生器 |
| Switch器件 | ECN3297 | 16通道高压模拟开关芯片 |
| 无线模组 | 高通5G AC WiFi模组 | 802.11ac标准,5GHz频段,理论速率867Mbps~1.3Gbps |
系统工作流程:系统启动后,Linux系统运行于PS侧(Processing System),对PL侧(Programmable Logic)进行初始化配置;超声数据通过DMA方式从PL传输至PS的DDR内存;最终通过WiFi模组上传至PC,实现实时成像。
三、AFE选型详解:AD9278
AD9278是整套系统的核心芯片,其选型理由如下:
高度集成:单芯片集成8通道完整信号链——LNA(低噪声前置放大器)、VGA(可变增益放大器)、AAF(抗混叠滤波器)、12位ADC以及I/Q解调器
低功耗:TGC(时间增益补偿)模式下每通道功耗仅88mW@40MSPS,CW多普勒模式下低至32mW/通道
小尺寸:专为低成本、低功耗、便携式超声应用设计
8通道架构:配合标准线阵/凸阵探头,覆盖绝大多数科研验证场景
四、无线通信方案
选择WiFi 5G AC(802.11ac)而非2.4GHz频段,核心考量如下:
干扰少:5GHz频段在医疗场景下干扰更少
延迟低:满足医疗成像对实时性的严苛要求
高带宽:理论速率867Mbps~1.3Gbps
带宽优化策略:原始RF数据量达Gbps级别,直接实时上传存在瓶颈。当前采用两种解决方案:
在FPGA内完成波束合成后再传输图像数据,数据量降至Mbps级别
在FPGA内部缓存RF信号后集中上传,适用于AFE前端评估场景
五、硬件系统与交互设计
系统由单板 + 电池 + 探头三部分组成。
面板指示灯说明:
红灯:电源指示灯
黄灯:工作状态指示灯
中间按钮:开关机控制
无线连接:长按开机按钮约3秒启动系统,WiFi热点SSID为VisSonixAP-080,默认密码12345678。
上位机软件:VisSonixAP,双击APP.exe启动,支持以下参数调节:
深度:调节成像深度
频率:调节发射频率
焦点:调节发射聚焦位置
六、FPGA约束与接口定义
为便于后续扩展和测试,硬件结构采用新的软排线连接方案。
FPGA管脚约束
set_property IOSTANDARD LVDS_25 [get_ports fpga_clk_*] set_property PACKAGE_PIN H16 [get_ports fpga_clk_p] set_property PACKAGE_PIN H17 [get_ports fpga_clk_n] set_property IOSTANDARD LVCMOS33 [get_ports ps_rxd] set_property IOSTANDARD LVCMOS33 [get_ports ps_txd] set_property PACKAGE_PIN P18 [get_ports ps_txd] set_property PACKAGE_PIN P15 [get_ports ps_rxd] set_property IOSTANDARD LVCMOS25 [get_ports sys_led] set_property PACKAGE_PIN J15 [get_ports sys_led] set_property IOSTANDARD LVDS_25 [get_ports {adc_din_p[*]}] set_property IOSTANDARD LVDS_25 [get_ports {adc_din_n[*]}] set_property IOSTANDARD LVDS_25 [get_ports adc_dclk_p] set_property IOSTANDARD LVDS_25 [get_ports adc_dclk_n] set_property IOSTANDARD LVDS_25 [get_ports adc_fclk_p] set_property IOSTANDARD LVDS_25 [get_ports adc_fclk_n] set_property PACKAGE_PIN L17 [get_ports adc_dclk_n] set_property PACKAGE_PIN L16 [get_ports adc_dclk_p] set_property PACKAGE_PIN K17 [get_ports adc_fclk_n] set_property PACKAGE_PIN K18 [get_ports adc_fclk_p] set_property PACKAGE_PIN C20 [get_ports {adc_din_p[7]}] set_property PACKAGE_PIN B20 [get_ports {adc_din_n[7]}] set_property PACKAGE_PIN B19 [get_ports {adc_din_p[6]}] set_property PACKAGE_PIN A20 [get_ports {adc_din_n[6]}] set_property PACKAGE_PIN E17 [get_ports {adc_din_p[5]}] set_property PACKAGE_PIN D18 [get_ports {adc_din_n[5]}] set_property PACKAGE_PIN D19 [get_ports {adc_din_p[4]}] set_property PACKAGE_PIN D20 [get_ports {adc_din_n[4]}] set_property PACKAGE_PIN E18 [get_ports {adc_din_p[2]}] set_property PACKAGE_PIN E19 [get_ports {adc_din_n[2]}] set_property PACKAGE_PIN F16 [get_ports {adc_din_p[3]}] set_property PACKAGE_PIN F17 [get_ports {adc_din_n[3]}] set_property PACKAGE_PIN M19 [get_ports {adc_din_p[0]}] set_property PACKAGE_PIN M20 [get_ports {adc_din_n[0]}] set_property PACKAGE_PIN M17 [get_ports {adc_din_p[1]}] set_property PACKAGE_PIN M18 [get_ports {adc_din_n[1]}] set_property PACKAGE_PIN L19 [get_ports adc_sclk] set_property PACKAGE_PIN L20 [get_ports adc_sdio] set_property PACKAGE_PIN K19 [get_ports adc_csb] set_property PACKAGE_PIN J19 [get_ports adc_stby] set_property PACKAGE_PIN F19 [get_ports adc_pdwn] set_property IOSTANDARD LVCMOS25 [get_ports adc_csb] set_property IOSTANDARD LVCMOS25 [get_ports adc_pdwn] set_property IOSTANDARD LVCMOS25 [get_ports adc_sclk] set_property IOSTANDARD LVCMOS25 [get_ports adc_sdio] set_property IOSTANDARD LVCMOS25 [get_ports adc_stby] set_property IOSTANDARD LVCMOS33 [get_ports hdl5584_tcen] set_property IOSTANDARD LVCMOS33 [get_ports {hdl5584_pulse[*]}] set_property PACKAGE_PIN T16 [get_ports {hdl5584_pulse[1]}] set_property PACKAGE_PIN R19 [get_ports {hdl5584_pulse[0]}] set_property PACKAGE_PIN W13 [get_ports {hdl5584_pulse[3]}] set_property PACKAGE_PIN Y16 [get_ports {hdl5584_pulse[2]}] set_property PACKAGE_PIN T14 [get_ports {hdl5584_pulse[5]}] set_property PACKAGE_PIN W14 [get_ports {hdl5584_pulse[4]}] set_property PACKAGE_PIN V12 [get_ports {hdl5584_pulse[7]}] set_property PACKAGE_PIN Y14 [get_ports {hdl5584_pulse[6]}] set_property PACKAGE_PIN T12 [get_ports {hdl5584_pulse[9]}] set_property PACKAGE_PIN U12 [get_ports {hdl5584_pulse[8]}] set_property PACKAGE_PIN R14 [get_ports {hdl5584_pulse[11]}] set_property PACKAGE_PIN T11 [get_ports {hdl5584_pulse[10]}] set_property PACKAGE_PIN T10 [get_ports {hdl5584_pulse[13]}] set_property PACKAGE_PIN P14 [get_ports {hdl5584_pulse[12]}] set_property PACKAGE_PIN T15 [get_ports {hdl5584_pulse[15]}] set_property PACKAGE_PIN Y17 [get_ports {hdl5584_pulse[14]}] set_property PACKAGE_PIN U17 [get_ports hdl5584_tcen] set_property IOSTANDARD LVCMOS33 [get_ports {hvmux_data[*]}] set_property IOSTANDARD LVCMOS33 [get_ports hvmux_le] set_property IOSTANDARD LVCMOS33 [get_ports hvmux_sclk] set_property IOSTANDARD LVCMOS33 [get_ports hvmux_clr] set_property PACKAGE_PIN U15 [get_ports hvmux_le] set_property PACKAGE_PIN U14 [get_ports hvmux_sclk] set_property PACKAGE_PIN U18 [get_ports hvmux_clr] set_property PACKAGE_PIN U19 [get_ports {hvmux_data[0]}] set_property PACKAGE_PIN N18 [get_ports {hvmux_data[1]}] set_property PACKAGE_PIN P19 [get_ports {hvmux_data[2]}] set_property PACKAGE_PIN N20 [get_ports {hvmux_data[3]}] set_property PACKAGE_PIN P20 [get_ports {hvmux_data[4]}]开源地址:
https://github.com/VisSonixAP/Ultrasound-AFE-Dev-Kit
--------------------------------------------
-原创文章 版权©2026 VisSonixAP
-欢迎转载 注明出处
-有任何问题,欢迎致电
-邮 箱:VisSonixAP@163.com
-公众号:VisSonixAP
--------------------------------------------