一种高速化和集成化的数据采集系统的设计

发布者:创新之星最新更新时间:2011-06-12 关键字:高速化  集成化  数据采集 手机看文章 扫描二维码
随时随地手机看文章

  随着嵌入式技术的飞速发展,对嵌入式系统的应用需求也呈现出不断增长的态势,因此,嵌入式技术也相应地取得了重要的进展,系统设备不断向高速化、集成化、低功耗的方向发展。现场可编程门阵列FPGA经过近20年的发展,到目前已成为实现数字系统的主流平台之一。  FPGA具有单片机和DSP无法比拟的优势,相对于单片机和DSP工作需要依靠其上运行的软件进行,FPGA全部的控制逻辑是由延时更小的硬件来完成的。

  通用串行总线(USB)是现代数据传输的发展趋势,是解决计算机与外设连接瓶颈的有效手段,USB2.O版本在原先的版本基础上实现许多技术上的飞跃与进步。USB2.0协议规范有以下主要优点:1)速度快,接口的传输速度高达480Mh/s,远大于PCI接口的132 Mb/s的传输速度;2)连接简单,所有的USB外设利用通用的电缆可简单方便地连入PC机中,安装过程高度自动化;3)支持多设备连接,USB接口支持多个不同设备采用“级联”方式来连接外设。

  故为了将数据采集系统设计更加符合高速化和集成化的趋势,采用了FPGA和USB2.0组合的方案来进行。

  1 数据采集系统的框架与硬件设计方案

  系统硬件设计部分中,在完成系统时钟源、电源等必要电路的设计基础上,重点就是完成系统内各个部件的接口电路的设计,通过这部分的设计,基本的硬件平台就建立起来了。系统部件间的硬件电路接口设计如图1所示。

系统部件间的硬件电路接口设计

图1 系统部件间的硬件电路接口设计

  A/D芯片在此选用了德州仪器公司的10位串行接口芯片TLV1572,8管脚的SOIC封装,它外部较少的管脚不仅能够很方便地实现与其他器件连接,而且它体积小,可以节省很多布线资源,如图2所示。TLV1572的最高采样速率为1.25 MS/s,其积分非线性误差INL<±1LSB,可以采用3 V或5 V的供电方式。

 A/D芯片及周边电路

图2 A/D芯片及周边电路

  由于大部分USB1.1的芯片都需要微控制器参与数据从端点FIFO到应用环境的转移,微控制器在里面扮演了搬运者的角色,那么显然微控制器本身的工作频率就极大地限制了数据传输带宽的进一步提高,微控制器将成为制约整个系统速度提高的瓶颈。

  故在此选用的是Cypress Semiconductor公司的EZ-USBFX2(CY7C68013A)USB2.0芯片,它集成了USB2.0收发器,串行接口引擎SIE和可编程的外围接口。该芯片的另一大优点就是提供了一种独特架构,使USB接口和应用环境直接共享Slave FIFOs,微控制器无需参与数据传输,这样就极大地提高了系统数据传输速率,如图3所示。

EZ-USB FX2芯片的内部结构

图3 EZ-USB FX2芯片的内部结构

  由于FPGA的I/O管脚数目众多,它在和A/D芯片及USB2.0芯片相连时,能够按照优化布线资源的方式进行PCB布局设计,具体的连接方法在图1中已经给出。

  2 数据采集系统软件设计方案

  FPGA软件设计方案中采用了自顶向下的设计方法,运用Verilog HDL语言来设计数字系统,分别完成数字系统内部各个子模块的设计。数据采集系统结构及模块间的连接示意图如图4所示。

 数据采集系统结构及模块间的连接示意图

