概述:
Signal Tap II全稱Signal Tap II Logic Analyzer,是第二代系統(tǒng)級調(diào)試工具,它集成在Quartus II軟件中,可以捕獲和顯示實時信號,是一款功能強大、極具實用性的FPGA片上調(diào)試工具軟件。
傳統(tǒng)的FPGA板級調(diào)試是由外接的邏輯分析儀連接到FPGA的控制引腳,將內(nèi)部信號引出至引腳I/O上,接著進行板級調(diào)試。
? ? ? ? note:這種方法缺點是,需要邏輯分析儀,且效率很低,經(jīng)常需要飛線,而且如果要測10個信號以上就非常龐雜,而且,考慮到100Mhz左右的信號完整性,不能用邏輯分析儀,要用高性能的示波器,測量的信號質(zhì)量也存在失真的情況。
Signal Tap II在線邏輯分析儀克服了以上所有缺點,將采樣邏輯電路編程后放在FPGA中,即,用FPGA資源來構(gòu)成了嵌入式邏輯分析儀。
Signal Tap II的工作示意圖如下:
????????可以看到,Signal Tap Instances將Design Logic中的部分信號引出并保存在FPGA的Buffer資源中暫時存儲,通過JTAG 接口讀出數(shù)據(jù)經(jīng)過燒錄器給Quartus顯示。
note:Signal Tap中被抓取信號的顯示的刷新速率受限于USB Blaser的通信速率。
如下圖為Signal Tap的開發(fā)流程。
操作:
1、打開Signal Tap Logic Analyzer
在Quartus軟件中打開待測工程,然后選擇Signal Tap Logic Analyzer,
在彈出的New File from Template窗口選擇Default (default selection)即可;
彈出Signal Tap Logic Analyzer界面,包含例化管理器(Instance Manager)、JTAG鏈配置(JTAG Chain Configuration)、節(jié)點列表和觸發(fā)條件(Data與Set兩個子界面可選)、信號配置(Signal Configuration)、分層設(shè)計(Hierarchy Display,分層顯示)以及數(shù)據(jù)日志(Data Log),如下圖。
2、實例管理
首先選擇例化管理器,選中默認(rèn)的auto_signaltap_0,可以增加、刪除、重命名實例,這里一個實例可以理解為一組信號對+一個配置時鐘,可以通過Enabled來選擇該實例是否被編譯到該工程中,因此可以有多組實例,方便分析各不同模塊的信號。
3、時鐘配置
選擇信號配置,進行實例的時鐘配置。
這里注意:只有在工程已進行過分析與闡釋后,才能在signal tap中添加想要觀察的時鐘或者信號。
彈出的Node Finder界面中,首先在Options-Filter欄選擇:Signal Tap: Pre-synthesis,在Options-Look in欄中選擇down_sampling_top.v模塊,接著輸入想要在down_sampling_top.v模塊中查看的信號的時鐘:clk_7_148m,然后search搜索,在Matching Nodes中雙擊即可將clk_7_148m添加到Nodes Found欄,并單擊ok即可完成時鐘的添加,如下圖:
完成后根據(jù)需要選擇采樣深度即可,其他默認(rèn),如下圖:
注意:在設(shè)置好時鐘后,在Signal Configuration界面下滑有Trigger欄,可以設(shè)置觸發(fā)的位置:
Pre 表示12%的存儲深度用作觸發(fā)事件之前,88%的存儲深度用作觸發(fā)事件之后;
Center 表示50%的存儲深度用作觸發(fā)事件之前,50%的存儲深度用作觸發(fā)事件之后;
Post 表示88%的存儲深度用作觸發(fā)事件之前,12%的存儲深度用作觸發(fā)事件之后。
一般默認(rèn)都選Pre trigger position,可根據(jù)需要設(shè)置。
4、添加待抓取信號
雙擊節(jié)點列表和觸發(fā)條件界面,彈出Node Finder窗口,與上一步添加時鐘信號一樣的設(shè)置,選擇自己想要的信號,最后要記得單擊insert按鍵才能正常將信號成功添加。
5、設(shè)置信號觸發(fā)條件-直接默認(rèn)即可
默認(rèn)如下全選,不需要做修改:
Don't Care | 不設(shè)置觸發(fā)方式 |
Low | 低電平觸發(fā) |
Falling Edge | 下降沿觸發(fā) |
Rising Edge | 上升沿觸發(fā) |
High | 高電平觸發(fā) |
Either Edge | 雙邊沿觸發(fā) |
這里的觸發(fā)條件呢,會在你進行Run Analysis時起作用,此時在Setup界面下根據(jù)需要選擇觸發(fā)方式即可,很方便。
6、記得保存
選擇保存路徑為工程所在的quartus文件夾下,打開所在目錄會發(fā)現(xiàn)多了一個stp1.stp文件,該文件即上述添加至工程中的分析文件。
7、開始編譯
在工具欄選擇Start Compilation 開始編譯,等待工程編譯完成即可。
8、選擇燒錄文件并下載
首先連接JTAG燒錄器與FPGA板,并給FPGA板子上電,接著Scan Chain,識別FPGA器件,然后選擇生成的sof文件,并單擊開始下載。
9、查看抓取的波形
單擊Run Analysis運行分析一次,也就是刷新采樣一次,單擊Autorun Analysis自動連續(xù)運行分析,也就是一直刷新采樣。
補充:
1、在打開的波形窗口,左鍵單擊放大波形窗口,右鍵單擊縮小波形窗口;
2、波形窗口的數(shù)據(jù)默認(rèn)16進制,可以選中信號名后,右鍵單擊-Bus Display Format中選擇十進制或者其他進制;
3、在Signal Tap Logic Analyzer中下載程序時軟件比較卡,可以在Quartus 的Programmer中下載好以后直接在Signal Tap Logic Analyzer分析;
4、在上述第4步添加待住區(qū)信號時,如果有些wire/reg定義的信號不能被觀察到,或者說stp1.stp中有的信號/時鐘顯示紅色如下:
這表示sof文件燒錄到fpga的邏輯資源中沒有tx_vid_clk,可能是原來有后來.v模塊中刪除了,更有可能是有,但是被Quartus軟件優(yōu)化掉了,導(dǎo)致無法使用Signal Tap II觀察,針對模塊中有,但是signaltap中沒有的情況,有兩種解決辦法:
? ? ? ? 方法一、將wire/reg定義的信號改成端口信號(這種方法繁瑣不推薦);
? ? ? ? 方法二、在待觀察的wire/reg定義的信號后面添加特殊字符:
wire????????[9:0]? ? ? ?time_cnt? /*synthesis keep*/ ;
reg? ? ? ? ?[9:0]? ? ? ? time_cnt /*synthesis keep*/;
或者
Quartus:
(* keep = "TRUE" *) wire????????[9:0]? ? ? ?time_cnt ;
(* keep = "TRUE" *) reg? ? ? ? ?[9:0]? ? ? ? time_cnt /*synthesis keep*/;
或者
Quartus:
(* noprune *)?wire????????[9:0]? ? ? ?time_cnt ;
(* noprune *)?reg? ? ? ? [9:0]? ? ? ?time_cnt ;
prune? ? 發(fā)音?/pru?n/:
v.修剪;刪除;
n.李子干,西梅干;<非正式>討厭的人,乏味的人;(樹枝、灌木叢等的)修剪,修整
5、Signal Tap II除了支持電平、邊沿觸發(fā)外,還支持計數(shù)觸發(fā),如可以對time_cnt計數(shù)器設(shè)置具體的值來觸發(fā)。
6、相同的工程,但是在不同平臺上跑的sof與stp文件,如自己的PC1(win10 64環(huán)境中的Quartus)與服務(wù)器PC2(Ubuntu環(huán)境中的Quartus)上的sof與stp文件,能不能將服務(wù)器PC2上的sof與stp拿到自己的PC1上進行邏輯分析呢?
說明:
????????服務(wù)器上跑的工程速度會快很多,比如自己的PC1上跑一個工程需要接近2個小時,但是服務(wù)器PC2上跑工程只需要1小時10分鐘。
????????服務(wù)器PC2沒有接口可以用來設(shè)別JTAG,因此還是要用到自己的PC1來做邏輯分析。
? ? ? ? 可以的,將服務(wù)器PC2上的sof與stp文件拿到自己的PC1上即可,如果在Signal Tap Logic Analyzer中的設(shè)置一樣,則只需要將PC2上的sof拿到PC1上即可使用,如果不同,則需要將sof與stp同時挪到同一臺機器上。
備注:
stp文件上的信號接口可以多設(shè)置,但不能少設(shè)置,就是說假如服務(wù)器PC2上的stp有20個觀察信號,但是PC1上的stp只有10個觀察信號,則需要將服務(wù)器PC2上的sof與stp同時拿到自己的PC1上進行邏輯抓取分析;
? ? ? ? 反過來,自己的PC1上的stp有20個待觀察信號,而服務(wù)器PC2上僅有10個待觀察信號,可以將服務(wù)器PC2上的sof拿到自己的PC1上進行邏輯分析即可,不用將PC2上stp也拿到自己的PC1上,當(dāng)然拿了更好,只是stp的兼容性變差了,如果自己的PC1后續(xù)還要跑工程,那就得根據(jù)需要重新設(shè)置stp了。
7、如果我要保存此次使用signal tap II抓取的波形,怎么保存以及如何打開呢?
? ? ? ? 很簡單,簡述如下:
前提:需要知道Quartus中,除了第一次打開需要創(chuàng)建實例外,每次選擇Signal Tap Logic Analyzer打開的都是工程默認(rèn)的stp1.stp文件。
1、stp1.stp文件中就是最后一次抓取的信號,當(dāng)然還有一些基本設(shè)置;
2、將stp1.stp文件copy一份即可,隨便起個英文名稱,如test.stp,保存位置可以任意(注意不要stp1.stp文件從Quartus工程中挪走了Q)
3、左鍵單擊將test.stp拖到桌面上的Quartus快捷圖標(biāo),Quartus即可自動打開該test.stp文件并顯示,同時打開了一個空的Quartus工程。
此外,在使用該stp1.stp打開的工程中可以使用In-System Sources and Probes Editor
參考鏈接:
noprune keep preserve 區(qū)別文章來源:http://www.zghlxwxcb.cn/news/detail-775602.html
FPGA零基礎(chǔ)學(xué)習(xí)精選 | Signal tap 邏輯分析儀使用教程文章來源地址http://www.zghlxwxcb.cn/news/detail-775602.html
到了這里,關(guān)于Quartus的Signal Tap II的使用技巧的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!