午夜视频在线网站,日韩视频精品在线,中文字幕精品一区二区三区在线,在线播放精品,1024你懂我懂的旧版人,欧美日韩一级黄色片,一区二区三区在线观看视频

分享

獲取Xilinx FPGA芯片IDCODE的4種方法(支持任何FPGA型號(hào))

 李清龍1023 2024-06-19 發(fā)布于安徽

Xilinx任何一款FPGA型號(hào)都有一個(gè)唯一的IDCODE,用來(lái)區(qū)分不同的產(chǎn)品,同一型號(hào)不同封裝的FPGA IDCODE是一致的,可以通過(guò)JTAG、ICAP原語(yǔ)、AXI_HWICAP IP核等多種方式讀取。常見(jiàn)的應(yīng)用場(chǎng)景是同一套代碼兼容不同的芯片型號(hào),比如現(xiàn)在使用的是XC7A35T,新產(chǎn)品更換成了XC7A100T,兩個(gè)芯片的封裝不同,管腳配置也不同,而這兩種硬件需要使用一套C/Verilog代碼,這樣就可以通過(guò)讀取IDCODE,來(lái)進(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。

文檔下載:

  • xilinx_spartan6_config_ug380.pdf

    https://gab./~larry.aamodt/engr435/xilinx_spartan6_config_ug380.pdf

  • UG470_7Series_Config.pdf

    http://padley./cms/OH_GE21/UG470_7Series_Config.pdf

Spartan-6系列的IDCODE對(duì)照表位于UG380:Table 5-13: ID Codes

圖片

7系列的IDCODE對(duì)照表位于UG470:Table 1-1: Bitstream Length

圖片

ZYNQ系列沒(méi)有找到對(duì)應(yīng)的IDCODE說(shuō)明文檔。

方式2:一個(gè)頭文件

在ISE開(kāi)發(fā)環(huán)境下,最后一個(gè)版本14.7,可以在以下安裝路徑的文件中獲取到一些舊型號(hào)的IDCODE:

安裝路徑\Xilinx\14.7\ISE_DS\EDK\sw\XilinxProcessorIPLib\drivers\hwicap_v8_01_a\src\xhwicap_l.h

圖片


在Vivado開(kāi)發(fā)環(huán)境下的xhwicap_l.h文件中,刪除了IDCODE。

安裝路徑\Vivado\SDK\2018.3\data\embeddedsw\XilinxProcessorIPLib\drivers\hwicap_v11_0\src\xhwicap_l.h

方式3:BSDL文件

對(duì)于ZYNQ-7000系列,一只沒(méi)有找到IDCODE相關(guān)的說(shuō)明文檔,終極解決辦法就是直接從BSDL邊界掃描文件中查找,關(guān)于邊界掃描,這是一個(gè)非常有意思的JTAG技巧,我們后面再介紹。只要有了FPGA芯片型號(hào)對(duì)應(yīng)的BSDL文件,就可以獲取到IDCODE,而且BSDL文件在安裝ISE或安裝Vivado時(shí),就會(huì)保存在安裝路徑下。

以查找ZYNQ-7000系列XC7Z100的IDCODE為例,ISE開(kāi)發(fā)環(huán)境,BSDL文件位于:

D:\Program\Xilinx\14.7\ISE_DS\ISE\zynq\data\xc7z100*.bsd

Vivado開(kāi)發(fā)環(huán)境,BSDL文件位于:

D:\Program\Xilinx\Vivado\SDK\2018.3\data\parts\xilinx\zynq\public\bsdl\xc7z100*.bsd

D:\Program\Xilinx\Vivado\Vivado\2018.3\data\parts\xilinx\zynq\public\bsdl\xc7z100*.bsd

所謂的BSDL文件,其實(shí)就是一個(gè)VHDL文件,我們以文本方式打開(kāi),直接搜索關(guān)鍵字IDCODE_REGISTER,會(huì)定位到如下位置:

圖片


二進(jìn)制合并轉(zhuǎn)換之后,就得到了我們想要的IDCODE:

attribute IDCODE_REGISTER of XC7Z100 : entity is
    'XXXX' &    -- version
    '0011011' & -- family
    '100110110' &   -- array size
    '00001001001' & -- manufacturer
    '1';        -- required by 1149.1


--二進(jìn)制合并處理后
attribute IDCODE_REGISTER of XC7Z100 : entity is
    '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

https://bsdl.info/index.htm

理論上任何一個(gè)支持JTAG的芯片型號(hào),都會(huì)有一個(gè)IDCODE用來(lái)作為唯一標(biāo)識(shí)。
直接輸入想要查找的芯片型號(hào):

圖片


點(diǎn)開(kāi)對(duì)應(yīng)的BSDL文件:

圖片


可以看到IDCODE為0x03736093。

Microchip A3P125 FPGA芯片的IDCODE

圖片


Altera EP4CE40F29 FPGA芯片IDCODE

圖片

Xilinx FPGA部分型號(hào)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

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多