找回密码
 注册
关于网站域名变更的通知
查看: 562|回复: 3
打印 上一主题 下一主题

FPGA 的重构

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2021-8-3 09:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
本帖最后由 twel2e 于 2021-8-3 10:39 编辑 5 J. R& E- p$ T) b' l; G+ ]
, G! }% Y) e# u1 F. l
“重构”对于刚接触FPGA的人来说,可谓十分神秘,对于已经入门的人来说很“简单”,但是你真的了解FPGA的重构吗?
! L! m! r0 T7 X# k" ]  K' L术语“重构”是指FPGA已经配置后的重新编程。FPGA的重构有两种类型:完全的和部分的。完全重构将整个FPGA重新编程,而部分重构只取代设计的一部分,设计的剩下部分仍正常工作。部分重构不被视为完全重构的特殊情况,因为两者基本相同。对FPGA执行部分重构通过使用与完全重构(JTAG、CAP或SelectMAP接口)相同的方法来进行,如上一节所述。比特流的结构对于完全和部分重构来说都是相同的。
% i, o9 E  v- D$ s/ s5 B* ~, cFPGA重构具有以下几个优点。它允许多个设计共享同一个FPGA架构,这反过来又降低了FPGA的面积、成本和系统复杂性。完全和部分重构为许多FPGA的创新应用程序提供了可能,否则,高昂的成本将影响应用程序实现。利用FPGA重构优势的一些应用如DSP音频或视频处理器等,它们根据用户输人,由包括集成深度包检测的通信控制器修改处理算法,以改变基于协议的数据包处理器。9 d1 j0 d2 Y2 l( F$ u
很多工业和学术性的FPGA重构方面的研究不断产生有价值的应用、研究论文和学位论文。; F' N% H# G* p. j7 s3 x
虽然部分重构技术不是一项新功能,也不是主流的研究方向,但是设计和实现流程、工具支持甚至名词术语都在不断发展,用户界面越来越友好。最终目标是向FPGA开发者提供简单和透明的设计流程,无须详细了解配置逻辑和比特流结构。  Z- q6 P9 ^8 J
部分重构是一项复杂过程,在设计实现、工具流程和重构本身的过程中充斥着多重挑战。面临的一个挑战是在FPGA配置的变化过程中,完成平滑切换而无须中断剩余设计功能或损害其完整性。而在完全重构过程中,FPGA架构和10不能保持在复位。另一项挑战是在改变过程中,防止设计的未改动部分进入无效状态。设计者必须正确界定和约束未改动和改动部分之间的接口。这样,FPGA物理实现工具才能进行配置并使用完全相同的布线资源。有三个部分重构流程可用于Xilinx FPGA基于差异的(difference based)、基于分层的(partition based)及使用动态重构端口。# Y" b# ?& g7 A2 N
基于差异的部分重构3 l5 p  {7 B3 i3 @" {5 T* l
基于差异的部分重构[2]最适合用于将小型设计转化为LUT方程、IO特征和BRAM中的内容。以下是一个简单的、基于差异的部分重构代码和流程举例,它可以运行在Xilinx开发板上。
! D7 L6 g" x3 @+ C: a4 V- N2 F
1 j% [4 x3 I4 ]7 c) S) ~. p) D//原始模块:当两个按钮都按下时,点亮LED1 L" ~/ b( Z. w' ~2 W, `" P& x
  k: K8 B8 D9 E, Q# D
