0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看威廉希尔官方网站 视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

利用FPGA实现USB 2.0通信接口

FPGA设计论坛 来源:FPGA设计论坛 2024-12-30 13:59 次阅读

USB2.0接口的实现方式

利用FPGA来实现USB 2.0接口的方式一般有两种,一是借助外围的USB接口芯片,二是FPGA内部实现USB协议控制器,外部通过USB的PHY芯片来实现接口。

对于第一种方式,FPGA不需要实现USB通信协议,开发的风险小,而且性能稳定,因此被大部分设计者所采用。而第二种方式需要购买USB的IP核,门槛较高。如果自己开发基于FPGA的USB协议栈,风险高,而且兼容性和稳定性很难保证。

目前市场上的USB 2.0接口芯片厂家和型号比较多,其中Cypress Semiconductor公司的EZ-USB FX2(CY7C68013)是世界上第一款集成USB 2.0的微处理器,它集成了USB 2.0收发器、SIE(串行接口引擎)、增强的8051微控制器和可编程的外围接口。

FX2这种独创性结构可使数据传输率达到56MByte/s,即USB 2.0允许的最大带宽。在FX2中,智能SIE可以硬件处理许多USB 1.1和USB 2.0协议,从而减少了开发时间、确保了USB的兼容性。

GPIF(General Programmable Interface)和主/从端点FIFO(8位或16位数据总线)为ATA、UTOPIA、EPP、PCMCIA和DSP等提供了简单和无缝连接接口。

CY7C68013结构图如图10.4所示。FPGA与CY7C68013的电路连接关系可以参考本书2.2.11小节的内容。

b19048ac-c409-11ef-9310-92fbcf53809c.png

图10.4CY7C68013FX2结构示意图

10.3.2FX2接口芯片的SlaveFIFO传输模式

