如系统中包含可编程器件,就必须考虑其功能配置的问题。然而,传统的FPGA配置方案(例如调试阶段的专用下载电费方式、成品阶段的专用存储器方式)在成本、效率、灵活性等方面都存在着明显的不足。针对这样的实际问题,基于嵌入式微控制器与FPGA广泛共存于复杂数字系统的背景,考虑到大量数字系统要求接入Internet的现状,借鉴软件无线电“一机多能”的思想,提出了一种基于嵌入式系统和Internet的FPGA动态配置方案。该方案的提出,旨在基于系统现有的、通用的软硬件资源,尽可能地提高FPGA配置的效率和灵活性。实践证明,该方案可行、实用,达到了设计目的。
1 FPGA配置的期基本问题及现有的解决方案
为轮述方便,将基于SRAM工艺的FPGA的配置流程用图1所示的模型表示。从图1中可以看到,FPGA的配置过程实质上是两次数据的传输过程(分别由配置数据源到时序控制器和时序控制器到目标FPGA)。因此,将这两次关键的数据传输作为FPGA配置的两个基本问题,并在下文中针对不同的传输方式讨论各自的优缺点,从而寻求合理的解决方案。
传统的配置方式包括应用于调试阶段的专用下载电费方式和应用于成员阶段的专用 非易失性存储器方式。在这两种方式中,上文所提到的两次数据传输完全由FPGA厂商所提供的软硬件完成。这样的解决方案确实方便了一般的FPGA用户,因为他们不必花费精力关心配置的细节,但同时也不得不面对不少的缺陷:首先,专用下载电费和专用非易失性存储器的成本非常高,虽然用户可以根据FPGA厂商提供的原理图自制下载电缆,但专用非易失性存储器是肯定无法自制的,而且有些不支持ISP(在系统可编程)的器件不定期必须配以合适的编程器,进一步增加了开发的成本;第二,常见的专用下载电费都是使用计算机并口产生串行的配置信号,而以并口线作为传输媒介,注定其有效传输距离非常有限;第三,专用非易失性存储器的配置方式决定了目标FPGA只能接收单一配置文件,即在系统运行过程中,FPGA不可能根据不同情况动态调整逻辑功能,这样的设计无法满足某些应用中对于系统灵活性的要求。
首先,专用下载电缆和专用非易失性存储器的成本非常高,虽然用户可以根据FPGA厂商提供的原理图自制下载电费,但专用非易失性存储器是肯定无法自制的,而且有些不支持ISP(在系统可编程)的器件还必须配以合适的编程器,进一步增加了开发的成本;第二,常见的专用下载电缆都是使用计算机并口产生串行的配置信号,而以并口线作为传输媒介,注定其有效传输距离信号,而以并口线作为传输媒介,注定其有效传输距离非常有限;第三,专用非易失性存储器的配置方式决定了目标FPGA只能接收单一配置文件,即在系统运行过程中,FPGA不可能根据不同情况动态调整逻辑功能,这样的设计无法满足某些应用中对于系统灵活性的要求。
针对上述各种缺陷,有人提出了改进方案,例如在系统中存在微控制器的前提下,用通用异步串口RS232替代专用的配置电缆、用通用的非易失性存储器替代专用的非易失性存储器。这些改进方案在一定程度上弥补了传统配置方案的不足,但也存在一些新的缺陷:通用异步串口的传输速率很有限,无法满足目前一些新的缺陷:通用异步串口的传输速率很有限,无法满足目前一些大规模FPGA的配置要求;传输距离虽有明显提高,但仍然无法满足某些用户对于远程、跨区域的测试、维护和更新的需要。
2 基于嵌入式微控制器和Internet的解决方案
2.1 方案综述
本设计的目标是基于系统中已有的软硬件资源,尽可能提高FPGA配置的效率和灵活性。考虑到相当多的复杂数字系统:(1)包含微控制器(具有多个通用I/O)及其程序存储器; (2)具有接入Internet的能力(例如系统硬件中包含以太网接口,软件中移植了TCP/IP协议),提出一种新的FPGA配置方案,如图2所示。从图2中可以看出,这种方案的实质是将Internet作为传输配置数据的媒体,并用嵌入式微控制器的程序存储器存储这些数据,从而完成第一节中提到的第一次数据传输;在嵌入式微控制器的通用I/O上实现FPGA配置时序,从而完成第二次数据传输。
为验证这种方案的可行性和有效性,在船载自动识别系统(AIS)的设计中实现了该方案。相关的主要器件包括:CPU采用SAMSUNG公司的S3C44B0X;程序存储器采用MACRONIX公司的MX29LV160ABTC;FPGA采用XILINX公司的XC2S200PQ208;以太网控制器采用REALTEK公司的RTL8019AS。上述器件均具有同类产品的一般特性,因而这一设计实例并不验证的一般性。
2.2 配置文件的传输协议TFTP
在方案的验证实例中,使用基于UDP的TFTP协议在以太网内传输配置文件,协议栈如图3所示。由于UDP属于不可靠的面向无连接的传输协议,因此在网络结构复杂的广域网上传输FPGA配置数据并不适合采用TFTP协议,而必须采用可靠的、基于TCP的应用层协议(例如FTP协议)。此处采用TFTP,完全是由于适应AIS的运行环境、简化性能测试的考虑,而且在应用层实现了部分TCP的功能(例如伪连接、简单的应答和重发、数据包排序等功能),可以保证数据传输的质量。
标准的TFTP(Trivial File Transfer Protocol)是一种基于UDP的、简单的文件传输协议。TFTP的设计目标是简单小巧且易于实现,因此远不如采用多重并发TCP连接的FTP功能强大(例如TFTP不支持目录列表和用户权限验证,而且传输效率比较低)。
TFTP的基本通信过程为:客户端向服务器发出读或写请求;如果服务器接收读写请求,正式的数据传输开始,每段数据长度固定为512字节;长度小于512字节的数据段标志传输结束。此外,协议中还规定了超时、重发等异常处理机制。
在具体实现中,将TFTP服务器(待配置FPGA所在的目标系统)设计成具有三个状态的状态机,其逻辑状态转移图如图4所示。PC机一端直接使用DOS下的TFTP命令。
2.3 FPGA配置文件及配置流程
用微控制器的通用I/O实现FPGA配置必须准确掌握:(1)配置文件的格式;(2)配置信号的时序。
一般来说,FPGA开发软件可以生成多种不同类型的配置文件,用户可以根据不同的应用环境选用这些配置文件。本设计采用.bin文件。值得注意的是,对于某一特定的芯片,无论设计简单或是复杂,其配置的数据的长度是固定的,但配置文件大小却因类型的不同而有所差异。
常见的FPGA配置模式包括主动串行模式、被动串行模式、被动并行模式和边界扫描模式等。为与常见的下载电费兼容并节约微控制器的I/O口线,本实现采用被动串行模式。图5为配置子程序的流程图。
基于微控制器和互联网的配置方案在传输速率、传输距离上较其他方案均有明显优势,同时又符合软件无线“一机多能”的设计思想,并能满足某些用户对于在线调试、更新和维护的需求。此外,必须看到,新方案在具备种种优势的同时,对用户设计的软件提出了一定的要求。事实上,完全具备这些软硬件条件(例如移植TCP/IP协议、使用嵌入式微控制器)符合现今数字系统设计的趋势,设计该配置方案的初衷正是基于这种设计理念,具有相当的实用性。
总结: 一种基于嵌入式系统和Inlternet的FPGA动态配置方案。详细介绍了该方案的设计思想,并给出了设计实例。与传统的FPGA配置方案相比,该方案具有灵活、高效等突出优势。该方案的可行性和实用性已在实际系统中得到验证。