news 2026/7/6 1:05:15

从0到1:无线超声评估套件硬件架构解析

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
从0到1:无线超声评估套件硬件架构解析

本文是《从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级别,直接实时上传存在瓶颈。当前采用两种解决方案:

  1. 在FPGA内完成波束合成后再传输图像数据,数据量降至Mbps级别

  2. 在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
--------------------------------------------

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/6 0:59:28

YOLOv1 损失函数代码实现:从公式到 PyTorch 5 大组件拆解与调试

YOLOv1损失函数工程实现:PyTorch模块化拆解与梯度调试实战1. 理解YOLOv1损失函数的数学本质YOLOv1的损失函数设计堪称目标检测领域的经典之作,它将目标检测的多个子任务统一到一个端到端的优化框架中。这个复合损失函数由五个关键部分组成,每…

作者头像 李华
网站建设 2026/7/6 0:42:22

UCI-HAR 数据集实战:PyTorch 1.14 + CNN 模型实现 95.7% 准确率

UCI-HAR 数据集实战:PyTorch 1.14 CNN 模型实现 95.7% 准确率人类活动识别(HAR)技术正在重塑我们与智能设备的交互方式。想象一下,当你早晨起床时,智能家居系统能自动识别你的活动状态,调整室内光线和温度…

作者头像 李华
网站建设 2026/7/6 0:39:01

ETDataset 数据集预处理实战:从原始CSV到PyTorch DataLoader的5个关键步骤

ETDataset 数据集预处理实战:从原始CSV到PyTorch DataLoader的5个关键步骤电力变压器温度预测是能源管理领域的重要课题,ETDataset作为业内广泛使用的时间序列数据集,为研究者提供了丰富的实战素材。本文将手把手带你完成从原始CSV文件到可投…

作者头像 李华
网站建设 2026/7/6 0:31:25

ELK Stack 安全加固:Kibana 7.6.1 启用 X-Pack 认证的 5 个关键步骤

ELK Stack 安全加固实战:从零构建企业级认证体系 为什么生产环境必须启用X-Pack安全模块 在数字化转型浪潮中,ELK Stack已成为企业日志管理和数据分析的事实标准。但许多团队在开发测试阶段往往忽略了一个关键环节——安全认证。我曾亲眼见证一家金融科…

作者头像 李华