本文轉(zhuǎn)載自:Xilinx技術社區(qū)微信公眾號
BSCANE2 模塊是 FPGA 中的一個特殊硬核模塊,是聯(lián)通外部 JTAG 管腳和 FPGA 內(nèi)部用戶邏輯的一個接口。BSCANE2 的定義和端口描述,可以在對應器件的 Libraries Guide中找到。
比如7系列的定義可以參考 UG768,第4章。
其基本功能介紹,請參考 UG470, 第10章。
在 FPGA 中,JTAG 管腳除了負責原始的芯片測試功能 (IEEE1149.1),還主要用于下載和調(diào)試,比如ILA就是通過 JTAG 接口捕捉內(nèi)部邏輯信號,送回 ISE 或 Vivado,并在界面上直接顯示和控制。BSCANE2 其實就是實現(xiàn)這一內(nèi)外溝通的關鍵核心模塊,這部分實現(xiàn)對于用戶來說是透明的。
那么如何利用BSCANE2 模塊,構建用戶自己的專用內(nèi)部掃描鏈/功能鏈呢?
本文提供一個基于7系列的 ISE 版本的參考設計。通過 FPGA 的 JTAG 管腳,用戶可以直接控制內(nèi)部的邏輯實現(xiàn)自定義的功能。
UltraScale/UltraScale+ 的 BSCANE2 模塊用法和7系列基本相同。
設計說明:
這是一個關于如何使用 BSCANE2 模塊的簡單實例?;赬ilinx的開發(fā)板 KC705,該設計例化了一個 BSCANE2 模塊,由 USER1 命令控制。通過 JTAG 接口發(fā)送標準和自定義的指令,可以實現(xiàn):
1. 從運行的設計中讀取32位的用戶ID;
2. 從 JTAG 接口輸入控制 LED燈顯示的字符串;
3. 從 JTAG 口向 BRAM 寫入32位數(shù)據(jù);
4. 從 BRAM 讀出32位數(shù)據(jù);
5. 向 BRAM 中一次寫入1024 bits(可用于 EDK 設計中 bootloader 的修改,升級等)。
指令定義:
該設計的 shift register 定位為33位。其中第32位(從0開始計數(shù))用于區(qū)分JTAG發(fā)送的是指令還是數(shù)據(jù)。Bit[32] 為1,則送入的為指令;Bit[32]為0,則送入的為指令對應的數(shù)據(jù)。其他的 JTAG 寄存器均為 32 位。
33'h100000241 用戶ID讀??;
33'h100000242 LED 燈顯示控制;
33'h100000243?向 BRAM 寫入32位數(shù)據(jù);
33'h100000244?從 BRAM 讀取32位數(shù)據(jù);
33'h100000245 向 BRAM 寫入1024位數(shù)據(jù)。
設計運行實現(xiàn):
SVF文件可以以可讀形式清楚的描述、記錄 JTAG 鏈的動作,并可以在 ISE/iMPACT或Vivado/HW Manager 中直接執(zhí)行。本設計使用 SVF 來實現(xiàn)以下功能:
1. 發(fā)送 USER1指令‘02’,來選擇和使能用戶自定義的 JTAG 鏈;
2. 發(fā)送指令‘100000241’ 讀取用戶定義ID;
3. 發(fā)送指令‘100000242’獲取一個二進制碼,并送入7位 LED 燈顯示;
4. 使用指令‘100000243’向BRAM中每次寫入一個32位數(shù)據(jù);然后使用指令‘100000244’將寫入的數(shù)據(jù)逐個讀出來。
5. 使用指令‘100000245’向 BRAM 寫入1024位數(shù)據(jù);如果需要寫入的數(shù)據(jù)大于1024,則多次執(zhí)行該指令即可。
審核編輯:何安
-
模塊
+關注
關注
7文章
2659瀏覽量
47296
發(fā)布評論請先 登錄
相關推薦
評論