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

FPGA 的重构

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
本帖最后由 twel2e 于 2021-8-3 10:39 编辑
+ b9 L6 }! ^, `6 G& S* K
- S* d* Z: A: I7 D4 u% J- e* S9 ?+ o“重构”对于刚接触FPGA的人来说,可谓十分神秘,对于已经入门的人来说很“简单”,但是你真的了解FPGA的重构吗?. n5 [/ _+ T* o6 F: u! H
术语“重构”是指FPGA已经配置后的重新编程。FPGA的重构有两种类型:完全的和部分的。完全重构将整个FPGA重新编程,而部分重构只取代设计的一部分,设计的剩下部分仍正常工作。部分重构不被视为完全重构的特殊情况,因为两者基本相同。对FPGA执行部分重构通过使用与完全重构(JTAG、CAP或SelectMAP接口)相同的方法来进行,如上一节所述。比特流的结构对于完全和部分重构来说都是相同的。
  p& ^. T* W! ZFPGA重构具有以下几个优点。它允许多个设计共享同一个FPGA架构,这反过来又降低了FPGA的面积、成本和系统复杂性。完全和部分重构为许多FPGA的创新应用程序提供了可能,否则,高昂的成本将影响应用程序实现。利用FPGA重构优势的一些应用如DSP音频或视频处理器等,它们根据用户输人,由包括集成深度包检测的通信控制器修改处理算法,以改变基于协议的数据包处理器。
( C9 l* C4 |! W" D: T+ M5 N很多工业和学术性的FPGA重构方面的研究不断产生有价值的应用、研究论文和学位论文。
: s# Y! m1 r1 I虽然部分重构技术不是一项新功能,也不是主流的研究方向,但是设计和实现流程、工具支持甚至名词术语都在不断发展,用户界面越来越友好。最终目标是向FPGA开发者提供简单和透明的设计流程,无须详细了解配置逻辑和比特流结构。) S' {6 M! d5 P4 q; P; k, Y
部分重构是一项复杂过程,在设计实现、工具流程和重构本身的过程中充斥着多重挑战。面临的一个挑战是在FPGA配置的变化过程中,完成平滑切换而无须中断剩余设计功能或损害其完整性。而在完全重构过程中,FPGA架构和10不能保持在复位。另一项挑战是在改变过程中,防止设计的未改动部分进入无效状态。设计者必须正确界定和约束未改动和改动部分之间的接口。这样,FPGA物理实现工具才能进行配置并使用完全相同的布线资源。有三个部分重构流程可用于Xilinx FPGA基于差异的(difference based)、基于分层的(partition based)及使用动态重构端口。  f# _+ C! K% D. Z( A& G# C
基于差异的部分重构$ m! ~* {0 E/ I* b7 R: `9 g
基于差异的部分重构[2]最适合用于将小型设计转化为LUT方程、IO特征和BRAM中的内容。以下是一个简单的、基于差异的部分重构代码和流程举例,它可以运行在Xilinx开发板上。4 z* M* i: @( d) \  v# f/ F
; Z, g$ ?) b- y: C) g8 r, f) |# f
//原始模块:当两个按钮都按下时,点亮LED
, x" B. S- r1 [! b) ~7 d* Y4 M
/ B; B0 u+ N! ]module top(input btn0,btnl,output led);: J+ m2 x/ n/ D% G, S
       assign led=btn0&btnl;: D9 A/ X+ e5 r$ ~; O3 f# d
