首 页电子文章电子资料客户留言最新文章最新下载繁體中文
设为首页
加入收藏
联系我们
您当前的位置:中国电子前沿 -> FPGA/PLD -> FPGA应用 -> 电子文章内容 退出登录 用户管理
栏目导航
· CPLD应用 · FPGA应用
· VHDL学习 · EDA软件
广告专栏
热门电子文章
· [51系列] 单片机c语言学..
· [linux移植] Linux 嵌入式..
· [linux移植] YAFFS文件系..
· [USB技术] USB接口研究与..
· [ucos相关] uC/OS-II 初级..
· [无线开发] 收发一体超声..
· [TI DSP综合] DSP环境下C..
· [51系列] 51单片机串口..
· [linux移植] cs8900a驱动..
· [ARM入门] ARM体系结构和..
· [VHDL学习] 数字电压表的..
· [51系列] 基于AT89C51单..
相关电子文章
· Linux系统配置与优化..
借助USB来完成系统配置
作者:佚名  来源:不详  发布时间:2007-3-8 21:04:29  发布人:zangyl
减小字体 增大字体
引言
  USB2.0规范凭借其较高的传送速率而使更加复杂和高度集成的外设设计得以实现。许多USB设计都采用了现场可编程门阵列(FPGA),以便将定制逻辑功能包容在内。由于FPGA具有易失性,因此它另外还需要一个处理器和一个大容量存储器以用于配置目的。
  应用于EZ-USB设计中的FPGA可在FPGA代码存储于PC存储器的情况下借助EZ-USB微控制器来进行配置,从而能够免除因在系统设计中使用一个处理器和存储器所造成的占用空间和成本的增加。
  本文将介绍一种借助USB来进行FPGA配置的方法以及用于通过USB获得数据并将其传送至FPGA的微控制器固件实例。此外,还将说明FPGA配置的一种简单的主机应用。
  采用FPGA的系统级芯片
  FPGA由于其密度的不断提高而正在被人们用来实现前所未有的众多功能,从而使得"系统级芯片"成为现实。利用FPGA所实现的功能包括定制逻辑、通信接口和协议以及数据存储。由于可提供各种内核(包括硬核和软核)并包括DSP功能、CRC发生器、串行接口和加密/解密引擎,因而使得FPGA成为一种能够添加到任何设计中的通用型器件。
  然而,由于FPGA具有易失性,所以每次FPGA功率循环其设计代码都必须重新装入。这一任务常常由某种专门针对FPGA配置的专用存储器件或专用处理器来完成。
  FPGA的规模大小不一,小到4万门,大到600万门。配置位的数量与FPGA的规模成正比。对于4万门的器件,所需的配置存储器的容量为360Kbits。而对于100万门的器件,则所要求的配置存储器的容量为4.1Mbits(即500Kbytes)。
  使用对一个100万门的FPGA进行配置的专用存储器会增加约18美元(以10,000片为批量来购买一种4Mbit器件时的单价)的关联成本。不同制造商所提供的这种特殊器件的封装占位面积从36mm2到44mm2不等。如能去掉这一元件将大大节省成本和电路板的占用空间。
  为了使借助USB来进行FPGA配置成为一种高效解决方案,必须遵循以下准则:
  1. 成本--借助USB所进行的FPGA配置应几乎(或根本)不增加成本。
  2. 性能--借助USB所进行的FPGA配置所花费的时间不应明显长于采用配置存储器时所耗费的时间。
  3. 时间--这种改变不应对设计周期产生任何负面影响。
  设计要求
  这里所面临的难题是如何在代码被存储于PC硬盘驱动器的情况下对FPGA进行配置,以便免除因使用配置存储器所造成的成本增加。本文将全面论述借助USB来进行FPGA配置的过程。
  我们再回过头来看一下上一节中所谈到的几项要求,第一条准则指的是设计方法的改变不得使设计成本有任何的增加。事实上,该设计将省去在配置存储器上所花费的18美元成本,而不会带来任何的附加成本。于是,针对这一设计准则已经实现了成本的节约。
  第二条设计准则是性能。对数据通路进行快速分析将能够揭示出任何的潜在瓶颈。数据流的行进路线如下:
  主PC软件从一个文件中获取FPGA配置数据并通过USB将其传送至目标设计。然后,USB微控制器从其端点FIFO(先入先出缓存器)中获取该数据并连同必需的控制选通信号一起提供给FPGA。
  PC与目标设备之间的USB传送将取决于USB连接的速度。对于USB2.0高速器件,该速率可达480Mbit/s。然而,将数据从USB FIFO传送至FPGA有可能要稍慢一些。这是由两个因素造成的,即从USB缓冲器中检索一个数据字节以及微处理器生成写入和时钟脉冲选通信号都需要花费一定的时间。
  我们来研究一下下面的波形,以便对配置一个FPGA所需的处理时间进行分析:

  在第一个时钟周期,数据被提供至并行输出端。在第二个时钟周期,确定nWR(写入)和nCS(时钟选通)信号。在第三个时钟周期,CLK(时钟)信号被驱动至高电平且配置数据被装入FPGA。接着,取消对nRW和nCS信号的确定并最终将时钟信号(CLOCK)重新驱动至低电平。采用某种测试固件和一个逻辑分析仪所进行的快速测试发现了两个性能限制因素。
  首先,采用位传递方案来生成写入选通脉冲信号所产生的脉冲开关时间间隔不会短于250ns,从而导致上面波形中的5个周期的总循环时间为1250ns(800KHz)。这是因为即使是在48MHz的条件下,一个增强型8051处理器仍然需要4个时钟脉冲来完成一个指令周期。控制选通信号是采用各自需要3个指令周期来完成的AND和OR指令来生成的。于是,在48MHz条件下,用于完成一个AND或一个OR指令的总时间为:
  3周期 * 4时钟/周期 * 20.833 ns/时钟 = 250ns
  其次,目前从USB FIFO中进行数据检索需要花费3.8ms/字节的时间。这是因为缓冲器指示字的字节更新、环路计数器的加1计数以及实际的数据传送都需要时间。
  为了克服上面这两个障碍,需要在USB缓冲器和FPGA之间建立一种速度更快的连接,并寻求出一种生成nWR、nCS和CLOCK选通信号的更佳途径。
  幸运的是,赛普拉斯公司的EZ-USB FX2器件就拥有一种针对这些问题的解决方案。FX2的量子FIFO功能可实现USB缓冲器与芯片输出总线的直接连接,而无需8051处理器的介入。此外,FX2的通用接口(GPIF)功能还使得能够以程序控制的方式来完成波形生成。
  后面的几节将介绍如何采用量子FIFO和GPIF来把单字节写入时间从4ms缩短至125ns,这是一个幅度高达32倍的性能改进!
  最后,该设计的实际执行过程不应过长。了解该设计工作的复杂性的最佳途径是仔细查看其设计步骤。下一节将说明这些步骤。
  设计实施
  即将执行的设计将包括一个100万门的FPGA。这是一个中等规模的FPGA。针对该应用的配置存储器将需要具有约512Kbytes的容量。
  将需要发出一些选通脉冲以便把数据装入FPGA。前文所示的波形将被采用。GPIF将被用来生成这些波形。
  设计实施分为三个步骤来进行。首先是主PC代码,随后是USB固件。最后将生成FPGA配置波形并提供连接程序以便从软件中调用这些波形。
  PC代码相对简单。获得了一个至USB设备驱动程序的句柄。打开包含配置代码的文件并对其进行语法分析。在USB转移函数的每次调用过程中传送取自配置文件的512字节数据。这一过程将继续下去,直到配置文件中没有剩余字节为止。为了进行测试,将采用一个包含走步数据模式的文件,以便在逻辑分析仪上对数据传送加以验证。
  对于USB固件,代码将是必需的,以便在USB数据输入时将其捕获并传送至FPGA。该固件将基于一个与开发工具一道供货的现有框架。在这种场合,与开发工具一并供应的成批传送实例对用户来说是一个良好的起点。该设计将采用为双重缓冲和512字节/USB传送而初始化的端点#2。一个轮询环路将确定USB数据是否存在于该端点缓冲器中。如果是,则数据将被装入FPGA且该端点将重新进入待命状态以便能够接收更多的数据。双重缓冲的运用便于在传送一个数据分组同时处理另一个数据分组。
  数据传送和选通信号控制将由GPIF来完成。为此调用了两项功能。第一项功能是Peripheral_SetEP2GPIFTC(Count),它被用来通知GPIF有多少字节需要传送。变量Count通过在接收到USB数据时对端点字节计数寄存器进行读取操作的方法来获得。每个数据分组(对应于位于文件末尾、其大小有可能小于512的数据的分组除外)的计数值将是512。第二项功能是Peripheral_FIFOWrite(EndPoint)。这里,端点序号将被传递,这样GPIF就会知道从哪一个缓冲器获取USB数据。

  最后一项工作是对GPIF波形进行编辑。EZ-USB产品配有一个用于该目的的工具。该波形编辑器用于设定CTL输出的逻辑电平并根据RDY输入做出相应的判断。FPGA配置波形在波形编辑器中的实现过程如下。


  波形的编辑包括在间隔0、1和2期间对nWR、nCS和CLK信号所做的变更。如图3中的IF/Wait行所示,间隔 0、3和7具有长达一个时钟周期的持续时间。间隔1的持续时间为两个时钟周期。间隔2包含一个IF条件。在这种场合,一个输入与其自身进行"异-或" 逻辑运算以生成逻辑真(TRUE)。这就是所谓的中断机理。在一个实际应用中,RDY2行有可能是一个来自用于流量控制的FPGA的BUSY信号。请注意在这个波形中有6个周期,每个周期占用20.833ns的时间,这是由于GPIF在满48MHz条件下运行所致。
  Peripheral_FIFOWrite() 功能与所示的波形相关联。当固件调用Peripheral_FIFOWrite() 功能时,上文中的波形将被执行n次,其中,n为传递至Peripheral_SetEP2GPIFTC( ) 的数值。下图示出的是用于GPIF传送的逻辑分析仪输出的屏幕拍摄照片。由图可见,传送一个字节需要125ns的时间。请注意取自样本数据文件的走步数据模式。

  以125ns/字节的FPGA写入时间来计算,一个512KB的FPGA配置文件有可能仅需65ms便可完成装入。
  结论
  借助USB的FPGA配置可在没有增加任何元件的情况下轻松而廉价地实现,从而免除了使用配置存储器所造成的成本增加并压缩了电路板的占用空间和设计周期。与位传递处理器解决方案相比,EZ-USB FX2的量子FIFO功能以及GPIF接口实现了32倍的速度提升。提供的开发工具和实例将有助于用户缩减开发时间,从而使得设计人员能够把精力集中于系统的其他方面。
[] [返回上一页] [打 印] [收 藏]
上一篇电子文章:智能延迟触发产生器的设计
∷相关电子文章评论∷    (评论内容只代表网友观点,与本站立场无关!) [更多评论…]
关于本站网站帮助广告合作下载声明友情连接网站地图 ┆ 在线客服: 点这里与管理员交谈
Copyright © 2006-2008 EMB-CN.com. All Rights Reserved .鲁ICP备06032441号