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