1 获取Xilinx FPGA芯片IDCODE的4种方法-德赢Vwin官网 网
0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

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

3天内不再提示

获取Xilinx FPGA芯片IDCODE的4种方法

电子电路开发学习 来源:电子电路开发学习 2023-07-03 13:01 次阅读

Xilinx任何一款FPGA型号都有一个唯一的IDCODE,用来区分不同的产品,同一型号不同封装的FPGA IDCODE是一致的,可以通过JTAG、ICAP原语、AXI_HWICAP IP核等多种方式读取。常见的应用场景是同一套代码兼容不同的芯片型号,比如现在使用的是XC7A35T,新产品更换成了XC7A100T,两个芯片的封装不同,管脚配置也不同,而这两种硬件需要使用一套C/Verilog代码,这样就可以通过读取IDCODE,来进行自动区分不同的硬件,分别进行不同的处理方式。本文介绍Xilinx所有FPGA芯片型号IDCODE的获取方法,一共4种方式,总有一种适合你,这些方法同样适用于别的厂家的FPGA/MCU,比如IntelLatticeMicrochip等等。

目录

方式1:官方文档

方式2:一个头文件

方式3:BSDL文件

方法4:芯片IDCODE在线搜索网站

Xilinx FPGA部分型号IDCODE汇总

方式1:官方文档

对于常用的Spartan-6系列可以在UG380文档中找到对应的IDCODE,Spartan-7、Artix-7、Kinte-7、Virtex-7可以在UG470文档里找到对应的IDCODE。

Spartan-6系列的IDCODE对照表位于UG380:Table 5-13: ID Codes

ebc778a0-1957-11ee-962d-dac502259ad0.png

7系列的IDCODE对照表位于UG470:Table 1-1: Bitstream Length

ebe20af8-1957-11ee-962d-dac502259ad0.png

ZYNQ系列没有找到对应的IDCODE说明文档。

方式2:一个头文件

在ISE开发环境下,最后一个版本14.7,可以在以下安装路径的文件中获取到一些旧型号的IDCODE:


安装路径Xilinx14.7ISE_DSEDKswXilinxProcessorIPLibdrivershwicap_v8_01_asrcxhwicap_l.h

ec50c6f0-1957-11ee-962d-dac502259ad0.png

在Vivado开发环境下的xhwicap_l.h文件中,删除了IDCODE。


安装路径VivadoSDK2018.3dataembeddedswXilinxProcessorIPLibdrivershwicap_v11_0srcxhwicap_l.h

方式3:BSDL文件

对于ZYNQ-7000系列,一只没有找到IDCODE相关的说明文档,终极解决办法就是直接从BSDL边界扫描文件中查找,关于边界扫描,这是一个非常有意思的JTAG技巧,我们后面再介绍。只要有了FPGA芯片型号对应的BSDL文件,就可以获取到IDCODE,而且BSDL文件在安装ISE或安装Vivado时,就会保存在安装路径下。

以查找ZYNQ-7000系列XC7Z100的IDCODE为例,ISE开发环境,BSDL文件位于:


D:ProgramXilinx14.7ISE_DSISEzynqdataxc7z100*.bsd

Vivado开发环境,BSDL文件位于:


D:ProgramXilinxVivadoSDK2018.3datapartsxilinxzynqpublicsdlxc7z100*.bsd


D:ProgramXilinxVivadoVivado2018.3datapartsxilinxzynqpublicsdlxc7z100*.bsd

所谓的BSDL文件,其实就是一个VHDL文件,我们以文本方式打开,直接搜索关键字IDCODE_REGISTER,会定位到如下位置:

ec70e638-1957-11ee-962d-dac502259ad0.png

二进制合并转换之后,就得到了我们想要的IDCODE:


attributeIDCODE_REGISTERofXC7Z100:entityis "XXXX"&--version "0011011"&--family "100110110"&--arraysize "00001001001"&--manufacturer "1";--requiredby1149.1 --二进制合并处理后 attributeIDCODE_REGISTERofXC7Z100:entityis "XXXX"&--version 0011011100110110000010010011--0x03736093

所以,如果想要获取任何FPGA芯片的IDCODE,只需要获取对应的BSDL文件即可。

方法4:芯片IDCODE在线搜索网站