图4 数据采集系统结构及模块间的连接示意图[page]

  由图4可见,系统主要由3个模块组成。它们分别是A/D接口adc.v模块、USB接口usb.v模块以及顶层top.v模块,其中在顶层top.v模块中,完成了对其他两个模块的调用,使它们拼接成为一个完整的系统。其中锁相环PLL_1和PLL_2分别给ade.v模块和usb.v模块提供时钟源。

  2.1 FPGA控制A/D芯片接口的软件设计

  在adc.v模块中,需要完成FPGA对TLV1572的接口逻辑代码的设计,其实质就是在TLV1572的时序分析的基础上来设计逻辑代码,使得FPGA能够按照其时序要求完成对A/D芯片的各种控制,包括提供给TLV1572的串行时钟信号信号ADC_CLK、CS片选信号ADC_CSn以及从TLV1572中读取出转换完成的串行数据S_DATA。

  TLV1572的时序图如图5所示。

TLV1572的时序图

图5 TLV1572的时序图

  从时序图可见,A/D芯片的转化过程是在当CS为低电平后,由SCLK的上升沿发起的,输出的头六位二进制数字均为“0”,此时A/D芯片正处于采样阶段,数字无效,这六位无效的二进制数之后,A/D转换完成后的二进制数据在SCLK的上升沿被送到总线上,这时,作为系统主控制芯片的FPGA应当去采样总线上的数据,得到转换后的结果。

  2.2 FPGA控制USB2.0芯片的软件设计

  在usb.v模块中,需要完成FPGA对CY7C68013A的接口逻辑代码的设计和异步FIFO模块的设计。其中,对CY7C68013A的接口逻辑代码主要是完成对CY7C68013A芯片的端点FIFO的各种控制,包括16位的数据信号FIFO_DATA[15:0]、2位端点FIFO选择信号FIFO_ADDR[1:0]、端点FI-FO满标志位信号FIFO_Full、端点FIFO写使能信号FIFO_WR_en。因为adc.v模块和芯片外部的CY7C68013A工作在不同的时钟域内,故异步FIFO模块设计部分设计的目的除了是要完成从ade.v模块读取过来数据的缓冲,另外就是需要解决异步时钟域数据传输可能出现的亚稳态问题。

  具体来说,FPGA在工作时需要不断向CY7C68013A的端点FIFO写入数据,而FPGA与CY7C68013A之间的工作模式属于同步方式,两者都由PLL _2模块提供40 MHz的时钟信号进行工作,那么它们之间的关系就是同步Slave FIFO的写操作,由FPGA向CYTC68013A中写入数据。

  在Verilog HDL程序设计中,需要设计一个状态机来完成同步Slave FIFO写的时序,写时序如下;1)IDLE:当写事件发生时,进状态1;2)状态1:使FIFOADR[1:0]指向IN FIFO,进状态2;3)状态2:如果端点FIFO满,在当前状态等待,否则进状态3;4)状态3:驱动数据到数据线上,使SLWR有效,持续一个IFCLK周期,进状态4;5)状态4:如需传输更多的数,进状态2,否则进入IDLE状态。

  该状态转换的状态图如图6所示。

状态转换的状态图

