|
本文以实际开发系统为背景,以TI公司的TMS320VC5402与PLX公司的PCI9052为基础。详细论述了基于DSP的PCI总线结构的数据采集系统硬件及软件设计方案和实现方法。 2 数据采集系统硬件设计 2.1 系统结构及原理 基于DSP的PCI总线高速数据采集系统的结构如图1所示,它主要由A/D转换器、DSP数据读取及处理、PCI通信接口和PC机等部分组成。模拟信号经A/D采样后由DSP通过并行I/O读取,并将处理后的数据通过PCI总线送到通用计算机做进一步处理[1]。 
A/D转换器采用TI公司的TLC5510,TLC5510为8 bit、20 MS/s的高速并行A/D转换器。TLC5510在每个时钟的下降沿采样,该采样点的转换数据经过2.5个延迟后,在时钟的上升沿输出,也就是每个点的转换时间为2.5个时钟周期,一旦转换流水线启动,则在每个时钟的上升沿都有一个转换数据输出。 DSP与计算机之间的通信由接口电路PCI9052实现。PCI9052是PLX公司推出的一种简单、高效的PCI从设备接口,可实现多种外设局部总线和PCI总线的互连。根据PCI规范,主设备和从设备的划分本质上是确定数据传输双方访问与被访问的能力和关系。在此,PCI9052只能由主机或其它拥有总线主控制能力的设备进行数据的读写操作。但由于其内部有64Byte写FIFO和32Byte读FIFO,使PCI9052的局部总线和PCI总线能互相独立工作,可支持传输速度为132 Mb/s的突发传输[2]。 DSP采用TI公司的TMS320VC5402,它的处理能力可达到100 Mb/s,具有改进型的8位HPI接口,有16 K*16 Bit DARAM,以及4 K*l6 Bit ROM存储空间。具有较高的性价比[3]。 2.2 PCI9052与TMS320VC5402的接口 PCI9052的局部总线设置为8位局部总线,采用地址数据非复用模式,PCI9052和TMS320VC5402的接口电路如图2所示[4,5]。此时,LBE1为LA1,LBE0为LA0。将PCI9052的LBE0接HPI的HBIL,用以区分第一字节和第二字节。PCI9052的LA17接TMS320VC5402的HCNTL1,LA16接HC-NTL0,以选择HPI寄存器。PCI9052的LAD[0:7]接TMS320VC5402的HD[7:0]。TMS320VC5402的HINT反向后接至PCI9052的LINT1,之所以反向是由于HINT低电平有效,而UNT1是高电平有效。PCI9052的LW/R反向后接至TMS320VC5402的HR/W,因为LW/R高电平表示写,低电平表示读;而HR/W高电平表示主机要读HPI,低电平表示主机要写HPI。PCI9052的CS0与CS1相或后连接至HCS,RD和WR分别连接到HDS1,HDS2。TMS320VC5402的LRDY通过一定的逻辑组合再加上一个D触发器与PCI9052的LRDY相连以实现PCI9052与HPI的同步。PCI9052局部时钟采用40MHz。其中CPLD选用EPM7128,使用MAX PLUSⅡ进行设计。 
HPI主机接口采用访问寄存器的方式来进行DSP内部数据的读写,把HPI口单纯映射到PCI的I/O空间或者存储器空间都有不可避免的缺点,因此本接口电路采用双映射方式,利用映射来访问控制、地址寄存器和单个数据口,而利用存储器映射来访问连续数据口。以实现TMS320VC5402与PCI9052之间方便、高效的数据通信[6]。 3 数据采集系统软件的设计 数据采集系统的软件设计包括三个部分:DSP上的采集程序及响应程序。数据采集卡的驱动程序,在驱动程序上构建的应用程序。驱动程序是实现DSP与计算机通信的关键,本文主要介绍设备驱动模型及其初始化的设计方法。 3.1 驱动程序模型 Win2000不支持直接访问硬件,虚拟驱动器依赖运行在内核模式的真正的驱动器。内核模式驱动程序使用系统级代码编写,且运行在内核模式下,因为内核模式允许直接硬件访问。内核驱动程序可被进一步分成遗留模式的驱动程序和Windows驱动模式的驱动程序(WDM)。 Windows驱动程序模型(WDM)如图3所示。图中左边是一个设备对象堆栈。设备对象是系统为帮助软件管理硬件而创建的数据结构。处于堆栈最底层的设备对象称为物理设备对象(PDO)。在设备对象堆栈的中间某处有一个功能设备对象(FDO)。FDO的上面和下面还会有一些过滤设备对象。位于FDO上面的过滤设备对象称为上层过滤器,位于FDO下面的过滤器设备对象称为下层过滤器。 
总线驱动器的任务之一就是枚举总线上的设备。并为每个设备创建一个PDO。一旦总线驱动器程序检查到新硬件存在,PnP管理器就创建一个PDO,创建完PDO后,PnP管理器参照注册表中的信息查找与这个PDO相关的过滤器和功能驱动程序。系统安装程序负责这些注册表项,而驱动程序包中控制硬件安装的INF文件负责添加其他表项。这些表项定义了过滤器和功能驱动程序在堆栈中的次序。 3.2 驱动程序的初始化 PnP管理器先装入硬件需要的驱动程序,然后再调用驱动程序中的AddDevice函数。一个驱动程序可以被多个类似的硬件使用。但驱动程序的某些全局初始化操作只能在第一次被装入时执行一次。而DriverEntry例程就是用于这个目的。DriverEntry是内核模式驱动程序主入口点常用的名字。I/O管理器按下面方式调用该例程: 
DriverEntry的第一个参数是一个指针,指向一个被初始化的驱动程序对象,该对象代表用户的驱动程序。DriverEntry的第二个参数是设备服务键键名,其主要工作是把各种函数指针填入驱动程序对象。这些指针为操作系统指明了驱动程序容器中各种子例程的位置。
下一篇链接:关于DSP在卫星测控多波束系统中的应用
上一篇链接:DSP芯片的声控电子记事本系统设计 |