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

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

3天内不再提示

FPGA应用中部分重配置的操作过程

OpenFPGA 来源:OpenFPGA 作者:OpenFPGA 2021-07-05 15:28 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

Partial Reconfiguration(部分重配置)在现在的FPGA应用中越来越常见,我们这次的教程以Project模式为例来说明部分重配置的操作过程。

这里我们使用的Vivado版本是2017.2,使用的例程是Vivado自带的wavegen工程,并在工程中增加一个计数器模块,如下图所示

3bfd9fd4-dbac-11eb-9e57-12bb97331649.png

在这里插入图片描述

这个模块的代码也很简单,就是加1计数

modulecount_add( inputclk, inputrst, outputreg[7:0]res ); always@(posedgeclk)begin if(rst) res<= 8'b0;     else          res <= res + 1'b1;  end        endmodule

我们要把这个模块当做Reconfiguration Module,把它替换成另外一个module: count_sub,就是每个周期减1计数。

modulecount_sub( inputclk, inputrst, outputreg[7:0]res ); always@(posedgeclk)begin if(rst) res<= 8'b0;     else          res <= res - 1'b1;  end        endmodule

下面开始进行Partial Reconfiguration的配置

首先打开工程,并将其中一个Reconfiguration Module添加到工程中即可,这里我们选择将count_add添加到工程中,选择Tools->Enable Partial Reconfiguration

3c11bd52-dbac-11eb-9e57-12bb97331649.png

在这里插入图片描述

出现下面的对话框,点击Convert。该对话框是指如果使能了Partial Reconfiguration模式,是不能返回到普通模式的。

3c23ca1a-dbac-11eb-9e57-12bb97331649.png

在这里插入图片描述

此时在Flow Navigator的PROJECT MANAGER下面就会出现Partial Reconfiguration Wizard的选项
3c5207ae-dbac-11eb-9e57-12bb97331649.png

在这里插入图片描述

右键要reconfiguration的模块,即inst_count,并选择Create Partition Definition

3c61cb08-dbac-11eb-9e57-12bb97331649.png

在这里插入图片描述

此时,弹出对话框提示我们输入创建的Partition的名字,我们起名为count_demo,点击OK

3c957958-dbac-11eb-9e57-12bb97331649.png

在这里插入图片描述

这时我们可以看到该模块的图标发生了变化,变成了黄色的棱形,如下图所示

3ca58c12-dbac-11eb-9e57-12bb97331649.png

在这里插入图片描述

在这一步我们需要提醒一下,通常我们需要进行PR的模块都是比较复杂的模块,里面很可能会包含IP Core,那样的话我们就不能直接这样操作,比如我们要对该工程中的clk_gen_i0模块进行PR,可以看到,这个模块中包含了clk_core_i0这个IP

3cb66730-dbac-11eb-9e57-12bb97331649.png

在这里插入图片描述
当我们在clk_gen_i0这个模块上右键选择Create Partition Definition时,会提示下面的对话框:
module with out-of-context child module cannot be made into partition definition

3cc3a526-dbac-11eb-9e57-12bb97331649.png

在这里插入图片描述

这个意思是包含有ooc子模块的模块,是不能做成partiton的,Vivado中所有的IP Core都是ooc的模块,因此我们需要把clk_gen_i0这个模块导出成dcp后再使用,具体可以参考我的另一篇文章

Vivado中模块封装成edif和dcp

简单来讲,就是先将这个模块设为top,综合后导出dcp,使用的tcl脚本是

write_checkpoint-noxdef

有几个需要RM(Reconfiguration Module)的模块,就要综合几次,导出几个dcp文件

我看网上也有的教程是直接对整个工程进行综合,然后单独导出RM模块的dcp,使用下面的tcl

write_checkpoint-cell

这两种导出dcp的方式是有区别的,把整个工程进行综合,每个子模块的接口很有可能会有所改变,可能是名字改了,也可能是增加或减少了一些接口。如果我们的几个RM只是接口相同,功能不同的话,这样带有不同RM模块的工程综合的结果可能不一样。因此推荐将RM模块设为top,综合后导出dcp。

另一点需要注意的是,如果使用了dcp文件,我们也添加一个wrapper.v到工程中,因此dcp文件是不能直接进行Create Partition Definition操作的。

选择左侧导航栏的Partial Reconfiguration Wizard,开始添加RM

3cd02850-dbac-11eb-9e57-12bb97331649.png

在这里插入图片描述

这里,点击+号按钮,出现下面对话框,首先点击Add Files,选择count_sub.v;然后输入Reconfiguration Module Name,由于我们只有一个模块,因此top的name可以不填;如下图,Next

3ce11444-dbac-11eb-9e57-12bb97331649.png

在这里插入图片描述

在这一步如果我们使用dcp文件和wrapper文件的话,需要把它们都添加进来

编辑配置,点击automatically create configurations,如果在这个界面没看到这个auto…按钮,就先返回到上一步,再next到这个界面,总会出现的;点击后出现下面的界面:

3d07aa0a-dbac-11eb-9e57-12bb97331649.png

