FPGA可重配置原理及实现(1)——导论

一、概述

        可重配置技术是Xilinx提供的用来高效利用FPGA设计资源实现FPGA资源可重复利用的最新的FPGA设计技术,这种技术的发展为FPGA应用提供了更加广阔的前景。

        术语“重构”是指FPGA已经配置后的重新编程。FPGA的重构有两种类型:完全的和部分的。完全重构将整个FPGA重新编程,而部分重构只取代设计的一部分,设计的剩下部分仍正常工作。部分重构不被视为完全重构的特殊情况,因为两者基本相同。对FPGA执行部分重构通过使用与完全重构(JTAG、CAP或SelectMAP接口)相同的方法来进行,如上一节所述。比特流的结构对于完全和部分重构来说都是相同的。

二、可重配置导论

1、可重配置的概念

        当系统变得越来越复杂的时候,设计者需要用尽可能少的成本来做更多的事情,FPGA的灵活性成为了一个关键的“财富”。为什么这么说?因为xilinx的FPGA总是提供现场设备可重编程的灵活性。当今,越来越苛刻的成本、电路板的空间和功耗限制要求更高效的设计策略。

        FPGA技术提供了现场编程和重新编程的灵活性,而无需经过修改设计的重新制作。部分可重构(PR)进一步提高了这种灵活性,允许通过加载部分配置文件,通常是部分BIT文件来修改一个操作中的FPGA设计。下图是部分可重构的结构图:

        如图所示,通过将A1.bit、A2.bit、A3.bit和A4.bit中的任意一个部分可重配置文件下载到可重配置块“A”中,就可以实现可重配置块“A”的功能。

        FPGA设计中的逻辑分为两种不同的类型,可重构逻辑和静态逻辑。FPGA块的灰色区域表示静态逻辑,标记为重新配置块“A”的块部分表示可重构逻辑。静态逻辑保持工作,不受加载部分BIT文件的影响。可重构的逻辑将被部分BIT文件的内容所取代。 

2、相关术语介绍

        以下术语特定于部分重新配置功能,并在本系列中使用。

2.1 Bottom-Up Synthesis(自底向上综合)

        自底向上综合是基于模块设计的综合,无论是在一个项目还是多个项目中。在Vivado中,自底向上的综合被称为out-of-context(OOC)综合。OOC综合为每个OOC模块生成一个单独的网表(或DCP),这是部分重新配置所必需的,以确保没有在模块边界上进行优化。在OOC综合中,顶层(或静态)逻辑与每个OOC模块的黑盒模块定义一起合成。

        我们对此进行一个简单的总结:

(1)模块间独立综合工程,产生多个网表

(2)自底向上综合要求为每个分区分配一个独立的网表

(3)没有跨越边界的优化。这样,可以对设计的每个分区进行独立的综合

(4)对带有用于分区的黑盒顶层进行综合

2.2 Configuration(配置)

        一个配置是一个完整的设计,包括静态逻辑,以及用于每个可重构分区的一个可重构模块。

        在一个部分重构FPGA项目中,可能有多个配置。每个配置生成一个充分的比特流文件,以及用于每个可配置模块的一个部分比特流文件。

2.3 Configuration Frame(配置帧)

        配置帧是FPGA配置内存空间中最小的可寻址段。重构配置帧是由这些最底层元件构建的。在Xilinx设备中,基本的可重构帧的大小为一个元件(CLB、BRAM、DSP)宽度和一个时钟区域高度。这些帧中的资源数量因设备系列而异。

2.4 Internal Configuration Access Port ,ICAP(内部访问访问端口)

        内部配置访问端口(ICAP)本质上是SelectMAP接口的内部版本。有关详细信息,请参见7系列FPGAs配置用户指南(UG470)[参考文献7]或UltraScale体系结构配置用户指南(UG570)

2.5 Media Configuration Access Port ,MCAP(媒体配置访问端口)

        在UltraScale 设备中,MCAP是从一个特定的PCIe块到ICAP的专用链接,在配置Xilinx PCIe IP时,可以启用此接入点。

2.6 Partial Reconfiguration ,PR(部分可重配置)

        部分可重配置是通过下载部分比特流来修改操作FPGA设计中的逻辑子集。

2.7 Partition(分区)

        分区是设计的一个逻辑部分,设计者在层次边界上定义,这个定义用于设计重用。一个分区要么作为新的实现,要么从以前的实现中保留。保留的分区不仅维护相同的功能,而且还维护相同的实现。

2.8 Partition Definition ,PD(分区定义)

        这是一个仅在工程流程中使用的术语。一个分区定义定义了一组与模块实例(或可重构分区)相关的可重构模块。一个PD应用于模块的所有实例,但是不能与模块实例的子集相关联。

2.9 Partition Pin(分区引脚)

        分区引脚是在静态和可重配置逻辑之间的逻辑与物理的连接。

