1.5SIGNALTAP調(diào)試工具-明德?lián)P至簡設(shè)計(jì)法原理與應(yīng)用
需要看對應(yīng)的視頻,請點(diǎn)擊視頻編號(hào):001300000078
2、本章主要介紹一個(gè)實(shí)時(shí)的信號(hào)分析工具獲取FPGA內(nèi)部的實(shí)時(shí)信號(hào)從而進(jìn)行調(diào)試分析——SignalTap的工作原理、使用流程,并且通過3個(gè)案例又對SignalTap的使用步驟進(jìn)行了詳細(xì)說明。
3、這是ALTERA的文檔
第五章?SIGNALTAP調(diào)試工具
<p "="" style="padding: 0px;bottom: 0px;list-style: none">SignalTap是由Altera公司開發(fā)的一個(gè)在線、片內(nèi)信號(hào)分析的工具,為設(shè)計(jì)開發(fā)者驗(yàn)證所用。
我們什么時(shí)候會(huì)用到signalTap呢?當(dāng)代碼經(jīng)過仿真沒有問題,但加載到FPGA電路板后,發(fā)現(xiàn)功能不正確時(shí),我們就可以用signalTap工具進(jìn)行分析, 它的作用就類似于一個(gè)數(shù)字邏輯分析儀。利用signaltap基本上可以代替數(shù)字邏輯分析儀了 ,它是quartus里最常用的工具,同學(xué)們必須熟練使用這個(gè)工具。
1?軟件介紹和原理
需要看對應(yīng)的視頻,請點(diǎn)擊視頻編號(hào):001300000079
在使用signalTap前,我們先理解一下SignalTap的原理, 這樣就助于理解每個(gè)參數(shù)。

圖?77
如圖為SignalTap II的基本工作原理,通過此圖也能很好的理解觸發(fā)條件、采樣時(shí)鐘、采樣深度等的概念(概念 及相關(guān)設(shè)置見第三節(jié))及其之間的關(guān)系。
需要觀察分析的信號(hào),我們稱之為“被測信號(hào)”(可以有 多個(gè)),SignalTap II的基本工作過程如下:以被測信號(hào)為對象,根據(jù)需要設(shè)置合理的觸發(fā)條件,在觸發(fā)條件(如圖中的被測信號(hào)下降沿)滿足時(shí)的前后一段時(shí)間,每個(gè)采樣時(shí)鐘的上升沿都會(huì)對被測信號(hào)進(jìn)行一次采集,并將采集的信號(hào)值存儲(chǔ)在內(nèi)部的RAM中。我們可以指定觸發(fā)條件前后采多少個(gè)樣點(diǎn),如果RAM比較大,那么可以保存的數(shù)據(jù)就比較多,如果RAM比較小,那么保存的數(shù)據(jù)自然少,RAM大小決定了觀察數(shù)據(jù)的多少。
最后SignalTap將讀出RAM中的數(shù)據(jù),并逐個(gè)在顯示器中顯示出來(因此SignalTap看到的都是理想的,沒有毛刺的信號(hào)),達(dá)到了我們對信號(hào)進(jìn)行在線調(diào)試分析的目的。
2?軟件界面
需要看對應(yīng)的視頻,請點(diǎn)擊視頻編號(hào):001300000080
打開Quartus后,在菜單欄中,選擇“Tools”- >”SignalTal II Logic Analyzer”,就可以打開SignalTap工具。如下圖:

圖?78

圖?79
◆?1—4為基本的軟硬件配置。
1下載線選擇;2硬件檢測(識(shí)別相關(guān)的FPGA設(shè)備);3工程配置文件選擇(sof文件);4加載sof文件(1-3均完成后即可加載文件)。
◆?5—7為采樣設(shè)置。
5選擇采樣時(shí)鐘,采樣時(shí)鐘要根據(jù)具體需要進(jìn)行設(shè)置?,?可以為模塊的工作時(shí)鐘,也可以為內(nèi)部信號(hào);
◆?6為采樣深度設(shè)置,采樣深度并非越大越好,要根據(jù)分析需求進(jìn)行合理設(shè)置;
◆?7為觸發(fā)位置選擇,包括前段觸發(fā)、中間觸發(fā)、后端觸發(fā)三種方式,以觸發(fā)點(diǎn)為參考,觸發(fā)位置不同,我們能得到不同時(shí)間段的信號(hào)值。
◆?8—9為信號(hào)設(shè)置,包括添加信號(hào),設(shè)置信號(hào)觸發(fā)條件等。在8中空白處雙擊即可添加信號(hào)界面,根據(jù)需要添加工程中的相應(yīng)信號(hào),添加信號(hào)后即可設(shè)置其觸發(fā)條件。
◆?10為資源使用情況指示,如果資源多于FPGA本身的資源,綜合時(shí)會(huì)報(bào)錯(cuò),無法進(jìn)行分析。
◆?11為運(yùn)行操作按鈕,開始運(yùn)行后,待觸發(fā)條件滿足后會(huì)顯示波形。
3?上板例程
a、選擇下載線、fpga芯片型號(hào)、工程配置文件

圖?80
b、設(shè)置采樣時(shí)鐘、采樣深度

圖?81
這里我們選擇內(nèi)部pll的輸出信號(hào)c1作為采樣時(shí)鐘,注意采樣時(shí)鐘不一定是工程里的時(shí)鐘,內(nèi)部任何信號(hào)都可以是采樣時(shí)鐘。
這里我們將采樣深度設(shè)置為128個(gè)。也就是我們總共能看到128采樣點(diǎn)的數(shù)據(jù)。
c、選擇采樣信號(hào)
在setup窗口中,雙擊空白地方,彈出如下界面

