xilinx任何一款fpga型号都有一个唯一的idcode,用来区分不同的产品,同一型号不同封装的fpga idcode是一致的,可以通过jtag、icap原语、axi_hwicap ip核等多种方式读取。常见的应用场景是同一套代码兼容不同的芯片型号,比如现在使用的是xc7a35t,新产品更换成了xc7a100t,两个芯片的封装不同,管脚配置也不同,而这两种硬件需要使用一套c/verilog代码,这样就可以通过读取idcode,来进行自动区分不同的硬件,分别进行不同的处理方式。本文介绍xilinx所有fpga芯片型号idcode的获取方法,一共4种方式,总有一种适合你,这些方法同样适用于别的厂家的fpga/mcu,比如intel,lattice,microchip等等。
目录
方式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
7系列的idcode对照表位于ug470:table 1-1: bitstream length
zynq系列没有找到对应的idcode说明文档。
方式2:一个头文件
在ise开发环境下,最后一个版本14.7,可以在以下安装路径的文件中获取到一些旧型号的idcode:
安装路径xilinx14.7ise_dsedkswxilinxprocessoriplibdrivershwicap_v8_01_asrcxhwicap_l.h
在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,会定位到如下位置:
二进制合并转换之后,就得到了我们想要的idcode:
attribute idcode_register of xc7z100 : entity is xxxx & -- version 0011011 & -- family 100110110 & -- array size 00001001001 & -- manufacturer 1; -- required by 1149.1 --二进制合并处理后 attribute idcode_register of xc7z100 : entity is xxxx & -- version 0011011100110110000010010011 --0x03736093
所以,如果想要获取任何fpga芯片的idcode,只需要获取对应的bsdl文件即可。
方法4:芯片idcode在线搜索网站
这里推荐一个在线的idcode搜索网站,其实本质是一个bsdl汇总网站:bsdl files library for jtag
理论上任何一个支持jtag的芯片型号,都会有一个idcode用来作为唯一标识。 直接输入想要查找的芯片型号:
点开对应的bsdl文件:
可以看到idcode为0x03736093。
microchip a3p125 fpga芯片的idcode
altera ep4ce40f29 fpga芯片idcode
xilinx fpga部分型号idcode汇总
/* virtex4 devices. */ #define idcode_xc4vlx15 0x01658093 #define idcode_xc4vlx25 0x0167c093 #define idcode_xc4vlx40 0x016a4093 #define idcode_xc4vlx60 0x016b4093 #define idcode_xc4vlx80 0x016d8093 #define idcode_xc4vlx100 0x01700093 #define idcode_xc4vlx160 0x01718093 #define idcode_xc4vlx200 0x01734093 #define idcode_xc4vsx25 0x02068093 #define idcode_xc4vsx35 0x02088093 #define idcode_xc4vsx55 0x020b0093 #define idcode_xc4vfx12 0x01e58093 #define idcode_xc4vfx20 0x01e64093 #define idcode_xc4vfx40 0x01e8c093 #define idcode_xc4vfx60 0x01eb4093 #define idcode_xc4vfx100 0x01ee4093 #define idcode_xc4vfx140 0x01f14093 #define idcode_v4_num_devices 17 /* virtex5 devices */ #define idcode_xc5vlx30 0x0286e093 #define idcode_xc5vlx50 0x02896093 #define idcode_xc5vlx85 0x028ae093 #define idcode_xc5vlx110 0x028d6093 #define idcode_xc5vlx220 0x0290c093 #define idcode_xc5vlx330 0x0295c093 #define idcode_xc5vlx30t 0x02a6e093 #define idcode_xc5vlx50t 0x02a96093 #define idcode_xc5vlx85t 0x02aae093 #define idcode_xc5vlx110t 0x02ad6093 #define idcode_xc5vlx220t 0x02b0c093 #define idcode_xc5vlx330t 0x02b5c093 #define idcode_xc5vsx35t 0x02e72093 #define idcode_xc5vsx50t 0x02e9a093 #define idcode_xc5vsx95t 0x02ece093 #define idcode_xc5vfx30t 0x03276093 #define idcode_xc5vfx70t 0x032c6093 #define idcode_xc5vfx100t 0x032d8093 #define idcode_xc5vfx130t 0x03300093 #define idcode_xc5vfx200t 0x03334093 #define idcode_v5_num_devices 20 /* virtex6 devices */ #define idcode_xc6vhx250t 0x042a2093 #define idcode_xc6vhx255t 0x042a4093 #define idcode_xc6vhx380t 0x042a8093 #define idcode_xc6vhx565t 0x042ac093 #define idcode_xc6vlx75t 0x04244093 #define idcode_xc6vlx130t 0x0424a093 #define idcode_xc6vlx195t 0x0424c093 #define idcode_xc6vlx240t 0x04250093 #define idcode_xc6vlx365t 0x04252093 #define idcode_xc6vlx550t 0x04256093 #define idcode_xc6vlx760 0x0423a093 #define idcode_xc6vsx315t 0x04286093 #define idcode_xc6vsx475t 0x04288093 #define idcode_xc6vcx75t 0x042c4093 #define idcode_xc6vcx130t 0x042ca093 #define idcode_xc6vcx195t 0x042cc093 #define idcode_xc6vcx240t 0x042d0093 #define idcode_v6_num_devices 17 /* spartan6 devices. */ #define idcode_xc6slx4 0x04000093 #define idcode_xc6slx9 0x04001093 #define idcode_xc6slx16 0x04002093 #define idcode_xc6slx25 0x04004093 #define idcode_xc6slx25t 0x04024093 #define idcode_xc6slx45 0x04008093 #define idcode_xc6slx45t 0x04028093 #define idcode_xc6slx75 0x0400e093 #define idcode_xc6slx75t 0x0402e093 #define idcode_xc6slx100 0x04011093 #define idcode_xc6slx100t 0x04031093 #define idcode_xc6slx150 0x0401d093 #define idcode_xc6slx150t 0x0403d093 #define idcode_s6_num_devices 13 /* kintex7 devices. */ #define idcode_xc7k30t 0x03642093 #define idcode_xc7k70t 0x03647093 #define idcode_xc7k160t 0x0364c093 #define idcode_xc7k325t 0x03651093 #define idcode_xc7k410t 0x03656093 #define idcode_xc7k235t 0x0365b093 #define idcode_xc7k125t 0x0365c093 #define idcode_xc7k290t 0x0365d093 #define idcode_xc7k355t 0x03747093 #define idcode_xc7k420t 0x0374c093 #define idcode_xc7k480t 0x03751093 #define idcode_k7_num_devices 11 /* virtex7 devices. */ #define idcode_xc7vx80t 0x03680093 #define idcode_xc7vx82t 0x03681093 #define idcode_xc7vx330t 0x03667093 #define idcode_xc7vx415t 0x03682093 #define idcode_xc7v450t 0x0366c093 #define idcode_xc7vx485t 0x03687093 #define idcode_xc7vx550t 0x03692093 #define idcode_xc7v585t 0x03671093 #define idcode_xc7vx690t 0x03691093 #define idcode_xc7vx980t 0x03696093 #define idcode_v7_num_devices 10 /* artix7 devices. */ #define idcode_xc7a15 0x03627093 #define idcode_xc7a30t 0x0362d093 #define idcode_xc7a50t 0x0362c093 #define idcode_xc7a100t 0x03631093 #define idcode_xc7a200t 0x03636093 #define idcode_xc7a350t 0x0363b093 #define idcode_a7_num_devices 6 /* zynq devices. latest as of july 2023 */ #define idcode_xc7z007 0x03723093 #define idcode_xc7z010 0x03722093 #define idcode_xc7z012 0x0373c093 #define idcode_xc7z014 0x03728093 #define idcode_xc7z015 0x0373b093 #define idcode_xc7z020 0x03727093 #define idcode_xc7z030 0x0372c093 #define idcode_xc7z035 0x03732093 #define idcode_xc7z045 0x03731093 #define idcode_xc7z100 0x03736093 #define idcode_zynq_num_devices 10
显同电子广西LED显示屏厂家分析市场
领导决策的计算和神经生物学基础
FreeRTOS流式缓冲区是指什么
自动化设备数据采集(远程监控报警)系统如何实现
YXC扬兴科技推出100MHz QMEMS振荡器YSO690PR,应用于RRU发射遥控单元
获取Xilinx FPGA芯片IDCODE的4种方法
ElectraFly正在开发一种多旋翼个人飞行器
交流伺服系统设计指南及控制方法
vivoxplay6怎么样?vivoxplay6年度最值得购买的旗舰机
华为HMS生态持续赋能千行百业,共创行业数字化新价值
指纹传感器的市场状况 主流手机指纹识别厂商有哪些
神经计算机芯片Truenorth详细资料
【江苏润石】可独立配置方向的四通道电平转换器RS4T774
存储器集成电路测试,记忆体积体电路测试,Memory IC Test
基于stm32的牙医综合治疗椅控制系统设计方案
AMD全新架构的RX 6000系列显卡引发关注
CAN适配卡发电机状态监测仪中的设计方案
动力电池的热管理说明
一次消谐装置的选型原则及使用注意事项
智慧城市龙头股有哪些_智慧城市龙头股一览