PCIe Tandem PROM 方法

什么是Tandem PROM?

简单总结:市面多数的FPGA都是SRAM型,需要在上电时从外部存储器件完成代码的加载,对于具有PCIe功能的SRAM FPGA而言,必须要能够在规定的100ms(PCIe Spec规定,实际上多数计算机要求不会这么严格)时间内完成固件的加载,此时计算机才能够正确的枚举PCIe设备并分配对应的地址。100ms的时间对SPI FLASH而言是个很大的挑战,尤其是在FPGA SIZE越来越大时,为了解决这个问题,Xilinx为自己家的FPGA设备提出了Tandem Configuration的概念,核心思想是将FPGA固件分成2个部分,第一部分是PCIe部分,只负责PCIe的正常枚举,第二部分为用户逻辑。显然,这个技术需要FPGA厂商的支持,因此本文的Tandem专指Xilinx。

​ "PCI Express is a plug-and-play protocol meaning that at power up, the PCIe Host will enumerate the system. This process consists of the host reading the requested address size from each device and then assigning a base address to the device. As such, PCIe interfaces must be ready when the host queries them or they will not get assigned a base address. The PCI Express specification states that PERST# must deassert 100 ms after the power good of the systems has occurred, and a PCI Express port must be ready to link train no more than 20 ms after PERST# has deasserted. This is commonly referred to as the 100 ms boot time requirement. "

Tandem 有几种方式?

实际使用中,Tandem PROM最为简单,Tandem PCIe由于允许通过PCIe进行重配置,因此在服务器领域最为常用(在其它需要经常更新固件的场景下也适用)。本文只介绍Tandem PROM方式。

Tandem Configuration utilizes a two-stage methodology that enables the IP to meet the configuration time requirements indicated in the PCI Express specification. Multiple use cases are supported with this technology:

  • Tandem PROM: Load the single two-stage bitstream from the flash.
  • Tandem PCIe: Load the first stage bitstream from flash, and deliver the second stage bitstream over the PCIe link to the MCAP.
  • Tandem with Field Updates: After a Tandem PROM or Tandem PCIe initial configuration, update the entire user design while the PCIe link remains active. The update region (floorplan) and design structure are predefined, and Tcl scripts are provided.
  • Tandem + Partial Reconfiguration: This is a more general case of Tandem Configuration followed by Partial Reconfiguration (PR) of any size or number of PR regions.
  • Partial Reconfiguration over PCIe: This is a standard configuration followed by PR, using the PCIe / MCAP as the delivery path of partial bitstreams.

如何实现Tandem PROM?

本文介绍使用XDMA实现:

  • 在xdma配置时选择advance mode,并选择Tandem模式;

  • 然后右键选择生成example_design,根据打开的example_design配置,合理约束多出来的管脚,比如startup等interface;

  • 根据example的约束进行修改、适配,下面给出SPI配置的示例;

    --# --------------constraints-------------------- #

    set_property BITSTREAM.GENERAL.COMPRESS TRUE [current_design]

    set_property BITSTREAM.CONFIG.CONFIGFALLBACK Enable [current_design]

    --#Expecting type 'enum' with possible values of '3,6,9,12,22,33,40,50,57,69,82,87,90,110,115,130,148'.

    set_property BITSTREAM.CONFIG.CONFIGRATE 90 [current_design]

    set_property CONFIG_VOLTAGE 3.3 [current_design]

    set_property CONFIG_MODE SPIx4 [current_design]

    set_property CFGBVS VCCO [current_design]

    set_property BITSTREAM.CONFIG.SPI_BUSWIDTH 4 [current_design]

    set_property BITSTREAM.CONFIG.UNUSEDPIN Pulldown [current_design]

    set_property HD.TANDEM_IP_PBLOCK Stage1_Config_IO [get_cells sys_rst_n_IBUF_inst]

    set_property HD.TANDEM_IP_PBLOCK Stage1_Main [get_cells test_i/util_ds_buf]

需要注意的地方有哪些?

  • Tandem技术只在Xilinx较新的器件中支持

  • mcap_design_switch 这个信号非常有用,可以用作用户第二阶段逻辑的全局复位信号;

  • 关于sys_reset复位信号

    sys_reset 复位信号最好布局到BANK65,且用户自定义IO最好不要放置在BANK65,否则在约束时会引入很多的麻烦;

