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

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

3天内不再提示

基于CY7C68013芯片实现通用可编程接口的软硬件设计

电子设计 来源:单片机与嵌入式系统应用 作者:龙玲,许海清 2020-07-10 08:00 次阅读

引 言

USB(Universal Serial Bus)是一种通用串行总线,主要用于PC与外围USB设备的互联。近年来,USB接口以其快速、即插即用、使用安装方便等优点逐渐成为现代数据传输的发展趋势。目前,国内外采用USBl.1和USB2.O两种规范。USBl.1主要用于低速传输要求的场合,支持1.5Mb/s和12Mb/s两种传输速率;而USB2.O规范则提供高达480Mb/s的传输速率。尽管如此,在某些对数据传输速度要求很高的系统中,外围设备与USB接口之间在速度上仍存在着不可忽视的传输瓶颈。

Cypress公司生产的USB2.0控制器CY7C68013提供了一种独特的接口方式,即通用可编程接口(GPIF)方式。它与传统接口方式的主要区别有两点:①在数据传输过程中不需要CPU干涉,使得传输速率明显提高,从而可以充分利用USB2.0的传输带宽;②由软件设置读/写控制,其控制方式类似于状态机,提高了传输稳定性。因此,本文介绍的基于USB2.0控制器CY7C68013的GPIF接口设计,就是充分利用了该芯片这一独特的数据传输接口方式,有效地解决了在传统接口方式下USB2.0设备数据传输速度的局限性,大大提高了数据的传输速率。

1、 CY7C68013简介

CY7C68013是Cypress公司的EZ-USB FX2系列芯片。EZ-USB FX2是一款集成USB2.0收发器微控制器,内部结构如图l所示。该系列芯片集成了USB2.O收发器、串行接口引擎(SIE)、带8.5KB片上RAM的增强型高速8051单片机、4KB FIFO存储器以及通用可编程接口等模块.提供了全面集成的USB解决方案,无需外加芯片即可实现高速USB传输。FX2系列芯片最主要的特点是可以通过USB2.0的通用可编程接口为特定的应用接口编程。另外,CY7C68013的GPIF引擎具有自动传输数据结构的特性,这种特性使得以主/从端点FIFO(B/16位数据总线)为ATA、UTOPIA、EPP、PCMCIA、DSP等的外围设备,可以与主机通过CY7C68013无缝、高速地传输数据。另外,CY7C68013内部集成的USB2.O的SIF能完成大部分USB2.O协议的处理工作,从而减少了用户对繁杂的USB协议的处理。

基于CY7C68013芯片实现通用可编程接口的软硬件设计

2 、硬件设计及原理

在GPIF接口方式设计中,GPIF作为CY7C68013的端点FIFO的内部控制器,在这种方式下,CPU不会干涉数据的传输。CY7C68013的GPIF接口方式如图2所示。

CY7C68013专门为GPIF提供了接口信号(包括16位数据线、输出控制信号CTL、输入控制信号RDY以及地址线ADR),这些信号负责完成USB接口芯片与外围设备或器件(如FPGA、DSP等)的数据读/写控制和传输。以下为GPIF方式下的主要端口功能。

FDO~FDl5(输入/输出):USB主机通过CY7C68013与外部设备进行数据传输的数据线,可以用8位或16位数据线。

CTLO~CTL5(输出):CY7C68013对外部设备进行控制的信号线。

RDY0~RDY5(输入):CY7C68013对外部设备的状态进行检测的信号线。

SDA(双向)、SCL(输出):E2PROM的数据及时钟信号线。

ADR0~ADR8(输出);GPIF为外部设备提供的地址线。

在本设计中,除了重点利用通用可编程接口来实现无缝、高速的传输数据外,还采用了EZ-USBFX2提供的一种独特架构,即“量子FIFO(Quantum FIFO)”处理架构。它能较好地解决带宽问题,图3为其数据传输示意图。当USB执行OUT时,EP2端点被设置为512字节四重FIFO(在USB端和外部接口端,都不知道有四重FIFO),图4为其数据传输原理图。在USB端看来,只要有1个FIFO为“半满”,那么就可以继续发送数据。

当前操作的FIFO写“满”时,FX2自动将其转换到外部接口端,排除等候读取;并将USB接口队列中下一个为“空”的FIFO转移到USB接口上,供其继续写数据。同时,在外部接口端看来,只要有1个FIFO为“半满”,就可以继续读取数据。当前操作的FIFO读“空”时,FX2自动将其转换到USB接口端,排除等候写入;并将外部接口队列中下一个为“满”的FIFO转移到外部接口上,供其继续读取数据。

3 、软件设计及实现

