1 系统设计
本实验设计的数据采集卡的实验对象:Belson200AB型超声诊断仪。它是便携式电子凸阵扫描B超,主频3.5MHz、2.5MHz~5MHz变频、80基元R60凸阵探头,探头宽度:3.84cm,探测深度:≥170mm,扫描范围:100mm×210mm,256灰阶,分辨率:横向≤2mm纵向≤1mm,扫描线:512线/帧,帧率:30帧/秒。
Belson200AB型超声诊断仪接收及显示部分的原理框图如图1所示。在该图中,B型超声波的射频回波信号通过前置发动、聚焦、微分放大、时间增益补偿、检波等一系列的处理,最后通过数字处理将超声波图像送监视器显示和存储及打印图像。根据原始数据的要求,数据采集卡的射频信号输入源来之图1中DF/TGC放大模块之前的射频信号。
系统设计包含硬件部分和软件部分,其中硬件部分是基于计算机PCI(peripheral component interconnect)局部总线设计的,采用PCI9054作为PCI局部总线和FIFO数据总线和CPLD控制总线的桥接芯片,它符合PCIv2.2规范的32位33MHz总线主控接口控制器。ADC采用AD9283,8位分辨率和最高100M/s的转换速率,用到了2片FIFO作为数据缓冲器和LatticeCPLDispMACHLC4128V用于各个芯片之间的逻辑控制。软件系统用Windriver开发驱动程序和VC集成开发环境编写应用程序。
1.1 硬件设计
图2显示了本数据采集系统硬件部分的框图:在该硬件框图中,PCI9054将两片FIFO连接到了PC机的PCI局部总线上。
PCI9054接口芯片的特点:符合PCIv2.2规范的32位33MHz总线主控接口控制器可获得高达132兆字节/秒的PCI突发传输速度;具有两个DMA引擎,可编程目标和起始器数据传输模式和PCI信息传输功能;3.3V,5V容错PCI信号支持通用PCI适配器设计;灵活的3.3V,5V容错局域总线操作,高达50MHz;32位多路复用或非多路复用局域总线支持8位、16位以及32位外围设备和存储设备;工业温度范围操作等。
在本设计中采用PCI9054C模式下的从目标模式和DMA模式。通过从目标模式向CPLD发出各种命令控制字来设定采样率和采样深度。通过DMA模式,将采集存储在FIFO的数据通过PCI9054的DMA通道0传输到计算机的内存中。为了使ADC采集的数据不被覆盖,采用两片FIFO交替存储数据,数据存储和读取时序如图3所示。
图中触发脉冲由Belson200AB超仪发出,是该仪器一组阵元发射超声波和接受超声波的触发信号,周期为320μs。Belson200AB超仪的80基元R60凸阵探头被分成160组阵元,即一幅原始的B超图像由160线数据组成。数据采集是对每一线采集一定量的数据(采集的数据量可以由CPLD控制),在触发脉冲的下降沿开始采样数据,同时锁存该线在阵元组中的编号地址(该地址由Belson200AB超仪产生,通过排线接入采集卡CPLD的I/O口)。当达到预设的数据量时,通知PC机将数据和地址从FIFO读入PC机内存。两片FIFO交替工作的逻辑通过CPLD实现。
PCI9054支持两种方式的DMA传输:块(BLOCK)传输和散/聚(Scatter/Gather)传输。快传输相对简单,图4是其传输的一个示意图。只要对PCI9054的各个DMA控制寄存器写了相应的值,如PCI地址寄存器存保存本次DMA在PC机端一片连续内存块的起始地址,而Local地址寄存器则保存了Local总线端的起始地址(这里是FIFO存储器的地址)等。
而散/聚(Scatter/Gather)传输相对来说较为的复杂。在这种传输方式中,DMA控制器从PCI或Local总线存储器中的传输链表中加载传输参数,其中每个节点包括PCI地址,Local地址,传输数据量,同时还必须加上下一块传输节点的地址指针。DMA在启动时自动将设置的各参数传递给相应的寄存器,这样通过一个传输链表就可以实现多地址,多数据快的传输。DMA控制器通过检查链表结束标志来判断一个传输是否已经结束。这两种方式可以通过设置PCI9054的DMA控制寄存器DMAMODE0的Bit9来选择。
从目标模式和DMA模式的读写时序控制均通过CPLD中的逻辑控制来实现(从目标模式的单周期读写时序和DMA模式的读写时序可以参考PCI9054DataBook)。为了实现这两种方式,我们设计了一个简单的状态机来实现(如图5)。S1状态表示一次传送周期的开始;S2状态表示单次传送周期;S3状态是突发传送周期。当PC机通过PCI9054向CPLD写入控制命令时状态机应该是S0→S1→S2→S0状态切换;而当PC机通过PCI9054以DMA方式读取FIFO数据时状态机应该是S0→S1→S3→S0状态切换。
图6是对状态机控制FIFO读时序的仿真,其结果符合我们设计状态机的要求。在该图中LCLK是PCI9054的Local时钟,LHOLD是PCI9054申请Local总线的请求信号,LHOLDA是对Local总线申请所作出的应答信号;ADS_(ADS#)有效表示读写操作周期的开始;BLAST_(BLAST#)有效表示操作的最后一个周期;LWR_(LWR#)低电平表示读周期,高电平表示写周期;ROE_FIFO输出使能信号; REN_FIFO读使能信号; READY_(READY#)有效表示Local端数据已经准备好。
在PCB板设计中采用双层PCB板。对PCI信号线,按照PCI局部总线的电气规范要求布线,信号线的长度不超过1.5英寸,33M时钟走线控制在2.5±0.1英寸,可以采用蛇形走线来达到该走线长度。为了减小数字信号对模拟信号的干扰将模拟信号部分与数字信号部分的电源和地分别隔离。将PCI总线的电源通过DC-DC转换再供给模拟电源使用;而将模拟地接入数字地的连接点用高频磁珠隔离;同时为了减少射频信号在传输中的衰减和干扰,射频信号的接入采用同轴电缆。
1.2 软件设计
软件的编写调用Windirver的API函数作为数据采集卡的各种读写和控制操作的驱动函数。Windriver驱动编写简单,而
且提供了PLX公司PCI接口芯片的示例程序,极大地提高了开发的效率。整个软件系统用VC6.0开发,主程序调用和协调各WindriverAPI函数的运行,同时完成对数据的存储,图像的显示等。
应用程序界面基于Dialog类,应用程序主要有四个类组成如表1。CUSoundSconnerDlg的基类是CDialog类,用于显示程序界面和接受各种用户输入。
PCI9054CARD通用类封装了Windriver的API函数,用于管理数据采集卡的各种操作,包括对采集卡的初始化、DMA传送数据、各种控制命令的写入等。CDisplayImage线程类用于将读取的数据以BMP图的格式显示在PC机屏幕上,也完成对BMP图像的保存。CGetDatafromDevice线程类将FIFO中的数据以DMA方式读入PC机内存中,将数据保存在PC机硬盘。该线程类在存活期一直都在查询FIFO数据就绪满信号,信号有效就启动DMA读取数据。
2 实验结果
图7是用本数据采集系统采集到的一组阵元接收到的一次回声信号,从图中可以看出有三个强的回声信号。其中第一个(从左向右)为探头的回声,第二、三个位被测物体上下表面的反射波。高频噪声大约在1%左右。
图8是将160组阵元接收到回声信号按编号组成的一帧图像,即直接将如图7所显示的数据用256色的灰度图表示,在图中可以观察到有三个地方有灰度不同的条纹,第一处(从左向右)为超声出探头时形成的回声所形成,第二、三处分别为被测物体的上下两个表明的回声所形成。这与图7显示的单组阵元接收到的回声信号一致。
3 结论
本数据采集系统较好的将Belson200AB型超声诊断仪的射频信号量化成数字信号,并且将数据通过DMA方式传送到PC机显示和存储。高频噪声控制在1%左右,为估计该系统的系统函数和数字信号处理算法提供了较好的实验数据。该系统通过对CPLD器件写入控制字,可以实现80M、40M、20M的采样率和采样深度2K、4K的动态控制。同时本系统也可以用于其它射频信号的高速数据采集。