在这里插入图片描述

我们修改配置的名字如下,next

3d360e9a-dbac-11eb-9e57-12bb97331649.png

在这里插入图片描述

配置runs,也是先点击automatically create configuration run

3d434934-dbac-11eb-9e57-12bb97331649.png

在这里插入图片描述

3d5e3fc8-dbac-11eb-9e57-12bb97331649.png

在这里插入图片描述

这个图意思是工程中有两个implention runs,第一个叫impl_1,这个里面跑的是包含有count_add模块的程序;第一个叫child_0_impl_1,这个里面跑的是包含count_sub模块的程序。Next到Finish。

开始综合,完成后点击Open Synthesized Design,并在Vivado右上角,切换到Floorplanning视图

3d8c535e-dbac-11eb-9e57-12bb97331649.png

在这里插入图片描述

邮件inst_count并点击Draw Pblock

3d9a3d0c-dbac-11eb-9e57-12bb97331649.png

在这里插入图片描述

选择一个区域作为Pblock

3dab9b92-dbac-11eb-9e57-12bb97331649.png

在这里插入图片描述

绘制Pblock是有讲究的,其中最简单的两个规则就是:

Pblock区域中包含的资源能可以覆盖我们模块需要的资源

不能与其他的Pblock冲突

当然,还有很多其他的规则,这里就不一一介绍了,如果Pblock没画好,很可能导致后面的DRC和Implementation不过。

关于该更多Pblock的说明,可以参考UG909手册UG909

选中框之后,改一下框的属性,将RESET_AFTER_RECONFIG的勾选中,意思是重新配置后,会复位这个Pblock里面的内容;再将SNAPPING_MODE改为Routing(或者设为On),意思是如果我们的边界选的不太好,Vivado会自动处理,选off的话,就是完全按照我们指定的边界。

3ddaecbc-dbac-11eb-9e57-12bb97331649.png

在这里插入图片描述

点击Tools->Report->Report DRC

3e270e80-dbac-11eb-9e57-12bb97331649.png

在这里插入图片描述

只选择PR即可

3e3aa72e-dbac-11eb-9e57-12bb97331649.png

在这里插入图片描述

如果提示No Violations Found,则说明上面的操作过程没有问题。

Run Implementation,可以看到有两个runs需要进行

补充小知识:Vivado中jobs和threads的区别?选择多个jobs能加快实现速度么?

3e4b2586-dbac-11eb-9e57-12bb97331649.png

在这里插入图片描述

Generate Bitstream,OK

在这一步进行前,Vivado会自动执行pr_verify,并生成_pr_verify.log文件。

对于7系列的FPGA,会在impl_1文件夹下生成两个bit文件:
wave_gen.bit和inst_count_count_add_partial.bit,第一个bit文件是整个工程且包含count_add模块的bit文件,第二个bit文件是当我们需要进行Partial Reconfiguration的时候需要下载的bit文件;在child_0_impl_1文件夹下会生成一个bit文件inst_count_count_sub_partial.bit,是当我们需要进行Partial Reconfiguration的时候需要下载的bit文件。

对于UltraScale系列的FPGA,会在生成*_partial.bit的同时多出来一个*_partial_clear.bit,意思是在进行Partial Reconfiguration的时候,先下载*_partial_clear.bit把那一部分的内容先清空,再下载*_partial.bit进行配置。

使用Project模式的好处就是比较简单,敲的指令也比较少,如果是Non-Project模式,在这中间还需要很多操作,虽然麻烦,但对我们理解它的工作模块很有帮助,有兴趣的同学可以再用Non-Project模式下操作一遍。

文章出处:【微信公众号:OpenFPGA】

责任编辑:gt

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

    关注

    1664

    文章

    22504

    浏览量

    639302
  • 计数器
    +关注

    关注

    32

    文章

    2321

    浏览量

    98563

原文标题:Xilinx FPGA Partial Reconfiguration 部分重配置 详细教程

