Ports模式下CY7C68013和FPGA的数据通信

2006-10-23 15:25:13来源: 单片机及嵌入式系统应用

引言

通用串行总线(USB)具有快速、双向、大批量传输、廉价以及可实现热插拔等优点,Cypress公司的FX2系列芯片之一CY7C68013是最早符合USB2.0标准的微控制器,集成了符合USB2.0的收发器、串行接口引擎(SIE)、增强型8051内核以及可编程的外围接口,实现基于USB2.0的接口数据通信,CY7C68013可配置成3种不同的接口模式;Ports(端口模式)、GPIF Master(可编程接口模式)和Slave FIFO(主从模式),其中,后两种模式利用其内部集成的可以独立于微处理器而自动处理USB事务的硬件(USB核),数据的传输通过执行USB本身的协议来完成,微处理器可不参与数据传输,从而使数据的传输速率大大地提高,同时也简化了固件代码的编写。后两种方式由于克服了微处理器这个带宽"瓶颈",因而广泛应用于大批量的数据传输,如图像、视频等信号的采集。

而对前一种Ports(端口模式),文献中介绍较少,作为一种最基本的数据传输方式,其数据传输主要由固件程序完成,需要CPU的参与,因此数据传输速率比较低,适用于传输速率要求不高的场合,而且由于FX2内部集成有8051内核,对一个刚从单片机的开发过渡到USB开发的工程人员来说,也不失是一种有效的数据传输方式,现以一个工程开发的实例来详细说明一下在Ports模式下如何实现数据一双向传输。

1 设计要求

主机通过USB接口以4KB/s的速率分别向两个通道发送数据序列,并由外设的D/A转换器完成数据的转换,同时,由外部的两个A/D转换器以400KB/s的采样率完成数据的采集,采集后的数字信号也经USB接口传送至主机存储,其中,USB接口芯片采用Cypress公司的CY7C68013,FPGA采用Altera公司的EP1C6Q240C8,图1为其数据的多路传输系统框图

2 USB 数据多路传输硬件

2.1 EZ-USB FX2 CY7C68013

EZ-USB FX2 CY7C68013支持USB2.0数据传输,其内部结构及功能在其他文献已有详细的介绍,现针对此芯片在本电路的作用进行简要的说明,在设计中主要利用CY7C68013的Ports接口模式完成多路数据的传输,USB和FPGA之间数据和状态的传输由CY7C68013的IOA接口完成,IOB接口中的IOB0-IOB2口线作为USB和FPGA之间的控制线。CY7C68013内部的EP2端口设置为512字节双缓冲、OUT、块传输,作为主机向外设发送数据的缓冲区;EP6端口设置为512字节双缓冲,IN、块传输,作为外设向数据传送数据的缓冲区。

2.2 FPGA芯片EP1C6Q240C8

FPGA采用Altera公司的Cyclone 芯片EP1C6Q240C8。在这里FPGA的作用有3个:其一,给两路D/A转通道各分配两个128×8位的RAM区,作为从主机向外设发送数据的缓存。其二、给两路A/D转换通道各分配两个512×8位的RAM区,作为从外设向主机传送数据的缓存,由于两路数据的传输和采集共用一个8位数据总线,因此,数据总线要针对不同的接收和发送来回切换,因而每个通道的两路分别采用两个RAM块,起到双缓冲作为,以防传输时数据"溢出"的。其三,由于数据总线要针对不同通道来回切换,控制切换的过程由状态寄存器来完成,因此,要在FPGA内部设置一个状态寄存器,所设置的状态寄存器仅包含两位,分别标识两个通道的数据RAM的"满"或"空"的状态,以确定当前应该为哪一个通道发送或接收数据。

3 通信协议的制定

采用CY7C68013的Ports模式实现数据通信,与FIFO和GPIF模式不同,后两种模式在数据传输方面主要由USB核完成,所需的控制信号由CY7C68013自身来提供。而对于Ports模式,控制信号没有专用的口线,那么就必须用其他通用的I/O接口来完成,在此,采用IOB0-IOB2作为USB和FPGA之间的控制线,由于自定义的3条线是通用口线,没有实际的意义,因此在USB和FPGA之间首先要制定两者的通信协议,即给这3条口线赋以实际的功能。

ALE(IOB0):例如ALE的上升沿,通过IOA端口向FPGA传送控制指令,例如,当IOA=01H时,表示系统开始工作,A/D和D/A转换器开始启动。当IOA=88H时,表示转换结束,FPGA将不再接收或发送数据,当IOA=02H时,表示CY7C68013将读取FPGA内状态寄存器的内容,由读取两状态标志位的0或1,来判断两个通道内的4个数据缓冲器的"满"或"空"状态,若D/A通道的任一个数据缓冲区为"空",则由FPGA向状态寄存器的第一个状态标志位内填1;否则填0;同理,若A/D通道的任一个数据缓冲区为"满",则由FPGA向状态寄存器的第二个状态标志位内填1;否则填0;当IOA=03H时,表示主机将通过USB向D/A通道发送转换数据,每次发送256个字节,前128字节为D/A转换的1通道,后128字节为2通道,当IOA=04H时,表示主机将要接收由A/D通道传送来的数据。

RD(IOB1):利用RD的上升沿通过IOA端口读取D/A转换器转换来的数据。

WR(IOB2):利用WR的上升沿通过IOA端口向A/D转换器发送由主机传送来的数据。

4 软件的实现

USB与FPGA在Ports模式下数据的传输,由于是由CY7C68013内部的CPU核来实现的,因此,对固件程序的编写显得比较重要,总的来说,固件程序的编写有两种方式:一是由于CY7C68013的内部集成有增强型8051内核,对熟悉8051汇编语言的用户来说,可以直接利用会汇编语言编写高效的固件代码;二是Cypress公司EZ-USB FX2系列配套有现成的固件程序框架函数,用户需要时,只需添加相应的用户程序即可。当然,用户程序中的数据通信的实现也就是如何完成通信协议的过程。

在此,采用后者来完成CY7C68013和FPGA的数据通信,实现数据通信功能的部分软件代码如下(以下代码均可写在框架函数void TD_Poll(void)内):


5 总结

CY7C68013和FPGA的数据通信中,采用基本的Ports接口模式,利用自动指针方法,通过数字示波器的观察,完成1KB的传送,大约需要750μs。与另外两种模式相比,虽然数据传输的速度较低,但作为一种数据传输模式,尤其对刚从单片机开发过渡到USB开发的工程人员来说,也不失为一种有效的开发方式。

关键字:协议  串行  总线  控制

编辑: 引用地址:http://www.eeworld.com.cn/gykz/CDYZX/200610/3943.html
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。
论坛活动 E手掌握
微信扫一扫加关注
论坛活动 E手掌握
芯片资讯 锐利解读
微信扫一扫加关注
芯片资讯 锐利解读
推荐阅读
全部
协议
串行
总线
控制

小广播

独家专题更多

富士通铁电随机存储器FRAM主题展馆
富士通铁电随机存储器FRAM主题展馆
馆内包含了 纵览FRAM、独立FRAM存储器专区、FRAM内置LSI专区三大部分内容。 
走,跟Molex一起去看《中国电子消费品趋势》!
走,跟Molex一起去看《中国电子消费品趋势》!
 
带你走进LED王国——Microchip LED应用专题
带你走进LED王国——Microchip LED应用专题
 
电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2016 EEWORLD.com.cn, Inc. All rights reserved