基于FIFO写数据方式的USB接口信号发生器设计
2015-12-31陶彦辉刘克毅
陶彦辉,刘克毅
(新疆工程学院 机械工程系,新疆 乌鲁木齐 830000)
1 FIFO写数据方式
FIFO写数据方式是重要的GPIF可编程接口数据模式传输方法。GPIF为内部通用可编程接口,其对外部FIFO或内部同步FIFO控制方法采用主机控制,即采用内部集成的控制逻辑实现对USB端点FIFO的控制。GPIF模式使用外部同步FIFO芯片时,数据传输速率达480Mb/s;GPIF模式使用USB自带的FIFO时,其传输速率也可达96Mb/s,所以GPIF模式极适用于高速数据传输。GPIF可编程接口模式内部端点的数据传输方式有:单字节读、写数据传输和FIFO读、写数据数据传输[1]。
FIFO写数据方式是通过USB芯片主机直接传输数据到芯片端点的数据缓冲区EPxFIFOBUF逻辑单元之中,继而再通过程序写入外部FIFO或内部FIFO逻辑。USB芯片FIFO写数据方式如图1所示。GPIF可编程接口模式中的FIFO写数据方式是通过时钟触发实现动作的,FIFO写数据方式触发时序图如图2所示。写波形图程序初始化设定GPIFADR
图1 USB芯片FIFO写数据方式
值为0x0000,随着IFCLK时钟的动作,FIFO逻辑中存储的信息将按时钟动作次序写入数据总线之中,同时数据指针将伴随着时钟的动作而自动增加,这个过程不断重复以便完成数据的连续写入。当FIFO逻辑中的数据写完后,GPIF可编程接口将会得到一个触发指令,使其处于空闲状态[2]。
2 FIFO写数据方式在USB接口波形发生器中的应用
2.1 硬件设计
硬件部分的主控芯片采用EZ-USB系列USB芯片CY7C68013,128脚封装,数据缓存使用CY7C68013自带的同步FIFO逻辑。D/A转换芯片使用8位DAC的MAX5384,参考电压为5V,USB接口供电。晶振选用24MHz有源晶振。
图2 FIFO写数据方式触发时序图
主控USB芯片在以FIFO写数据方式工作时必须采用GPIF模式接法,即需要连接USB芯片的GPIF可编程接口引脚。GPIF可编程接口的引脚FD0与模数转换模块MAX5384的引脚DIN连通;USB芯片内部同步FIFO逻辑中的数据将通过引脚FD0输送至MAX5384。GPIF可编程接口的引脚FIFOADR1与引脚CS连通,当FIFOADR1电压由低电平至高电平上升时,数模转换开始[3]。FIFO写数据方式信号发生部分电路连接如图3所示。
2.2 固件程序
USB芯片固件程序分为基本固件程序及GPIF波形图固件程序。基本固件程序由Keil uVision3编写,GPIF波形图固件程序由USB芯片的波形图设计软件GPIFDesigner编写[4]。
2.2.1 基本固件程序
FIFO写数据方式的基本固件程序核心部分是将数据由内部同步FIFO中写入到外部DA5384上,其主要代码如下:
图3 FIFO写数据方式信号发生部分电路连接
2.2.2 GPIF波形图固件程序
GPIF波形图固件程序的设计需按电路图中的USB芯片和D/A转换芯片连接方式完成软连接之后才能开始,GPIF Designer实现CY7C68013和MAX5384接口软连接。在GPIF Designer中利用FIFOWr项目完成FIFO写波形图固件程序。
2.3 上位机应用程序
上位机应用程序由VC++开发,在VC++程序中调用cyioctl控制函数的UsbOpenDriver(&hDevice,DeviceName)打开USB设备接口端口,读取数据,并对数据进行处理。信号发生器程序有两个模块:信号产生模块和信号发送模块。信号产生模块主要是利用程序产生正、反锯齿形信号,正、余弦信号,方波信号和随机信号等。信号发送模块是将程序产生的信号数据发送至USB芯片。
2.3.1 信号产生模块
信号产生模块就是生成信号数据,信号数据由公式生成。其中方波信号生成程序的主要代码如下:
2.3.2 信号发送模块
信号发送模块的作用是将信号产生模块产生的数据发送至USB芯片中。信号发送模块主要是利用cyioctl控制函数方法[5]中的 DeviceIoControl()函数来完成,主要程序代码如下:
3 结束语
采用示波器调试后,该虚拟仪器基本实现了电压信号的发生,利用USB接头电源虚拟仪器可以按设计要求发出正、反锯齿形信号,正、余弦信号,方波信号和随机信号等。虚拟仪器输出端输出的信号电压设计幅度值为0V~3.2V,输出的信号电压设计频率为6MHz。但设计中也存在一些缺陷,硬件部分没有考虑信号干扰问题,导致示波器调试时出现信号变形,产生信号的参数不可调,不能自定义信号,后续将在设计中增加自定义参数模块。
[1]陈莹.基于USB的数据采集系统研究与设计[D].西安:西安科技大学,2011:10-12.
[2]钱峰.EZ-USB FX2单片机原理、编程及应用[M].北京:北京航空航天大学出版社,2006.
[3]仝瑞普.基于slave FIFO模式USB数据传输系统设计与实现[D].南京:南京理工大学,2008:19-26.
[4]兀颖.基于 USB 3.0的数据采集系统设计[D].西安:中国科学院大学,2013:39-45.
[5]薛园园.USB应用开发技术大全[M].北京:人民邮电出版社,2007.