积分规则 网站地图 帮助中心    
嵌入式软件 单 片 机 DSP 存储器 传感控制 光电显示
嵌入式硬件 CPLD/FPGA SOPC AD/DA 接口电路 模拟设计
I C设计 通信产品 汽车电子 电源产品 消费电子 数控系统
工业控制 军工/航天 安防产品 医疗电子 计算机外设 测试测量
供应 I C
求购 公司库

  IC 求购 销售 公司 论文 DATASHEET 参考设计 论坛
当前位置: 电子技术 >> 存储器 >> 相关文章
  相关分类: 相关文章 | 应用论文 | 新产品 | 下载 |
实时高速数据采集与存储系统的一种实现方法
 
作者:沈羽 齐伟民 张毅   来源:微计算机信息    点击数:365   更新时间:2007-9-18
您可以添加到网摘 让更多人关注此文章:

    

摘要:PCI-7300A_RevB超高速数字I/O卡的应用,介绍一种大容量、高速、实时数据采集与存储系统的实现方法。并根据自己的开发经验,指出实现过程中应该注意的一些问题。
关键词:高速、实时、数据采集与存储、PCI-7300A_RevB


1、引言


   随着信息科学的飞速发展,数据采集和存储技术已经是数字信号处理中非常重要的环节,将决定整个系统的性能。它广泛应用于雷达,通信,遥测遥感等领域。它己经成为人们获得外界信息的重要手段。基于总线的数据采集与存储系统,由于可靠且易于实现、经济等优点,得到了广泛的应用。但当数据传输率很高时,保持高速数据存储过程的可靠性、实时性将会成为一个比较棘手的问题。为此一些厂商提供了双总线技术、64位/66MHzPCI总线系统来解决这问题。但这些技术较为昂贵,且忽略了现有的硬件设备。经过实验与探索,我们选用ADLINK公司的PCI-7300A_RevB超高速数字I/O卡,利用现有的单(32位/33MHz)PCI总线的计算机


    系统构成低成本的硬件平台,并利用自己开发的软件系统,最终实现了高速(45Mbytes/sec)持续的数据采集于存储。


2、硬件组成及注意事项


   为了利用现有的硬件设备,降低成本;我们采用ADLINK公司出品的PCI-7300A_RevB超高速数字I/O卡作为数据采集部分。该卡的主要特性如下:


·32位数字I/O通道


·32位PCI总线


·通过触发信号控制数据采集操作的开始。


·100针SCSI型连接器


·分散/聚拢方式的DMA


·最高传输速率80Mbytes/sec


   要实现实时高速的数据存储,使用的一般的硬盘是不行的。所以我们选用希捷公司出品的型号为ST3146707LC的SCSI硬盘,该硬盘的容量是146GB,能满足记录大量数据的需要,其转速为10Krpm。相应的SCSI硬盘控制器,选用Adaptec公司出品的型号为Adaptec19160的Ultra160-SCSI硬盘控制器.


    在搭建硬件平台的过程中有些问题是必须注意的,否则系统不能正常工作。首先,PCI-7300A_RevB卡虽然采用分散/聚拢方式的DMA,但它对CPU资源的占用率是非常高的。经过实验证明,要保证整个数据采集与存储系统正常工作,只能使用奔四1.7G以上的计算机系统。其次,Windows系统允许多个设备共享一个中断请求号(IRQ)。为了保证存储过程的实时性,必须确保SCSI硬盘控制器和PCI-7300A_RevB卡使用不同的IRQ。可以在主板BIOS里把Pnp(即插即用) /PCI设备的IRQ进行手动配置。最后Windows 2000 Service Pack 2 (SP2) 及早期版本不支持大于137GB容量的硬盘。须要先安装Service Pack 3,再在注册表(HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Atapi\Parameters)里添加一个REG_DWORD类型的参数EnableBigLba,并把值设成0x1。这样146GB的硬盘才能工作正常。


