芯片破解网


首页 -- 单片机破解-- IC破解-- 芯片破解-- 新闻技术 --关于我们
 
芯片破解网 >> IC破解 >> 当前位置

CY7C68013和FPGA的数据通信

通用串行总线(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。
 
  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系列配套有现成的固件程序框架函数,用户需要时,只需添加相应的用户程序即可。当然,用户程序中的数据通信的实现也就是如何完成通信协议的过程。
返回顶部


2013-2015 芯片破解网 All Rights Reserved.
如有任何问题和建议请联系:498187676@qq.com

深圳市星光芯电子有限公司 版权所有

地址:深圳市龙岗区南湾街道平吉大道1号建昇大厦B栋1618(李朗软件园对面) 电话:0755-88820678
手机:13713820066 QQ:498187676 联系:周工


站点地图

粤ICP备12084176号