2.10 Processor Configuration Access Port,PCAP(处理器配置访问端口)

        处理器配置访问端口(PCAP)类似于内部配置访问端口(ICAP),是用于配置Zynq-7000 AP SoC设备的主端口。有关更多信息,请参见Zynq-7000所有可编程技术参考手册(UG585)[参考文献9]

2.11 Programmable Unit,PU(可编程单元)

        在UltraScale结构中,这是用于可重配置所需的最小资源。PU的大小因资源类型而异。在UltraScale中,由于相邻的位置共享一个布线资源(或互联块),因此成对定义PU。

2.12 Reconfigurable Frame(可重配置帧)

        可重构帧(在本指南中除“配置帧”之外的所有参考文献中)表示FPGA中最小的可重构区域。可重构帧的比特流大小取决于帧中所包含的逻辑类型。

2.13 Reconfigurable Logic(可重配置逻辑)

        可重构逻辑是作为可重构模块的一部分的任何一个逻辑元素。当加载部分比特流文件时,会修改这些逻辑元素。可以重新配置逻辑组件的许多类型,如LUTs、触发器、BRAM和DSP块。

2.14 Reconfigurable Module,RM(可重配置模块)

        在可重配置分区内,RM是网表或者HDL描述的实现。每个可重配置分区内可以有很多个可重配置的模块。

2.15 Reconfigurable Partition,RP(可重配置分区)

        RP是在一个例化中的属性设置,其定义了该实例是可重配置的。RP是设计层次中的一个层次,在这个层次上可以使用不同的RM进行实现。例如,一些Tcl命令,如opt_design、place_design和route_design,用于检测实例上的“HD.RECONFIGURABLE”属性,并且正确地处理它。

2.16 Static Logic(静态逻辑)

        所有设计内的逻辑是不可重配置的,它不是可重配置分区的一部分。当对可重配置分区进行重新配置时,静态逻辑总是活动的。

2.17 Static Design(静态设计)

        静态设计时设计的一部分,它在部分可重配置的过程中不会发生变化。静态设计包括顶层和没有定义为可重配置的所有模块。静态设计由静态逻辑和静态布线所建立。

三、可重构的应用

        部分可重构的基本前提是,设备的硬件资源可以像微处理器切换任务一样进行时间上的多路复用。因为设备是在硬件中切换任务,所以它具有软件实现的灵活性和硬件实现的性能优点。这里提出了几个不同的场景来说明这项技术的优势。

1、Networked Multiport Interface(网络多端口接口)

        下面以网络多端口接口的设计为例,说明可重构的优势。如下图所示:

        这是一个40G OTN交换机应用程序。交换机客户端端口支持多种接口协议。但是,在配置FPGA之前,系统无法预测将使用哪个协议。为了确保FPGA不需要重新配置,以及因此禁用所有端口的情况,对每个端口都实现了每个可能的接口协议。

        从上图就可以看出,该设计的效率很低,这是因为每个端口只使用一种协议。如下图所示:

        通过使每个端口成为可配置的模块来实现更高效的设计。这样,就消除了将多个协议引擎连接到一个端口上需要使用MUX元件的问题。

        除了效率之外,部分可重构的设计还有其他优点。在图2-2的示例中,可以在任何时候支持一个新的协议,而不影响静态逻辑,即本例中的交换机结构。当为任何端口加载一个新标准时,其他现有端口都不会受到任何影响。可以创建其他标准并添加到配置内存库中,而不需要完全重新设计。这使得交换机结构具有更大的灵活性和可靠性,同时减少了交换机结构和端口的停机时间。可以创建一个调试模块,以便如果一个端口遇到错误,则可以为一个未使用的端口加载分析/校正逻辑来实时处理问题。 

2、Configuration by Means of Standard Bus Interface(采用标准总线接口进行配置)

        部分重构可以使用与系统体系结构更兼容的接口标准来创建一个新的配置端口。例如,FPGA可以是PCIe总线上的外设,系统主机可以通过PCIe连接配置FPGA。开机复位后,FPGA必须配置一个完整的BIT文件。但是,完整的BIT文件可能只包含PCIe接口和与内部配置访问端口(ICAP)的连接。

        系统主机可以使用通过PCIe端口下载的部分比特流文件来配置大部分FPGA功能

        PCIe标准要求外设(在本例中是FPGA)确认任何请求,即使它不能为该请求提供服务。重新配置整个FPGA将违反此要求。因为PCIe接口是静态逻辑的一部分,所以在部分重新配置过程中它总是活动(active)的,从而确保FPGA即使在重新配置期间也能响应PCIe命令。

        串联配置是一个相关的解决方案,乍一看似乎是相同的,在这里显示。然而,使用部分重新配置的解决方案与串联配置在两个方面有所不同:

        (1)首先,使用PR的配置过程是一个完整的设备配置,通过压缩变得更小更快,然后是一个部分比特流,覆盖黑盒区域以完成整体配置。串联配置是一个两阶段的配置,其中每个配置帧被精确地编程一次。 

        (2)第二,7系列设备的串联配置不允许用户应用程序的动态重新配置。使用部分重新配置,可以使用不同的用户应用程序或字段更新重新加载动态区域。UltraScale的串联配置一般允许现场更新和与PR兼容。整个流程是一个两阶段初始负载的串联配置,然后是部分重新配置,以动态修改用户应用程序。