3、软件设计


    软件设计直接决定硬件是否能正常工作,以及能否充分发挥硬件的性能。


3.1  PCIS-DASK及双缓冲区模式的工作原理


    PCIS-DASK是ADLINK公司为自己的产品提供的驱动程序包,提供了专门用于实现高速数据采集的连续多缓冲区操作的一组API函数。通过这组API函数,我们可以按照双缓冲区的原理,非常方便地实现对数据的实时、高速、连续的采集与存储。


    双缓冲区模式,在工程上称为“乒乓” 缓冲区模式。跟常用的单缓冲区模式相比双缓冲区模式的优点是,它可以使用较小容量的内存,不间断地缓冲几乎无限量的数据(输入与输出端需协同工作)。这种缓冲区模式的工作原理是:在内存里开辟两块容量相等的缓冲区(以下将分别它们称为第一缓冲区和第二缓冲区)作为连续数据输入的缓冲区。工作开始时,数据采集卡首先将数据写入第一缓冲区中,在数据采集卡开始把数据写入第二缓冲区的同时,用户程序可以根据自身需要取出第一缓冲区中的数据做特定的处理。当第二缓冲区被写满后,数据采集卡回到第一缓冲区的起始处,以覆盖旧数据的方式,把新数据写入第一缓冲区中;与此同时用户程序取出第二缓冲区中的数据。整个数据采集处理过程可以如此不断地循环进行下去。


32板卡驱动设置及注意的问题


    对板卡驱动的深刻理解是编写好数据采集于存储程序的前提。在连续数据输入模式下,板卡驱动程序需要在系统内存里开辟一块缓冲区做为二级缓存,用户可以设置该缓冲区的大小 。方法是:从菜单开始/程序/PCI-DASK/NuDAQ PCI configuration Utility 打开DASK2000 Device Driver Configuration对话框,从Card Type组合框中选择Pci7300A_RevB项,在DI栏输入你想要开辟的缓冲区容量,点击OK按钮完成设置。需要注意的是板卡驱动设置的缓冲区(简称驱动缓冲区)容量与用户程序开辟的缓冲区(用户缓冲区)容量存在着一定关系。经过我们多次实验,得出驱动缓冲区容量大约是用户缓冲区的3倍;因此,当驱动缓冲区过小,而用户缓冲区较大时,会出现错误。


33  VisualC++开发环境的设置


    为了使用PCIS-DASK提供的实现连续多缓冲区操作的API函数,以及初始化板卡、设置板卡工作方式的API函数;需要VisualC++连接PCI-DASK提供的动态连接库(Pci-dask.lib).具体方法是:打开工程,从菜单Project/Setting…打开Project Setting对话框,切换到Link选项卡,在Object/library modules拦中添加Pci-dask.lib,点击OK按钮完成设置。最后在工程中加入头文件Dask.h.。


34多线程的实时数据存储软件设计


   在要求高速、实时和连续采集和存储的情况下,一方面要求系统不间断地进行数据采集,同时还要进行数据实时地存储,否则将会丢失数据,造成数据不完整。为了解决这个问题,我们在软件实现中,引入了Windows的多任务处理技术(multitasking)。在程序里创建两个工作线程分别完成数据采集和数据存储工作。缓冲方式采用上面所说双缓冲区模式,当数据采集线程(SampleThreadProc)把采集到的数据写入第一缓冲区时,数据存储线程(StorageThreadProc)把第二缓冲区的数据存入SCSI硬盘;当数据采集线程把数据写入第二缓冲区时,数据存储线程把第一缓冲区的数据存入SCSI硬盘;如此循环。另外通过实际实验测试Adaptec19160 Ultra160-SCSI硬盘控制器,配合希捷公司出品的ST3146707LC SCSI硬盘,持续写入速率能达到80Mbytes/sec。远大于45 Mbytes/sec的采集速率。所以当数据采集线程写满其中一个缓冲区之前,数据存储线程已经把另一个缓冲区里的数据存储入SCSI硬盘。所以这种方法能保证数据的实时性、完整性和连续性。其程序流程图如图1。




