在网络通信中ICAP通常指Internet Content Adaptation Protocol,但在Xilinx FPGA 中ICAP(Internal Configuration Access Port) 指的是内部配置访问端口,其主要作用是通过内部配置访问端口(ICAP),用户可以在FPGA逻辑代码中直接读写FPGA内部配置寄存器(类似SelectMAP),从而实现特定的配置功能,例如Multiboot。FPGA实现IPROG通常有两种方式,一种是通过ICAP配置,一种是把相关指令嵌入bit文件中。与通过bit文件实现IPROG相比,通过ICAP更灵活。

ICAP目前为止有三个版本,包括ICAPICAPE2以及ICAPE3。 UltraScale系列对应ICAPE3,7系列对应ICAPE2,7系列之前的对应ICAP。每个版本有少许区别。

以下以ICAPE3 为例,ICAPE3 的接口如下:


每个UltraScale系列的FPAG包括2个ICAPE3,但实际使用时只能例化并使用一个,默认顶部ICAPE3, 初级玩家采用默认的即可。

通过ICAP发送IPROG指令实现Multiboot的步骤如下:

首先写入同步头 32’hAA995566, 然后将需要跳转到的bit文件的起始地址写入WBSTAR寄存器,最后写入IPROG(internal PROGRAM_B)指令。

这里需要注意一点,ICAP以及SelectMAP都存在位反转(Bit Swapping),也就是说,上表中所有的数据需要进行位反转之后才能接到ICAP的输入接口,同理,ICAP输出的值需要进行位反转后才能与实际的值对应起来,位反转的示例如下图。


Bit Swapping 可参考以下Verilog语句

  genvar i,j;for (i=0; i<4; i=i+1) begin: GEN_ICAP_BIT_SWAP_Ifor (j=0; j<8; j=j+1) begin: GEN_ICAP_BIT_SWAP_Jassign icap_din[i*8+j] = fsm_output[i*8+7-j];assign fsm_input [i*8+j] = icap_dout[i*8+7-j];endend

ICAPE3 例化示例如下(UG974)

