USB读数装置及上位机的设计

2012-05-15 15:56:12来源: 互联网

数据采集在信息处理系统中占有不可替代的地位,它是以传感器、信号测量与处理、微型计算机等技术为基础而形成的,主要研究信息数据的采集、存储、处理以及控制等作业,具有很强的实用性。数据采集技术已经在雷达、通信、水声、遥感、语音处理、智能仪器、工业自动化以及生物医学工程等众多领域得到广泛的应用。数据采集器一般包括数据采集部分和数据处理传输部分。前者包括信号的滤波、放大、采样、保持、转换、存储等部分,后者包括数据读取、传输及微机接口部分。

  1 系统结构及硬件电路设计

  1.1 系统的结构框图及工作原理

  本系统主要由四个模块构成:FLASH存储器模块、FPGA控制模块、USB接口控制模块及电源模块。如图1所示。

  

  其工作原理是:FLASH模块存储数据,作为记录器的数据源;FPGA模块作为读数装置的控制器,读取FLASH的数据并传输给USB控制接口模块;USB控制芯片接收来自上位机的命令,并与FPGA通信来执行用户需要的操作;电源模块为各模块提供稳定电源。

  1.2 电源管理模块

  本系统中芯片的工作电压有5 V、3.3 V、2.5 V。由于计算机的USB接口可以提供5 V电源,最大为500 mA的电流,对于此系统已足够,所以本系统的5 V电源直接由USB供电,并利用5 V电源经过电压调节器AMS1117调整出3.3 V和2.5 V电源。

  1.3 FPGA模块

  本设计的FPGA采用XILINX公司的Spartan-2系列的XC2S50,包括FPCA配置电路和FPGA时钟电路及接口配置。

  FPGA的配置方式灵活多样,本设计根据芯片是否能够自己主动加载配置数据以及比特流的位宽,利用主串模式进行配置FPCA,如图2所示。在FPGA的输出端口上为每个端口连接了一个电阻,起到耦合限流的作用,使外部接口与FPGA进行匹配,防止电流过大等不良影响而烧坏芯片。

  

  1.4 USB接口模块

  一般USB的接口芯片种类大致可分为:主控制器、根集线器、接口芯片以及具有USB接口的微控制器。本设计利用的是EZ-USB FX2LP系列的CY7C68013A-128PIN芯片。

  本设计采用0XC0的EEPROM启动方式。即在EEPROM中首字节写入0XC0,并将VID、PID、DID和配置字节写入EEPROM。芯片上电后,将这些数据复制到片内存储器,并将其发送给主机,由主机根据ID数据选择合适的固件程序下载到USB芯片内。本设计使用具有I2C总线接口的串行EEPROM芯片AT24C64。AT24C64具有8192 x 8位容量,可重复擦除100万次。

  1.5 FLASH存储器模块

  FLASH存储器存储着记录器的数据,本设计的目的就是从FLASH中读取数据并传入计算机进行保存。本设计采用SAMSUNG公司的K9F5608UO D NAND FLASH存储器。其特点如下:存储单元阵列为(32M+1024k)bit×8bit;总共64k的块,每块含32页,每页为512+16字节;以页为单位编程(200μs典型编程时间),以块为单位擦除(2ms典型擦除时间);命令、地址、数据复用端口;提供硬件数据保护功能。

  本设计的硬件连接电路如图3所示。其中MAX1658为K9F5608UOD提供电源,排阻起到耦合限流作用。

