0 引 言
随着国家经济实力不断增强, 我国举办的水上体育赛事、 会议、 展览等越来越多, 相关的水下安保工作越来越受到重视, 而传统的光学、 电磁波等, 很难在水下有效发挥作用。超声因其指向性好、 易聚焦、 受水介质影响小等优势, 逐渐成为水下成像、 水下探测的主要技术手段。
传统的输入通道少的AD芯片已经不足以满足超声信号采集系统大量信号同步采集的要求, 因此, 为保证水下超声信号的高速精确采集, 选取高精度的AD转换模块、 高效的主控芯片以及大容量的存储单元进行数据采集具有极大的实践意义
[1]。数据采集系统中采用高性能的AD芯片, 不仅可以增强处理速度, 而且能提高采集系统的稳定性。利用FPGA作为主控芯片的采集系统, 相比于使用单片机进行控制, 数据处理速度更快、 实时性更好、 接口数量更多且易于实现
[2]。DDR3 SDRAM具有高集成度、 快速传输速度和低成本的特点, 在当前拥有较高的市场份额。本设计选用Xilinx公司的Artix-7系列开发板(芯片型号为XC7A35T), 控制AD7616芯片实现最高16通道数据采集, 开发板板载2块DDR3 SDRAM芯片可对16路高速数据进行缓存, 系统通道数量更多, 采样精度更高, 可以用于水下超声检测
[3]。
1 硬件设计方案
1.1 FPGA硬件设计
设计选择赛灵思的Artix-7系列开发板, 型号为XC7A35T, 作为系统的主控芯片进行核心部分的逻辑开发。如
图 1 所示, Artix-7 FPGA采用小巧紧凑的封装, 占位面积非常小。
Artix-7 系列开发板核心板板载频率为50 MHz的有源晶振为主芯片提供系统时钟, 同时板载两颗DDR3 SDRAM芯片, 每颗存储容量为512 MB, 共1 GMB, 在本设计中用于大容量数据缓存, 因此, 无需在系统中外接DDR内存条, 仅使用一块开发板便可完成整体数据采集系统设计, 一方面提高了系统的集成度, 另一方面节约了开发所需经费。
1.2 AD模块硬件设计
A/D转换模块使用AD7616芯片, 这是一个16 b数据采集芯片, 支持16个通道的同步双路采样。片上滤波和高输入阻抗解决了对前端信号处理电路的需求, 从而解决了对控制运算放大器和外部双极电源的需求
[4]。AD7616芯片在配置上需要根据采集需求合理选择, 其中包括基准电压、 I/O接口电压、 串/并行、 硬/软件模式等
[5]。在本设计中, 基准电压选择内部基准、 接口电压选择+3.3V、 选择硬件模式、 并行控制。AD7616与FPGA接口连接原理如
图2所示。
V0A-V7A 以及V0B-V7B为16路采样模拟电压输入接口, A/D转换后的16路数据通过DB0-DB15与FPGA的拓展I/O接口相连接, SER/PAR接地选择并行模式, HW_REGSEL接地选择硬件模式, 模拟电源电压V_CC由+5 V的电源提供, 逻辑电源输入V_DRIVE由+3.3 V的电源提供。此外, CONVST, WR、 CS#, BUSY这些模数转换的控制信号均与FPGA相连接, 由FPGA产生读写时序控制A/D转换过程。
1.3 DDR3 SDRAM硬件设计
经过AD模块转换后的数据最终需要上传到上位机, 但上位机无法直接从AD模块的接口中获取数据, 同时又因为FPGA内存资源有限, 需要设计缓存模块, 将来自AD模块的数据经数据拼接转换成串行数据后存入DDR3 SDRAM缓存模块中, 存满则发送到上位机。
设计中的DDR3 Chip为FPGA外挂的DDR3颗粒, 采用了两块镁光MT41K256M16型DDR3芯片颗粒。MT41K指的是产品系列型号, 256 M 16表示该DDR3芯片颗粒的存储容量是256 M×16 bit, 为512 MB, 两块芯片的存储容量一共是1 GB
[6]。
DDR3芯片的物理接口可分为电源、 数据、 控制、 时钟和地址接口5类
[7]。
电源部分包括芯片主电源VDD、 数据线的供电电源VDDQ等; 数据信号包括16 b数据信号DQ、 数据选取脉冲差分信号DQS_P/N、 掩码信号DM; 控制信号包括时钟使能信号CKE、 片选信号CS#、 阻抗ODT、 行/列使能信号R/CAS#、 写使能信号WE#、 复位信号RESET#; 时钟信号为一对差分信号CK_P/N。
地址信号包括bank线BA[2:0]、 地址线ADDR[14:0], bank线用于选择一块芯片中的不同bank, 15 b地址线ADDR[14:0], 行列地址分时复用, 行地址有32 K个, 列地址有1 K个。寻址时利用BANK-ROW-COLUMN的形式, 这是一种最常规的DDR3寻址方式, 即要指定某个地址, 先后给出BANK地址、 行地址、 列地址, 这样就确定了一个具体地址。这样的寻址方式虽然有利于降低功耗, 但在设计过程中直接控制DDR3引脚的时序更加复杂, 所以XILINX平台提供MIG IP核来提供辅助
[8]。
1.4 系统总体设计
本文设计的多通道数据采集系统主要由AD数据采集模块、 DDR3数据缓存模块、 FPGA主控模块组成。系统总体框图如
图 3 所示。
系统上电启动后, 上位机发送采集指令, FPGA通过控制具有16 bit的高精度模数转换芯片AD7616对于16路的模拟信号分2线进行采样, 并将其转换为数字信号。转换后的数据经FPGA主控模块的控制, 暂存到DDR3 SDRAM缓存模块, 数据存满以后, 进一步将其上传至上位机, 完成一轮数据采集任务。
2 软件程序设计
采集系统的软件设计重点是为FPGA编写控制程序, 其中包括FPGA主控模块设计、 AD模数转换程序设计、 DDR3数据缓存程序设计。AD模数转换程序主要是FPGA控制AD进行数据采集时序控制和模拟信号的转换。DDR3数据缓存程序中运用乒乓操作, 开辟一个真双口RAM并调用FIFO, 以解决DDR3无法同时进行读写操作的问题。同时将缓存数据、 命令接口封装成AXI4接口, 方便与上位机进行数据交互。
2.1 AD模数转换模块
AD7616内置两个16 b逐次逼近型ADC芯片以进行双路同步采样, 它支持并行工作模式, 能够将A/D转换后的16 b数据传至FPGA当中。根据设计要求, AD7616模数转换芯片采用双路并行工作模式, 两个ADC对应一个CONVST信号, FPGA通过控制CONVST信号实现双路同步采样的启动。具体的通道选择由CHSEL信号控制, 该信号的电平代表了复位信号释放后进行转换的通道数。在本设计中选择硬件模式, 序列器能够通过加一选择下一通道的方式来完成V0A/V0B到V7A/V7B通道的顺序采样。
根据
图 4 的读时序图, 采样结束后BUSY信号置低, 采样保持器返回跟踪模式, 这时FPGA可以通过拉低CS和RD, 将转换后的数据输出到数据总线DB15至DB0来并行读取数据, BUSY信号置低时, CS, RD信号同时置低, 开始从低到高回读第1路转换数据, 之后拉高再次置低可回传第2路数据。
根据以上工作原理, 设计AD7616硬件并行模式工作状态机以完成FPGA对AD模块的控制逻辑, 状态机如
图 5 所示, 实现方法如下:
IDLE为空闲状态; 当CONVST和数据锁存信号LOCK都置0时, 芯片进行初始化进入STATE_0状态; 当CONVST置1, 芯片启动采样进行模数转换, 进入采样STATE_1状态; BUSY信号为1则保持采样状态, 同时CHSEL信号加1转到下一通道进行采样, BUSY信号为0则表示转换结束, 此时进入STATE_2可读状态; 当LOCK置1且RD置0时, 读取通道A的转换数据, 状态为STATE_3; 读完一路数据后, LOCK信号置0锁存下一通道B的数据, 同时RD信号置1, 读取通道B的转换数据, 状态为STATE_4; LOCK置1、 RD置0后回到空闲状态IDLE。
2.2 DDR3数据缓存模块
为了更加高效地开发DDR3存储器, 选用Vivado提供的MIG IP核存储控制器作为控制器, MIG IP核包括物理接口模块、 存储控制器模块和用户接口模块
[9]。用户必须首先根据数据手册在配置页面配置接口时钟、 电压、 存储器类型、 位宽和其他参数
[10]。MIG IP核配置完成, 意味着实现了FPGA与物理接口模块的连接, 接下来考虑用户接口模块的读写操作。
DDR3的工作机制就是通过控制器控制状态转换, 由
图 6 中DDR3 SDRAM的状态机可见, DDR3在完成上电、 复位、 ZQ校准等一系列操作后, 进入空闲状态等待控制器激活, 进入激活状态后对指定的Bank进行激活操作, 之后控制器发送不同的指令, 状态机进入读、 写、 预充电、 低功耗等状态, 完成对DDR3 SDRAM的读写操作。
由于DDR3 SDRAM不能同时进行读、 写操作, 设计中采用乒乓操作来实现一端接收来自AD模块的转换数据, 一端向上位机发送数据。整个缓存模块在物理上将两颗DDR3芯片分为A块和B块, 由于上位机和DDR3缓存模块之间需要传递采集命令和可以采集标志信号, 因此, FPGA需要开辟一个真双口RAM, 同时调用FIFO来完成数据流的乒乓操作。
如
图 7 所示, 当上位机发出采集指令后, FIFO写使能拉高, 将来自AD模块的转换数据写入FIFO, 同时判断A, B块DDR的读写状态state, 为0时FIFO向A块DDR3写入数据, 写入完成后向上位机发送可采集信号, 通知上位机取数, 同时将state转换为1, FIFO向B块DDR3写入数据, 此时上位机从A块DDR3读取数据; 同理, B块DDR3写入完成后state转变为0, 上位机从B块DDR3读取数据, FIFO向A块DDR3写入数据, 以此规律循环操作, 两块DDR3芯片分别读写, 实现乒乓操作。
AXI4接口采用Valid和Ready信号保持主从设备的独立性, 协议规定5个独立的信号传输通道, 读写地址通道由主设备发出地址和控制命令, 读写数据通道用来完成数据传输, 写响应通道由从设备返回写操作完成信号。此外, AXI4协议基于突发传输机制, 突发宽度是一次数据传输的最大数据位, 这里选择256 b, 突发长度是一次突发所传输的次数。
3 实验结果
首先, 对系统的多通道采样功能进行验证, 将信号发生器生成的2 V和4 V直流信号分别接入3, 6, 9, 12, 15通道, 如
图 8, 上位机软件对系统采集上传的数据进行显示, 上位机软件在VC++6.0开发环境下开发, 可以看到电压数值与输出电压相同, 证明系统的多通道采集功能测试成功。
其次, 为测试系统采集的同步性, 使用Vivado内部集成的仿真工具进行逻辑仿真验证, 将信号发生器生成的测试信号接入AD7616的采集通道, 由于AD芯片是双路同步采样, 所以只需要对8路信号进行分析。如
图 9 所示, 为4路不同通道的信号, 4路均取并行数据的第一个实数点进行分析, 能够看到AD模块实现了同步采集。
为验证系统能否实际采集到超声信号, 对整个系统进行水下超声采集验证, 如
图 10 所示, 将两个超声换能器分别与信号发生器和AD7616采集芯片连接, 并置于水中进行实验验证, 信号发生器生成频率为20 kHz、 幅值为2 V的正弦波信号, 经由换能器A发射, 换能器B将接收到的超声信号转换为电压信号, 采集系统将采集到的电压信号数据存储上传, 使用Matlab进行波形重建, 重建结果如
图 11 所示, 可以看到信号并未发生明显失真, 表明系统能够用于水下超声信号的采集。
4 结 语
本文介绍了多通道数据采集系统的设计目的, 详细阐述了系统各个模块的硬件电路设计和软件程序设计, 通过仿真和实验验证, 该系统的可行性和准确性得到了充分证明。整个系统得益于AD7616的多通道数、 高采样率, 以及DDR3 SDRAM的大容量缓存空间, 配合采用FPGA作为主控芯片, 能够对16路信号进行同步采集, 提高了系统的可扩展性, 使系统具有更强的数据采集能力。该系统还具有高度的灵活性和便携性, 使其适用于具有高数据量和多通道要求的广泛的采集环境, 同时为超声监测系统提供了新的可能。
山西省基础研究计划资助项目(202103021224201)
山西省基础研究计划资助项目(202203021211100)
国家自然科学基金资助项目(61671414)