圖?82
紅色框是選擇哪個(gè)階段的信號(hào),例如是綜合前、綜合后等 ,因?yàn)榫C合時(shí)會(huì)優(yōu)化,有些信號(hào)可能會(huì)找不到。我們一般選擇pre-synthesis或Design Entry(all name)。
在Nodes Found選擇我們要觀察的信號(hào),添加到右邊框即可 。
本例我們這里選擇key_col和rst_n信號(hào)來觀察。

圖?83
d、設(shè)置觸發(fā)條件
選擇好信號(hào)后,即可進(jìn)行觸發(fā)條件的設(shè)置。
觀察trigger Conditions一列,key_col的默認(rèn)值為xh(總線型信號(hào)的don’t care?),rst_n的默認(rèn)值為don’t care。在trigger Conditions一列中,右擊rst_n所在的行,將出現(xiàn)6種觸發(fā)條件供選擇。

圖?84
6種觸發(fā)條件的含義如下:

假設(shè)取上升沿觸發(fā),并對key_col也做觸發(fā)條件的設(shè)置如下:

圖?85
此時(shí)的觸發(fā)條件含義為:當(dāng)rst_n為上升沿并且?key_col全為高時(shí)觸發(fā)。注意,這里多觸發(fā)條件之間默認(rèn)的是“與 ”的關(guān)系,很多人會(huì)誤認(rèn)為是“或”的關(guān)系。
e、綜合并下載,點(diǎn)擊“Run Analysis”按鈕,觀看結(jié)果
如果觸發(fā)條件成立,則可在Data窗口觀察到采樣波形 ,此處是某一工程的采樣結(jié)果,可以看到,其與modelsim波形是很相似的。
點(diǎn)擊波形,則可以放大波形觀看;右擊波形,則是縮小波形。

圖?86
4?案例說明
需要看對應(yīng)的視頻,請點(diǎn)擊視頻編號(hào):001300000081
案例?1:SIGNALTAP的采樣時(shí)鐘,不一定是時(shí)鐘信號(hào),可以是其他任意的信號(hào)??傊?,SIGNALTAP會(huì)在采樣時(shí)鐘的上升沿去捕捉信號(hào)的值,如果沒有上升沿,則會(huì)一直等待。例如下圖,就是以按鍵信號(hào)key為采樣時(shí)鐘。在key由0變1時(shí),就會(huì)采樣一個(gè)值。
案例?2:我們可以改變采樣的深度,以便觀察到信號(hào)更長時(shí)刻的值。下面的深度設(shè)置成128,這意味著,一共可以看到128個(gè)點(diǎn)的值。如果不夠,可以設(shè)置成更大。但注意的是,SIGNALTAP需要RAM來保存采樣的數(shù)據(jù),所以采樣深度越大,需要的RAM越大,這需要占用FPGA的資源,而有些FPGA是有限的。如果不支持這么大的RAM,在編譯時(shí)會(huì)提示錯(cuò)誤的。

圖?87
案例3:通過設(shè)置segmented,可以檢查滿足觸發(fā)條件的次數(shù)。例如,發(fā)現(xiàn)按鍵有時(shí)候失靈的情況,為了定位此問題,我想檢查按鍵按下的次數(shù),是否與捕捉到信號(hào)次數(shù)一致。其主要設(shè)置為:
1.?把segmented設(shè)置為32;
2.?把捕捉到信號(hào)key_vld拉到顯示窗口,該信 號(hào)為1表示捕捉到一個(gè)按鍵。
3.?設(shè)置觸發(fā)條件為:key_vld的上升沿;
4.?按下run鍵,等待觸發(fā)條件滿足;
5.?按下按鍵4次。
6.?按停止捕捉鍵。
如果此時(shí)?SIGNALTAP出現(xiàn)5個(gè)窗口,其中前4個(gè)表示條件滿足捕捉到的窗口,則表示近下按鍵的次數(shù),與捕捉到的次數(shù)一致。否則,就是有錯(cuò)誤。
案例?4:當(dāng)添加信號(hào)后,該信號(hào)顯示紅色,如下圖所示。表示該信號(hào)的捕捉將會(huì)有問題。

圖?88
出現(xiàn)該問題的可能性原因有:
1.?該信號(hào)在電路綜合時(shí)被優(yōu)化。
a)?該信號(hào)雖然產(chǎn)生了,但沒有被當(dāng)作條件使用,或 者不是輸出信號(hào)。說明該信號(hào)是多余的,所以綜合時(shí)把該信號(hào)優(yōu)化掉。
b)?如果認(rèn)為該信號(hào)是有用的,不應(yīng)該被優(yōu)化掉。那說明電路有BUG,需要你去定位。
2.?組合邏輯信號(hào)一般是捕捉不到的。解決方法:那就不看這個(gè)信號(hào),可以把產(chǎn)生這個(gè)信號(hào)的所有條件都抓出來,從而推敲結(jié)果是否正確。
案例?5:下面的觸發(fā)條件是:當(dāng)en下降沿,并且en_tmp有變化。注意,是采樣時(shí)鐘上升沿時(shí),同時(shí)兩個(gè)條件滿足才能觸發(fā)。

圖?89

圖?90
上面波形中,第5時(shí)鐘上升沿時(shí),看到en=1,en_tmp等于1,不滿足條件。而在第?6時(shí)鐘時(shí),發(fā)現(xiàn)en的下降沿(之前為1,現(xiàn)在為0),en_tmp的下降沿(之前為1,現(xiàn)在為0)。所以只有第?6時(shí)鐘才滿足觸發(fā)條件。