endmodule//top
% X' v- `% v0 A
0 @# Z6 @- e  Q) @$ ]; W3 I; v! q5 e' X: }
//部分重构模块:当两个按钮之一按下时,点亮LED
! j8 f( o$ s' Y4 pbutton is pressed
# x1 g! ~$ z  Z
7 m# f. n4 Y8 Y1 t5 Emodule top_pr(input btn0,btn1,output led);
4 w6 G: X7 `4 _0 D7 R& \. A       assign led=btn0 | btn1;! O( [8 E/ Y7 Q+ ~
endmodule//top_pr
* O1 Q; m* q' M& l  Z6 m, b$ S7 d3 g0 \( k; `! ]7 Y
/ ~& c" z! |$ D$ H; U
#约朿文件:对两个设计都相同; E/ [7 Y8 ]: a
' b! n9 ^) C8 G7 t2 S+ L- G4 Z* B
NET "btnO" LOC= "A18" ;
) |8 A$ B. g4 B8 MNET "btnl" LOC= "H17" ;2 ~$ k& J, h& ]' Q4 w. e2 x* f
NET "led"  LOC= "AD21";
1 d/ k7 C3 [7 P8 T
/ f( X4 d0 j& ]( ^* |1 F% j6 d+ e#实现LED功能的LUT被锁定到特定逻辑片中
* N( J* S% v9 Q+ O' t# O0 n2 ~, e#对于原始设计,LUT函数是btn0 & btn1; s1 F! a# s; e+ Y3 ~  a8 {2 J
#对于部分重构设计,LUT函数是btn0|btn1
9 n/ i0 N/ W0 E- m% I8 N
  |! l0 @8 r9 s- u$ Q* _. d/ F9 v& O$ \! D; G0 O" d) n
INST "led" AREA_GROUP="led";
1 V" o% g- O  W5 [- YAREA_GROUP "led" RANGE = SLICE_X65Y168:SLICE_X65Y168;
0 d0 X  U: l. \& l
: U1 D: n: D  W& F
9 C3 |; x: T: ]7 O#bitgen命令用于产生部分重构比特流
' \4 v4 o6 w% S5 e$ t! A( i#ActiveReconfig和Persist选项在配置变化期间置为全局复位! w/ G9 M5 _. }: E( ?. c
9 N8 Z  P, P9 \& v7 @- w
$bitgen -g ActiveReconfig:Yes -g Persist:Yes -r top_orig.bit
2 w1 f' {$ K: x! e, `top_pr.ncd top_pr.bit
+ c( D2 J0 g3 C& z) E+ \' D+ V3 y2 ytop_orig.bit:原始设计的比特流7 A) R/ D8 O0 S' c% A+ u
top_pr.ncd:部分重构设计的布局布线后输出5 C. I# U; E* i% D, x8 K' F4 o
top_pr.bit:得到的部分重构比特流结果
2 d3 p4 O6 O- o) M8 ^* W! L# l- Q+ C' j" o" x

- `4 v5 m9 p9 [上面例子中基于差异的部分重构流程包括以下步骤:6 L0 x9 u7 N+ z# k/ p" H- x0 d

& y1 _- w2 A, Y2 {5 A* T) I(1)编译top模块。结果是比特流文件top_orig.bit。
% @- i) G8 d4 ]) I(2)编译top_pr模块。结果是布局布线后文件top_pr.ncd。
7 N4 ~. k7 A) Z! _% D1 \(3)使用top.orig.bit比特流和top_pr.ncd,生成包含两个设计之间LED LUT方程差异的比特流。
6 M2 s% ]" \. J( E, {4 Y$ F8 Y4 ]: ~' o
基于分层的部分重构
- D# s5 n5 K1 p2 `% V
7 q& a, f8 k/ F# P3 L" M, m) r与基于差异的重构不同,基于分层的部分重构流程支持重构大型部件FPGA设计。PlanAhead工具它提供了用于配置、实现和使用分层管理部分重构项目的集成环境。设计和实现流程的简要概述如下所示:
; `2 y% M3 a9 h% d# s. \, R•FPGA开发者指定待配置的部分设计。  }5 G0 G  t5 w8 \
•在FPGA芯片上包含所需逻辑、嵌入式存储器、10和其他资源的区域。
' y. C6 C/ e( Q. d" V  {•开发者定义覆盖该区域的所有可能设计变量。+ n; S5 K2 ~6 Y4 G
PlanAhead工具管理所有诸如编译设计的细节,包括管理多个网表、静态的和可重构的设计部分,执行DRC,并产生合适的比特流。6 [: w9 f1 s) s3 q$ ~' l: j( `# Z
Xilinx应用提示XAPP883提供了使用部分重构的示例,以允许嵌入式PCI Exress接口模块的快速配置。* Z4 P$ ^' h- u7 q
& N) `2 _2 s# H7 A2 s$ k
动态重构端口/ s9 @7 u, Q7 q! p8 B1 ?: S+ c

( d' _" n3 L9 ~- z, h1 d7 e7 f改变Xilinx GTX收发器、混合模式时钟管理器(MMCM)和System Monitor原语设置的另一种方法,是使用动态重构端口(DRP)DRP提供了一个简单的用户逻辑接口,不需要更多地了解配置寄存器和比特流结构。例如,DRP允许输出时钟频率、相位和MMCM的占空比动态变化。
7 b+ |9 `1 J; {6 S0 m% X, H: m( g

该用户从未签到

2#
发表于 2021-8-3 10:37 | 只看该作者
DRP允许输出时钟频率、相位和MMCM的占空比动态变化。( |" p9 W0 m; e: Q! o( J! ^

该用户从未签到

3#
发表于 2021-8-3 10:59 | 只看该作者
! k9 ]" e) g" ]9 M
“重构”对于刚接触FPGA的人来说,可谓十分神秘,对于已经入门的人来说很“简单”+ b; I) B. k# @

该用户从未签到

4#
发表于 2021-8-3 11:14 | 只看该作者
FPGA物理实现工具才能进行配置并使用完全相同的布线资源
. u; ^. L, V  p% G
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-10-9 16:26 , Processed in 0.109375 second(s), 23 queries , Gzip On.

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

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

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