这里推荐一个在线的IDCODE搜索网站,其实本质是一个BSDL汇总网站:BSDL Files Library for JTAG


理论上任何一个支持JTAG的芯片型号,都会有一个IDCODE用来作为唯一标识。 直接输入想要查找的芯片型号:

ec89d8be-1957-11ee-962d-dac502259ad0.png

点开对应的BSDL文件:

ec9b3e7e-1957-11ee-962d-dac502259ad0.png

可以看到IDCODE为0x03736093

Microchip A3P125 FPGA芯片的IDCODE

ecb9ab2a-1957-11ee-962d-dac502259ad0.png

Altera EP4CE40F29 FPGA芯片IDCODE

ecdacc74-1957-11ee-962d-dac502259ad0.png

Xilinx FPGA部分型号IDCODE汇总


/*Virtex4Devices.*/ #defineIDCODE_XC4VLX150x01658093 #defineIDCODE_XC4VLX250x0167C093 #defineIDCODE_XC4VLX400x016A4093 #defineIDCODE_XC4VLX600x016B4093 #defineIDCODE_XC4VLX800x016D8093 #defineIDCODE_XC4VLX1000x01700093 #defineIDCODE_XC4VLX1600x01718093 #defineIDCODE_XC4VLX2000x01734093 #defineIDCODE_XC4VSX250x02068093 #defineIDCODE_XC4VSX350x02088093 #defineIDCODE_XC4VSX550x020B0093 #defineIDCODE_XC4VFX120x01E58093 #defineIDCODE_XC4VFX200x01E64093 #defineIDCODE_XC4VFX400x01E8C093 #defineIDCODE_XC4VFX600x01EB4093 #defineIDCODE_XC4VFX1000x01EE4093 #defineIDCODE_XC4VFX1400x01F14093 #defineIDCODE_V4_NUM_DEVICES17 /*Virtex5Devices*/ #defineIDCODE_XC5VLX300x0286E093 #defineIDCODE_XC5VLX500x02896093 #defineIDCODE_XC5VLX850x028AE093 #defineIDCODE_XC5VLX1100x028D6093 #defineIDCODE_XC5VLX2200x0290C093 #defineIDCODE_XC5VLX3300x0295C093 #defineIDCODE_XC5VLX30T0x02A6E093 #defineIDCODE_XC5VLX50T0x02A96093 #defineIDCODE_XC5VLX85T0x02AAE093 #defineIDCODE_XC5VLX110T0x02AD6093 #defineIDCODE_XC5VLX220T0x02B0C093 #defineIDCODE_XC5VLX330T0x02B5C093 #defineIDCODE_XC5VSX35T0x02E72093 #defineIDCODE_XC5VSX50T0x02E9A093 #defineIDCODE_XC5VSX95T0x02ECE093 #defineIDCODE_XC5VFX30T0x03276093 #defineIDCODE_XC5VFX70T0x032C6093 #defineIDCODE_XC5VFX100T0x032D8093 #defineIDCODE_XC5VFX130T0x03300093 #defineIDCODE_XC5VFX200T0x03334093 #defineIDCODE_V5_NUM_DEVICES20 /*Virtex6Devices*/ #defineIDCODE_XC6VHX250T0x042A2093 #defineIDCODE_XC6VHX255T0x042A4093 #defineIDCODE_XC6VHX380T0x042A8093 #defineIDCODE_XC6VHX565T0x042AC093 #defineIDCODE_XC6VLX75T0x04244093 #defineIDCODE_XC6VLX130T0x0424A093 #defineIDCODE_XC6VLX195T0x0424C093 #defineIDCODE_XC6VLX240T0x04250093 #defineIDCODE_XC6VLX365T0x04252093 #defineIDCODE_XC6VLX550T0x04256093 #defineIDCODE_XC6VLX7600x0423A093 #defineIDCODE_XC6VSX315T0x04286093 #defineIDCODE_XC6VSX475T0x04288093 #defineIDCODE_XC6VCX75T0x042C4093 #defineIDCODE_XC6VCX130T0x042CA093 #defineIDCODE_XC6VCX195T0x042CC093 #defineIDCODE_XC6VCX240T0x042D0093 #defineIDCODE_V6_NUM_DEVICES17 /*Spartan6Devices.*/ #defineIDCODE_XC6SLX40x04000093 #defineIDCODE_XC6SLX90x04001093 #defineIDCODE_XC6SLX160x04002093 #defineIDCODE_XC6SLX250x04004093 #defineIDCODE_XC6SLX25T0x04024093 #defineIDCODE_XC6SLX450x04008093 #defineIDCODE_XC6SLX45T0x04028093 #defineIDCODE_XC6SLX750x0400E093 #defineIDCODE_XC6SLX75T0x0402E093 #defineIDCODE_XC6SLX1000x04011093 #defineIDCODE_XC6SLX100T0x04031093 #defineIDCODE_XC6SLX1500x0401D093 #defineIDCODE_XC6SLX150T0x0403D093 #defineIDCODE_S6_NUM_DEVICES13 /*Kintex7Devices.*/ #defineIDCODE_XC7K30T0x03642093 #defineIDCODE_XC7K70T0x03647093 #defineIDCODE_XC7K160T0x0364C093 #defineIDCODE_XC7K325T0x03651093 #defineIDCODE_XC7K410T0x03656093 #defineIDCODE_XC7K235T0x0365B093 #defineIDCODE_XC7K125T0x0365C093 #defineIDCODE_XC7K290T0x0365D093 #defineIDCODE_XC7K355T0x03747093 #defineIDCODE_XC7K420T0x0374C093 #defineIDCODE_XC7K480T0x03751093 #defineIDCODE_K7_NUM_DEVICES11 /*Virtex7Devices.*/ #defineIDCODE_XC7VX80T0x03680093 #defineIDCODE_XC7VX82T0x03681093 #defineIDCODE_XC7VX330T0x03667093 #defineIDCODE_XC7VX415T0x03682093 #defineIDCODE_XC7V450T0x0366C093 #defineIDCODE_XC7VX485T0x03687093 #defineIDCODE_XC7VX550T0x03692093 #defineIDCODE_XC7V585T0x03671093 #defineIDCODE_XC7VX690T0x03691093 #defineIDCODE_XC7VX980T0x03696093 #defineIDCODE_V7_NUM_DEVICES10 /*Artix7Devices.*/ #defineIDCODE_XC7A150x03627093 #defineIDCODE_XC7A30T0x0362D093 #defineIDCODE_XC7A50T0x0362C093 #defineIDCODE_XC7A100T0x03631093 #defineIDCODE_XC7A200T0x03636093 #defineIDCODE_XC7A350T0x0363B093 #defineIDCODE_A7_NUM_DEVICES6 /*ZynqDevices.LatestasofJuly2023*/ #defineIDCODE_XC7Z0070x03723093 #defineIDCODE_XC7Z0100x03722093 #defineIDCODE_XC7Z0120x0373C093 #defineIDCODE_XC7Z0140x03728093 #defineIDCODE_XC7Z0150x0373B093 #defineIDCODE_XC7Z0200x03727093 #defineIDCODE_XC7Z0300x0372C093 #defineIDCODE_XC7Z0350x03732093 #defineIDCODE_XC7Z0450x03731093 #defineIDCODE_XC7Z1000x03736093 #defineIDCODE_ZYNQ_NUM_DEVICES10