3、Dynamically Reconfigurable Packet Processor(动态可重配置包处理器)

        包处理器可以使用部分重新配置来根据接收到的包类型快速更改其处理功能。在下图中,数据包包含头部(PBF),或者特殊数据包包含部分比特流文件。处理部分比特流文件后,它用于重新配置FPGA中的协处理器。

4、Asymmetric Key Encryption(非对称密钥加密)

        有一些新的应用程序,如果没有部分重新配置,它们是不可能实现的。当部分重新配置和非对称加密相结合时,可以构建一种非常安全的保护FPGA配置文件的方法。

        阴影框中的一组功能可以在FPGA的物理包中实现。明文信息和私钥永远不会离开一个受良好保护的容器。

        在真正实现这个设计时,初始的比特流文件是一个未加密的设计,它不包含任何专有的信息。初始设计只包含产生公钥和私钥对的算法,以及主机、FPGA和ICAP之间的接口连接。

        在加载初始文件后,FPGA产生公钥和私钥对。公钥发送给主机,用来加密部分比特流文件。

        如下图所示,加密的部分BIT文件被下载到FPGA,在那里它被解密并发送到ICAP,以部分重新配置FPGA。

        部分BIT文件可能是FPGA设计的绝大多数,而静态设计中的逻辑只消耗了整个FPGA资源的很小部分。

四、小结 

        本文着重介绍了FPGA的可重构技术,可重配置技术是Xilinx提供的用来高效利用FPGA设计资源实现FPGA资源可重复利用的最新的FPGA设计技术,这种技术的发展为FPGA应用提供了更加广阔的前景。在此基础上,我们简单介绍了与此技术相关的术语含义,最后介绍了FPGA可重构技术的应用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/119912.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C# 获取Windows系统版本注意事项

首先通过微软官方文档:https://learn.microsoft.com/zh-cn/windows/win32/sysinfo/operating-system-version了解各个操作系统对应的版本号 下面介绍3种获取版本号的方式及弊端 1. Environment.OSVersion.Version OperatingSystem os Environment.OSVersion;// 判断…

【动态规划】面试题 08.01. 三步问题

Halo,这里是Ppeua。平时主要更新C,数据结构算法,Linux与ROS…感兴趣就关注我bua! 文章目录 0. 题目解析1. 算法原理1.1 状态表示1.2 状态转移方程1.3初始化1.4 填表顺序1.5 返回值 2.算法代码 🐧 本篇是整个动态规划的…

【webpack】HMR热更新原理

本文:参考文章 一、HMR是什么,为什么出现 1、出现的原因 之前,应用的加载、更新都是一个页面级别的操作,即使单个代码文件更新,整个页面都要刷新,才能拿到最新的代码同步到浏览器,导致会丢失…

软件行业25年技术发展史

语言时代 -> 框架时代 -> 分布式架构时代 -> 微服务架构时代 25年开发、管理,11年教培(教研总监)技术总结: 1997年 VB 1999年 ASPCOM 2004年 C# / JAVA、j2ee、ejb、struts1hibernate 2008年 旧三大框架 Struts2Spr…

【校招VIP】前端算法考点之大数据相关

考点介绍: 大数据的关键技术分为分析技术和处理技术,可用于大数据分析的关键技术主要包括A/B测试,关联规则挖掘,数据挖掘,集成学习,遗传算法,机器学习,自然语言处理,模式…

Bevformer:通过时空变换从多摄像机图像学习鸟瞰图表示

论文地址:BEVFormer: Learning Bird’s-Eye-View Representation from Multi-Camera Images via Spatiotemporal Transformers 代码地址:https://github.com/zhiqi-li/BEVFormer 论文背景 三维视觉感知任务,包括基于多摄像机图像的三维检测…

深度解析BERT:从理论到Pytorch实战

本文从BERT的基本概念和架构开始,详细讲解了其预训练和微调机制,并通过Python和PyTorch代码示例展示了如何在实际应用中使用这一模型。我们探讨了BERT的核心特点,包括其强大的注意力机制和与其他Transformer架构的差异。 关注TechLead&#x…

未来智造:珠三角引领人工智能产业集群