文章出处:【微信号:Open_FPGA,微信公众号:OpenFPGA】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    Atmel AT17LVxxxA FPGA配置EEPROM:特性、应用与技术解析

    Atmel AT17LVxxxA FPGA配置EEPROM:特性、应用与技术解析 在FPGA(现场可编程门阵列)的应用中,配置存储器是至关重要的一
    的头像 发表于 03-29 17:05 944次阅读

    探索Atmel AT17LV系列FPGA配置EEPROM:特性、应用与设计要点

    是不可或缺的一部分。它负责存储FPGA配置程序,确保FPGA能够按照预设的功能运行。Atmel公司的AT17LV系列FPGA
    的头像 发表于 03-24 17:40 556次阅读

    Atmel AT17LV系列FPGA配置EEPROM的全面解析

    Atmel AT17LV系列FPGA配置EEPROM的全面解析 在FPGA设计领域,配置存储器的选择至关重要。Atmel的AT17LV系列FPGA
    的头像 发表于 02-27 16:15 356次阅读

    Labview接口(interface)的工作过程

    文字描述部分: 目的:产生随机数,当随机数达到某个阈值时触发一个状态事件。 创建过程: 1、用labview 模板创建root Actor ,这个根操作者,用来管理所有其他的Actor 2、创建一个
    发表于 02-03 11:07

    线束接头气密性检漏设备的操作流程-岳信仪器

    操作过程需遵循标准步骤,以保障检测的准确性和安全性。以下是该设备的详细操作流程。操作前,先进行线束接头气密性检漏设备准备。将检漏设备放置在稳固、通风良好的工作台上,连
    的头像 发表于 12-24 16:58 408次阅读
    线束接头气密性检漏设备的<b class='flag-5'>操作</b>流程-岳信仪器

    FPGA的图像采集过程

    模块设计时写操作用了一个片内FIFO作为写缓存,并设计了向FIFO写数据模块将配置数据写入FIFO中,之后模块产生SPI时序完成一次写操作。读操作时用了一个片内RAM作为寄存器数据读缓
    发表于 10-29 06:23

    对浮点指令扩展中部分问题的解决与分享

    ,这些问题总体上归结于对蜂鸟的代码没有整体性的把握,对内容的掌握程度还不够。在后续的工作中应注意理清功能的整体架构而对所有的相关部分进行修改。
    发表于 10-24 08:14

    硅片超声波清洗机操作过程中常见问题及解决办法

    在半导体制造领域,硅片超声波清洗机是关键的设备之一。其主要功能是通过超声波震动,将硅片表面的微小颗粒和污染物有效清除,确保其表面洁净,实现高质量的半导体生产。然而,在实际操作过程中,硅片超声波清洗机
    的头像 发表于 10-21 16:50 2154次阅读
    硅片超声波清洗机<b class='flag-5'>操作过程</b>中常见问题及解决办法

    车载摄像头气密性检测仪操作常见问题及解决办法-岳信仪器

    在车载摄像头的生产与质量把控中,车载摄像头气密性检测仪发挥着至关重要的作用。然而,在实际操作过程中,常常会遇到一些问题,以下为您详细介绍常见问题及对应的解决办法。(1)检测结果不稳定检测结果不稳定
    的头像 发表于 10-17 14:30 525次阅读
    车载摄像头气密性检测仪<b class='flag-5'>操作</b>常见问题及解决办法-岳信仪器

    有哪些方法可以避免在电能质量在线监测装置硬件故障检测过程中对设备造成二次损坏?

    避免在电能质量在线监测装置硬件故障检测中造成二次损坏,需围绕 “ 操作规范、工具适配、环境控制、风险预判 ” 四大核心,从检测前准备、操作过程、维修验证全流程管控,针对性规避 “静电损伤、机械损坏
    的头像 发表于 09-24 15:19 975次阅读

    操作误区警示:发动机气密性检测仪新手易犯错误-岳信仪器

    发动机气密性检测仪在保障发动机性能和质量方面起着至关重要的作用。然而,对于新手来说,在操作过程中容易陷入一些误区,影响检测结果的准确性。以下是新手常见的操作误区。新手常常忽视设备的预热环节。发动机
    的头像 发表于 09-13 14:54 698次阅读
    <b class='flag-5'>操作</b>误区警示:发动机气密性检测仪新手易犯错误-岳信仪器

    一文详解xilinx 7系列FPGA配置技巧

    本文旨在通过讲解不同模式的原理图连接方式,进而配置用到引脚的含义(手册上相关引脚含义有四、五页,通过本文理解基本上能够记住所有引脚含义以及使用场景),熟悉xilinx 7系列配置流程,以及设计原理图时需要注意的一些事项,比如flash与
    的头像 发表于 08-30 14:35 1.1w次阅读
    一文详解xilinx 7系列<b class='flag-5'>FPGA</b><b class='flag-5'>配置</b>技巧

    开疆智能Ethernet转ModbusTCP网关连接测联无纸记录仪配置案例

    本案例是通过Ethernet转ModbusTCP网关将记录仪数据传送到欧姆龙PLC,具体操作过程如下。 欧姆龙PLC配置 首先打开主站组态软件“Sysmac Studio”并新建项目。 设置PLC
    的头像 发表于 08-15 18:04 1034次阅读
    开疆智能Ethernet转ModbusTCP网关连接测联无纸记录仪<b class='flag-5'>配置</b>案例

    开疆智能CCLinkIE转ModbusTCP网关连接测联无纸记录仪配置案例

    本案例是通过CCLinkIE转ModbusTCP网关将记录仪数据传送到三菱PLC,具体操作过程如下。
    的头像 发表于 06-28 14:04 1157次阅读
    开疆智能CCLinkIE转ModbusTCP网关连接测联无纸记录仪<b class='flag-5'>配置</b>案例

    如何在CentOS系统中部署ELK日志分析系统

    日志分析已成为企业监控、故障排查和性能优化的重要组成部分。ELK(Elasticsearch、Logstash 和 Kibana)堆栈作为一种强大的开源解决方案,提供了高效的日志收集、存储和可视化
    的头像 发表于 05-08 11:47 1167次阅读
    如何在CentOS系统<b class='flag-5'>中部</b>署ELK日志分析系统