2 软件程序设计

  2.1 FPGA各模块程序设计

  本设计的FPGA程序采用Xilinx公司的ISE软件。它提供给用户一个从设计输入到综合、布线、仿真、下载的全套解决方案,并可以很方便的与其他EDA工具接口。

  本设计中原理图输入采用其中的第三方软件ECS,HDL综合使用XST,测试台输入是图形化的HDL Bencher,仿真使用Modelsim SE。简要的流程如下:

  建立工程项目;综合;仿真;定义输入输出管脚约束;布局布线;下载配置。

  FLASH模块程序设计中FLASH控制模块对FLASH存储器K9F5608UOD执行各种操作。K9F5608UOD芯片提供了8种命令,即8种操作:①读1操作;②读2操作;③读ID操作;④复位操作;⑤页编程操作;⑥复制回读操作;⑦块擦除操作;⑧读状态操作。

  2.2 CY7C68013固件程序开发

  USB功能设备的硬件功能主要由硬件上的微处理器来实现,因此需要为USB设备编写固件程序。本设计的USB固件程序开发中,使用Keil Software公司推出的51系列兼容单片机软件开发系统Keil μVision3。

  图4所示为68013A的固件程序流程图,下面介绍如何编程。本设计采用固件框架中的Dscr.a51文件,修改设备描述符中的ID码和字符串描述符,并修改相应的端口配置,其余保持默认状态。主机发送8字节的SETUPDAT数据包后,68013A将其进行解码存入SETUPDAT寄存器中。

  SETUPDAT[1]中存储着USB发出的请求码。在固件程序中使用switch-case语句对不同的请求码进行分析,分别进行相应的响应。

  对于标准USB请求,在CY3684开发包内已有完善的函数框架,本设计在保持其默认状态下,修改其中的处理函数,使其符合本设计的要求。在Fw.c文件中,最主要的两个函数为Main( )函数和SetupCommand( ),其中Main( )函数控制整个68013A的程序流程,SetupCommmad( )则对不同的设备请求进行分析,并调用响应的执行程序。

  

e.JPG

  在本设计需要使用自定义请求来介绍上位机的FLASH操作命令,因此需要在USB固件程序中声明自定义请求。自定义请求和标准USB请求放在一起,但不能和已有的请求号相冲突。同时还需要编写自定义请求对应的处理函数。程序框架如下:

  

  此请求包处理放在SetupCommand(vdd)函数内。

  对于对应的处理函数则在Pefiph.c文件中进行定义。所有的USB设备请求响应函数,中断函数都在此文件中定义。同时设备初始化函数TD_Init( ),用户功能函数TD_Poll( ),挂起函数TD_Suspend( )和USB复位函数( )也都在此文件中定义。

  本设计采用在上位机发送自定义请求A1,并在自定义请求中包含对FLASH操作的命令字,68013A在分析得到自定义请求A1后,在自定义请求A1中把命令字保存入一个全局变量,在用户功能函数TD_Poll( )中执行对命令字的分析并调用相应的FLASH操作函数。对于传输到上位机上的数据通过自定义请求A2、A3来执行。

  3 结论

  本设计根据USB总线技术、FPGA技术及面向对象程序设计方法,对电路的组成原理、接口电路设计、系统控制信号的设计及USB上位机程序的设计做出详细的说明,设计出基本符合课题要求的USB读数装置及上位机程序,基本完成了工作要求。当然本设计在USB接口的速度方面还需考虑更完善的方案。希望在以后的学习工作中能够改进。

关键字:USB  读数装置  上位机

编辑:神话 引用地址:http://www.eeworld.com.cn/mndz/2012/0515/article_16032.html
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。
论坛活动 E手掌握
微信扫一扫加关注
论坛活动 E手掌握
芯片资讯 锐利解读
微信扫一扫加关注
芯片资讯 锐利解读
推荐阅读
全部
USB
读数装置
上位机

小广播

独家专题更多

富士通铁电随机存储器FRAM主题展馆
富士通铁电随机存储器FRAM主题展馆
馆内包含了 纵览FRAM、独立FRAM存储器专区、FRAM内置LSI专区三大部分内容。 
走,跟Molex一起去看《中国电子消费品趋势》!
走,跟Molex一起去看《中国电子消费品趋势》!
 
带你走进LED王国——Microchip LED应用专题
带你走进LED王国——Microchip LED应用专题
 
电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2016 EEWORLD.com.cn, Inc. All rights reserved