关 闭

新闻中心

EEPW首页 > 工控自动化 > 设计应用 > USB2.0接口传输的FPGA控制与实现

USB2.0接口传输的FPGA控制与实现

作者: 时间:2010-03-25 来源:网络 收藏

2.2.3 应用程序
应用程序是系统与用户的,设备驱动程序提供应用程序访问底层硬件的。驱动程序采用了CyPress公司的通用驱动程序ezusb.-sys,完全能够满足本系统设计的要求。在驱动程序被系统加载后,它的许多进程处于Idle状态,需要应用程序去调用激活。应用程序利用Win32 API直接调用驱动程序,实现应用程序和驱动程序的信息交互。
应用程序实现了数据下载和数据上传两个功能,在Windows操作系统中,只需要通过调用几条简单的文件操作API函数,就可以实现与驱动程序中USB设备通信。 Win32应用程序调用WDM驱动程序的Win32 API函数有5个:CreateFile(创建设备)函数;CloseFile(关闭设备)函数;ReadFile(从设备读取数据)函数;WriteFile(对设备写入数据)函数;DeviceContronl(设备控制)函数。对于DeviceloControl()函数的调用,驱动程序根据I/O控制命令来决定该如何获取应用程序的缓冲区地址。
本设计就采用DeviceloControl函数来进行应用程序和WDM设备驱动程序间的通信。以下是DevicelIoControl的声明:
DeviceIoControl(
HANDLE hDevice;设备返回的句柄
DWORD dwIoControlCode;驱动程序的控制命令
LPVOID lpInBuffer;应用程序发给驱动程序的缓冲区地址
DWORD nInBufferSize;应用程序发给驱动程序的缓冲区大小
LPVOID lpOutBuffer;驱动发给应用程序的缓冲区地址
DWORD lpOutBuffer;驱动发给应用程序的缓冲区大小
LPDWORD lpBytesReturned;存放驱动程序实际返回字节数
LPOVERLAPPED lpOverlapped;同步时置为NULL)

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

3 测试结果
3.1 PC下传数据
采用系统时钟为50 M,为便于计算效率和可靠性,在应用程序中加载计时函数,下传数据每次发送100M,发送数据为位宽8 b的循环递增数列,结果显示下传数据最大速率为42.1 MB/s,在中用嵌入式逻辑分析仪查看接收的数据,如图4所示。每个u_slrd读脉冲,读取一个16 b数据,由于发送时是按照8 b发送,接收数据是16 b,所以每次接收到的16位数据,是2个8位数的组合。从图4中可以看出FPGA接收数据准确,无丢失数据的情况。


3.2 PC接收数据
在接收数据时,同理,应用程序每次接收100 M,将读取的数据以文件bin的形式存储在应用程序工程目录下,结果显示bin文件中数据准确。测得最大结果为 38.4MB/s,利用FPGA嵌入式逻辑分析仪分析结果如图5所示,每个u_slwr读脉冲,FPGA发送一个16 b数据。


4 结束语
本系统通过FPGA控制.O控制器CY7C68013达到高速数据传输的目的,具有硬件结构简单、软件扩展性强、传输数据准确性高等特点,目前下传和上传速度分别为42.1MB/s和38.4 MB/s,完全可以应用于高速数据采集、高速数据通信、数字摄像设备及存储设备等。


上一页 1 2 3 4 下一页

关键词: USB2 FPGA 接口 传输

评论


相关推荐

技术专区

关闭