xilinx FPGA Multiboot功能——实战

这篇具有很好参考价值的文章主要介绍了xilinx FPGA Multiboot功能——实战。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、概要

背景:在实际的工程项目中,无法避免要对工程进行更新,由于到现场进行更新十分麻烦,通常采用远程更新的方法。远程更新的方案是采用通信协议将厂家更新后的工程文件直接写入用户板卡的flash芯片中。

二、Multiboot加载原理

在远程更新的时候,需要双镜像来保护设计的稳定性。Multiboot中的两个镜像分别为G镜像(Golden)和M镜像(Multiboot)。G镜像包括功能模块、镜像切换模块、flash控制模块。
在进行更新的时候,永不更新G镜像,只更新M镜像。当更新出错时,仍然可以加载G镜像,这样至少可以保证有一个工程正在运行,系统不至于死机,方便后续再次更新。

下图是镜像切换的流程。上电后自动加载G镜像,当收到镜像切换触发信号时,开始加载M镜像。若M镜像加载失败则重新加载G镜像。
icape2,fpga开发

三、ICAPE2原语的介绍

本文采用ICAPE2原语实现Multiboot功能。
ICAPE2原语的内容如下:


//   ICAPE2    : In order to incorporate this function into the design,
//   Verilog   : the following instance declaration needs to be placed
//  instance   : in the body of the design code.  The instance name
// declaration : (ICAPE2_inst) and/or the port declarations within the
//    code     : parenthesis may be changed to properly reference and
//             : connect this function to the design.  All inputs
//             : and outputs must be connected.

//  <-----Cut code below this line---->

   // ICAPE2: Internal Configuration Access Port
   //         Artix-7
   // Xilinx HDL Language Template, version 2017.4

   ICAPE2 #(
      .DEVICE_ID(0'h3651093),     // Specifies the pre-programmed Device ID value to be used for simulation
                                  // purposes.
      .ICAP_WIDTH("X32"),         // Specifies the input and output data width.
      .SIM_CFG_FILE_NAME("None")  // Specifies the Raw Bitstream (RBT) file to be parsed by the simulation
                                  // model.
   )
   ICAPE2_inst (
      .O(O),         // 32-bit output: Configuration data output bus
      .CLK(CLK),     // 1-bit input: Clock Input
      .CSIB(CSIB),   // 1-bit input: Active-Low ICAP Enable
      .I(I),         // 32-bit input: Configuration data input bus
      .RDWRB(RDWRB)  // 1-bit input: Read/Write Select input
   );

   // End of ICAPE2_inst instantiation

这里需要特别注意DEVICE_ID一定要填写正确,需要根据FPGA型号填写对应的ID。具体查找ug470手册。
下图是7系列FPGA的DEVICE_ID:
icape2,fpga开发
Multiboot的加载过程就是将以下指令按照顺序输入到ICAPE2中。其中Warm Boot Start Address指令需要修改成M镜像的起始地址。
icape2,fpga开发

四、工程实操

本文基于正点原子达芬奇pro开发板(Artix-7 xc7a100tffg484-2)进行测试。
下面是工程实操流程:
1.在G镜像工程中例化ICAPE2原语,并按照Table7-1的指令顺序,把指令输入到ICAPE2原语中。

//仅展示代码片段(完整代码请下载工程)
initial begin
    con_data[0]             =       32'hFFFF_FFFF;
    con_data[1]             =       32'hAA99_5566;
    con_data[2]             =       32'h2000_0000;
    con_data[3]             =       32'h3002_0001;
    con_data[4]             =       32'h0007_D000;//M镜像的起始地址
    con_data[5]             =       32'h3000_8001;
    con_data[6]             =       32'h0000_000F;
    con_data[7]             =       32'h2000_0000;
end

assign      con_data_r      =       {con_data[cnt][24],con_data[cnt][25],con_data[cnt][26],con_data[cnt][27],con_data[cnt][28],con_data[cnt][29],
                                     con_data[cnt][30],con_data[cnt][31],con_data[cnt][16],con_data[cnt][17],con_data[cnt][18],con_data[cnt][19],
                                     con_data[cnt][20],con_data[cnt][21],con_data[cnt][22],con_data[cnt][23],con_data[cnt][08],con_data[cnt][09],
                                     con_data[cnt][10],con_data[cnt][11],con_data[cnt][12],con_data[cnt][13],con_data[cnt][14],con_data[cnt][15],
                                     con_data[cnt][00],con_data[cnt][01],con_data[cnt][02],con_data[cnt][03],con_data[cnt][04],con_data[cnt][05],
                                     con_data[cnt][06],con_data[cnt][07]};

ICAPE2 #(
    .DEVICE_ID          (32'h3631093        ),  
                                            
    .ICAP_WIDTH         ("X32"              ),  
    .SIM_CFG_FILE_NAME  ("NONE"             )   
)ICAPE2_inst(
    .O                  (                   ),  
    .CLK                (sclk               ), 
    .CSIB               (csib               ), 
    .I                  (con_data_r         ),  
    .RDWRB              (rdwrb              )  
);