原创 | 文 BFT机器人 产业集群是指产业或产业群体在地理位置上集聚的现象,产业集群的研究对拉动区域经济发展,提高区域产业竞争力具有重要意义。 从我国人工智能产业集群形成及区域布局来看,我国人工智能产业发展主要集聚在京津冀、长三角、…

echarts图表静态数据 象形柱形图、折线图、日历饼图、饼状图四种实现

标题 页面全部代码 <template><div class"data-serve"><div class"side"><div class"side-inner"><router-link class"side-btn" to"/camer/pushInfo"><i class"el-icon-picture&q…

51单片机(普中HC6800-EM3 V3.0)实验例程软件分析 电位器AD实验

一、直接上代码 /************************************************************************************** * 电位器AD实验 * 实现现象&#xff1a;下载程序后数码管后4位显示电位器检测的AD值&#xff0c;范围是0-4095&#xff0c;一般达不到最…

使用wkhtmltoimage实现生成长图分享

需求 用户可以选择以长图的形式分享本网页 方法 wkhtmltopdf wkhtmltopdf url filewkhtmltoimage url file java Runtime.getRuntime().exec() 下载 直接去官网下载对应的版本&#xff1a;官网 命令行使用WK > wkhtmltopdf https://www.nowcoder.com /opt/project/…

ExpressLRS开源代码之工程结构

ExpressLRS开源代码之工程结构 1. 源由2. 工程3. 开发环境安装4. pio命令5. ExpressLRS配置6. 硬件认证过程7. 参考资料 1. 源由 ExpressLRS开源代码基于Arduino框架设计&#xff0c;在所支持的硬件环境下&#xff0c;提供900/2400发射机和接收机硬件方案。 该设计提供了一个…

docker 安装xxljob

1. 安装mysql镜像 2.初始化xxljob的数据库和表 一、初始化db:https://codechina.csdn.net/mirrors/xuxueli/xxl-job/-/blob/2.3.1/doc/db/tables_xxl_job.sql 对脚本进行修改&#xff0c;添加ROW_FORMATDYNAMIC 安装xxljob 镜像 docker pull xuxueli/xxl-job-admin:2.3.1 …

警告:Provides transitive vulnerable dependency maven:org.yaml:snakeyaml:1.30

1. 警告 SpringBoot 的 validation 依赖包含有易受攻击的依赖 snakeyaml。 警告信息如下&#xff1a; Provides transitive vulnerable dependency maven:org.yaml:snakeyaml:1.30 意思是&#xff1a;提供了可传递的易受攻击依赖 maven:org.yaml:snakeyaml:1.30 2. 警告示例 …

盖子的c++小课堂——第二十二讲:2维dp

前言 大家好&#xff0c;我又来更新了&#xff0c;今天终于有时间了aaaaaaaa 破500粉了&#xff0c;我太高兴了哈哈哈哈哈哈&#xff08;别看IP地址&#xff0c;我去北京旅游回来了&#xff0c;他没改回来&#xff09;&#xff0c;然后我马上就成为创作者一年了&#xff0c;希…

基于Java+SpringBoot+Vue前后端分离农商对接系统设计和实现

博主介绍&#xff1a;✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专…

Android样本Repack重打包检测思路

1. 什么是Android样本重打包&#xff0c;为什么要检测重打包 &#xff08;1&#xff09;apk是zip&#xff0c;很容易做repack &#xff08;2&#xff09;repack后&#xff0c;被抄袭&#xff0c;redirect ad&#xff0c;或者插入malicious payloads &#xff08;3&#xff09;…

传输层—TCP原理详解

目录 前言 1.TCP协议 2.TCP协议段格式 3.如何解包如何分用 4.网络协议栈和文件的关系 5.如何理解TCP报头 6.TCP的特点 7.TCP字段 7.1 16位窗口大小 7.2标志位 8.超时重传 9.连接管理机制 10.滑动窗口 11.拥塞控制 12.延迟应答 13.捎带应答 14.理解TCP的面向字…

使用LightPicture开源搭建私人图床:详细教程及远程访问配置方法

文章目录 1.前言2. Lightpicture网站搭建2.1. Lightpicture下载和安装2.2. Lightpicture网页测试2.3.cpolar的安装和注册 3.本地网页发布3.1.Cpolar云端设置3.2.Cpolar本地设置 4.公网访问测试5.结语 1.前言 现在的手机越来越先进&#xff0c;功能也越来越多&#xff0c;而手机…

计算机网络-谢希任第八版学习笔记总结

一.计算机网络概述 21世纪三个特点 数字化 信息化 智能化&#xff0c;其中主要是围绕智能化。 网络的常见分类&#xff1a; 电话网络 有线电视网络 计算机网络 互联网&#xff1a;Internet 由数量极大的计算机网络相连接 特点&#xff1a; 共享性 连通性 互联网&…