审核编辑:汤梓红

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

    关注

    1629

    文章

    21729

    浏览量

    602962
  • 芯片
    +关注

    关注

    455

    文章

    50714

    浏览量

    423114
  • mcu
    mcu
    +关注

    关注

    146

    文章

    17123

    浏览量

    350972
  • Xilinx
    +关注

    关注

    71

    文章

    2167

    浏览量

    121291

原文标题:获取Xilinx FPGA芯片IDCODE的4种方法(支持任何FPGA型号)

文章出处:【微信号:mcu149,微信公众号:电子电路开发学习】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    关于Xilinx FPGA如何获取FPGA的Device DNA

    作者:Evening Xilinx每一个FPGA都有一个独特的ID,也就是Device DNA,这个ID相当于我们的身份证,在FPGA芯片生产的时候就已经写死在
    的头像 发表于 01-02 09:44 4610次阅读
    关于<b class='flag-5'>Xilinx</b> <b class='flag-5'>FPGA</b>如何<b class='flag-5'>获取</b><b class='flag-5'>FPGA</b>的Device DNA

    从设备读取的idcode与bsdl文件中的idcode不匹配该怎么办?

    是采用324引脚BGA封装的Xilinx Spartan-6 Lx45 FPGA我试着通过非常简单的VHDL文件Verilog向我的电路板施法。但我不能为这个错误。它在Synthsize,实现设计和生成
    发表于 08-08 08:58

    为什么IDCODEidcode与bsdl文件不匹配?

    ,一切看起来都很好。但是当我尝试编程FPGA或尝试接收IDCODE时,它会因以下消息而失败。从设备接收的IDCODE与预期的IDCODE相同,但移位了一位数。信息:iMPACT - 当
    发表于 08-20 10:32

    使用JTAG读取IDCODE时出现问题如何解决

    我使用的是Virtex-II(XC2V250-4CS144)FPGA4Mbit Xilinx平台闪存(XCF04S)。我在配置和编程FPGA
    发表于 06-10 10:20

    XILINX FPGA 芯片整体架构是如何构成的

    XILINX FPGA 芯片整体架构是如何构成的?XILINX FPGA 芯片有哪些资源?
    发表于 10-29 06:26

    芯片功能测试的五种方法

    芯片功能测试常用5种方法有板级测试、晶圆CP测试、封装后成品FT测试、系统级SLT测试、可靠性测试。
    发表于 06-09 16:25

    Synopsys和Xilinx合作出版FPGA的SoC设计原型方法手册

    Synopsys和Xilinx合作出版业界首本基于FPGA的SoC设计原型方法手册。
    发表于 03-21 10:26 883次阅读

    访问集成Xilinx模数转换器的三种方法介绍

    了解访问集成Xilinx模数转换器(XADC)的三种方法; 通过直接连接到PS,作为PS或Microblaze的AXI外设,或作为逻辑的IP核。
    的头像 发表于 11-20 06:16 2658次阅读

    获取Xilinx FPGA的DNA的两个方法

    Xilinx每一个FPGA都有一个独特的ID,也就是Device DNA,这个ID相当于我们的身份证,在FPGA芯片生产的时候就已经写死在芯片
    发表于 12-22 14:31 4065次阅读

    xilinxFPGA芯片选型手册免费下载

    本文档的主要内容详细介绍的是xilinxFPGA芯片选型手册免费下载
    发表于 02-13 17:16 51次下载
    <b class='flag-5'>xilinx</b>的<b class='flag-5'>FPGA</b><b class='flag-5'>芯片</b>选型手册免费下载

    介绍3种方法跨时钟域处理方法

    介绍3跨时钟域处理的方法,这3种方法可以说是FPGA界最常用也最实用的方法,这三种方法包含了单
    的头像 发表于 09-18 11:33 2.2w次阅读
    介绍3<b class='flag-5'>种方法</b>跨时钟域处理<b class='flag-5'>方法</b>

    分享芯片功能测试的五种方法

    芯片功能测试常用5种方法有板级测试、晶圆CP测试、封装后成品FT测试、系统级SLT测试、可靠性测试。
    的头像 发表于 06-09 15:46 3011次阅读
    分享<b class='flag-5'>芯片</b>功能测试的五<b class='flag-5'>种方法</b>!

    C语言获取文件长度的两种方法

    C语言中没有直接获取文件长度的接口,但是我们可以使用标准库提供的函数来间接的获取文件长度。这里提供两种方法
    的头像 发表于 10-10 16:15 1350次阅读
    C语言<b class='flag-5'>获取</b>文件长度的两<b class='flag-5'>种方法</b>

    Xilinx fpga芯片系列有哪些

    Xilinx FPGA芯片拥有多个系列和型号,以满足不同应用领域的需求。以下是一些主要的Xilinx FPGA
    的头像 发表于 03-14 16:24 3272次阅读

    简单高效配置FPGA方法

    本文描述了一简单高效配置FPGA方法,该方法利用微处理器从串行外围接口(SPI)闪存配置FPGA设备。这
    的头像 发表于 10-24 14:57 551次阅读
    一<b class='flag-5'>种</b>简单高效配置<b class='flag-5'>FPGA</b>的<b class='flag-5'>方法</b>