FPGA開發過程中,能夠方便的觀察模塊中信號的時序變化對邏輯的開發有很重要的意義。在quartus中的signal
tap
就是能夠方便的抓取模塊中的信號,這類似與ISE的chipscope,但是在vivado中就沒有了,必須內部例化ila,抓取的數據也不太方便,所以個人對vivado的使用還是感覺不太方便。言歸正傳,這里將詳細講解signal
tap的使用,我使用的quartus版本為10.1.
1.創建并設置STP文件
STP是signal tap的縮寫,在quartus界面中點擊file,選中new,彈出下面框:

選中SignalTap II
Logic A nalyzer File點擊OK,彈出下面框:

2.在STP文件中添加實例(instance)
添加方法:在上圖中的instance窗口中點擊右鍵,選擇create instance。
默認情況下,STP中有一個默認名為auto_signaltap_0的instance,雙擊auto_signaltap_0可以修改為自己定義的名字。
3.在instance中添加觀測節點(nodes)
點擊Edit,選中Add Nodes...(此處有一個需要注意的:上面的步驟必須在打開一個工程后操作,否則Edit中的Add
Nodes...將會是灰色,無法選中) ,然后彈出:

這個時候就需要添加你所需要抓取的信號。Look
in中選擇抓取的信號所在的模塊,Filter修改為:
SignalTap
II:pre-synthesis.(這兩步非常重要,否則的話在Nodes
Found中會提示non-mathcad),在Named中輸入所需抓取的信號名(貌似必須是全名),點擊List,在Nodes
Found中就會出現該信號,雙擊該信號,該信號就會出現在Selected
Nodes里面。同樣在Named中輸入另外需要抓取的信號,使之出現在Selected
Nodes里面。添加完所有的信號后,點擊OK。

4.為instance添加采樣時鐘
點擊軟件中下部的Setup按鍵,在右邊會出現:

點擊上圖的clk旁邊的[...]將會彈出與上面一樣的Noder
Finder窗口,選擇好合適的時鐘信號。然后設置一些基本的參數:
采樣深度,Sample depth
個人建議選大些,但是又不能超過FPGA資源,不然在后面的編譯會報錯。
RAM類型,這個默認為auto,不用管
觸發,Trigger 這個在初期使用signal
tap就選擇默認,后期可以根據具體信號波形來設置。
5.重新編譯添加了signal tap工程
在quartus10.1中一般在上面的步驟都做好后,關閉signal
tap窗口一直點擊OK就行。為了確保工程中的確添加了我們剛剛新建的stp文件,可以打開工程,選中Entity中的頂層,右鍵點擊settings,就會出現:

選中左邊的SignalTap II Logic
Analyzer,在右邊[...]選中剛剛新建的stp文件。
6.編譯和下載代碼
按照一般的方法,編譯和生成sof文件。下載代碼需要在SignalTap
II 中下載,雙擊stp文件,就會彈出:

給板子上電,并且連上JTAG線(有的稱為仿真器)。界面就會變成:

點擊右上角的SOF Manager后面的[...],選擇好剛剛生成的SOF文件,然后點擊program
device。
7.抓取數據,觀測波形
在下載好sof后,點擊Instance Manager旁邊的run
analyzer(也就是紅色的三角標志),就會彈出:

界面上就是抓取出來的信號波形,此時完成了signal
tap的基本操作。
理論分析:
1.SignalTap II 的優缺點(摘自《altera
FPGA/CPLD設計(基礎篇)》(第2版))
優點:
1.不占用額外的I/O管腳
2.不占用PCB上的空間
3.不破壞信號的完整性
4.相對傳統邏輯分析儀設備,SignalTap II
免費試用。
缺點:SignalTap II
中抓取數據的深度取決于RAM剩余大小,特別是在低端的FPGA中,特別是學習板中,由于RAM太小,抓取的數據太少,SignalTap
II 基本對設計沒有幫助。
2.觸發位置的選擇
以前似乎有四種選擇,現在好像只能找到三種:
1.Pre trigger
position
:采樣的數據12%為觸發前,88%為觸發后
2.Center trigger position
:采樣的數據50%為觸發前,50%為觸發后
3.Post
trigger
position
:采樣的數據88%為觸發前,12%為觸發后