2.编译G镜像工程,生成bit文件。
3.编译M镜像工程,生成bit文件。
4.在获得G镜像和M镜像工程的bit文件后,需要生成mcs文件。
icape2,fpga开发

icape2,fpga开发
这里M镜像起始地址,要与输入到ICAPE2原语的Warm Boot Start Address值保持一致。
5.将mcs文件下载到板子上。

五、工程文件下载

https://download.csdn.net/download/wry00/88319217?spm=1001.2014.3001.5501文章来源地址https://www.toymoban.com/news/detail-764222.html

到了这里,关于xilinx FPGA Multiboot功能——实战的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 关于FPGA远程更新bpi flash中multiboot的实现

    关于FPGA远程更新bpi flash中multiboot的实现 : 远程固化、flash固化、multiboot实现、bpi flash 一.什么叫multiboot ? multiboot 即 flash多重启动加载方式 ,常用于远程加载场景中,当远程加载失败时,flash会启动应急预案,将另一块地址的备用程序拿来作为加载FPGA的程序,防止由

    2024年02月15日
    浏览(32)
  • Vivado | FPGA开发工具(Xilinx系列芯片)

    官网下载地址 最详细的Vivado安装教程 Vivado的安装以及使用_入门

    2024年02月12日
    浏览(59)
  • 【FPGA】xilinx的开发软件vitis使用简介

           Xilinx的开发软件Vitis是一款全新的开发工具套件,它支持多种编程语言如C++、OpenCL、Python等,以及多种硬件平台,包括Xilinx的FPGA和ACAP(Adaptive Compute Acceleration Platform)。这使得它具有极高的灵活性,可以应对不同类型的开发需求,包括数据中心、云端和边缘智能应用

    2024年02月04日
    浏览(47)
  • Xilinx Alveo系列FPGA加速卡软件开发入门

    随着异构计算越来越火,FPGA加速卡在诸多领域的应用也越来越多。 FPGA加速卡与GPU加速卡加速原理完全不同。 GPU本质上是依靠海量的并行运算单元,提升整体的吞吐量,来吃尽内存带宽。 FPGA是通用的门阵列,按照数据结构和运算特点搭建专用运算单元,能够以更低功耗和时

    2024年02月05日
    浏览(45)
  • FPGA嵌入式开发一些Xilinx SDK库函数的理解

    最近在测试AXI Quad SPI这个IP核的端口时序,搭建BD后导出到硬件,在SDK中导入xspi_intr_example.c的源文件,在师兄的帮助下,浅浅研究了一下代码。 首先,需要修改源程序中的错误,参照CSDN文章:ZYNQ中断示例修改 做出以下修改: 此外,还要对中断驱动实例名称进行修改: 以下

    2024年02月12日
    浏览(49)
  • FPGA_ZYNQ (PS端)开发流程(Xilinx软件工具介绍)

            针对不同的应用领域,Xilinx 公司设计开发了各种逻辑资源规模和集成各 种外设功能的Zynq SOC器件,包括专为成本优化的Zynq-7000平台,面向高性 能实时计算应用领域的 Zynq UltraScale+ MPSoC,面向射频通信的 ZynqUltraScale+ RFSoC,以及具备高度可扩展特性的自适应加速平台

    2024年01月16日
    浏览(64)
  • [FPGA开发]解决正点原子Xilinx下载器无法下载、灯不亮的问题

    使用正点原子的Xilinx下载器下载时,电脑无法识别下载器,Vivado无法识别开发版。 1.检查XIlinx下载器的灯是否亮起。 亮灯 说明 解决方法 红灯亮起 下载器可以连接到PC 检查开发版是否供电正常 蓝灯亮起 下载器可以连接到PC,下载器可以连接到开发版 正常状态 灯不亮 下载器

    2024年02月13日
    浏览(46)
  • Xilinx FPGA SPIx4 配置速度50M约束语句(Vivado开发环境)

    qspi_50m.xdc文件: 等同于图形化配置方式:

    2024年02月22日
    浏览(61)
  • Xilinx XC7Z020双核ARM+FPGA开发板试用合集——自定义硬件工程

    本期测试板卡是一款基于Xilinx Zynq-7000系列XC7Z010/XC7Z020高性能低功耗处理器设计的异构多核SoC工业级核心板,处理器集成PS端双核ARM Cortex-A9 + PL端Artix-7架构28nm可编程逻辑资源。 下面是测试内容,欢迎查阅。 SD卡启动设置 根据《TLZ7x-EasyEVM-S评估板硬件说明书》可知,评估板的

    2023年04月08日
    浏览(44)
  • Xilinx 7系列 FPGA硬件知识系列(八)——Xilinx FPGA的复位

    目录  概要  Xilinx复位准则 全局复位主要由以下三种方式实现 高时钟频率下的复位时序全局复位对时序的要求真的很关键吗? 独热码状态机的复位        FPGA配置 Xilinx白皮书WP272《Get Smart About Reset: Think Local, Not Global》详细讲述了FPGA的全局复位。在数字系统设计中,我们

    2024年03月11日
    浏览(72)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包