论文部分内容阅读
摘要:本文介绍了以高性能的USB2.0芯片CY7C68013为核心的EZ-USB FX2微处理器,以及以MAX1198为核心的A/D采样芯片构成的高速数据采集和传输系统,论述了系统硬件的结构,给出了应用程序流程图和实现方案。
关键词:EZ-USB FX2;CY7C68013;MAX1198;USB2.0;信号传输
引言
UWB(ultra wideband)雷达在探测隐身目标,人体皮下组织,目标识别、目标精细成像等方面都具有优良的性能。通过UWB雷达零中频信号实时采集和传输系统,获取的数据量很大,传输速度要求高,因此,对于传输线路的带宽以及系统的硬件资源提出了较高的要求。本文探讨了以高性能的CY7C68013芯片为核心的EZ-USBFX2微处理器,以及以MAX1198为核心的A/D采样卡实现高速数据的采集和传输系统的设计和应用。
系统硬件电路
系统硬件电路结构如图1所示。UWB脉冲雷达信号在进入A/D转换电路以前,要进行限幅、降压、滤波和增加输入阻抗等措施以保护后端的A/D采样芯片。
A/D转换电路
经过调理后的信号进入模/数转换电路,高速A/D芯片选用美国MAXIM公司的MAXl 198。MAXl 198是3.3V、双通道的8位模数转换器(ADC),具备全差分宽带跟踪/保持(T/H)输入,驱动2路ADC[32]。同时还具有并行、CMOS兼容的三态输出。通过单个控制引脚,数字输出格式可以选择为二进制补码或直接偏移二进制码。
在信号采集系统设计中,MAX1198的模拟信号输入采用了差分输入驱动方式。MAX1198的模拟信号差分输入方式同时使用1NA+和1NA一,1NB+和1NB一引脚。MAX1198提供的三种参考模式中选择了内部参考模式。
系统主控电路
主控电路采用集成了USB2.0收发器的微处理器EZ-USB FX2。该处理器是基于USB2.0总线控制器,包含标准的MCS51外设模块和USB模块,具有加强的8051内核性能、集成度高、方便灵活的软配置以及便捷的软件开发工具等主要特性。
在主控电路设计中,使用CPLD控制ADC以及FIFO的时序、控制ADC的启动与停止和查询ADC的状态等。CY7C68013控制MAX1198进行间隔采样,然后把结果传送到FIFO中,当采集到一定量的数据后,CY7C68013将数据打包通过USB总线传到PC,由高级应用程序进行数据处理。上电时805l程序从内部RAM中开始运行,从外部EEPROM中加载程序。USB启动后,内部逻辑会检查连接到I2c总线上的EEROM中的第一个字节(OxCO或0 xc 2)。如果是0 x C O,就会使用EEPROM中的VID/PID/DID来替代内部存储值;如果是OxC2,内部逻辑就会把EEPROM中的内容装入到内部RAM中;如果没有检查到EEPROM,FX2就会使用内部存储的描述符来枚举。FX2缺省的VID/PID/DID是0x0484/0x8613/Oxxxyy。
接口电路
MAX1198与CY7C68013的接口设计通过一个外接FIFO存储器来实现与CY7C680 1 3的连接以保持数据采集的连续性,FIFO主要起着高速数据缓冲的作用。这些端点FIFO系统提供了通用时序信号,握手信号(满、空、可编程),读写选通,输出使能等。另外其内部还提供了一个用于控制FIFO存储器的通用可编程接口( GPIF,Ge neral Programme Interface),在FX2连接到不包含标准FIFO接口的外部逻辑单元时,可以用作一个内部主机。
系统应用程序设计
系统应用程序主要功能有:开启或关闭USB设备、检测USB设备、设置A/D状态、启动数据采集、显示并保存采集的数据、测试速度等。应用程序主框图如图2所示:
应用程序设计由动态链接库DLL(Dynamic Link Libraries)和客户端程序组成。
1动态链接库DLL(Dynamm’LinkLibraries)
负责与内核态的USB功能驱动程序通信并接收应用程序的各种操作请求。动
态链接库中定义有两种函数:导出函数(Export function)和内部函数fIntemal function),导出函数可以被其他模块调用,内部函数只能在DLL内部使用。我们在用c++定制DLL文件时,需要编写的就是包含导出函数表的模块定义文件[.DEF]和实现导出函数功能的c++文件。
定义文件d11.def源代码如下所示:
LIBRARY“dllu”//DLL库的名称为dllu.1ib,
DESCRIPTION’my d11’//IDLL库的描述为“my dll”
EXPORTS//定义导出函数
opendevice//打开设备函数
closedevice//关闭设备函数
ReadLocation//从设备读取数据
WriteLocation//向设备写入数据
test //速度测试函数
客户端程序
负责对所采集的数据进行实时显示。包括:
(1)客户端软件与USB设备连接
客户端软件与USB设备的连接实际上是与WDM设备驱动程序的连接。在客户软件中通过调用CreateFile()函数可建立客户软件与WDM设备驱动程序的连接。CreateFile()函数属于windows应用程序接口(API,Application Programming Interface),当客户软件调用CreateFile()函数时,操作系统将按照一定的路径查找并加载所需的动态链接库,实现与设备驱动程序的连接成功调用,随后CreateFil()函数就会返回代表其所连接设备的设备句柄,通过所得到设备句柄可以实现对设备的控制。
(2)I/O控制函数
DeviceloControl()函数可以在客户软件程序中实现设备的I/O控制,驱动程序根据I/O控制命令来决定该如何获取应用程序的缓冲器地址。I/O控制命令中的数据访问方式的定义有M E T H 0 D—B U F F E R E D.M E T H O D—I N—D I R E C T,METHOC一0UT—DIRECT或METHOD_NEITHER:
DeviceloControl()函数主体如下: BOOL DeviceloControl (HANDLEhDevice, //设备句柄
DWORD dwloControlCode, //NO控制代码IOCTL
LPVOID lpInBufer,//缓冲区
DWORD nlnBuferSize,//缓冲区大小
LPVOID IpOutBufer,//缓冲区
DWORD nOutBuferSize,//缓冲区大小
LPDWORD JpB)rtesRetumed.
LPOVERLAPPED IpOverlapped);
(3)块输入输出函数
CreateEvent()可以控制设备自动从它的块输入端点返回,并从它的块输出端点接收任意字节。
CCyUSBDevice*USBDevice=newCCyUSBDevice(Handle);
OVERLAPPED outOvLap,inOvLap;
O u t 0 V L a p.h E v e n t
=CreateEvent(NULL,false,false,“CYUSB—0UT”);//块输出
i n 0 v L a p.h E v e n t
=CreateEvent(NULL,false,false,“CYUSB_IN”);//块输入
char inBuf[l28];
ZeroMemory(inBuf,128);
char buffer[128];
LONG length=128:
(4)客户端程序初始化
BOOL CWzylApp::InitInstance()
{
XferThread=NULL;
USBDevice--new CCyUSBDevice0;
AfxEnableControlContaine();
//初始化定义字段
#ifdef—AFXDLL
Enable3dControls(); //使用MFC时在一个共享的DLL中调用该控制函数
#else
Enable3dControlsStatic();//连接到静态MFC时调用该函数
#endif
}
(5)USB数据传输
USB进行数据传输时,采用块传输模式,输入管道为管道0,读取的数据先
保存到缓冲区再显示在PC机上。
for(i-O;i<16Ii++)
btc.pipeNum=0;//设置输入管道为管道0
bResult=DeviceloControl(hDevice,//引用所获得的设备句柄
IOCTL—EZUSB BULK READ,//定义传输方式为块传输方式
&btc,
sizeof(BULK TRANSFERCONTROL),
mBufer,//读取的数据段保存到mBufer由
64,//每段数据长度为64字节
结语
本文提出了一种基于EZ-USB FX2微处理器和MAXl 198 A/D采样芯片的数据采集系统设计方案,经过实验测定,在块传输方式下实现了最高48MHz的数据采样速率,满足了系统设计的基本要求。C51语言结合CPLD的软配置方案便于系统软件的升级和维护。与微机接口部分设计严格遵守usb2.0协议,具有一定的通用性,对于一般基于usb的高速数据传输系统的设计具有一定的应用参考价值。
参考文献:
1.Microsoft Coration.Windows 2000 Driver Development Kit Documentation[EB/oL].2 0 0 0.O 6.2 8 h ct D://www.microsoft.com,ddk。
2.EZ-USB Series 2200 TechnicalReference Manual,http://www.cypress.com.
3.Max1198 datasheet.http://ITlsxim.com,Rev0,2002,4.
4.许永和,‘USB外围设备设计与应用,’北京:北京航空航天大学出版社.2002.
关键词:EZ-USB FX2;CY7C68013;MAX1198;USB2.0;信号传输
引言
UWB(ultra wideband)雷达在探测隐身目标,人体皮下组织,目标识别、目标精细成像等方面都具有优良的性能。通过UWB雷达零中频信号实时采集和传输系统,获取的数据量很大,传输速度要求高,因此,对于传输线路的带宽以及系统的硬件资源提出了较高的要求。本文探讨了以高性能的CY7C68013芯片为核心的EZ-USBFX2微处理器,以及以MAX1198为核心的A/D采样卡实现高速数据的采集和传输系统的设计和应用。
系统硬件电路
系统硬件电路结构如图1所示。UWB脉冲雷达信号在进入A/D转换电路以前,要进行限幅、降压、滤波和增加输入阻抗等措施以保护后端的A/D采样芯片。
A/D转换电路
经过调理后的信号进入模/数转换电路,高速A/D芯片选用美国MAXIM公司的MAXl 198。MAXl 198是3.3V、双通道的8位模数转换器(ADC),具备全差分宽带跟踪/保持(T/H)输入,驱动2路ADC[32]。同时还具有并行、CMOS兼容的三态输出。通过单个控制引脚,数字输出格式可以选择为二进制补码或直接偏移二进制码。
在信号采集系统设计中,MAX1198的模拟信号输入采用了差分输入驱动方式。MAX1198的模拟信号差分输入方式同时使用1NA+和1NA一,1NB+和1NB一引脚。MAX1198提供的三种参考模式中选择了内部参考模式。
系统主控电路
主控电路采用集成了USB2.0收发器的微处理器EZ-USB FX2。该处理器是基于USB2.0总线控制器,包含标准的MCS51外设模块和USB模块,具有加强的8051内核性能、集成度高、方便灵活的软配置以及便捷的软件开发工具等主要特性。
在主控电路设计中,使用CPLD控制ADC以及FIFO的时序、控制ADC的启动与停止和查询ADC的状态等。CY7C68013控制MAX1198进行间隔采样,然后把结果传送到FIFO中,当采集到一定量的数据后,CY7C68013将数据打包通过USB总线传到PC,由高级应用程序进行数据处理。上电时805l程序从内部RAM中开始运行,从外部EEPROM中加载程序。USB启动后,内部逻辑会检查连接到I2c总线上的EEROM中的第一个字节(OxCO或0 xc 2)。如果是0 x C O,就会使用EEPROM中的VID/PID/DID来替代内部存储值;如果是OxC2,内部逻辑就会把EEPROM中的内容装入到内部RAM中;如果没有检查到EEPROM,FX2就会使用内部存储的描述符来枚举。FX2缺省的VID/PID/DID是0x0484/0x8613/Oxxxyy。
接口电路
MAX1198与CY7C68013的接口设计通过一个外接FIFO存储器来实现与CY7C680 1 3的连接以保持数据采集的连续性,FIFO主要起着高速数据缓冲的作用。这些端点FIFO系统提供了通用时序信号,握手信号(满、空、可编程),读写选通,输出使能等。另外其内部还提供了一个用于控制FIFO存储器的通用可编程接口( GPIF,Ge neral Programme Interface),在FX2连接到不包含标准FIFO接口的外部逻辑单元时,可以用作一个内部主机。
系统应用程序设计
系统应用程序主要功能有:开启或关闭USB设备、检测USB设备、设置A/D状态、启动数据采集、显示并保存采集的数据、测试速度等。应用程序主框图如图2所示:
应用程序设计由动态链接库DLL(Dynamic Link Libraries)和客户端程序组成。
1动态链接库DLL(Dynamm’LinkLibraries)
负责与内核态的USB功能驱动程序通信并接收应用程序的各种操作请求。动
态链接库中定义有两种函数:导出函数(Export function)和内部函数fIntemal function),导出函数可以被其他模块调用,内部函数只能在DLL内部使用。我们在用c++定制DLL文件时,需要编写的就是包含导出函数表的模块定义文件[.DEF]和实现导出函数功能的c++文件。
定义文件d11.def源代码如下所示:
LIBRARY“dllu”//DLL库的名称为dllu.1ib,
DESCRIPTION’my d11’//IDLL库的描述为“my dll”
EXPORTS//定义导出函数
opendevice//打开设备函数
closedevice//关闭设备函数
ReadLocation//从设备读取数据
WriteLocation//向设备写入数据
test //速度测试函数
客户端程序
负责对所采集的数据进行实时显示。包括:
(1)客户端软件与USB设备连接
客户端软件与USB设备的连接实际上是与WDM设备驱动程序的连接。在客户软件中通过调用CreateFile()函数可建立客户软件与WDM设备驱动程序的连接。CreateFile()函数属于windows应用程序接口(API,Application Programming Interface),当客户软件调用CreateFile()函数时,操作系统将按照一定的路径查找并加载所需的动态链接库,实现与设备驱动程序的连接成功调用,随后CreateFil()函数就会返回代表其所连接设备的设备句柄,通过所得到设备句柄可以实现对设备的控制。
(2)I/O控制函数
DeviceloControl()函数可以在客户软件程序中实现设备的I/O控制,驱动程序根据I/O控制命令来决定该如何获取应用程序的缓冲器地址。I/O控制命令中的数据访问方式的定义有M E T H 0 D—B U F F E R E D.M E T H O D—I N—D I R E C T,METHOC一0UT—DIRECT或METHOD_NEITHER:
DeviceloControl()函数主体如下: BOOL DeviceloControl (HANDLEhDevice, //设备句柄
DWORD dwloControlCode, //NO控制代码IOCTL
LPVOID lpInBufer,//缓冲区
DWORD nlnBuferSize,//缓冲区大小
LPVOID IpOutBufer,//缓冲区
DWORD nOutBuferSize,//缓冲区大小
LPDWORD JpB)rtesRetumed.
LPOVERLAPPED IpOverlapped);
(3)块输入输出函数
CreateEvent()可以控制设备自动从它的块输入端点返回,并从它的块输出端点接收任意字节。
CCyUSBDevice*USBDevice=newCCyUSBDevice(Handle);
OVERLAPPED outOvLap,inOvLap;
O u t 0 V L a p.h E v e n t
=CreateEvent(NULL,false,false,“CYUSB—0UT”);//块输出
i n 0 v L a p.h E v e n t
=CreateEvent(NULL,false,false,“CYUSB_IN”);//块输入
char inBuf[l28];
ZeroMemory(inBuf,128);
char buffer[128];
LONG length=128:
(4)客户端程序初始化
BOOL CWzylApp::InitInstance()
{
XferThread=NULL;
USBDevice--new CCyUSBDevice0;
AfxEnableControlContaine();
//初始化定义字段
#ifdef—AFXDLL
Enable3dControls(); //使用MFC时在一个共享的DLL中调用该控制函数
#else
Enable3dControlsStatic();//连接到静态MFC时调用该函数
#endif
}
(5)USB数据传输
USB进行数据传输时,采用块传输模式,输入管道为管道0,读取的数据先
保存到缓冲区再显示在PC机上。
for(i-O;i<16Ii++)
btc.pipeNum=0;//设置输入管道为管道0
bResult=DeviceloControl(hDevice,//引用所获得的设备句柄
IOCTL—EZUSB BULK READ,//定义传输方式为块传输方式
&btc,
sizeof(BULK TRANSFERCONTROL),
mBufer,//读取的数据段保存到mBufer由
64,//每段数据长度为64字节
结语
本文提出了一种基于EZ-USB FX2微处理器和MAXl 198 A/D采样芯片的数据采集系统设计方案,经过实验测定,在块传输方式下实现了最高48MHz的数据采样速率,满足了系统设计的基本要求。C51语言结合CPLD的软配置方案便于系统软件的升级和维护。与微机接口部分设计严格遵守usb2.0协议,具有一定的通用性,对于一般基于usb的高速数据传输系统的设计具有一定的应用参考价值。
参考文献:
1.Microsoft Coration.Windows 2000 Driver Development Kit Documentation[EB/oL].2 0 0 0.O 6.2 8 h ct D://www.microsoft.com,ddk。
2.EZ-USB Series 2200 TechnicalReference Manual,http://www.cypress.com.
3.Max1198 datasheet.http://ITlsxim.com,Rev0,2002,4.
4.许永和,‘USB外围设备设计与应用,’北京:北京航空航天大学出版社.2002.