多种触发功能的可编程高速数据采集模块

  Tess ·  2012-02-16 19:30  ·  45348 次点击
在数据采集的过程中,为了不漏掉任何一个既定特征的信号,A/D转换器必须不断地采集数据。但是由于存储器容量的限制,不可能无限制地采集并存储数据。如何使模块能自动检测、采集并存储有效数据呢?触发技术的引入可以解决这一问题。触发是为了有效地观测信号,当被测信号满足触发条件时,启动一次数据采集,使用户在屏幕上能观测到满足触发条件的波形。
触发电路在以往的设计中,多采用电平比较器,其缺点是:采用的分立元件多,不利于模块移植和速度的提升,同时触发方式多样化配置也受到硬件限制,不具备智能化特点。本模块基于高速A/D转换器和FPGA,提出了一种全数字化的多种触发功能的高速数字采集设计方案。模块接口易于移植,采集频率高达50MHz,具有多种可编程触发功能,采用的触发窗技术进一步保证了采样存储数据的正确性和有效性。
1高速数据采集模块结构
高速数据采集模块由FPGA存储控制、传输电路和AD9057数据采集部分构成。其中FPGA为此次模块设计的重点。多种触发功能的高速数据采集模块结构框图如图1所示。采用Cyclone系列EP1C6Q240C8型号的FPGA控制芯片,其Bank4I/O口与AD9057相连,有源晶振提供了50MHz的时钟频率。
此模块通过通信接口动态设置触发极性、触发模式、触发窗长度、触发点电平,触发极性可选上升沿触发rising_edge和下降沿触发falling_edge两种。触发模式可分为前触发pre_trigger、中间触发mid_trigger、后触发post_trigger三种模式。触发窗长度设置为0~100的整数,触发点电平可设置为0~255的整数。
当连接通信接口的外部显示控制界面设置好触发极性、触发模式、触发窗长度、触发点电平时,开始启动采集命令,包装好的40位数据流将被发送到FPGA;FPGA接收到40位数据后,迅速分离成5个8位数据,即触发极性、触发模式、触发窗长度、触发点电平和采集启动信号,利用FIFO存储器先进先出的特性以及对AD9057的控制时序,配合触发信号存储A/D数据;当采样完成后,FIFO中的数据可以被发送到外部的显示控制界面直观地显示出来。
1.1触发信号的产生
传感器探测和感知的模拟信号一般都带有一定干扰,如果仅凭一个触发点来决定触发的位置则很难控制,在本模块触发位置的设计中采用了三点触发窗技术,触发窗的设置可以有效地屏蔽模拟信号的抖动,使模块正常运行。
触发极性triggerpolar有上升沿触发rising_edge和下降沿触发falling_edge两种模式,在这两种触发极性下,触发信号上升沿表示模块开始存储A/D转换数据。模块设置了触发字1和触发字2,触发字1为触发点加上触发窗长度,如果结果小于255则触发字为两者相加结果,否则为255;触发字2为触发点减去触发窗长度,如果结果大于0则触发字为两者相减结果,否则为0。
图2是下降沿触发信号产生图。图中模块开始采样时,A/D转换数据与触发字1和触发字2不断地比较,当A/D数据大于触发字1时,触发信号输出为低电平;此后A/D数据与触发字2比较,当A/D数据小于触发字2,触发信号输出高电平。
compare_standardl、compare_standard2分别是触发字1和触发字2。flag为标志变量,当A/D数据大于触发字1时,flag=1;当A/D数据小于触发字2时,flag=0。具体实现的代码如下:
1.2触发模式的选择
触发模式分为前触发、中间触发和后触发。触发模式的选择决定了触发的预触发深度N的不同。在一定的存储深度M下,捕捉的波形在触发点P附近被最大化地存储和显示。触发点前端波形的观察选择前触发模式,即预触发深度占存储深度的比例要大。触发模式如图3所示。S代表起点,E代表结束点。触发点前后波形的观察选择中间触发模式,触发点后端波形的观察选择后触发模式。
1.3FIFO读写数据控制
FIFO存储器的读写是用状态机来实现的。5个状态分别为wait、wr_trigger、wr_read、wr_full、read。FIFO控制器流程如图4所示。模块开始进入wait状态等待启动信号start上升沿,如果start上升沿到来模块转到wr_trigger状态,否则将在wait状态一直等待;当模块进入wr_trigger状态时,FIFO开始写数据直到满足触发模式的预触发深度,此时的写时钟等于采样时钟;此后模块进入wr_read状态,FIFO开始一边读数据一边写数据,即一直保持FIFO中存储的数据是最新A/D转换数据,此时的读写时钟与采样时钟是同频的。直到触发信号上升沿的到来,否则FIFO存储器将一直读数据和写数据;当触发信号上升沿有效时,模块进入wr_full状态,FIFO存储器停止读数据,开始写数据,直到FIFO写满数据;当FIFO写满数据(full=1)以后,模块转到read状态,FIFO开始读数据并通过通信接口发送到显示控制界面进行直观的显示,直到FIFO为空empty=1,此时读时钟为显示时钟;FIFO读数据操作完毕,模块将一直停留在wait状态等待下一次采集启动信号的到来,如此反复执行。
1.4高速数据采集模块电路设计
AD9057是8位的模数转换器,可以达到60MHz的最大采样频率。设计中,模块采用50MHz的采样频率,AD9057带有2.5V的基准电压,可以对1V峰峰值输入模拟信号进行A/D转换。通常采用高频、宽带运放对模拟信号进行缓冲,本设计中采用AD8041作为放大器,AD9057高速数据采集模块电路图电路图如图5所示。
2结论
模块可以工作在50MHz的采样频率下,并且在模拟信号幅度偏小和有一定干扰的情况下也可以正常地工作。本次设计中采用了VC++6.0编写的显示控制界面进行模块验证。图6是数据采集模块捕捉的频率为5MHz、300mVpp交替出现间隔为1ms的一个脉冲波形图。
其中,触发模式选用中间触发,触发极性为上升沿,采样频率为50MHz。由此可见,本模块的技术方案可行,具有灵活简洁的特点,可以应用在程控仪器和自适应信号采集与处理系统中。

0 条回复

暂无讨论,说说你的看法吧!

 回复

你需要  登录  或  注册  后参与讨论!