图6 状态转换的状态图

  2.3 FPGA的顶层模块的设计

  由图4可知,top.v模块是FPGA整个系统的顶层模块,它通过顶层调用的方式把adc.v和usb.v两个模块组合成一个完整的系统,系统与外界进行通信是通过top.v这个模块对外的各个接口来实现的,具体到器件层面,就表现为由top.v文件定义的FPGA的相关的管脚来和A/D与USB2.0芯片进行数据的交换、控制信息以及时钟信号的传递。这种自顶向下的设计方法,不仅符合人的思维逻辑,也大大地简化了大规模逻辑电路的设计工作,使人们从繁琐的自底向上的底层设计中解放出来,以一种系统级的思维模式设计电路。这是自顶向下设计方法的巨大优势之一。顶层top.v模块是通过例化的方式来调用adc.v模块和usb.v模块的以及PLL模块。

  2.4 USB2.0芯片的固件程序设计

  在USB的体系中,无论是其本身的规范还是各种厂家所提供的芯片资料,关于主机对USB的检测都称之为枚举Enumeration(and ReNumer-ation),即枚举(与重新枚举)。固件在这发挥了无法替代的作用。应该说所有基于微控制器及其外围电路的功能设备的正常工作都离不开固件的参与,固件的作用就是辅助硬件,或者说是控制硬件来完成预期的设备功能。没有固件的参与和控制,硬件设备只是芯片的简单堆砌,无法实现预期的功能。

  CY7C68013A内部集成了增强型的8051内核,它与8051指令集二进制是兼容的,那么就可以选择汇编或者高级语言C51来编写固件代码,两者各有优缺点,适用的环境也不同。本设计中采用C51来编写固件程序,关于开发C51语言的Keil μVision 2开发编译环境在此不再赘述。

  Cypress公司为了简化和加速用户使用CY7C68013A芯片进行USB外设的开发过程,特别设计了一个完整的固件程序的框架。这个框架可以执行CY7C68013A芯片的初始化、USB标准设备请求的处理和USB挂起电源管理服务。用户只需要提供一个USB描述符表,添加其他端点接收和发送数据的通信代码,以及控制外围电路的程序代码。

  在Keil μVision 2集成开发环境下,新建工程后,需要将工程代码复制到工程目录中并添加至工程列表中,开发固件程序需要几个重要的文件依次为:1)fw.c,框架程序的代码。2)periph.c,用户函数挂钩的相关定义,外围设备的控制文件。在上节中,主程序fw.c调用的TD_lnit()函数即在此定义出来。3)dscr.a51,USB描述符表,上节中关于描述符的定义在这个文件中给出。4)EZUSB.lib,EZ-USB函数库目标代码。5)USBJmpTb.OBJ,EZ-USB中断向量和跳转表。6)FX2.h,程序运行所需要的一些宏定义。7)fx2regs.h,CY7C68013A相关的寄存器定义及位屏蔽的宏定义。8)syncdly.h,定义了若干延时函数供程序调用。

  3 Modelsim环境下仿真与结果

  ModelSim是Model Technology(Mentor Graphics的子公司)的HDL硬件描述语言的仿真软件,该软件可以用来实现对设计的VBDL、Verilog HDL或是两种语言混合的程序进行仿真,同时也支持IEEE常见的各种硬件描述语言标准。[page]

  目前需要对adc.v模块进行功能仿真,以此验证该模块的功能的正确性。仿真测试的方法就是给adc.v这个模块的s_data数据输入端,即A/D芯片的串行数据的输出端,加载一组测试数据,每16个为一组测试数据,模拟在真实环境下从A/D芯片读取出来的二进制数据,然后在adc.v模块的输出端,即并行的16位宽的data_out端口观察是否与给定的测试数据相一致。假如一致,则模块的功能是正确的。假如有个别位的数据不一致,则需要检查模块的代码是否存在问题。在编辑器中编写Testbench程序如下(非关键的程序限于篇幅,就省略了):



  由上面的程序可以看见,给s_data端加载的一组16位二进制数据为“0000-0011_0110_1011”。在ModelSim环境下,将待测试的文件与该测试文件放在同一个工程下,设置好相关参数后运行仿真可以得到如下仿真波形,如图7所示。

仿真波形

图7 仿真波形

  由图7可见,从data_out这个并行的数据端口读出的数据正是在Testbench仿真测试文件中给定的那一组测试数据,仿真得到的结果是正确的。

  4 数据采集系统的实验

  在FPGA控制A/D芯片接口的软件设计中,是通过FPGA内部的逻辑电路实现了分频,并将分频后的信号作为A/D芯片工作的采样时钟,经过测试,得知A/D芯片的采样频率为1.08 MHz,通过信号发生器,将输入的模拟信号设为10 kHz、幅度为3 V的正弦波,采样转换后的数据上传到上位机中,显示的波形如图8所示。

10KHZ信号输入时得到的波形

图8 10KHZ信号输入时得到的波形

  在同等条件下,把输入的模拟信号的频率调整为5 kHz。A/D芯片的采样频率仍然为1.08 MHz。得到的显示波形如图9所示。

5 kHz信号输入时得到的波形

