Xilinx任何一款FPGA型號(hào)都有一個(gè)唯一的IDCODE,用來區(qū)分不同的產(chǎn)品,同一型號(hào)不同封裝的FPGA IDCODE是一致的,可以通過JTAG、ICAP原語、AXI_HWICAP IP核等多種方式讀取。常見的應(yīng)用場(chǎng)景是同一套代碼兼容不同的芯片型號(hào),比如現(xiàn)在使用的是XC7A35T,新產(chǎn)品更換成了XC7A100T,兩個(gè)芯片的封裝不同,管腳配置也不同,而這兩種硬件需要使用一套C/Verilog代碼,這樣就可以通過讀取IDCODE,來進(jìn)行自動(dòng)區(qū)分不同的硬件,分別進(jìn)行不同的處理方式。本文介紹Xilinx所有FPGA芯片型號(hào)IDCODE的獲取方法,一共4種方式,總有一種適合你,這些方法同樣適用于別的廠家的FPGA/MCU,比如Intel,Lattice,Microchip等等。
目錄
方式1:官方文檔
方式2:一個(gè)頭文件
方式3:BSDL文件
方法4:芯片IDCODE在線搜索網(wǎng)站
Xilinx FPGA部分型號(hào)IDCODE匯總
方式1:官方文檔
對(duì)于常用的Spartan-6系列可以在UG380文檔中找到對(duì)應(yīng)的IDCODE,Spartan-7、Artix-7、Kinte-7、Virtex-7可以在UG470文檔里找到對(duì)應(yīng)的IDCODE。
Spartan-6系列的IDCODE對(duì)照表位于UG380:Table 5-13: ID Codes
7系列的IDCODE對(duì)照表位于UG470:Table 1-1: Bitstream Length
ZYNQ系列沒有找到對(duì)應(yīng)的IDCODE說明文檔。
方式2:一個(gè)頭文件
在ISE開發(fā)環(huán)境下,最后一個(gè)版本14.7,可以在以下安裝路徑的文件中獲取到一些舊型號(hào)的IDCODE:
安裝路徑Xilinx14.7ISE_DSEDKswXilinxProcessorIPLibdrivershwicap_v8_01_asrcxhwicap_l.h
在Vivado開發(fā)環(huán)境下的xhwicap_l.h文件中,刪除了IDCODE。
安裝路徑VivadoSDK2018.3dataembeddedswXilinxProcessorIPLibdrivershwicap_v11_0srcxhwicap_l.h
方式3:BSDL文件
對(duì)于ZYNQ-7000系列,一只沒有找到IDCODE相關(guān)的說明文檔,終極解決辦法就是直接從BSDL邊界掃描文件中查找,關(guān)于邊界掃描,這是一個(gè)非常有意思的JTAG技巧,我們后面再介紹。只要有了FPGA芯片型號(hào)對(duì)應(yīng)的BSDL文件,就可以獲取到IDCODE,而且BSDL文件在安裝ISE或安裝Vivado時(shí),就會(huì)保存在安裝路徑下。
以查找ZYNQ-7000系列XC7Z100的IDCODE為例,ISE開發(fā)環(huán)境,BSDL文件位于:
D:ProgramXilinx14.7ISE_DSISEzynqdataxc7z100*.bsd
Vivado開發(fā)環(huán)境,BSDL文件位于:
D:ProgramXilinxVivadoSDK2018.3datapartsxilinxzynqpublicsdlxc7z100*.bsd
或
D:ProgramXilinxVivadoVivado2018.3datapartsxilinxzynqpublicsdlxc7z100*.bsd
所謂的BSDL文件,其實(shí)就是一個(gè)VHDL文件,我們以文本方式打開,直接搜索關(guān)鍵字IDCODE_REGISTER,會(huì)定位到如下位置:
二進(jìn)制合并轉(zhuǎn)換之后,就得到了我們想要的IDCODE:
attributeIDCODE_REGISTERofXC7Z100:entityis "XXXX"&--version "0011011"&--family "100110110"&--arraysize "00001001001"&--manufacturer "1";--requiredby1149.1 --二進(jìn)制合并處理后 attributeIDCODE_REGISTERofXC7Z100:entityis "XXXX"&--version 0011011100110110000010010011--0x03736093
所以,如果想要獲取任何FPGA芯片的IDCODE,只需要獲取對(duì)應(yīng)的BSDL文件即可。
方法4:芯片IDCODE在線搜索網(wǎng)站
這里推薦一個(gè)在線的IDCODE搜索網(wǎng)站,其實(shí)本質(zhì)是一個(gè)BSDL匯總網(wǎng)站:BSDL Files Library for JTAG
理論上任何一個(gè)支持JTAG的芯片型號(hào),都會(huì)有一個(gè)IDCODE用來作為唯一標(biāo)識(shí)。 直接輸入想要查找的芯片型號(hào):
點(diǎn)開對(duì)應(yīng)的BSDL文件:
可以看到IDCODE為0x03736093。
Microchip A3P125 FPGA芯片的IDCODE
Altera EP4CE40F29 FPGA芯片IDCODE
Xilinx FPGA部分型號(hào)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
審核編輯:湯梓紅
-
FPGA
+關(guān)注
關(guān)注
1625文章
21620瀏覽量
601231 -
芯片
+關(guān)注
關(guān)注
452文章
50206瀏覽量
420848 -
mcu
+關(guān)注
關(guān)注
146文章
16885瀏覽量
349914 -
Xilinx
+關(guān)注
關(guān)注
71文章
2155瀏覽量
120849
原文標(biāo)題:獲取Xilinx FPGA芯片IDCODE的4種方法(支持任何FPGA型號(hào))
文章出處:【微信號(hào):mcu149,微信公眾號(hào):電子電路開發(fā)學(xué)習(xí)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論