本文對如何在一個工程里例化和使用多個BSCANE2模塊做一個簡單說明。
BSCANE2模塊是FPGA的一種特殊硬核模塊,用于聯通外部JTAG引腳和內部邏輯,構建FPGA內部的用戶掃描鏈。關于BSCANE2的用法, 有一個基于7系列器件的參考設計:
https://support.xilinx.com/s/article/1181110?language=zh_CN
在UltraScale/UltraScale+器件上, BSCANE2的用法類似。
UG570里面提到,UltraScale/UltraScale+的BSCANE2模塊多達4個,可以在設計中全部例化,并用JTAG_CHAIN屬性加以區分。之后,就可以用使用JTAG的指令USER1到USER4來對應操作了。
本文對如何在一個工程里例化和使用多個BSCANE2模塊做一個簡單說明。工程基于Xilinx的KCU105開發板,同時例化兩個BSCANE2模塊,并使用ILA去觀測兩個模塊的信號。由于ILA的實現同樣需要借助一個BSCANE2,由Vivado在綜合后自動插入設計,所以其實是使用了全部四個中的三個BSCANE2。
工程文件請點擊閱讀原文查看并下載。
這個設計簡單利用KCU105板上4盞User LED燈GPIO_LED_2/3/4/5來展示一個counter最低4位的結果。BSCANE2_inst2對應User Scan Chain 2, BSCANE3_inst3對應User Scan Chain3。通過JTAG指令發送USERx指令,可以觀測到對應的sel信號會置高有效。當選中User chain 2時,sel2有效,counter收到工作信號0101, counter隨時鐘信號遞增;當選中User Chain 3時,counter收到工作信號1010, counter值遞減操作。
調試步驟:
1. 打開Vivado,按照常規流程下載好bit和ltx文件
2. 由于調試需要進入JTAG模式,先關閉上個步驟正常/自動打開的target, 但此時FPGA已經處于工作狀態(不要掉電),Tcl console輸入:close_hw_target
3. 以JTAG調試的方式重新打開鏈:
open_hw_target -jtag_mode 1
4. 運行:
refresh_hw_device [lindex [get_hw_devices xcku040_0] 0]
看到ILA的界面。我們主要是對比觀測可以起到控制作用的sel2和sel3,在Trigger中,將其設為B (Both Transitions) 進行捕捉:
進入捕捉等候狀態:
5. 從BSDL文件中,查詢到KU040對應的USER指令:
"USER2 (000011)," & -- Not available until after configuration
"USER3 (100010)," & -- Not available until after configuration
6. 選擇USER Chain 2和Chain 3的指令分別如下;依次輸入,可以看到LED燈增減方向會有變化。
scan_ir_hw_jtag 6 -tdi 03
scan_ir_hw_jtag 6 -tdi 22
7. 對應查看ILA波形,可以看到第一條指令USER2執行時,捕捉到的sel2:
需要注意的是,兩條chain對應的JTAG信號都會產生toggle動作,所以實際工程中,需要依靠不同的sel信號來區分并做對應的控制。
-
FPGA
+關注
關注
1620文章
21510瀏覽量
598875 -
模塊
+關注
關注
7文章
2612瀏覽量
47006 -
Xilinx
+關注
關注
70文章
2136瀏覽量
120373
原文標題:開發者分享|如何在設計中例化和使用多個 BSCANE2 模塊
文章出處:【微信號:gh_2d1c7e2d540e,微信公眾號:XILINX開發者社區】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論