图9 5 kHz信号输入时得到的波形

  由图8和图9可知,在对模拟信号采样时,当采样率不变时,输入模拟信号的频率越低,相对地就提高了采样点、减小了采样间隔,在图形中就越能体现出原始模拟信号的信息,得到的波形就更加的理想。

  5 结束语

  本文在研究了FPGA和USB2.0技术的基础上,提出了数据采集系统的总体设计方案,以FPGA和USB2.0为技术核心,设计了硬件电路和软件代码并在ModelSim环境下通过了仿真测试。该系统不仅能够实现一般用途的数据采集,还实现了系统的高速化、集成化和低功耗工作,为便携化数据采集系统提供了一种设计思路。

 

 

关键字:高速化  集成化  数据采集 引用地址:一种高速化和集成化的数据采集系统的设计

上一篇:基于AT89C51的自动温度测量报警系统设计
下一篇:基于SOC的高精度倾角测量系统的设计

推荐阅读最新更新时间:2024-03-30 22:14

基于ZigBee和ARM技术的火灾信息数据无线采集系统
消防联网监控系统在我国已经日益发展起来,现在许多城市已经建立起了城市消防联网监控系统,一些企业也将自己的火灾报警设备通过传输设备实现了联网,建立一个监控中心进行集中监控管理。而在实际的联网中,尤其是企业网,因为客户需要监控的信息较多,被监控的消防设备安装分散,从而产生了数据采集困难的问题。本文介绍的系统是在消防联网监控系统的基础上延伸的一套数据采集系统,将以前无法进行数据采集或很难进行数据采集的联动控制系统上的数据信息通过安装一个数据采集模块,通过短距离无线通信集中传送到传输设备上,再由传输设备将数据远传给消防监控中心。 1 系统组成 1.1 系统结构及工作原理 系统结构如图1所示。消防监控中心是由PC机、数据接收及处理软件
[单片机]
基于ZigBee和ARM技术的火灾信息数据无线采集系统
基于LABVIEW平台的数据采集卡软件设计
引言 作为专业测控领域的软件开发平台,LABVIEW内含丰富的数据采集、数据信号分析以及功能强大的DAQ助手,搭建数据采集系统更为轻松,便于硬件设计人员直接对硬件的操控展开设计。此外,它可通过DLL、CIN节点、ActiveX、.NET或MATLAB脚本节点等技术,实现与其它编程语言混合编程,通过调用外部驱动代码使它与设备的连接变得非常容易。由于采用数据流模型,LABVIEW可以自动规划多线程任务,可充分利用PC系统处理器的处理能力,从而提高模块的采集效率。本文基于LABVIEW开发环境,以库函数节点的调用方式及结构,实现了一种中频数据采集与处理卡软件的设计。 数据采集卡软件结构 采集卡软件是基于PC的数据采集系统
[模拟电子]
一种通用数据采集系统的设计方案
数据采集是信号分析和处理的重要环节,在导弹半实物仿真过程中快速可靠的实验数据为提高仿真精度发挥着重要的作用。传统的数据采集系统各种数字、模拟信号相互交织,相应的外围电路庞大,接口复杂,要占用较大的电路板空间,无法满足系统的小型化要求,同时硬件成本也很高。当系统性能指标发生变化时,相应的功能电路和与之对应的隔离、滤波等电路以及相关程序都要改变。这种牵一发而动全身的结构导致系统的可扩展性比较低,系统的通用性比较差。另一方面,早期数据采集系统多是基于复杂可编程逻辑器件(CPLD)设计的,数据的采样速度和精度都不是很高。 随着集成电路技术的发展,NI公司的FPGA板卡以其IO 引脚多、片内资源丰富、结构灵活、具有嵌入式控制器的特点获得了越
[电源管理]
一种通用<font color='red'>数据采集</font>系统的设计方案
泛华测控推出压力和振动数据采集分析系统
  近日,由北京中科泛华测控技术有限公司(简称“泛华测控”)设计并开发的“压力和振动数据采集分析系统”以及“液压振动测试平台采集系统”正式推出市场。      泛华测控的“压力和振动数据采集分析系统”是专为汽车发动机测试而设计开发的,其可对发动机储油系统的压力波动、加速度等信号进行采集、分析以及存储。其秉承了泛华测控一贯的设计开发理念—“柔性测试技术”,整个系统具有较高的可扩展性,最多可配置达8个单轴加速度信号输入、2个三轴加速度传感器、8路压力变化信号,在很大程度上提高信号的采集量及缩短了测试时间。该系统采用便携式设计,可对数据进行时域频域分析,并生成报表。其中PSD谱分析是该系统的设计亮点之一,也是目前该领域中较为领先的技术。
