微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 利用FPGA实现外设通信接口之:利用FPGA实现USB 2.0通信接口

利用FPGA实现外设通信接口之:利用FPGA实现USB 2.0通信接口

时间:06-05 来源:互联网 点击:

示。

同步SlaveFIFO读的标准时序如下。

·IDLE:当读事件发生时,进状态1。

·状态1:使FIFOADR[1:0]指向OUTFIFO,进状态2。

·状态2:使SLOE有效,如FIFO空,在当前状态等待,否则进状态3,

·状态3:从数据线上读数,使SLRD有效,持续一个IFCLK周期,以递增FIFO读指针,进状态4。

·状态4:如需传输更多的数,进状态2,否则进状态IDLE。

状态跳转示意图如图10.10所示。

3.异步SlaveFIFO写操作

异步SlaveFIFO写的标准连接图如图10.11所示。

图10.10同步SlaveFIFO读状态跳转示意图 图10.11异步SlaveFIFO写的标准连接图

异步SlaveFIFO写的标准时序如下。

·IDLE:当写事件发生时,进状态1。

·状态1:使FIFOADR[1:0]指向INFIFO,进状态2。

·状态2:如FIFO满,在当前状态等待,否则进状态3。

·状态3:驱动数据到数据线上,使SLWR有效,再无效,以使FIFO写指针递增,进状态4。

·状态4:如需传输更多的数,进状态2,否则进状态IDLE。

状态跳转示意图如图10.12所示。

4.异步SlaveFIFO读操作

异步SlaveFIFO读的标准连接如图10.13所示。

图10.12异步SlaveFIFO写状态跳转示意图图10.13异步SlaveFIFO读的标准连接图

异步SlaveFIFO读的标准时序如下。

·IDLE:当读事件发生时,进状态1。

·状态1:使FIFOADR[1:0]指向OUTFIFO,进状态2。

·状态2:如FIFO空,在当前状态等待,否则进状态3。

·状态3:使SLOE有效,使SLRD有效,从数据线上读数,再使SLRD无效,以递增FIFO读指针,再使SLOE无效,进状态4。

·状态4:如需传输更多的数,进状态2,否则进状态IDLE。

状态跳转示意图如图10.14所示。

10.3.4FX2的固件程序设计

在FX2芯片的固件程序设计中,最关键的就是系统初始化函数TD_Init(void),下面讲解这个函数的部分代码。

//时钟设置

CPUCS=0x12;//48MHzCLKOUT输出使能

IFCONFIG=0x43;//使用外部时钟,IFCLK输入不反向

SYNCDELAY;//同步延迟

EP2CFG=0xA0;//需要设定为4缓冲,每个缓冲区大小为512字节

SYNCDELAY;

EP4CFG=0x00;

SYNCDELAY;

EP6CFG=0xE0;

SYNCDELAY;

EP8CFG=0x00;

SYNCDELAY;

FIFORESET=0x80;//激活NAK-ALL避免竞争

SYNCDELAY;

FIFORESET=0x02;//复位FIFO2

SYNCDELAY;

FIFORESET=0x06;//复位FIFO6

SYNCDELAY;

FIFORESET=0x00;//取消激活NAK-ALL

SYNCDELAY;

PINFLAGSAB=0xE6;//FLAGA设定为EP6PF,FLAGB设定为EP6FF

SYNCDELAY;

PINFLAGSCD=0xf8;//FLAGC设定为EP2EF,FLAGD保留

SYNCDELAY;

PORTACFG|=0x00;//SLCS有效

SYNCDELAY;

FIFOPINPOLAR=0x00;//所有信号低电平有效

SYNCDELAY;

10.3.5USB2.0接口的典型应用

由于USB2.0接口的数据传输速度快,而且使用方便,因此被广泛应用于各种便携设备中。例如,基于USB2.0接口的数据采集终端,可以将各种类型的数据采集到电脑主机中进行处理和结果显示,其典型的结构如图10.15所示。

图10.15基于USB2.0接口的数据采集终端结构框图

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top