module top(input btn0,btnl,output led);
* x0 I6 `6 P9 i7 {       assign led=btn0&btnl;7 k3 K& \! e: J. x" V" d, s5 c" S
endmodule//top  w& o% k8 T' r: _* o# L

* E7 m' r# n. K' i- j
+ r4 B, W9 O) o* G//部分重构模块:当两个按钮之一按下时,点亮LED
. C, }/ H& C9 n! t- L, Hbutton is pressed6 D6 l: x7 i$ ]4 R" @2 A

0 B5 O# e" [7 l2 s6 jmodule top_pr(input btn0,btn1,output led);, _0 I3 y1 M' w- J0 V0 m
       assign led=btn0 | btn1;
* r8 t0 ~0 ?1 T- R1 q3 hendmodule//top_pr
4 e1 A9 `: x% o9 y4 f
% U0 p3 r5 N- T+ [3 m
; ^3 \) O. G9 J3 e  r; l/ A#约朿文件:对两个设计都相同8 w, p3 e1 s: N9 j8 j
0 T' L6 e' P/ C1 C/ d; d) i) U
NET "btnO" LOC= "A18" ;. ^- f; [; C) i
NET "btnl" LOC= "H17" ;
, p/ x6 ?, |  BNET "led"  LOC= "AD21";7 |3 D( F9 z; u# ?; i
: K9 [0 W" _( Y( m
#实现LED功能的LUT被锁定到特定逻辑片中+ I/ @2 r* z. f( v3 i0 l# E- ~
#对于原始设计,LUT函数是btn0 & btn1: {( j$ ?' A  K, B) q7 c& m7 H
#对于部分重构设计,LUT函数是btn0|btn1
" _9 R+ m9 S4 O/ P8 p& r4 m2 j& q  A
! Z2 r% R7 c' q2 L0 F6 w5 a9 w0 Q
9 z8 b  j! I9 R* M' pINST "led" AREA_GROUP="led";
" R5 s' U' L' d5 D; \AREA_GROUP "led" RANGE = SLICE_X65Y168:SLICE_X65Y168;6 E) G( ~' X  G) C( \: R6 x/ g! f
; z5 `# d6 ]6 M
+ Z' B( ?) |0 @4 ], u
#bitgen命令用于产生部分重构比特流
" @! g  S" y( d- |: C& D" j* _* ?#ActiveReconfig和Persist选项在配置变化期间置为全局复位; m, U# a# W- q. }! E$ n
3 a& C$ S* ~8 X# Z8 V7 i+ }, J
$bitgen -g ActiveReconfig:Yes -g Persist:Yes -r top_orig.bit
6 X! s" }( T( L8 b) }  |, otop_pr.ncd top_pr.bit
% B: e: [% X  A, J+ k2 E% y. q3 e; ktop_orig.bit:原始设计的比特流, S  K/ _; {9 A8 P1 }
top_pr.ncd:部分重构设计的布局布线后输出$ ?3 o0 B8 F. j; Y
top_pr.bit:得到的部分重构比特流结果
) h7 {5 g( ~# T; |9 @4 c- X2 I6 Q8 B
! }' ~4 r! ^2 I% K1 n) M. V8 Z+ \2 X3 G2 p* @: T# H
上面例子中基于差异的部分重构流程包括以下步骤:
* z4 Z* W/ k2 ~4 V3 X4 t
2 \6 M1 e1 u" e' j, x0 n1 j4 h(1)编译top模块。结果是比特流文件top_orig.bit。
7 ^; O8 D% R6 u, L6 }(2)编译top_pr模块。结果是布局布线后文件top_pr.ncd。) U; @0 u# t9 ^# Z0 q$ S
(3)使用top.orig.bit比特流和top_pr.ncd,生成包含两个设计之间LED LUT方程差异的比特流。
! T; D+ J' W0 ~
3 `; `2 F/ b/ B6 A9 w基于分层的部分重构$ J- U; s) ~0 z1 i& q- }
* w1 H: ?9 Z- H8 R, I1 c. ?
与基于差异的重构不同,基于分层的部分重构流程支持重构大型部件FPGA设计。PlanAhead工具它提供了用于配置、实现和使用分层管理部分重构项目的集成环境。设计和实现流程的简要概述如下所示:
: v3 C6 G: a5 h, o& B, U4 G•FPGA开发者指定待配置的部分设计。: z+ U0 O( F4 b% _6 b: a3 t4 z( N
•在FPGA芯片上包含所需逻辑、嵌入式存储器、10和其他资源的区域。
! }. s" ~; c5 t- a8 d% u•开发者定义覆盖该区域的所有可能设计变量。
5 s4 f5 P0 a6 D1 a6 y) }$ @; z
PlanAhead工具管理所有诸如编译设计的细节,包括管理多个网表、静态的和可重构的设计部分,执行DRC,并产生合适的比特流。
, M5 U8 ?/ G( ^0 H$ TXilinx应用提示XAPP883提供了使用部分重构的示例,以允许嵌入式PCI Exress接口模块的快速配置。2 Q! }& L; u" _7 V8 d) z8 Y

, \' t: V3 Q/ b* i0 u; F0 N$ ~动态重构端口
7 z/ _% @" q* _6 D: u, t* Z3 }0 t2 [( ^. |+ w, F# _
改变Xilinx GTX收发器、混合模式时钟管理器(MMCM)和System Monitor原语设置的另一种方法,是使用动态重构端口(DRP)DRP提供了一个简单的用户逻辑接口,不需要更多地了解配置寄存器和比特流结构。例如,DRP允许输出时钟频率、相位和MMCM的占空比动态变化。
' ]" U- R. G9 e

该用户从未签到

2#
发表于 2021-8-3 10:37 | 只看该作者
DRP允许输出时钟频率、相位和MMCM的占空比动态变化。
/ _4 X+ ~: [% E4 B6 L& C( T3 U

该用户从未签到

3#
发表于 2021-8-3 10:59 | 只看该作者

2 [8 K4 z% B! O9 S- U0 x7 e“重构”对于刚接触FPGA的人来说,可谓十分神秘,对于已经入门的人来说很“简单”1 }. L- L, \% w. ^" |. |! g

该用户从未签到

4#
发表于 2021-8-3 11:14 | 只看该作者
FPGA物理实现工具才能进行配置并使用完全相同的布线资源
# p2 }+ c1 Q4 F- Y# a' d2 |
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-8-4 19:23 , Processed in 0.109375 second(s), 23 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表