// ICAPE3: Internal Configuration Access Port
// UltraScale
// Xilinx HDL Language Template, version 2019.1
ICAPE3 #(
.DEVICE_ID(32'h03628093),//pre-programmed Device ID value,used for simulation
// purposes.
.ICAP_AUTO_SWITCH("DISABLE"),//Enable switch ICAP using sync word
.SIM_CFG_FILE_NAME("NONE")//Raw Bitstream (RBT) file,parsed by the simulation
// model
)
ICAPE3_inst (
.AVAIL(AVAIL), // 1-bit output: Availability status of ICAP
.O(O), // 32-bit output: Configuration data output bus
.PRDONE(PRDONE),//1-bit output: Indicates completion of Partial Reconfiguration
.PRERROR(PRERROR),//1-bit output: Indicates Error during Partial Reconfiguration
.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 ICAPE3_inst instantiation

参考文档
UG974 UltraScale Architecture Libraries Guide
UG470 7Series_Config
UG570 ultrascale-configuration

Xilinx FPGA 配置之ICAP相关推荐

  1. xilinx芯片管脚使用限制_【转载】 Xilinx FPGA配置的一些细节

    0 参考资料 (1) Xilinx: Development System Reference Guide. dev.pdf, v10.1 在Xilinx的doc目录下有. (2) Xilinx: V ...

  2. 从设置、加载、启动看Xilinx FPGA配置流程

    尽管FPGA的配置模式各不相同,但整个配置过程中FPGA的工作流程是一致的,分为三个部分:设置.加载.启动. 本文引用地址: http://www.21ic.com/embed/hardware/pr ...

  3. Xilinx FPGA的配置

    http://blog.sina.com.cn/s/blog_98d98c7f0102v4ex.html http://www.cnblogs.com/aikimi7/p/3499633.html F ...

  4. Xilinx FPGA GTX的DRP速率配置详解

    目录 1 概述 2 引用 3 DRP的信号端口 4 DRP的读写时序 5 GTX的速率的配置关系 5.1 CPLL模式的速率配置关系 5.2 QPLL模式的速率配置关系 6 速率相关DRP寄存器地址设 ...

  5. Xilinx FPGA平台GTX简易使用教程(四)GTX IP核配置教程

    干货来了,GTX核配置,搬砖全靠它~~ 汇总篇: Xilinx FPGA平台GTX简易使用教程(汇总篇) 目录 前言 一.GTX  IP核配置界面 1.1第一页配置 1.2第二页配置 1.3第三页配置 ...

  6. FPGA中利用ICAP原语实现Multiboot功能-总结篇

    前言 FPGA的MultiBoot功能可以支持远程动态更新bitstream images,实现bitstream images的实时切换.在MultiBoot配置过程中检测到错误时,FPGA可以触发 ...

  7. Xilinx FPGA 的快速启动

    原文:http://xilinx.eetrend.com/d6-xilinx/article/2013-08/4506.html 在众多当代应用中,嵌入式系统必须满足极其苛刻的时序要求.其中之一就是启 ...

  8. Xilinx FPGA全局介绍

    Xilinx FPGA全局介绍 现场可编程门阵列 (FPGA) 具有诸多特性,无论是单独使用,抑或采用多样化架构,皆可作为宝贵的计算资产:许多设计人员并不熟悉 FPGA,亦不清楚如何将这类器件整合到设 ...

  9. Xilinx FPGA中SRL(移位寄存器)资源

    SRL(移位寄存器)资源,在FPGA中都有,不过是叫不同的名字.Xilinx FPGA内部的LUT有个特殊功能,就是可以配置成可变长度SRL. 5输入的一个LUT可以变成32bit 的SRL 6输入的 ...

最新文章

  1. AI 盯上了外包司机,看后视镜就被扣分,奖金拜拜!
  2. 业务系统性能优化——缓存
  3. C++:线程操作之CRITICAL_SECTION用法的介绍和例子理解
  4. 不出现用户帐户控制-让Win7的用户账户控制(UAC)放过信任的程序
  5. leetcode第72题:编辑距离
  6. Kyma registration of webservices and event endpoints
  7. jpa映射json_如何使用JPA和Hibernate映射JSON集合
  8. VC++动态库封装及调用
  9. EZchip将推全球首款100核64位ARM A-53芯片
  10. html将两张图重叠居中代码,【CSS技巧】多图片的垂直居中排版
  11. 详细介绍阿里云搭建RocketMq
  12. SpringBoot - 多Profile使用与切换
  13. jquery mysql实现加入购物车_使用jQuery实现购物车结算功能
  14. TI DSP位域寄存器文件(Bit Field and Register-File Struc...
  15. ADS软件仿真实例大战(一)
  16. paypal php 开发,PHP语言开发Paypal支付demo的具体实现
  17. CCID 设备通讯 (Windows 平台)
  18. 达观数据爱心公益再出发,走进广西桥业小学开展捐书助学活动
  19. cmd命令行使用pip install XXX库时,出现安装失败。
  20. VMware安装及配置静态Ip、域名、免密(centos7)

热门文章

  1. 怎么把avi转换成mp4?
  2. java 获取主机名时报java.net.UnknownHostException
  3. 手机html端悬浮球,大屏手机绝配!一款轻巧强大的悬浮球App
  4. 查看索引是否命中oracle,Oracle索引命中与扫描规律总结
  5. 红心大战c语言程序设计,Win 7系统安全优化、瘦身攻略(2)
  6. Python学习,第七课(灵活使用Frame,让布局更舒适)
  7. a频繁连接不上redis_解决Redis连接无法正常释放的问题
  8. 英文论文写作相关实用网站与工具整理
  9. GEE面向对象分类(先分割影像 、再计算特征、最后分类)
  10. 浏览器访问百度www.baidu.com过程