35软件实现


   由于篇幅所限,下面仅给出程序中核心的代码。


BOOLEAN BufferID=0;//缓冲区的ID;1第一缓冲区,0:第二缓冲区。


BOOLEAN Stop=0;//停止数据采集与存储,1:停止,0:继续。


U32 Buffer1 [data_size], Buffer2 [data_size];


//开辟块缓冲区。


FILE *fp;//存储数据的目录。


UINT SampleThreadProc (LPVOID pParam)


{BOOLEAN HalfReady=0;//缓冲被写满标志


do {HalfReady=0;


do(DI_AsyncMultiBufferNextReady(card,&HalfReady,&viewidx))://等待驱动程序报告缓                                     
//有冲区被写满。                  


}while(!HalfReady);//如果HalfReady!=0,


//明有缓冲区被写满。


BufferID = ! BufferID;


AfxBeginThread(StorageThreadProc,NULL);


//启动数据存储线程




[1]



相关文章
· 基于FPGA的超高速雷达实时采集存储系统[88]
· 基于FIFO IDT7202-12的数字存储示波器[186]
· 基于FPGA的视频图像叠加系统的设计与实现[115]
· 基于DSP的图像旋转算法数据调度策略[65]
· 利用TMS320240 DSP运算和电机控制功能实现SVPWM[331]
热门评论排行
·VHDL设计中电路简化问题的
·江苏嵌入式Linux教育培训
·锐极LINUX驱动培训班定于
·基于实时操作系统μC/OS-
·ARM嵌入式系统基础教程(N

文章评论
    没有任何评论
*只显示最新10条评论。评论内容只代表网友观点,与本站立场无关。更多评论
发表评论
  * 请先[登陆]再进行评论,谢谢。
评分: 1分 2分 3分 4分 5分
内容: *
发帖须知:
一.所发文章必须遵守《互联网电子公告服务管理规定》;
二.严禁发布供求代理信息,公司介绍,产品信息等广告宣传信息;
三.严禁恶意重复发帖;
四.严禁对个人,实体,民族,国家等进行漫骂,污蔑,诽谤。
 
热点新闻 [更多]
 
华虹NEC的0.13微米嵌入式工艺取
映绿色风潮 奇美电子在日发
尔必达注资力晶半导体新台币35亿-4
WSTS调降近三年IC市场预期&nb
Vishay 推出具有业界
具备革命性数字安全特性的英飞凌SLE
祥硕科技采用一系列 MIP
安森美半导体荣获德尔福苏州E&S优质
赛普拉斯为用于机器视觉与运动分析应用
赛普拉斯针对机器视觉与全息数据存储应
 
热门下载 [更多]
 
[ PCB设计] Protel99教程下载
[ ] 手把手学单片机20个例
[ ] 单片机做的智能台灯
[ ] 单片机入门书
[ ] linux系统移植开发文档
[ ] IC卡的读写程序
[ ] 8051单片机C语言彻底应用
[ 常用软件] 555定时器电路设计软件V1.2
[ 常用软件] 51定时器计算软件
[ ] ARM处理器应用开发4步骤
 
论坛新帖 [更多]
 
硬件工程师面试题及答案(模拟电...
如何在C语言中跳出多重循环?—...
ARM入门开发步骤...
linux学习点滴...
在linux上安装配置samb...
[转帖]WinCE 5 mem...
四折批发各种数码相机,摄相机等...
最低价销售各种品牌手机...
震撼出售各种品牌笔记本电脑等!...
IC design 的流程...

 
赞助商 [更多]
 

ICP许可证号:[粤 05056597]
联系电话:010-82517432 82517615 传真: 010-82517615

版权所有 Copyright © 2006 嵌入式技术网