0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于EAPR的局部动态自重构系统的实现详细解析

电子工程师 来源:广西大学 作者:王 烈,许晓洁,陈 2021-04-21 14:32 次阅读

摘要: 在早期获取部分可重构EAPR(Early Access Partial Reconfiguration)方法的基础上,研究实现局部动态自重构系统的方法和流程。设计的系统有两个可重构区域,每个区域有两个重构模块,利用Virtex-4上集成的PowerPC硬核微处理器控制内部配置访问端口ICAP(Internal Configuration Access Port)完成自重构。通过在Xilinx ML403开发板上进行验证,实现了系统的自重构功能。系统对部分资源的分时复用提高了系统的资源利用率,高的配置速率缩短了系统的配置时间。

Implementation of partial dynamic self-reconfiguration based on EAPR

Wang Lie,Xu Xiaojie,Chen Jian

School of Computer and Electronics Information,Guangxi University,Nanning 530004,China

Abstract: The design method and flow of the partial dynamic self-reconfiguration system were studied and implemented based on the reconfiguration design of EAPR.The system included two reconfigurable regions, each with two reconfigurable modules. The PowerPC hard core microprocessor that was integrated in the Virtex-4 was used to control the ICAP to complete self-reconfigurable. Through ML403 board of Xilinx, the function of self-reconfiguration was verified. The time devision multiplexing of part of the resource improves the resouce utilization, and the high configuration speed shortens the configuration time.

Key words : FPGA;EAPR;self-reconfiguration;microprocessor

局部动态自重构系统是一种新型的可重构计算系统。实现自重构系统的可编程器件必须具有局部动态可重构能力。局部动态可重构是指系统在运行过程中可以对部分资源进行重新配置,而其余资源仍保持正常运行,分时复用可重构硬件上的资源实现不同的逻辑功能。目前,Xilinx公司Virtex系列和Spartan系列的FPGA芯片支持局部动态可重构技术[1]。自重构系统以可重构逻辑器件内嵌的微处理器实现对动态重构的控制和调配[2]。自重构系统具有从器件内部访问配置数据的接口。Xilinx Virtex-Ⅱ以后的FPGA提供了ICAP,其主要作用就是按照特定时序将配置数据重新配置到重构区域中[3]。

Xilinx公司于2006年提出EAPR动态可重构设计方法[4]。这种方法的本质是对基于模块的动态可重构设计方法的改进,支持高端Virtex-4以上的Virtex系列芯片,任意矩形的局部重构区域使有限的资源得到充分利用;静态模块的全局信号直接穿过可重构区域,静态模块与重构模块使用基于Slice的总线宏进行通信,使得系统时序性能好,总线密度大。本文结合现有的基于FPGA的嵌入式系统开发流程和基于EAPR的动态可重构设计方法研究自重构系统的架构及开发流程,设计一个局部动态自重构系统,该系统有2个可重构区域,每个可重构区域有2个可重构模块。

1 局部动态自重构系统架构

本文提出的局部动态自重构系统架构如图1所示。PowerPC405处理器控制重构过程,两个重构区域分别通过通用I/O设备(GPIO)和OPB_DCR_Socket模块使能总线宏。System ACE 和ICAP配合完成系统重构,并将重构过程中的一些提示信息通过UART串口在超级终端上显示。系统的各个主要组成部分说明如下。

3052681222604.gif

(1)可编程逻辑门阵列FPGA

ML403的主芯片XC4VFX12-FF668-10C属于Virtex-4 FX系列。Virtex-4 FX系列器件针对嵌入式处理和高速串行连接,采用90 nm工艺,密度高达20万逻辑单元[5];将8位ICAP扩展到32位,时钟频率可达100 MHz,而且支持二维区域的局部动态可重构。在重构设计过程中,将FPGA划分为可重构区域和固定区域,固定区域在系统运行过程中保持不变,通过处理器控制重构区域的重新配置实现新的逻辑功能。本文划分为固定区域和2个可重构区域(PRR_Math和PRR_LED),每个区域有2个重构模块,分别实现加法和乘法、LED灯向左和向右流水点亮的重构。

(2)基于Slice的总线宏

FPGA划分的多个区域之间通过基于Slice的总线宏进行通信。总线宏是事先布好线的用来精确布线轨道的宏,其位置固定,重构时保持不变,包括基于三态缓冲器TBUF(Tri- state Buffer)的总线宏和基于Slice的总线宏。基于TBUF的总线宏结构简单,可控制信号的传输方向,但不能控制信号的通断。而在重构过程中,来自重构区域的不稳定信号可能会影响其他模块的正常运行,所以需要在重构过程关闭总线宏,这就要求总线宏有个使能控制端口。Virtex-4以后的芯片使用基于Slice的总线宏解决了这个问题,它利用FPGA内部用作静态路由的预留连线作为模块之间的通信通路,在设计时,重构模块不能使用这些资源。

