第五章 在線邏輯分析儀-SIGNALTAP
ps:仿真實在pc端進(jìn)行仿真,和fpga一點(diǎn)關(guān)系也沒有,而signaltap是直接反饋芯片的信號。
進(jìn)行 FPGA 開發(fā)的過程中,在邏輯代碼上板運(yùn)行前都會進(jìn)行仿真驗證,而 EDA 仿真工具(如 Modelsim 等)的使用更是可以可以讓工程師提早發(fā)現(xiàn)工程中出現(xiàn)的一些錯誤。但這并不代表經(jīng)過仿真工具驗證后的設(shè)計就能夠達(dá)到預(yù)期。事實上,在上板運(yùn)行時仍有可能遇到各種各樣的問題。使用仿真工具進(jìn)行驗證的時候所設(shè)計 Testbench 的激勵輸入有時不能囊括一切可能發(fā)生的情況,并且由于軟件仿真與實際硬件之間總是存在著細(xì)微的差別,諸如此類的原因?qū)е鹿こ處熢谏习暹\(yùn)行時仍會發(fā)現(xiàn)各種設(shè)計問題。而很多情況下,在 FPGA 實時運(yùn)行中需要查看某些信號,因此需要一個實時的信號分析工具獲取 FPGA 內(nèi)部的實時信號從而進(jìn)行調(diào)試分析——SignalTap II 應(yīng)運(yùn)而生。
SignalTap 是由 Altera 公司開發(fā)的一個在線、片內(nèi)信號分析的工具,為設(shè)計開發(fā)者驗證所用。其作用類似于一個數(shù)字邏輯分析儀,利用 signaltap 工具基本上可以代替數(shù)字邏輯分析儀。Signaltap 是Quartus 里最常用的工具,希望同學(xué)們可以熟練使用。
第1節(jié) 軟件原理
在使用 SignalTap 前先來理解一下 SignalTap 的原理,從而有助于理解各個參數(shù)。
如圖 1.5- 1 為 SignalTap II 的基本工作原理,通過此圖可以直觀的理解觸發(fā)條件、采樣時鐘、采樣深度等的概念(概念及相關(guān)設(shè)置見第三節(jié))及其之間的關(guān)系。
在調(diào)試過程中,某些需要觀察分析的信號被稱為“被測信號”,可以存在多個被測信號。
SignalTap II 的基本工作過程如下:以被測信號為對象,根據(jù)需要設(shè)置合理的觸發(fā)條件,在觸發(fā)條件(如圖中的被測信號下降沿)滿足時的前后一段時間,每個采樣時鐘的上升沿會對被測信號進(jìn)行一次采集,并將采集的信號值存儲在內(nèi)部的 RAM 中。工程師可以指定觸發(fā)條件前后采多少個樣點(diǎn),如果 RAM 比較大,則可以保存比較多的數(shù)據(jù)。反之,如果 RAM 比較小,那么保存的數(shù)據(jù)自然比較少,RAM 大小決定了觀察數(shù)據(jù)的多少。最后 SignalTap 將讀出RAM 中的數(shù)據(jù)并逐個在顯示器中顯示出來,因此 SignalTap 觀測到的都是理想的(這說明再出現(xiàn)一些特殊信號時候,你是檢測不出來的),沒有毛刺的信號,工程師可以在顯示器中觀測信號,從而達(dá)到對信號進(jìn)行在線調(diào)試分析的目的。
第2節(jié) 軟件界面
打開 Quartus 軟件,在菜單欄中,選擇 Tools>SignalTal II Logic Analyzer 后可以打開 SignalTap 工具。如下圖 1.5:
圖 1.5- 3 中將需要注明的地方進(jìn)行了標(biāo)記,接下來將對各處功能進(jìn)行詳細(xì)介紹:
圖 1.5- 3 中所標(biāo)識的 1—4 為基本的軟硬件配置:
1 為下載線選擇;
2 為硬件檢測(識別相關(guān)的 FPGA 設(shè)備);
3 為工程配置文件選擇(sof 文件);
4 為加載 sof 文件(1-3 均完成后即可加載文件)。
圖示 5—7 為采樣設(shè)置:
5 為選擇采樣時鐘,采樣時鐘要根據(jù)具體需要進(jìn)行設(shè)置, 可以為模塊的工作時鐘,也可以為內(nèi)部信號;
6 為采樣深度設(shè)置,采樣深度并非越大越好,要根據(jù)分析需求進(jìn)行合理設(shè)置;
7 為觸發(fā)位置選擇,包括前段觸發(fā)、中間觸發(fā)、后端觸發(fā)三種方式,以觸發(fā)點(diǎn)為參考,根據(jù)觸發(fā)位置的不同能得到不同時間段的信號值。
圖示左邊區(qū)域 8—9 為信號設(shè)置,包括添加信號,設(shè)置信號觸發(fā)條件等。在 8 中空白處雙擊即可添加信號界面,根據(jù)需要添加工程中的相應(yīng)信號,添加信號后即可設(shè)置其觸發(fā)條件。
圖中標(biāo)識的 10 為資源使用情況指示,如果資源多于 FPGA 本身的資源,綜合時會出現(xiàn)報錯從而無法進(jìn)行分析。
最上面的 11 為運(yùn)行操作按鈕,開始運(yùn)行后,待觸發(fā)條件滿足后會顯示波形。
第3節(jié) 使用流程
首先需要選擇下載線方式、FPGA 芯片型號、工程配置文件,如下圖 1.5- 4 所示:
隨后設(shè)置采樣時鐘、采樣深度以及采樣信號。
圖 1.5- 5 為采樣時鐘及采樣深度的設(shè)置。此處選擇 FPGA 內(nèi)部 pll 鎖相環(huán)輸出的信號 c1 作為采樣時鐘。這里需要注意的是,采樣時鐘不一定是工程里的時鐘,內(nèi)部任何信號都是可以作為采樣時鐘的。這里將采樣深度設(shè)置為 128,即共計可以觀察到到 128 個采樣點(diǎn)的數(shù)據(jù)。在 setup 窗口中雙擊空白地方,彈出如下圖 1.5- 6所示界面。
圖 1.5- 6 中紅色框表示的是選擇哪一階段的信號,例如選取的是綜合前或是綜合后的信號等。因為綜合時軟件會自動進(jìn)行優(yōu)化,有些信號可能會找不到。一般會選擇 pre-synthesis 或 Design Entry(all name)模式,在 Nodes Found 選擇要觀察的信號,將其添加到右邊框中即可。
本例中選擇 key_col 和 rst_n 信號來進(jìn)行觀察,如圖 1.5-7所示:
采樣信號選擇好后即可進(jìn)行觸發(fā)條件的設(shè)置。觀察 trigger Conditions 一列,key_col 的默認(rèn)值為 xh(總線型信號的 don’t care),rst_n 的默認(rèn)值為 don’t care。在 trigger Conditions 一列中右擊 rst_n 所在的行,將會出現(xiàn) 6 種觸發(fā)條件供工程師選擇。
圖 1.5- 8 中 6 種觸發(fā)條件的含義如下:
Don’t Care:表示不關(guān)心,也即任意,此信號的值不影響觸發(fā)條件;
Low :低電平觸發(fā);
Falling Edge:下降沿觸發(fā);
Rising Edge:上升沿觸發(fā);
High:高電平觸發(fā);
Either Edge:雙沿觸發(fā),即有變化時觸發(fā)。
此處可以假定為上升沿觸發(fā),對 key_col 也進(jìn)行觸發(fā)條件的設(shè)置,具體設(shè)置如下所示。圖 1.5- 9 中設(shè)置的觸發(fā)條件含義為:當(dāng) rst_n 為上升沿并且 key_col 全為高(Fh)時觸發(fā)。注意,這里多觸發(fā)條件之間默認(rèn)為“與”的關(guān)系,可能會被誤認(rèn)為是“或”的關(guān)系。最后進(jìn)行綜合并下載,點(diǎn)擊“Run Analysis”按鈕后查看結(jié)果。
如果觸發(fā)條件成立,則可在 Data 窗口觀察到采樣波形,圖 1.5- 10 是某一工程的采樣結(jié)果,可以看到其采樣波形與 modelsim 波形相似。點(diǎn)擊波形后可以放大波形進(jìn)行觀看,右擊波形則為縮小波形。
第4節(jié) 案例說明
本節(jié)中將采用幾個案例來對 SignalTap 的使用步驟進(jìn)行詳細(xì)的說明。
案例 1:SignalTap 的采樣時鐘不一定是時鐘信號,也可以是其他任意的信號。SignalTap 會在采樣時鐘的上升沿對信號值進(jìn)行捕捉,如果沒有時鐘上升沿則 SignalTap 一直處于等待狀態(tài)。
案例 2:觀測時可以改變采樣的深度以便觀察到信號更長時刻的值。圖 1.5- 11 中設(shè)置的深度為128,這意味著一共可以觀察到 128 個點(diǎn)的值。如果這一觀察量不夠則可以將其設(shè)置成更大的數(shù)值。
但需要注意的是,SignalTap 需要使用到 FPGA 內(nèi)部的 RAM 資源來保存采樣的數(shù)據(jù),所以采樣深度越大,需要使用的的 RAM 就越大,與此同時占用的 FPGA 資源也就更多。然而 FPGA 的資源是有限的,當(dāng) FPGA 的內(nèi)部資源不支持設(shè)置采樣點(diǎn)數(shù)所占用的 RAM 資源數(shù)時,在編譯時會出現(xiàn)報錯提示。
案例 3:通過設(shè)置 segmented 參數(shù)可以檢查滿足觸發(fā)條件的次數(shù)。例如,發(fā)現(xiàn)按鍵存在失靈情況時,為了定位此問題需要檢查按鍵按下的次數(shù),判斷其是否與捕捉到信號次數(shù)一致。
該操作的主要設(shè)置如下:
- 將 segmented 設(shè)置為 32;
- 將捕捉到信號 key_vld 拉到顯示窗口,該信號為 1 表示捕捉到一個按鍵。
- 設(shè)置觸發(fā)條件為:key_vld 的上升沿;
- 按下 run 鍵,等待觸發(fā)條件滿足;
- 按下按鍵 4 次。
- 按停止捕捉鍵。
如果此時 SignalTap 波形界面出現(xiàn) 5 個窗口,其中前 4 個表示條件滿足捕捉到 key_vld 的上升沿觸發(fā)條件的窗口,則表示按下按鍵的次數(shù)與捕捉到的次數(shù)一致。否則代表發(fā)生錯誤,按鍵存在問題。
案例 4:添加信號后,如界面中該信號顯示為紅色,如圖 1.5- 12 所示,則表示該信號的捕捉存在問題。
采樣信號為紅色出現(xiàn)該問題的可能性原因有:
-
該信號在電路綜合時被優(yōu)化。
a) 雖然該信號已經(jīng)產(chǎn)生,但其沒有被視為條件進(jìn)行調(diào)用,或者不是輸出信號。此時系統(tǒng)認(rèn)為信號是多余的,因此在綜合時會將該信號優(yōu)化掉。
b) 如果該信號是有用信號,不應(yīng)該被優(yōu)化掉。則說明電路有 BUG,需要工程師去定位錯誤。 -
組合邏輯信號一般是捕捉不到的。其解決方法為忽略該信號,可以將產(chǎn)生該信號的所有條件都調(diào)用出來,從而推敲結(jié)果是否正確。
案例 5:圖 1.5- 13 中包含的一個案例觸發(fā)條件是:當(dāng) en 為下降沿且 en_tmp 發(fā)生變化。注意,只有在采樣時鐘上升沿時捕捉到兩個條件同時滿足時才會進(jìn)行觸發(fā)。
圖 1.5- 14 所示波形中,在第 5 時鐘上升沿時觀察到 en 等于 1,en_tmp 等于 1,其不滿足條件。而在第 6 時鐘時捕獲到 en 的下降沿(之前為 1,現(xiàn)在為 0)與 en_tmp 的下降沿(之前為 1,現(xiàn)在為0),可以看出第 6 個時鐘滿足觸發(fā)條件。文章來源:http://www.zghlxwxcb.cn/news/detail-437716.html
在線邏輯分析儀是每個 FPGA 學(xué)習(xí)開發(fā)者必須熟練掌握的基本工具,是使用 FPGA 的必備能力之一。針對 SignalTap 的使用方法,下面鏈接中提供了 6 個訓(xùn)練工程以方便練習(xí)掌握這一工具。
工程訓(xùn)練網(wǎng)址:請點(diǎn)擊文章來源地址http://www.zghlxwxcb.cn/news/detail-437716.html
第5節(jié) 6個工程案例
5.1 案例1
5.2 案例2
5.3 案例3
5.4 案例4
5.5 案例5
5.6 案例6
到了這里,關(guān)于第五章 在線邏輯分析儀-SIGNALTAP的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!