PCIe Tandem PROM 方法的更多相关文章

  1. **alon_MM DMA Interface for PCIe使用详解

    在所从事的项目中需要用到PCIE和DMA,经过再三研究,反复查看相关资料,终于弄懂了**alon_MM DMA Interface for PCIe的使用方法. PCIE在fpga和上位机之间起着中间 ...

  2. 5.2 TLP的路由

    TLP的路由是指TLP通过Switch或者PCIe桥片时采用哪条路径,最终到达EP或者RC的方法.PCIe总线一共定义了三种路由方法,分别是基于地址(Address)的路由,基于ID的路由和隐式路由( ...

  3. javaSE27天复习总结

    JAVA学习总结    2 第一天    2 1:计算机概述(了解)    2 (1)计算机    2 (2)计算机硬件    2 (3)计算机软件    2 (4)软件开发(理解)    2 (5) ...

  4. 【再话FPGA】在xilinx中PCIe IP Core使用方法

    采用Xilinx Virtex-5 XC5VSX50T-FF1136 FPGA或者Xilinx Virtex-5 XC5VSX95T-FF1136的板子.采用ISE13.2环境.步骤:一.建立一个IS ...

  5. 【转载】Linux查看PCIe版本及速率【方法】PCIE的X4X8X16 查看 数量 怎么看

    Linux查看PCIe版本及速率   PCIE有四种不同的规格,通过下图来了解下PCIE的其中2种规格   查看主板上的PCI插槽 # dmidecode | grep --color "P ...

  6. 如何使用xilinx pcie的源代码

    采用xilinx公司的ml555开发板,软件开发环境是ISE13.2 步骤:一,建立一个ISE工程:BMDforPCIE工程的建立方法:bmd_sx50t文件夹包含BMD Desin for the ...

  7. 使用FIO对SATA、SSD和PCIe Flash进行测试

    首先声明,同事做的实验 使用fio对SATA.SSD.PCIE进行了测试 测试说明: 1.测试命名   sync_write_4k_32      sync表示测试方式,可以是sync或者libaio ...

  8. 转载-centos网络配置(手动设置,自动获取)的2种方法

    转载地址:http://blog.51yip.com/linux/1120.html 重新启动网络配置 # service network restart 或 # /etc/init.d/networ ...

  9. 几个 Ceph 性能优化的新方法和思路(2015 SH Ceph Day 参后感)

    一周前,由 Intel 与 Redhat 在10月18日联合举办了 Shanghai Ceph Day.在这次会议上,多位专家做了十几场非常精彩的演讲.本文就这些演讲中提到的 Ceph性能优化方面的知 ...

随机推荐

  1. Solution -「LOCAL」「cov. 牛客多校 2020 第五场 C」Easy

    \(\mathcal{Description}\)   Link.(完全一致)   给定 \(n,m,k\),对于两个长度为 \(k\) 的满足 \(\left(\sum_{i=0}^ka_i=n\r ...

  2. C#使用 WebRequest 异步获取网页并自动忽略SSL证书

    C#使用 WebRequest 模拟浏览器请求访问网页并自动忽略HTTPS安全证书 以下两个C#异步方法,封装了WebRequest请求,支持忽略SSL证书. 作者:张赐荣 1.Get请求      ...

  3. python的import语句

    1.import作用 import跟C/C++中的#include作用有点类似,都是为了调用定义在其他文件中的变量.函数或者类,但实现的区别很大. C/C++中如果a.cpp include了b.h那 ...

  4. 「BUAA OO Pre」 Pre 2总结回顾概览

    「BUAA OO Pre」 Pre 2总结回顾概览 目录 「BUAA OO Pre」 Pre 2总结回顾概览 Part 0 前言 写作背景 定位 您可以在这里期望获得 您在这里无法期望获得 对读者前置 ...

  5. LED调颜色小程序

    燧星科技有一个免费的LED调颜色蓝牙小程序,小程序有一个拾色器用来调节颜色.亮度.饱和度,同时显示出RGB的十六进制与十进制数据.还有连接蓝牙模块的功能,可向通用蓝牙模块发送调节后的RGB数据,可为平 ...

  6. 在 WPF 客户端实现 AOP 和接口缓存

    随着业务越来越复杂,最近决定把一些频繁查询但是数据不会怎么变更的接口做一下缓存,这种功能一般用 AOP 就能实现了,找了一下客户端又没现成的直接可以用,嗐,就只能自己开发了. 代理模式和AOP 理解代 ...

  7. 360携手HarmonyOS打造独特的“天气大师”

    做创新,首先要找到有增长趋势的流量红利,对我们来说,HarmonyOS就是绝佳的合作伙伴. --申悦 360手机助手创研产品部负责人 一.我们是谁? 我们来自360,是一支致力于孵化新业务的内部创新小 ...

  8. C#编程学习(一)

    1.1 开始在Visual Studio 2013环境中编程 控制台应用程序是在命令提示符窗口而非图形用户界面(GUI)中运行的应用程序. 集成开发环境(Integrated Development  ...

  9. 【C# 线程】内存屏障 MemoryBarrier

    背景 同步基元分为用户模式和内核模式 用户模式:Iterlocked.Exchange(互锁).SpinLocked(自旋锁).易变构造(volatile关键字.volatile类.Thread.Vo ...

  10. Nullable<T> 结构 |T? 可为空的值类型

    参考链接:https://www.cnblogs.com/tdfblog/p/Nullable-Types-in-Csharp-Net.html https://www.cnblogs.com/min ...