(3)PowerPC硬核处理器

Virtex-4集成了一个32位的PowerPC405硬核处理器。PowerPC405经过综合、布局布线后集成到FPGA内部的固定位置,不占用FPGA内部的任何逻辑资源和存储单元,运行速度可达到芯片标称值,且不影响其周边逻辑的布局布线[3]。PowerPC采用精简指令哈佛结构,支持5级标量流水线,具有独立的指令和数据缓存、32个32位通用寄存器、内存管理单元和片内存储器接口,是本文系统的核心部件之一,用于对重构过程进行控制。

(4)总线技术

PowerPC处理器支持IBM CoreConnect总线技术。本文使用的3种总线,包括处理器本地总线PLB(Process Local Bus)、片上外设总线OPB(On-chip Peripheral Bus)和设备控制寄存器DCR(Device Control Register)总线。PLB总线连接高速外设,本文中用于连接PowerPC处理器与Block RAM控制器;OPB总线用于处理器与其他低速外设之间的互连;DCR总线连接控制总线宏的寄存器。

(5)SystemACE CF

System ACE是Xilinx公司为解决多片大规模FPGA的应用而提出的一套解决方案。外部存储器CF卡用来保存FPGA的配置文件,可直接插拔,具有非易失性。采用SystemACE CF配置方案实现动态重构具有升级速度快、配置数据安全性好等优点。重构时,首先将生成的全局初始.bit配置文件转换成.ace文件,然后将.ace文件和部分配置文件存储在CF卡中;开发板上电后,System ACE控制器通过JTAG端口读取CF卡的.ace全局配置文件,对FPGA进行初始配置,PowerPC微处理器通过内部访问配置端口 ICAP读取重构模块的比特流文件实现重构。

(6)ICAP

ICAP是Xilinx公司在Virtex-Ⅱ之后的FPGA中提供的一个内部配置访问端口,HWICAP IP核将ICAP、BRAM及相关的控制器封装在内部,挂载到OPB总线上。ICAP可以读写FPGA的配置数据帧。ICAP控制器负责ICAP的读写状态及ICAP与BRAM之间的数据传输。BRAM用来保存从CF中读取的重构模块的比特流配置文件或者从配置存储器中读回的配置数据。采用ICAP方案实现自重构过程是基于“读-修改-写”机制的[6]。重构时,首先通过ICAP端口将需要修改的数据帧从配置存储器读到BRAM中;然后处理器修改这些数据帧;最后再通过ICAP将其写回到配置存储器中。处理器利用ICAP直接控制FPGA的重构过程,重构速度快,系统效率高。

2 系统开发流程

本文设计的自重构系统有2个可重构区域。可重构区域PRR_Math以IP核的形式实现加法和乘法的重构,重构过程通过OPB-DCR Socket模块使能总线宏;可重构区域PRR_LED实现开发板上的4个LED灯向左和向右流水点亮的重构。这2个模块通过ISE生成网表,完成布局布线,以GPIO作为总线宏的使能端口。静态模块实现对LED灯的控制,当按下暂定键时,LED暂停流水点亮;当按下开始键时,LED开始流水点亮。系统上电后,首先System ACE控制器通过JTAG端口读取存储在CF卡中的.ace文件对FPGA进行初始全局配置,初始的全局配置实现乘法和向右流水点亮LED。开发板通过串口UART与PC通信,并通过超级终端进行显示和调试。重构时,在超级终端键入命令,处理器接受命令后,通过ICAP读取相应的重构模块对FPGA重新配置,通过在超级终端上测试和观察开发板LED的变化验证重构是否实现。本文采用基于EAPR的局部动态重构设计方法进行系统设计,开发流程如图2所示。

3052896352793.gif

(1)设计输入和综合

系统包括静态模块、可重构模块和顶层模块。静态模块是除了重构模块以外的所有模块,包括处理器模块。静态模块实现对LED灯的控制,处理器模块控制重构过程。2个重构区域分别有2个重构模块,同一重构区域的可重构模块具有相同的端口定义和实体名,要放在不同目录下分别进行综合。静态模块和所有的重构模块在综合时都不添加I/O端口。顶层模块只进行各个模块的例化,即只定义模块的端口信号,而不进行具体的行为描述,包括处理器模块、静态模块、重构模块、总线宏、时钟及一些信号声明等。顶层模块在综合时要添加I/O端口。完成这一步骤将产生所有模块的.ngc网表文件。

(2)软硬件设计