本设计的软件设计包括:固件程序、驱动程序和应用程序设计。其中,固件程序是整个程序设计的核心,它在设备CPU中运行。GPIF就是在固件中实现的,因此,只有在该程序运行时,外设才能称之为具有给定功能的外部设备。

3.1 固件设计

在GPIF高速数据传输中,GPIF波形的描述符决定了整个数据传输过程的时序。GPIF波形描述符通常用Cypress公司的GPIF工具(GPIFTOOL)进行配置。它是一个可运行于Windows平台的应用程序,与FX2的开发包一起发布的。在GPIF方式下,所有的读/写及控制逻辑通过CY7C68013的GPIF以软件编程的方式实现,且控制逻辑的变换方便灵活(只需要改变接口的一个配置寄存器的值)。

FX2由4个GPIF波形描述符控制各个状态,它们分别是GPIF Waveform O(FIFORd)、GPIF Waveform1(FIFOWr)、GPIF Waveform 2(SnglRd)和GPIF Wave-form 3(SnglWr)。这些波形描述符可以动态地配置给任何一个端点FIFO。FX2的固件程序可以把这些描述符配置给4个FIFO中的任意一个;配置后,GPIF将依据波形描述符产生相应的控制逻辑和握手信号给外界接口,以满足向FIFO读/写数据的需要。每个波形描述符包含了7个有效状态(S0~S6)和1个空闲状态。在每个有效状态对应的时间段里,经过预先设置,GPIF可以完成以下几项工作:驱动(使高或低)或浮接CTL输出,采样或驱动FIFO的数据总线,增加GPIF地址总线的值和指向当前FIFO指针的值,以及启动GPIFWF(GPIF波形)中断。除此之外,在每个状态下,GPIF还可以对几个信号(如RDY输入端、FIFO状态标志位、内部RDY标志位和传输计数终止标志位)中的任意两个进行采样,把其中两个信号相“与”、相“或”或者相“异或”,并根据结果跳转到其他任意一个状态或延迟1~256个时钟周期,当然也可以根据输入端的信号进行跳转或延迟。

FIFO读波形配置(FIFORd)如图5所示。在状态0时,数据总线上的数据为有效(activate),GPIF把数据读到FIFO中。在状态1时,GPIF产生一个正脉冲信号RDCLK(CTL0)给外围设备,表示已经读取了一个数据,同时判断数据是否传输结束。如果还没有,则不断循环状态O和状态l,直到读完所有数据为止;读完所有数据后,不再经过中间其他任何状态,就直接跳到状态7(Idle),表示完成本次数据传输。从图5中町以看出,在两个时钟周期内完成了一个数据(8位或16位)的读取,如果数据为双字节宽,那么传输速率可达48 Mb/s,从而充分利用了USB2.0的传输带宽,大大提高了数据传输的速率。

3.2 驱动程序设计

USB系统驱动程序由3部分组成:USB设备驱动程序、USB总线驱动程序和USB主控制器驱动程序。其中,Windows操作系统已经提供了处于驱动程序栈底的USB总线驱动程序和USB主控制器驱动程序;而USB设备驱动程序由设备开发者编写,通过向USB总线驱动程序发送包含URB(USB Request Block)的IRP(I/O RequestPaeket),以实现USB外设之间的信息交换。

开发USB设备驱动程序,可采用Numega公司的开发包Driver Works和Mierosoft公司的2000DDK,并以VC++6.O作为辅助开发环境来完成。在Cypress公司的EZ-USBFX2开发包中,提供了完整的CY7C68013驱动程序源代码、控制面板程序及固件的框架,可以大大加快用户开发的进度。用户只需对所带驱动程序稍加修改甚至无需任何修改,再经DDK编译后使用,软件开发者大量的时间主要集中在应用程序和固件的开发上。本设计所用的USB设备驱动程序就是对FX2开发包所带的驱动程序做了一些修改,主要是修改了DeviceIoControl例程,增加了控制数据传输函数、启动和停止AD、复位FIFO等。

3.3 应用程序设计

用户程序是USB系统与用户的接口,其关键是实现从USB外设读取或发送USB设备请求、命令和特定量的数据等,并对数据进行一系列处理(如存储、显示等)。在编写用户程序时,首先要建立与外设的连接,然后才能实施数据的传输。

本设计使用的是C++Builder6编译环境,在C++Builder6环境下通过API函数去调用USB驱动。基本步骤为:首先打开设备的句柄;然后进行读/写和控制操作;最后关闭设备句柄。程序中主要用到的两个API函数CreatFile()和DeviceloControl()就是通过该句柄实现数据传输的。

4、结语

本文详细介绍了基于USB2.O控制器CY7C68013的GFIF接口软硬件设计方案。该设计充分利用了CY7C68013芯片的通用可编程接口特性,很大程度上解决了USB2.0设备存在的传输瓶颈问题,大大提高了数据传输速率。同时,由于利用了芯片的呵编程特性,因此在具备了普通USB接口方式的诸多优点之外,还简化了外部硬件设计,提高了系统稳定性,有利于PCB板的制作和调试。

