網(wǎng)站鏈接做投票找個(gè)免費(fèi)的網(wǎng)站
一、前言
在xilinx fpga的degug過程中,經(jīng)常出現(xiàn)由于時(shí)鐘不對而導(dǎo)致的觀測波形失敗,要想能夠解決這些問題需要了解其debug的組成環(huán)境以及之間的數(shù)據(jù)流。本文主要介紹debug過程中需要的時(shí)鐘及各時(shí)鐘之間的關(guān)系。
二、debug相關(guān)時(shí)鐘
Vivado 硬件管理器使用 JTAG 接口與 Vivado Debug 內(nèi)核進(jìn)行通信,Debug Hub在 FPGA 器件的 JTAG 邊界掃描 (BSCAN) 接口和 Vivado Debug 內(nèi)核之間提供接口。因此,要想完成完整的數(shù)據(jù)流需要了解三個(gè)時(shí)鐘,即JTAG時(shí)鐘、Debug Hub時(shí)鐘和Debug Core時(shí)鐘。
2.1 JTAG時(shí)鐘
該時(shí)鐘同步JTAG邊界掃描(BSCAN)接口的內(nèi)部狀態(tài)機(jī)操作。在連接到目標(biāo)器件時(shí),通常會在 Vivado 硬件管理器中選擇 JTAG 時(shí)鐘頻率。
可以使用 Open New Hardware Target 向?qū)?#xff08;使用時(shí)需要先關(guān)閉hardware mannger)或以下 Tcl 命令來修改 JTAG 頻率:
set_property PARAM.FREQUENCY 250000 [get_hw_targets*/xilinx_tcf/Digilent/210203327962A]
使用要求:如果設(shè)計(jì)包含調(diào)試內(nèi)核,需要確保JTAG時(shí)鐘比debug hub時(shí)鐘慢2.5倍。
2.2?Debug Hub時(shí)鐘
Vivado Debug Hub 內(nèi)核,在 FPGA 器件的 JTAG 邊界掃描 (BSCAN) 接口和 Vivado Debug 內(nèi)核之間提供接口。如果 Vivado IDE 在設(shè)計(jì)實(shí)現(xiàn)(implementation)步驟中檢測到調(diào)試內(nèi)核,則會自動(dòng)插入 Debug Hub 內(nèi)核。Vivado IDE 在設(shè)計(jì)實(shí)現(xiàn)步驟中自動(dòng)選擇驅(qū)動(dòng) Debug Hub 內(nèi)核的時(shí)鐘。
Xilinx 推薦 debug hub時(shí)鐘頻率在 100MHz 左右或更低,因?yàn)?JTAG 時(shí)鐘速度不需要特別高的頻率。
如果需要改變debug hub時(shí)鐘頻率可以在設(shè)計(jì)編譯后實(shí)現(xiàn)前通過TCL指令更改:
connect_debug_port dbg_hub/clk [get_nets <clock_net_name>]
也可以在設(shè)計(jì)編譯后實(shí)現(xiàn)前通過TCL命令將debug hub的時(shí)鐘縮減到100M(對于具有非常高速度時(shí)鐘的設(shè)計(jì),建議這樣做):
set_property C_CLK_INPUT_FREQ_HZ 200000000 [get_debug_cores dbg_hub]
set_property C_ENABLE_CLK_DIVIDER true [get_debug_cores dbg_hub]
這兩條命令允許在debug hub內(nèi)核中包含基于MMCM的時(shí)鐘分頻器,以實(shí)現(xiàn)100 MHz的時(shí)鐘頻率。
2.3?Debug Core時(shí)鐘
Vivado IP 目錄中提供的所有調(diào)試內(nèi)核都需要一個(gè)時(shí)鐘,以確保與被監(jiān)控的輸入信號或由調(diào)試內(nèi)核驅(qū)動(dòng)的任何輸出信號同步。在內(nèi)核發(fā)現(xiàn)和調(diào)試測量階段,需要時(shí)鐘是自由運(yùn)行和穩(wěn)定的。此外,時(shí)鐘還應(yīng)與被監(jiān)控或驅(qū)動(dòng)的信號同步。否則可能會導(dǎo)致周期性的數(shù)據(jù)錯(cuò)誤。
2.4 調(diào)試流程及時(shí)鐘要求
Debug Hub IP 在主機(jī)(通過支持串行接口的 BSCAN Primitive)和芯片上的調(diào)試內(nèi)核(通過支持并行接口的 XSDB 接口)之間架橋。BSCAN? Primitive 時(shí)鐘將數(shù)據(jù)串行移入和移出芯片到Debug Hub ?IP。Debug Hub IP 收集數(shù)據(jù),并使用Debug Hub時(shí)鐘將其發(fā)送到并行接口上的所有調(diào)試內(nèi)核,反之亦然。如果任何調(diào)試內(nèi)核時(shí)鐘不能自由運(yùn)行或不穩(wěn)定,則最終會得到損壞的數(shù)據(jù),從而導(dǎo)致vivado 輸出"Debug Cores not detected"消息。為了避免任何數(shù)據(jù)損壞,在調(diào)試內(nèi)核檢測過程中,必須確保JTAG時(shí)鐘和debug hub時(shí)鐘穩(wěn)定且自由運(yùn)行。
- Debug Hub時(shí)鐘必須是自由運(yùn)行且穩(wěn)定的。Xilinx 推薦時(shí)鐘由適當(dāng)約束且滿足時(shí)序的時(shí)鐘驅(qū)動(dòng)器驅(qū)動(dòng)。
- 如果時(shí)鐘由MMCM/PLL驅(qū)動(dòng),則在進(jìn)行任何調(diào)試內(nèi)核測量之前,需要確保MMCM/PLL鎖定信號為高電平。如果時(shí)鐘連接到Debug Hub或任何調(diào)試內(nèi)核,并且 MMCM/PLL LOCKED 信號在調(diào)試操作中間轉(zhuǎn)換為 0,則時(shí)鐘可能會出現(xiàn)明顯的抖動(dòng),從而可能會導(dǎo)致調(diào)試邏輯出現(xiàn)不可預(yù)測行為。
- 需要讓所有相關(guān)的時(shí)鐘自由運(yùn)行和穩(wěn)定,才可以正常進(jìn)行調(diào)試,獲取數(shù)據(jù)。
整個(gè)調(diào)試周期內(nèi)各個(gè)時(shí)鐘的要求如下表:
注:我自己在接手一個(gè)別人JESD204B建鏈不穩(wěn)定的工程時(shí),就發(fā)現(xiàn) Vivado 時(shí)常會報(bào)ILA?時(shí)鐘相關(guān)的錯(cuò)誤,其原因就是該工程將JESD204B的恢復(fù)時(shí)鐘作為了ILA核的時(shí)鐘,而建鏈不穩(wěn)定則恢復(fù)時(shí)鐘也不穩(wěn),因此不滿足上表中最后一行最后一列的 debug core clock應(yīng)是穩(wěn)定的要求,因此會導(dǎo)致vivado報(bào)錯(cuò)或者采不到波形。
三、相關(guān)報(bào)錯(cuò)
如果JTAG時(shí)鐘處于非活動(dòng)狀態(tài)或不可用,將無法連接到硬件目標(biāo)(hardware target)。
如果Debug Hub時(shí)鐘處于非活動(dòng)狀態(tài)或不可用,Vivado硬件管理器會發(fā)出以下錯(cuò)誤消息:
INFO: [Labtools 27-1434] Device xxx (JTAG device index = 0) is programmed
with a design that has no supported debug core(s) in it.WARNING: [Labtools 27-3123] The debug hub core was not detected at User Scan Chain 1
or 3.
Resolution:1. Make sure the clock connected to the debug hub (dbg_hub) core is a free
running clock and is active OR2. Manually launch hw_server with -e "set xsdb-user-bscan
<C_USER_SCAN_CHAIN scan_chain_number>" to detect the debug hub at User Scan Chain of 2 or 4. To determine the user scan chain setting, open the implemented design and use:
get_property C_USER_SCAN_CHAIN [get_debug_cores dbg_hub].
如果任何調(diào)試核心時(shí)鐘處于非活動(dòng)狀態(tài)或不可用,Vivado 硬件管理器會發(fā)出以下錯(cuò)誤消息:
INFO: [Labtools 27-2302] Device xxx (JTAG device index = 1) is programmed
with a design that has 1 ILA core(s).CRITICAL WARNING: [Labtools 27-1433] Device xxx (JTAG device index = 1) is
programmed with a design that has an unrecognizable debug core (slave type = 17) at
user chain = 1, index = 0.Resolution: 1) Ensure that the clock signal connected to the debug core and/or debug hub is clean and
free-running.2) Ensure that the clock connected to the debug core and/or debug hub meets all timing constraints.3) Ensure that the clock connected to debug core and/or debug hub is faster than the JTAG clock frequency.
?注:在實(shí)際過程中還會有其他debug相關(guān)報(bào)錯(cuò),不過大概率都是時(shí)鐘的問題,從報(bào)錯(cuò)提示和上面時(shí)鐘的要求入手解決即可。
四、參考資料
ug908:Vivado Design Suite User Guide Programming and Debugging