在XPS中搭建系统硬件平台,添加所需IP核,硬件平台如图3所示。在SDK上进行软件编程和调试,生成executable.elf可执行文件。

3053025217698.gif

(3)添加约束

利用PlanAhead添加约束,如区域约束、时序约束和引脚、时钟、总线宏的位置约束等。添加各约束之后运行DCR检查是否满足设计要求。

(4)实现模块

静态模块和重构模块的实现包括转换、映射和布局布线3个步骤。重构模块必须在静态模块成功实现之后才可进行。

(5)合并

运行PR Assemble将各个模块合并,产生各重构模块的.bit文件、各区域的空位流文件和一个包含静态模块及动态模块的全配置文件static_full.bit。生成的static_full.bit文件只含有硬件信息,需要将此文件和system_stub.bmm、executable.elf文件合并成包含软硬件完整信息的download.bit文件。

(6)转换文件

系统上电后,通过读取CF卡中的.ace文件对FPGA芯片进行初始配置,将上一步生成的download.bit转换为CF可执行的.ace文件。

(7)设计验证

将生成的system.ace、重构配置文件和空位流文件下载到CF卡的根目录下,连接开发板与PC进行设计验证和调试。

3 实验结果

在Xilinx XC4VFX12FF668-10 ML403开发板上进行验证,开发板的配置模式设计为JTAG方式,配置资源选择开关打向System ACE端,串口线连接开发板与PC,打开超级终端,超级终端设置波特率为115 200 b/s,8 bit数据位,无奇偶校验,这里的设置和创建硬件平台系统的设置要保持一致。系统上电后,读取system.ace文件完成初始配置后,开发板上的DONE指示灯变为绿色,说明配置成功完成,这时激活的乘法模块和右移模块开始工作。观察到4个LED灯向右流水点亮,当按下暂停键时,LED停止流水点亮;当按下开始键时,LED开始向右流水点亮。超级终端显示提示信息,输入O后系统提示要输入两个操作数,完成乘法运算。结果显示如图4所示。

3053186358820.gif

根据提示命令,输入a或A命令实现加法运算,输入l或L命令实现向左流水点亮LED灯;输入o或O命令,系统接收两个操作数后执行加法运算,并将运算结果显示在超级终端上。观察开发板的4个LED灯变成向左流水点亮,按下暂停键,LED停止流水点亮;按下开始键,LED开始向左流水点亮。超级终端显示如图5所示。

3053293842012.gif

当系统不需要执行重构模块的功能时,可根据提示输入空白配置文件的相应命令使系统处于待机模式。当需要时再输入相应命令进行配置。这样可减少系统的功耗。

重构时间是重构系统的一个关键指标。理论上,重构时间等于配置文件大小与配置速率的比值。实际上,还需要考虑总线的传输速率和HWICAP的配置速率。本文只从理论上分析重构时间,而重构时间和配置文件大小成正比,生成的配置文件大小如表1所示。从表中可以看出,重构模块的配置文件比全局配置文件大幅度减小,采用局部动态配置时,只需下载重构模块的配置模块,重构时间也将大幅度缩短。另外,本文系统通过ICAP配置,ICAP数据位宽为32 bit,时钟频率为100 MHz,配置速率很高,所以在重构时间上具有一定的优势。

3053476983812.gif

本文采用EAPR方法,利用ML403开发板集成的PowerPC405微处理器设计验证系统的自重构功能。在系统运行过程中,可以替换或停止某一不需要或出错的功能模块来保证系统不间断地运行。系统采用软硬件协同设计,使设计流程并行化,开发周期短,硬件分时复用,资源利用率高。基于EAPR的局部动态自重构技术已经成为业界的研究热点,随着技术不断成熟,将逐步应用到实际产品中。
编辑:lyn

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • FPGA
    +关注

    关注

    1602

    文章

    21320

    浏览量

    593159
  • 总线技术
    +关注

    关注

    3

    文章

    78

    浏览量

    40646
  • 可编程逻辑
    +关注

    关注

    7

    文章

    512

    浏览量

    43904
  • 硬核处理器
    +关注

    关注

    0

    文章

    3

    浏览量

    6774