经验证,在USB2.O的高速数据采集与处理系统中,基于USB2.0微控制器CY7C68013的GPIF接口设计是一种比较好的解决传输速度问题的方案。

责任编辑:gt


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

    关注

    446

    文章

    47746

    浏览量

    409041
  • 控制器
    +关注

    关注

    112

    文章

    15200

    浏览量

    171107
  • usb
    usb
    +关注

    关注

    59

    文章

    7421

    浏览量

    258016
收藏 人收藏

    评论

    相关推荐

    CY7C68013的工作范围及性能简介

        CY7C68013的应用范围很广,在DSL调制解调器、ATA接口、记忆卡阅读、传统的转换装置、相机、首页巴民族权力机构、无线局域网
    发表于 04-19 11:19

    求大侠帮忙 CY7C68013 与CPLD通信问题

    现在要用 CY7C68013 USB芯片 和 CPLD 做一个数据采集模块,68013怎么和CPLD通信呢? CPLD接收AD采集过来的数据 ,通过68013传给主机;主机通过
    发表于 03-05 09:32

    cy7c68013

    上位机通过cy7c68013控制另一台PC的鼠标,上位机与cy7c68013通过串口连接,另一端通过USB连接。
    发表于 03-10 17:16

    CY7C68013特性简介

    轻松实现相应功能。USB2.0桥接芯片有***的FT232H,FT2232H,还有南京沁恒的CH372B或者CH375等,还有Cypress公司的CY7C68013,笔者打算采用CY7C680
    发表于 08-01 09:44

    CY7C68013与CMOS传感器之间的连接

    嗨,大家好,我尝试使用CY7C68013来获取图像传感器数据。但是我对CY7C68013和CMOS传感器之间的硬件连接感到困惑。CMOS具有以下接口:SysCLK(in)曝光(in)L
    发表于 11-30 16:14

    CY7C68013枚举怎么检测

    我怎么知道CY7C68013是枚举的?我需要发送通知的硬件(通过固件),USB电缆已被拔出。 以上来自于百度翻译 以下为原文How can I tell that the CY7C68013
    发表于 03-20 12:25

    哪个CY7C68013芯片方便与GPIF接触?

    我想加一个512K×16位的FIFO芯片CY7C68013的GPIF,其中FIFO芯片Cypress方便立即同GPIF?你能推荐一个给我吗? 以上来自于百度翻译 以下为原文I want
    发表于 03-22 09:08

    基于CY7C68013与FPGA接口的Verilog HDL编程

    结束语 现在USB2.O控制器CY7C68013已经应用到许多数据传输领域,由于此芯片灵活的接口可编程特性简化了外部硬件的设计,提高了系
    发表于 04-26 07:00

    如何在Keil C环境下编译CY7C68013的大型固件代码?

    ”。据我所知,在CY7C68013中只有8个KB码和数据RAM。CY7C68013Runa固件可能大于8kb/16kb吗?如何?如何配置KEIL项目?请。一步一步地给我一些指示。谢谢!PS:我的硬件工作有
    发表于 04-30 14:11

    USB2.0控制器CY7C68013芯片与FPGA芯片接口的Verilog HDL实现

    芯片与FPGA(现场可编程门阵列)芯片接口的Verilog HDL(硬件描述语言)实现。本系统可
    发表于 05-10 07:00

    USB20微控制芯片CY7C68013电子资料

    概述:单一芯片集成式USB2.0收发器、智能SIE和增强型8051微处理器,CY7C68013内部集成了一个增强型的51内核,其指令集与标准的8051兼容。CY7C68013提供了一个串行接口
    发表于 04-14 07:27

    怎么实现USB2.0微控制器CY7C68013的GPIF接口设计?

    本文介绍的基于USB2.0控制器CY7C68013的GPIF接口设计,就是充分利用了该芯片这一独特的数据传输接口方式,有效地解决了在传统接口
    发表于 05-26 06:47

    基于USB芯片CY7C68013A的上位机

    3.4.5条 程序procedure中对于“程序”的定义进行了规定。基于USB芯片CY7C68013A的上位机C++程序。该程序结合相应的CY7C68013固件程序配合使用可以完成PC
    发表于 08-06 09:58

    CY7C68013 GPIF可视化编程软件

    本内容提供了CY7C68013 GPIF可视化编程软件的安装程序
    发表于 04-29 17:53 181次下载
    <b class='flag-5'>CY7C68013</b> GPIF可视化<b class='flag-5'>编程</b>软件

    基于CY7C68013的高速数据通信接口设计

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