新闻中心

EEPW首页 > EDA/PCB > 设计应用 > 星载电子设备多余物数据采集系统的设计

星载电子设备多余物数据采集系统的设计

作者: 时间:2011-06-10 来源:网络 收藏

系统控制结构框图如图3所示。在数据控制和传输模块中,逻辑控制器件EPM7064为模数转换器件AD7892、CY7C4265以及EZ—USBFX2 CY7-C68013提供时序信号,通过调整、配合各芯片之间的通讯,控制四路数据采集和缓存模块有序而快速地将数据传输至USB,保证各环节的数据采集和传输的数据同步不丢失,是整个控制系统的核心。

本文引用地址:https://www.eepw.com.cn/article/191176.htm

c.JPG



3 系统软件模块设计
3.1 USB固件程序
固件程序采用Cypress公司提供的固件程序框架,主要负责完成芯片初始化,对芯片进行配置、设备请求、数据传输等相应的工作,完成特定的目的。
本系统设计的固件程序将FX2配置为Slave FIFO模式,总线宽度为16位,在4个端点中,EP2和EP4未使用,EP6和EP8配置如表1所示。由于采用自动输入输出模式,主机和单片机是通过旁路FX2的CPU而直接连接的,所有数据直接通过EP6或EP8管道提交,不需固件程序的干预。标志引脚(FLAGA、FLAGB)掌握FX2各端点FIFO的状态,FLAGB定义为输入端点的满标志,当数据满时该引脚为低电平;FLAGB定义为输出端点EP8的空标志,当主机传来的数据被读空时该引脚为低电平。

d.JPG

固件框架函数流程图如图4所示。TD_Init()函数是在设备重枚举和任务调度启用之前被调用,初始化用户的全局状态变量,规定各种端点资源的使用;TD_Poll()函数在设备工作期间被重复调用,包含一个执行外设功能的状态机:TD_Suspend()函数在框架进入挂起状态之前被调用,包含使设备进入低功耗状态的程序。

e.JPG


3.2 CPLD控制程序
逻辑控制器件EPM7064为模数转换器件AD7892、CY7C4265以及EZ—USB FX2 CY7C68013提供普通的时序信号、握手信号(满、半满、空标志信号)、读写信号和输入输出允许信号。A/D的采样频率、外部FIFO和USB内部FIFO的读写时钟均由EPM7064对外部时钟的分频和控制产生。
CHLD在完成这些端口FIFO的操作时,采用Verilog HDL硬件描述语言实现了这些操作,并在ALTERA公司提供的Quartus II 8.0开发工具综合编译并映射到CPLD中。
由于系统对USB采取了Slave FIFO模式异步方式读写数据,所以与访问外部FIFO的读写时序类似。向FIFO写数据的状态设计进程如下。如图5所示。

f.JPG


a:查询控制信号线是否有写事件(电平变化)发生,有就转移到状态b,否则保持在状态a;
b:分配FIFOADR[1:0]=10,FIFO指针指向输入端点,转向状态c;
c:检查FIFO的满标志是否为“假”(FIFO不满)则转向状态d.否则保留在状态c;
d:把外部数据放在FD[15:0]上,同时激活SLWR,然后转向状态e;
e:假如有更多的数据要传输,则转向状态b,否则转到状态a。
Slave FIFO模式的读数据状态设计进程类似。
3.3 驱动程序的设计和安装
USB设备的驱动程序是开发USB外设的关键。设计的目标是在设备插上后,主机能通过USB总线自动下载该固件程序到EZ—USB外设芯片中,并自动完成该固件程序,建立起主机端与设备的通讯。USB的驱动程序包括通用驱动程序和固件下载驱动程序。前一个驱动程序采用EZ—USB软件和硬件开发包提供的ezusb.sys驱动程序,可以直接使用,后一个驱动程序需自在固件程序框架下自行编写并在DDK的环境下编译生成。
所有的USB设备都至少具有一个VID和PID,VID和PID通过设备描述符表提交给Windows系统。同时,Windows系统使用INF文件将某一VID和PID绑定到某一设备驱动程序。这样,Windows系统在知道了设备的VID和PID后,就通过存储在INF文件中的信息查找该设备的驱动程。其中,INF文件是需编写的安装信息文件,开发人员只需修改INF文件中的VID、PID以及相应的设备描述符。
3.4 应用程序设计
应用程序完成的主要功能有:启动/关闭USB设备,检测USB设备,设置A/D,数据采集、显示和存储等。
同步实时系统对多任务的要求比较普遍,在后台采集数据、进行数据显示的同时,还要在前台界面对用户的操作做出响应,使用传统的单线程编程技术效率较低,无法及时处理,必须充分利用Windows的多任务处理功能,采用多线程编程技术来处理数据。本系统采用Visual C++6.0作为程序的开发环境,并且充分运用了多线程的编程思想。在程序中设置3个线程:主线程负责用户界面,它的生存周期就是整个应用程序的生存周期,用户的动作(如鼠标事件、键盘事件等)都会触发主线程的消息机制,从而完成对用户的响应;而两个分离的辅助线程分别负责数据的采集存储、数据处理和显示。



评论


相关推荐

技术专区

关闭