收藏 人收藏

    评论

    相关推荐

    什么是动态线程池?动态线程池的简单实现思路

    因此,动态可监控线程池一种针对以上痛点开发的线程池管理工具。主要可实现功能有:提供对 Spring 应用内线程池实例的全局管控、应用运行时动态变更线程池参数以及线程池数据采集和监控阈值报警。
    的头像 发表于 02-28 10:42 178次阅读

    详细解析二相电机反转的改变方法

    详细解析二相电机反转的改变方法  二相电机反转是指通过改变电机的工作方式和接线方式来改变电机的旋转方向。以下是对二相电机反转的改变方法的详细解析。 首先,要了解二相电机的工作原理。二相
    的头像 发表于 01-23 14:45 731次阅读

    变压器局部放电的产生及预防

    变压器局部放电的产生及预防 变压器是电力系统中常用的重要设备,用于将交流电能的电压从一个电平变换为另一个电平。然而,在变压器的运行过程中,可能会出现局部放电的现象。局部放电是指在绝缘体
    的头像 发表于 12-20 14:47 363次阅读

    变压器局部放电的产生和危害

    详细探讨变压器局部放电的产生原因、危害以及防范措施。 一、变压器局部放电的产生原因 变压器局部放电的主要产生原因可以归结为以下几个方面: 1. 绝缘
    的头像 发表于 11-20 15:01 890次阅读

    采用回调函数的方式优化嵌入式系统命令解析

    上存在一些不足。下面小编为大家推荐一种更为灵活和模块化的命令解析方法,即通过回调函数实现功能码的动态绑定,提高系统的可维护性和可扩展性。
    的头像 发表于 11-14 09:19 369次阅读
    采用回调函数的方式优化嵌入式<b class='flag-5'>系统</b>命令<b class='flag-5'>解析</b>

    详细解析电动车辆技术问题

    电子发烧友网站提供《详细解析电动车辆技术问题.pdf》资料免费下载
    发表于 11-02 09:44 2次下载
    <b class='flag-5'>详细</b><b class='flag-5'>解析</b>电动车辆技术问题

    如何实现电源输出电压的动态调整?

    如何实现电源输出电压的动态调整? 电源输出电压的动态调整指的是在电源输出固定电压的基础上,能够根据输入信号或者其他控制信号实现电压的调节,这种方式被广泛应用于电子设备中。在本篇文章中,
    的头像 发表于 10-24 11:13 1319次阅读

    51单片机如何实现fft解析

    需要对频谱分析,对速度要求不高,用at89c51可以实现吗,需要用哪种fft解析方法?
    发表于 10-24 07:10

    FPGA的可重构测控系统应用设计的研究

    本文根据测控系统的通用结构模型和FPGA的可重构功能特点,提出了一种基于FPGA器件,针对嵌入式应用有效缩短开发周期和设计与应用成本,满足并行性、多任务、开放化和集成化要求的RMS的平台式设计思想,实现了测控
    的头像 发表于 08-25 15:49 413次阅读

    代码重构的经验总结

    具体的重构手段可参考《代码大全2》或《重构:改善既有代码的设计》,本文不再班门弄斧,而侧重重构时一些粗浅的“方法论”,旨在提高重构效率。
    的头像 发表于 08-23 10:10 317次阅读
    代码<b class='flag-5'>重构</b>的经验总结

    详细解析CW32F030C8T6的时钟树

    本章针对CW32F030C8T6的时钟树进行详细解析,续第一章启动文件的相关讲解。
    的头像 发表于 08-17 11:42 1091次阅读
    <b class='flag-5'>详细</b><b class='flag-5'>解析</b>CW32F030C8T6的时钟树

    Unity中的局部立方体图渲染技术解读

    与球面映射技术相关的图像失真问题。 在本指南的最后,您将了解到: •如何使用局部立方体贴图实现反射和折射•如何组合静态和动态反射•如何使用本地立方体贴图实现
    发表于 08-02 10:14

    大模型部署框架FastLLM实现细节解析

    接着 大模型部署框架 FastLLM 简要解析 这篇文章首先梳理了一下FastLLM的调用链和关键的数据结构,然后解析了 FastLLM 的一些实现细节和CPU/GPU后端实现采用的优
    的头像 发表于 07-27 10:48 862次阅读
    大模型部署框架FastLLM<b class='flag-5'>实现</b>细节<b class='flag-5'>解析</b>

    为UHF局部放电在线监测系统设计最好的前端

    本文介绍如何使用ADI信号链进行超高频(UHF)局部放电在线监测系统的RF前端设计。该前端灵敏度低,动态范围高,可以满足中国国家电网企业标准Q/GDW11059.8-2013"电气设备通电试验装置技术规范第8部分:超高频
    的头像 发表于 06-15 16:28 747次阅读
    为UHF<b class='flag-5'>局部</b>放电在线监测<b class='flag-5'>系统</b>设计最好的前端

    在单片机上实现动态加载功能

    本项目是一个在单片机(如:STM32)上实现动态加载功能的函数库,与Windows中的dll,Linux中的so类似,可以将代码动态地从其他的存储介质,动态加载到RAM中。
    发表于 05-30 11:04 1220次阅读