[测试测量]
泛华测控推出压力和振动<font color='red'>数据采集</font>分析系统
高精度单片数据采集系统MAX1400的原理及应用
    摘要: MAX1400是美国MAXIM公司推出的一种基于∑-△A/D转换技术的高精度单征数据采集系统芯片。文中介绍了它的工作原理、内部结构及编程要点,并给出了MAX1400应用在压力变送器中的一种典型应用电路。     关键词: 数据采集系统  A/D转换  ∑-△A/DC  MAX1400 传统的数据采集系统大多采用Nyquist率ADC(积分型、逐次比较型、闪烁型等),当需要较高分辨率时(16bit以上),这些传统的A/D转换技术将面监很多困难,因为它们需要复杂的高阶模拟抗混迭滤波器、定时以及幅度误差都极小的采样-保持电路等,因而实现起来困难较大,成本很高。新型的∑-△A/D转换技术能够比较低的成本获
[应用]
具有USB2.0接口的高速数据采集卡设计
  引言   数据采集在现代工业生产及科学研究中的重要地位日益突出,并且实时高速数据采集的要求也不断提高。在信号测量、图像处理、音频信号处理等一些高速、高精度的测量中,都需要进行高速数据采集。现在通用的高速数据采集卡一般多是PCI卡或ISA卡,这些采集卡存在很多缺点,比如安装麻烦,价格昂贵,尤其是受计算机插槽数量、地址、中断资源的限制,可扩展性差。   通用串行总线USB是用来连接外围设备与计算机之间的新式标准接口总线。它是一种快速、双向、同步传输、廉价的并可以实现热拔插的串行接口。USB技术是为实现计算机和通信集成而提出的一种用于扩充PC体系结构的工业标准。基于USB接口的高速数据采集卡,充分利用了USB总线的优点,它也
[嵌入式]
采用虚拟软件与数据采集卡实现故障录波器系统的设计
引言 故障录波器是提高电力系统安全运行的重要自动装置,当电力系统发生故障或振荡时,能自动记录故障点前后一定时间内各种电气量的变化。参考文献设计的故障录波器采用虚拟软件与数据采集卡相结合的方法,其缺点是必须依靠计算机来进行计算分析,设备移动不方便,而且数据采集卡的价格也比较高,使得产品应用有一定的局限性。参考文献设计的是一种基于DSP和A/D转换器件相结合的故障录波器,所用的A/D转换器件不能同步转换6路信号,所测结果之间有一定的延迟。针对以上缺点,现采用DSP和AD7656相结合的方法,通过外接LCD显示波形和数据,使其可以作为手持设备使用,也可连接电脑通过LabWindows/CVI软件在电脑上实时显示,所用的AD7656具有的
[测试测量]
采用虚拟软件与<font color='red'>数据采集</font>卡实现故障录波器系统的设计
一种基于高速数据采集卡的虚拟示波器开发
摘 要:本文基于PCI接口的CS 82G高速数据采集卡和Visual C++编程工具,开发了一种快速的虚拟示波器试验系统,实现了高速数据的采集和动态波形的显示,并具有频谱分析和数字滤波功能。 关键词:虚拟示波器;数据采集;CS 82G 引言 虚拟仪器以通用计算机作为系统控制器,各种复杂测试功能、数据分析和结果显示都完全由计算机软件完成,在很多方面较传统仪器有无法比拟的优点。 本文在带有PCI总线接口的CS82G高速数据采集卡和Visual C++编程工具的基础上开发的快速虚拟示波器试验系统,集成了波形采集、数据分析、输出、显示等多种功能。同时,为保证数据采集和波形显示的实时性,设计中还采用了多线程技术。 图1
[应用]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
最新测试测量文章
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved