首页
|
新闻
|
新品
|
文库
|
方案
|
视频
|
下载
|
商城
|
开发板
|
数据中心
|
座谈新版
|
培训
|
工具
|
博客
|
论坛
|
百科
|
GEC
|
活动
|
主题月
|
电子展
注册
登录
论坛
博客
搜索
帮助
导航
默认风格
uchome
discuz6
GreenM
»
测试测量
» Ports模式下CY7C68013和FPGA的数据通信
返回列表
回复
发帖
发新话题
发布投票
发布悬赏
发布辩论
发布活动
发布视频
发布商品
Ports模式下CY7C68013和FPGA的数据通信
发短消息
加为好友
yuyang911220
当前离线
UID
1029342
帖子
9914
精华
0
积分
4959
阅读权限
90
在线时间
286 小时
注册时间
2014-5-22
最后登录
2017-7-24
论坛元老
UID
1029342
性别
男
1
#
打印
字体大小:
t
T
yuyang911220
发表于 2016-12-25 14:48
|
只看该作者
Ports模式下CY7C68013和FPGA的数据通信
通用
,
通信
本帖最后由 yuyang911220 于 2017-1-3 16:10 编辑
引言
通用串行总线(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开发的工程人员来说,也不失为一种有效的开发方式。
收藏
分享
评分
继承事业,薪火相传
回复
引用
订阅
TOP
返回列表
电商论坛
Pine A64
资料下载
方案分享
FAQ
行业应用
消费电子
便携式设备
医疗电子
汽车电子
工业控制
热门技术
智能可穿戴
3D打印
智能家居
综合设计
示波器技术
存储器
电子制造
计算机和外设
软件开发
分立器件
传感器技术
无源元件
资料共享
PCB综合技术
综合技术交流
EDA
MCU 单片机技术
ST MCU
Freescale MCU
NXP MCU
新唐 MCU
MIPS
X86
ARM
PowerPC
DSP技术
嵌入式技术
FPGA/CPLD可编程逻辑
模拟电路
数字电路
富士通半导体FRAM 铁电存储器“免费样片”使用心得
电源与功率管理
LED技术
测试测量
通信技术
3G
无线技术
微波在线
综合交流区
职场驿站
活动专区
在线座谈交流区
紧缺人才培训课程交流区
意见和建议