11.1.3 可重配置的特点
1.降低成本和电路板的空间
通过重配置技术解决了两个设计者普遍存在的问题。
(1)在一个已经使用的器件中,适配更多的逻辑。
(2)在一个更小的、更便宜的器件中,适配一个设计。
历史上,设计者们花费数天时间,甚至几个星期,尝试新的实现开关,返工设计代码,并重新设计解决方案,将设计装入最小可能的FPGA器件中。现在通过部分重新配置技术,设计者就可以动态地时分复用部分可用的硬件资源,以减少其设计规模。同时根据设计要求来控制加载逻辑功能的能力,也大大减少了空闲逻辑,从而进一步节省了额外的空间。
这一策略的一个例子是,在软件无线电(Software Defined Radio,SDR)系统中使用部分可重配置。在SDR中,设计者根据要求上传一个新的波形用于和一个新的通道建立通信。为了使单一的硬件平台可以支持任意数量的波形,要求只有唯一的部分比特流能用于这些波形。由于部分可重配置的“在飞行”(on-the-fly)特性,其他已经建立连接的通道不会被上传到其他的通道所破坏。
2.增加已部署系统的灵活性
在过去,改变现场的一个设计,要求设计新的布局和布线,以及交付整个的配置文件。当需要修改设计时,设计者不得不将系统断电。相比较之下,通过部分可重配置技术,设计者只需要布局和布线所修改的功能,然后将这个新的部分映像提交到系统中即可。
并且,当启动并运行系统时,设计者可以动态地插入新的功能,以改善系统的性能。因此,互斥的功能可以插入到相同的空间内,而不需要重新设计系统或者将设计移植到一个更大的器件中。
体现部分可重配置好处的另一个例子是在光纤传输网络(Optical Transport Network,OTN)的应用。类似于SDR,支持不同的协议来创建一个更高效的硬件系统,即在FPGA中只加载用于当前在任何一点特定通道的协议。因此,对于一个已经部署的系统来说,不仅可以通过使用最小的资源来处理很多不同类型的流量,而且可以使用最新的协议更新系统,而不必全部重新设计。
3.降低功耗
对于当前的设计者来说,功耗是最为关心的问题。但是,随着FPGA设计规模和复杂度的增加,功耗也相应增加。而带有设计技巧的综合和实现工具,能帮助设计者降低功耗。通过使用部分重配置技术,进一步降低静态和动态功耗。
一种降低静态功率的方法是使用较小规模的器件。通过使用部分可重配置技术,设计者能将FPGA进行时间片分割,并且能独立地运行设计的一部分。由于不是设计的每个部分都需要100%的时间,因此设计能要求更小的器件或者更少数量的器件。
部分可重配置也潜在地降低了操作功耗和静态功耗。例如,很多设计必须能高速运行,而最高的性能可能只需要一个很少的时间段,为了降低功耗,设计者使用部分重配置来暂时去除一个高性能的设计,该设计是同一设计的低功耗版本,而不使用排他性设计用于最大性能,当系统要求时,设计者可以切换回高性能的设计。
这个原理也应用到了I/O标准,特别是当一个高功率接口并不要求100%时间的场合。低电压差分传输(Low Voltage Differential Signaling,LVDS)是一个高功耗的接口(不考虑活动性,这是由于高DC电流要求为接口提供能量)。当不要求最高性能时,设计者能使用部分可重配置将I/O从LVDS变成低功耗接口,如LVCMOS;而当要求高速传输时,再切换到LVDS。
4.其他优点
在一个FPGA内动态地时分复用硬件的能力,提供了其他方面的优势。
(1)在选择用于一个应用的算法或者协议时,提供了实时的灵活性。
(2)在一个设计安全性时,可以使用新的技术。
(3)改善FPGA的故障容错能力。
(4)促进可配置计算。
(5)降低存储比特流的要求。
11.1.4 可重配置术语解释
为了后续章节的描述方便,下面对可重配置技术中所涉及的一些术语进行说明。
1.Top-down synthesis(自顶向下的综合,不用于部分可重配置)
(1)一个综合工程,该工程综合平面设计,用于优化。
(2)经常称为平面综合。
(3)不支持层次化实现。
2.Bottom-up synthesis(自底向上综合)
(1)独立综合工程,产生多个网表。
(2)自底向上综合要求为每个分区分配一个独立的网表。
(3)没有跨越边界的优化。这样,可以对设计的每个分区进行独立地综合。
(4)对带有用于分区的黑盒顶层逻辑进行综合。
3.Configuration(配置)
一个配置是一个完整的设计,包括静态逻辑以及用于每个可配置分区的一个可配置的模块。
在一个部分重配置FPGA工程中,可以有多个配置。每个配置生成一个充分的比特流文件,以及用于每个可配置模块的一个部分比特流文件。
4.Configuration Frame(配置帧)
配置帧是FPGA配置存储空间中最小的可寻址段。从这些分散的最底层元素构建配置帧。在7系列器件中,基本的可重配置的帧的大小为一个元件(CLB、BRAM、DSP)宽度和一个时钟区域高度。
5.Internal Configuration Access Port(内部配置访问端口)
内部配置访问端口是SelectMAP接口的一个内部版本。
6.Partial Reconfiguration(部分重配置)
部分重配置指当前正在修改一个正在运行的FPGA设计,这个修改是通过下载一个部分比特流实现的。
7.Partition(分区)
一个分区是设计的一个逻辑部分,由设计者在一个层次中进行定义。这个定义用于设计重用。一个分区是一个新的实现或者先前保留的一个实现。一个被保护的分区其功能和实现都是一致的。
8.Partition Pins(分区引脚)
一个分区引脚是在静态和可重配置逻辑之间的逻辑和物理的连接。
9.Static Logic(静态逻辑)
所有设计内的逻辑是不可重配置的,它不是可重配置分区的一部分。当对可重配置分区进行重新配置时,静态逻辑总是活动的。
10.Static Design(静态设计)
静态设计是设计的一部分,它在部分重配置的过程中不会变化。静态设计包括顶层和没有定义为可重配置的所有模块。静态设计由静态逻辑和静态布线所建立。
11.Reconfigurable Module(可重配置模块,RM)
在可重配置分区内,一个RM是网表或者HDL描述的实现。每个可配置分区内可以有多个可重配置的模块。
12.Reconfigurable Partition(可重配置分区,RP)
RP是在一个例化中的属性设置,其定义了该实例是可重配置的。PR是设计层次中的一个层次,在这个层次上可以使用不同的RM进行实现。典型地,一些Tcl命令,如opt_design、place_design和route_design,用于检测实例上的HD.RECONFIGURABLE属性,并且正确地处理它。
11.1.5 可重配置的要求
(1)可重配置要求使用Vivado 2014.3或更新的版本。
(2)Vivado 2014.3可重配置支持下面的器件。
① 7系列:包括Virtex-7、Kintex-7、Artix-7以及Zynq-7000 SoC器件。
② UltraScale系列:KU040和VU095。
(3)只通过Tcl或命令行支持PR。此外,不支持工程。
(4)要求为每个元素类型进行布局规划,用于定义可重配置的域。
① 于最大的效率来说,7系列器件使用RESET_AFTER_RECONFIG特性,以及垂直对齐到帧/时钟区域边界。
② 也应用水平对齐规则。
(5)设计者负责自底向上的综合,以及管理RM网表文件。
① 可以使用任何综合工具。在创建可重配置模块网表时,禁止I/O插入。
② 对于可重配置模块的综合,Vivado综合使用脱离上下文的模块分析流程。
(6)支持标准的时序约束和额外的时序规划能力。
(7)建立一个唯一的DRC集,用于引导设计者在一个成功的布线路径上完成设计。
(8)一个PR设计必须考虑PR的初始化和部分比特流文件的传递,或者在FPGA内,或者作为系统设计的一部分。
(9)一个PR必须包含用于分区的由可变RM所使用的所有引脚的超集。因此,这将导致对出现一些模块没有用的输入或者输出,但是这增加了PR解决方案的灵活性。在模块内没用的引脚,将引起不确定的状态。如果这对设计是一个问题,则可以将输出驱动为常量。
(10)在生成比特流时,支持黑盒。
11.1.6 可重配置的标准
(1)对于7系列的器件来说,遵循下面的规则。
① 可重配置的资源包括CLB、BRAM和DSP元件类型,以及布线资源。
② 不可以重配置时钟,以及时钟正在修改的逻辑(包括BUFG、BUFR、MMCM、PLL和类似的元件),因此它们必须驻留在静态区域内。
③ 下面的元件不可以重配置,必须驻留在静态区域内。
I/O和I/O相关的元件(ISERDES、OSERDES、IDELAYCTRL等)
串行收发器(MGT)和相关元件
单个的结构特性元件(如BSCAN、STARTUP、XADC等)
(2)对于UltraScale器件来说,可重配置的元件范围扩大:
① 可重配置的资源包括CLB、BRAM和DSP元件类型,以及布线资源。
② 可以重配置时钟,以及时钟正在修改的逻辑(包括BUFG、BUFR、MMCM、PLL和类似的元件)。
③ I/O和I/O相关的元件(ISERDES、OSERDES、IDELAYCTRL等)。
④ 串行收发器(MGT)和相关元件。
⑤ PCIe、CMAC、Interlaken和SYSMON块。
这些新元件的比特流粒度要求遵守一些规则。例如,I/O的部分可重配置要求整个组,外加该帧内所有的时钟资源一起都是可重配置的。
只有配置元件(如BSCAN、STARTUP、ICAP、FRAME_ECC等)必须保留在设计的静态区域内。
(3)限制到RP的全局时钟资源,这取决于这些RP所占用的器件和所占用的时钟区域。
(4)当使用元件实现IP时,IP的使用也会受到限制:
Vivado调试集线器(BSCAN和BUFG)
带有嵌入式全局缓冲区或者I/O的IP模块
MIG控制器(MMCM)
(5)必须对可重配置模块进行初始化,以保证在重配置后的开始条件。通过选择RESET_AFTER_RECONFIG特性,用一个本地复位或者一个专用的GSR事件,设计者可以手工实现该要求。
(6)推荐去耦合逻辑。这样,在部分重配置期间,将设计中的静态部分和可重配置区域的连接断开。
可以把到可重配置模块的时钟和其他输入去耦合,这样用于阻止在重配置期间内对存储器“虚假”写操作。如果没有使用RESET_AFTER_RECONFIG特性,则需要考虑这一点。
(7)必须对一个可重配置区域进行布局规划。这样,模块必须是一个由Pblock保留的模块,并且满足时序的要求。如果完成该模块,推荐通过使用非PR流程运行这个设计,以得到一个对布局、布线和时序结果的初始评估。如果设计是通过非PR流程发布的,则在移动到PR流程前,必须解决这些问题。
(8)在一个RP的引脚中,有一个分区引脚。这是一个布线点,用于将静态逻辑连接到RP上。如果一个设计有过多的分区引脚用于可用的布线资源,可能会发生布线阻塞。
(9)Virtex-7 SSI器件(7V2000T、7VX1140T、7VH870T、7VH580T)有两个基本的要求:
① 可重配置的区域必须充分地包含在一个单个的SLR中。这确保全局复位事件和RM内的所有元素同步,所有的超长连线(Super Long Line,SLL)包含在设计的静态部分。SLL是不可重配置的。
② 如果使用ICAP发送部分比特流,必须位于主SLR,它是这些器件的SLR1。在ICAP上应用位置约束,将其只能约束到ICAP_X0Y2或者ICAP_X0Y3。比特流的格式是贯穿四个SLR的标准菊花链。
……