当FPGA与FX2芯片相连时,只需要利用FX2作为一个USB 2.0数据通道来实现与主机的高速通信。FPGA能够提供满足Slave FIFO要求的传输时序,可以作为Slave FIFO主控制器。`

Slave FIFO传输的示意图如图10.5所示。

b1a624f6-c409-11ef-9310-92fbcf53809c.png

图10.5SlaveFIFO传输的示意图

在这种方式下,FX2内嵌的8051固件的功能只是配置Slave FIFO相关的寄存器以及控制FX2何时工作在Slave FIFO模式下。一旦8051固件将相关的寄存器配置完毕,且使自身工作在Slave FIFO模式下后,FPGA就可按照Slave FIFO的传输时序,高速与主机进行通信,而在通信过程中不需要8051固件的参与。

在Slave FIFO方式下,FPGA与FX2的连接信号图如图10.6所示。

b1be32bc-c409-11ef-9310-92fbcf53809c.png

下面是信号线的说明。

IFCLK:FX2输出的时钟,可作为通信的同步时钟。

FLAGA、FLAGB、FLAGC、FLAGD:FX2输出的FIFO状态信息,如满、空等。

SLCS:FIFO的片选信号,外部逻辑控制,当SLCS输出高时,不可进行数据传输。

SLOE:FIFO输出使能,外部逻辑控制,当SLOE无效时,数据线不输出有效数据。

SLRD:FIFO读信号,外部逻辑控制,同步读时,FIFO指针在SLRD有效时的每个IFCLK的上升沿递增,异步读时,FIFO读指针在SLRD的每个有效至无效的跳变沿时递增。

SLWR:FIFO写信号,外部逻辑控制,同步写时,在SLWR有效时的每个IFCLK的上升沿时数据被写入,FIFO指针递增,异步写时,在SLWR的每个有效至无效的跳变沿时数据被写入,FIFO写指针递增。

PKTEND:包结束信号,外部逻辑控制,在正常情况下,外部逻辑向FX2的FIFO中写数,当写入FIFO端点的字节数等于FX2固件设定的包大小时,数据将自动被打成一包进行传输,但有时外部逻辑可能需要传输一个字节数小于FX2固件设定的包大小的包,这时,它只需在写入一定数目的字节后,声明此信号,此时FX2硬件不管外部逻辑写入了多少字节,都自动将之打成一包进行传输。

FD[15:0]:数据线。

FIFOADR[1:0]:选择4个FIFO端点的地址线,外部逻辑控制。

10.3.3SlaveFIFO模式的典型操作时序

1.同步SlaveFIFO写操作

同步Slave FIFO写的标准连接图如图10.7所示。

同步Slave FIFO写的标准时序如下。

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

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

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

·状态3:驱动数据到数据线上,使SLWR有效,持续一个IFCLK周期,进状态4。

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

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

b1c62c60-c409-11ef-9310-92fbcf53809c.png

图10.7同步SlaveFIFO写的标准连接图 图10.8同步SlaveFIFO写的标准时序

假定FX2设定包大小为512字节,当FPGA向FIFO端点中写入的数据达512字节时,FX2硬件自动将已写入的512字节打成一包准备进行传输。这个动作就和在普通传输中,FX2固件向FIFO端点中写入512字节后,把512这个数写入EPxBC中一样,只不过这个过程是由硬件自动完成的。在这里可以看出“FX2固件不参与数据传输过程”的含义了。外部逻辑只需按上面的时序图所示的时序向FIFO端点中一个一个字节(或字)地写数,写到一定数量,FX2硬件自动将数据打包传输,这一切均不需固件的参与,由此实现高速数据传输。

2.同步SlaveFIFO读操作

同步Slave FIFO读的标准连接图如图10.9所示。

b1d6bed6-c409-11ef-9310-92fbcf53809c.png

同步Slave FIFO读的标准时序如下。

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

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

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

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

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

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

3.异步SlaveFIFO写操作

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

b1e771ea-c409-11ef-9310-92fbcf53809c.png

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

异步Slave FIFO写的标准时序如下。

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

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

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

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

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

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

4.异步SlaveFIFO读操作

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

b1eeb13a-c409-11ef-9310-92fbcf53809c.png

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

异步Slave FIFO读的标准时序如下。

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

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

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

b2059e86-c409-11ef-9310-92fbcf53809c.png

·状态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接口的典型应用

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

b21254fa-c409-11ef-9310-92fbcf53809c.png

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

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • FPGA
    +关注

    关注

    1629

    文章

    21746

    浏览量

    603761
  • usb
    usb
    +关注

    关注

    60

    文章

    7949

    浏览量

    264842
  • 通信接口
    +关注

    关注

    3

    文章

    239

    浏览量

    30999

原文标题:利用FPGA实现USB 2.0通信接口

文章出处:【微信号:gh_9d70b445f494,微信公众号:FPGA设计论坛】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    高云半导体宣布发布USB 2.0接口解决方案

    广东高云半导体科技宣布发布其USB 2.0接口解决方案,此方案能够使FPGA设计人员轻松的集成USB 2
    发表于 05-17 15:28 3823次阅读

    FPGA应用开发入门与典型实例pdf免费下载(华清远见编写)

    FPGA实现外设通信接口  10.1 FPGA在外设接口实现方面的优势  10.2 
    发表于 02-09 15:45

    基于Verilog的FPGAUSB 2.0高速接口设计

    引 言在高速的数据采集或传输中,目前使用较多的都是采用USB 2.0接口控制器和FPGA或DSP实现的,本设计在
    发表于 06-24 07:00

    如何实现基于FPGA的RS485通信接口设计

    RS485是什么?如何实现基于FPGA的RS485通信接口设计?
    发表于 09-28 07:53

    基于USB接口威廉希尔官方网站 的无线通信设计与实现

    提出了一种运用USB接口芯片PDIUSBD12、89C51微处理器、射频收发器nRF401构建的无线USB 接口,并利用
    发表于 08-05 09:29 44次下载

    基于USB2.0的数据传输接口转换系统

    针对工业现场的复杂情况,设计出一种数据传输接口转换方法,采用DSP、FPGAUSB2.0,结合RS-422接口,实现数据的远距离采集。本系
    发表于 02-24 11:33 31次下载

    基于FPGAUSB2.0控制器设计

    摘要:介绍了一种用VHDL设计USB2.0功能控制器的方法,详术了其原理和设计思想,并在FPGA上予以实现。 关键词:USB VHDL FPGA
    发表于 06-20 13:26 1659次阅读
    基于<b class='flag-5'>FPGA</b>的<b class='flag-5'>USB2.0</b>控制器设计

    IR-UWB通信系统高速USB接口的设计与实现

    IR-UWB通信系统高速USB接口的设计与实现 摘要: 采用高速USB接口连接计算机终端与UW
    发表于 03-13 11:32 2211次阅读
    IR-UWB<b class='flag-5'>通信</b>系统高速<b class='flag-5'>USB</b><b class='flag-5'>接口</b>的设计与<b class='flag-5'>实现</b>

    FPGA的嵌入式系统USB接口设计

    FPGA的嵌入式系统USB接口设计 摘要:设计基于FPGA的IP-BX电话应用系统,用于传统的电话网络(PSTN)与PC机之间的接口连接。
    发表于 04-03 10:52 1924次阅读
    <b class='flag-5'>FPGA</b>的嵌入式系统<b class='flag-5'>USB</b><b class='flag-5'>接口</b>设计

    基于USB2.0芯片CY7C68013的高速数据通信接口设计

    利用USB2.0接口芯片CY7C68013实现了语音信号处理系统中DSP与PC机的高速通信,简要介绍了CY7C68013的功能结构以及与TM
    发表于 09-21 11:41 177次下载

    USB2.0协议的通用测控通信接口设计

    USB2.0协议的通用测控通信接口设计
    发表于 08-31 14:20 23次下载
    <b class='flag-5'>USB2.0</b>协议的通用测控<b class='flag-5'>通信</b><b class='flag-5'>接口</b>设计

    基于FPGA NANO2开发板实现USB2.0接口通信的设计方案

    Cypress Semiconductor公司的EZ-USB FX2是世界上第一款集成USB2.0的微处理器,它集成了USB2.0收发器、SIE(串行接口引擎)、增强的8051微控制器
    的头像 发表于 01-16 09:20 3454次阅读
    基于<b class='flag-5'>FPGA</b> NANO2开发板<b class='flag-5'>实现</b><b class='flag-5'>USB2.0</b><b class='flag-5'>接口</b><b class='flag-5'>通信</b>的设计方案

    基于Verilog的FPGAUSB 2.0高速接口设计资料下载

    电子发烧友网为你提供基于Verilog的FPGAUSB 2.0高速接口设计资料下载的电子资料下载,更有其他相关的电路图、源代码、课件教程、中文资料、英文资料、参考设计、用户指南、解决
    发表于 04-12 08:53 17次下载
    基于Verilog的<b class='flag-5'>FPGA</b>与<b class='flag-5'>USB</b> <b class='flag-5'>2.0</b>高速<b class='flag-5'>接口</b>设计资料下载

    FPGAUSB3.0通信-USB3.0 PHY简介

    可以和FPGA搭配使用的USB3.0 PHY芯片 通过之前的介绍FPGAUSB3.0通信-USB
    的头像 发表于 11-09 09:36 8843次阅读
    <b class='flag-5'>FPGA</b>和<b class='flag-5'>USB</b>3.0<b class='flag-5'>通信</b>-<b class='flag-5'>USB</b>3.0 PHY简介

    FPGAUSB3.0通信-USB3.0 PHY介绍

    可以和FPGA搭配使用的USB3.0 PHY芯片通过之前的介绍
    发表于 12-20 19:11 34次下载
    <b class='flag-5'>FPGA</b>和<b class='flag-5'>USB</b>3.0<b class='flag-5'>通信</b>-<b class='flag-5'>USB</b>3.0 PHY介绍