首页
|
新闻
|
新品
|
文库
|
方案
|
视频
|
下载
|
商城
|
开发板
|
数据中心
|
座谈新版
|
培训
|
工具
|
博客
|
论坛
|
百科
|
GEC
|
活动
|
主题月
|
电子展
注册
登录
论坛
博客
搜索
帮助
导航
默认风格
uchome
discuz6
GreenM
»
DSP技术
» 基于PCI总线和DSP技术的虚拟仪器系统设计2
返回列表
回复
发帖
发新话题
发布投票
发布悬赏
发布辩论
发布活动
发布视频
发布商品
基于PCI总线和DSP技术的虚拟仪器系统设计2
发短消息
加为好友
苹果也疯狂
当前离线
UID
852722
帖子
10369
精华
0
积分
5185
阅读权限
90
在线时间
277 小时
注册时间
2011-8-30
最后登录
2016-7-18
论坛元老
UID
852722
1
#
打印
字体大小:
t
T
苹果也疯狂
发表于 2015-8-31 16:46
|
只看该作者
基于PCI总线和DSP技术的虚拟仪器系统设计2
数据采集
,
编程语言
,
信号线
,
技术
,
仪器
2 系统控制逻辑的实现
由于CPLD器件掉电后可保存芯片内部程序,无须烦琐的重复烧写,因此本设计采用Altera公司的CPLD器件,作为PCI接口芯片及存储芯片的逻辑控制。考虑到需要使用局部地址/数据各16根线,控制信号线22根,还要为数据采集电路预留些I/O引脚,最后决定采用144脚TQFP封装的EPM3128。
在本系统中,EPM3128的主要功能是实现PCI Local端的地址译码、DSPLocal端对各个DRAM控制的地址译码、对板上功能选择开关的状态进行译码,从而实现对系统功能的配置以及对各芯片的控制信号进行逻辑译码。所有的译码工作都通过VHDL编程语言来实现。综合和编译工作是在Altera公司的QuartusII集成编译环境中完成的。
3 数据采集电路的实现
数据采集电路是本系统的关键,数据采集电路设计的好坏将直接影响到本系统的性能。为了实现系统功能的可配置和可扩展性,数据采集模块设计成可配置的模式插接在总线接口母板上,实现对外部信号的数据采集。数据采集模块由高速16位adc(LTC1608)和高性能DSP芯片(TMS320C6713)构成,LTC1608的并行数字接口可方便地与包括TMS320C6713在内的多种DSP通信,并可连接3V或5V逻辑。
由于对采集精度的高要求,在信号进入ADC之前,需要对模拟信号进行一系列的处理以保证信号的可靠性:模拟信号首先经过电压跟随运算放大器增加输入阻抗,再经过电压比例放大和一阶RC低通滤波,最后输入到ADC。
图4 输入信号处理电路原理图
图5 LTC1608 A/D芯片引脚连接电路图
具体的信号处理电路如图4和图5所示。
系统软件设计
正如图1所示,硬件设计完成后,要使整个系统工作还需要软件的支持,这些软件包括PCI设备驱动程序、数据处理算法程序和系统控制软件。
1 设备驱动程序设计
设备驱动程序不是单独存在的,而是相关操作系统内核的一部分,所以需要对操作系统有一定的了解。Windows2000操作系统是32位的多任务非实时操作系统。对整个系统底层的操作和用户与硬件打交道的权力被屏蔽,必须通过操作系统统一管理设备驱动程序和其他内核访问来实现应用软件对硬件的访问。在设计和使用PCI设备时,经常要在软件中对系统资源进行访问,因此只有编制设备驱动程序才能实现对PCI总线设备的完全访问。
应用程序对设备I/O进行Win32调用,这个调用由I/O系统服务接收。I/O管理器从这个请求构造一个合适的I/O请求包(IRP)。在最简单的情况下,I/O管理器只是把IRP传递给一个设备驱动程序,这个驱动程序与硬件打交道,并完成IRP的处理。I/O管理器把数据和结果返回给Win32和用户应用程序。而一个IRP由一个分层的设备驱动程序栈处理是很常见的。每个驱动程序把该请求划分成更简单的请求。最高层的驱动程序(如文件系统驱动程序)知道文件如何在磁盘上表示,但不知道如何得到数据的细节;中间层次的驱动程序进一步处理请求;最低层的驱动程序与硬件实际打交道。
本设计选择的硬件驱动程序开发工具是Compuware公司提供的一个驱动程序集成开发包(DriverStudio)。利用其中的DriverWorks工具可以生成一个PCI总线驱动框架,然后在WDM中实现输入输出处理,可以用KIoRange类来实现。
在驱动程序框架生成的过程中,我们可以通过向导声明驱动程序中将要使用的资源;通过调用KIoRange类的Initialize()函数,可以对资源进行初始化(映射PCI局部空间);应用层通过DeviceIoControl函数向驱动程序发命令来调用KIoRange的成员函数实现应用层对I/O空间的处理。开发PCI母板的windows驱动程序,就是使PC能正常识别该板卡并分配所需的系统资源。
2 FFT算法的实现
系统需要针对DSP数据采集模块,开发并实现对模拟信号的采集以及对数据进行FFT(快速傅立叶变换)算法处理的程序。
作为一般的情况,设:x(n)和X(k)都是复数,因为从实际计算过程看,实数和复数没有区别,唯一不同的是:实数的虚部为零,表达式简单些。而运算过程所有的计算都是对实数进行的,如果信号或频谱是复数,就把最后计算的结果再组合成为复数分量。FFT运算的基本单元是“蝶形单元”,其蝶形运算的基本形式如下式所示:
所有蝶形单元的运算可统一表示为
(1)
式(1)中,A和B是蝶形单元的输入,C和D是输出。同时将表示为
(2)
式(1)可以表示为虚部和实部形式,带下标R的字符表示实部,带下标I的为虚部,即
(3)
根据算法原理和上面的说明,用C语言编制出一个按时间抽取的FFT算法程序,结构上分为几个部分:首先是码位的倒置,然后根据计算的点数确定蝶形运算的级数,接着是逐级进行蝶形运算,完成FFT运算。
3 应用控制软件的设计
图6 控制软件功能模块框图
整个应用控制软件的功能模块框图如图6所示。
基于以上的控制功能模块图,选择使用VC++来实现本系统应用软件的人机界面以及对系统的控制功能。VC++的开发环境集编辑、编译、连接、调试、向导等多项功能于一体,并且提供了目前成为业界标准的MFC(MicrosoftApplication Foundation Classes)类库。
我们开发的虚拟仪器系统PC端控制软件可实现数据波形显示、端口配置、内存读写以及对仪器的控制功能,其主界面如图7所示。
图7 程序主界面
结语
本设计实现了基于DSP技术与PCI总线的数据采集处理卡,开发了虚拟式实时多通道FFT频谱分析仪的应用程序以及主机监控界面。通过在数据采集卡上集成DSP,使得该卡不但能实时不掉点地采集外界信号,而且能在卡上实现数字滤波、FFT频谱分析。
整个系统经过综合调试和严格测试后,达到设计需求,业已投入实际使用。
收藏
分享
评分
回复
引用
订阅
TOP
返回列表
电商论坛
Pine A64
资料下载
方案分享
FAQ
行业应用
消费电子
便携式设备
医疗电子
汽车电子
工业控制
热门技术
智能可穿戴
3D打印
智能家居
综合设计
示波器技术
存储器
电子制造
计算机和外设
软件开发
分立器件
传感器技术
无源元件
资料共享
PCB综合技术
综合技术交流
EDA
MCU 单片机技术
ST MCU
Freescale MCU
NXP MCU
新唐 MCU
MIPS
X86
ARM
PowerPC
DSP技术
嵌入式技术
FPGA/CPLD可编程逻辑
模拟电路
数字电路
富士通半导体FRAM 铁电存储器“免费样片”使用心得
电源与功率管理
LED技术
测试测量
通信技术
3G
无线技术
微波在线
综合交流区
职场驿站
活动专区
在线座谈交流区
紧缺人才培训课程交流区
意见和建议