一、概述
Signal Tap Logic Analyzer是Intel Quartus Prime設計軟件中自帶的新一代系統級調試工具,它可以在FPGA設計中采集和顯示實時的信號行為。當設計在FPGA上全速運行時,無需額外的I/O引腳即可檢查正常器件操作期間內部信號的行為。
Signal Tap Logic Analyzer具有可擴展性,易于使用,支持以下功能:
無需外部設備,通過探測內部信號的狀態來調試FPGA設計。
自定義觸發條件邏輯,提高準確性并提升分析問題的能力。
將所有捕獲的信號數據存儲在設備存儲器中,直到需要進行讀取和分析。
Signal Tap Logic Analyzer支持可編程邏輯市場上任何邏輯分析儀中最多的通道數、最大的采樣深度和最快的時鐘速度。
2.1 創建.stp文件
.stp文件包括Signal Tap Logic Analyzer設置部分和捕獲數據的查看、分析部分。創建一個.stp文件的步驟如下:
打開Quartus Prime軟件,并打開需要嵌入Signal Tap Logic Analyzer的Quartus文件,然后依次點擊Quartus工具欄的File-->New
在彈出的New對話框中,選擇Verification/Debugging Files中的Signal Tap Logic Analyzer File
彈出新的Signal Tap Logic Analyzer窗口
以上操作也可以通過Quartus軟件的工具欄Tools-->Signal Tap Logic Analyzer來完成
2.2 設置.stp文件采集時鐘
在使用Signal Tap Logic Analyzer進行FPGA在線調試之前,需要設置.stp文件的采集時鐘,采集時鐘是在上升沿采集數據。可以使用Quartus工程設計中的任意信號作為采集時鐘,最好使用全局時鐘,而不要使用門控時鐘,并且選擇的采樣信號和待觀測的信號要滿足奈奎斯特采樣定理。
設置采集時鐘的步驟如下:
Signal Tap Logic Analyzer窗口的觸發設置框,點開Clock后面的"..."按鈕,打開Node Finder對話框
在Node Finder對話框中,在Filter列表中選擇 Design Entry(all names)或SignalTap II:pre-synthesis
點擊Name行后的List按鈕,在Nodes Found列表中選擇合適的信號作為Signal Tap Logic Analyzer的采集時鐘,如圖2.8所示,此處舉例選擇FPGA_CLK1_50作為時鐘。選中后點擊">"按鈕將時鐘信號添加到Nodes Found列表中,也可以直接雙擊FPGA_CLK1_50將時鐘信號添加到Nodes Found列表
點擊OK按鈕確定。在Signal Tap Logic Analyzer窗口中可以看到,設置作為采樣時鐘的信號FPGA_CLK1_50顯示在Clock欄中
注意:如果在Signal Tap Logic Analyzer窗口中沒有分配采集時鐘,Quartus軟件會自動建立一個名為auto_stp_external_clk_0的時鐘引腳。在設計中必須為這個引腳單獨分配一個器件引腳。在開發板上也必須有一個外部時鐘信號驅動該引腳。
2.3 在.stp文件中配置信號結點
在.stp文件中,可以分配如下兩種類型的信號:
Signal Tap: pre-synthesis——該信號在對設計進行Analysis&Elaboration操作以后存在,這些信號表示寄存器傳輸級(RTL)信號。
在Signal Tap Logic Analyzer中要分配Pre-synthesis信號,可以選擇Quartus軟件工具欄的Processing-->Start Analysis&Elaboration。對設計進行修改后,如果要在物理綜合之前快速加入一個新的節點名,使用這項操作特別有用。
Signal Tap: post-fitting——該信號在對設計進行物理綜合優化以及布局布線操作后存在。
2.4 分配數據信號
依次點擊Quartus軟件工具欄的Processing-->Start-->Start Analysis&Elaboration,對設計進行Analysis&Elaboration。
在Signal Tap Logic Analyzer窗口中點擊Setup標簽頁
雙擊Setup標簽頁的空白處,彈出Node Finder對話框。
在Node Finder對話框的Filter列表中選擇Signal Tap: pre-synthesis。
點擊Node Finder對話框Name行后的List按鈕查找結點,所有節點都顯示在Matching Nodes列表中。
雙擊相應的結點或總線將其添加到Nodes Found列表中。
點擊Insert按鈕,將選擇的結點或總線插入到.stp文件。
2.5 Signal Tap Logic Analyzer觸發設置
Signal Tap Logic Analyzer觸發設置主要是設置觀測信號的觸發條件(Trigger Conditions)。
觸發類型選擇Basic AND或Basic OR:如果觸發類型選擇Basic,在.stp文件中必須為每個信號設置相應的觸發模式(Trigger Pattern)。Signal Tap Logic Analyzer中的觸發模式包括Don't Care(無關項觸發)、Low(低電平觸發)、High(高電平觸發)、Falling Edge(下降沿觸發)、Rising Edge(上升沿觸發)和Either Edge(雙沿觸發)。
觸發類型選擇Advanced:如果觸發類型選擇Advanced,則必須為Signal Tap Logic Analyzer建立觸發條件表達式。一個Signal Tap Logic Analyzer最關鍵的特點是它的觸發能力。如果不能很好的為數據捕獲建立相應的觸發條件,它可能無法幫助設計者捕捉到需要觀測的有效信號。
在Signal Tap Logic Analyzer中,使用高級觸發條件編輯器(Advanced Trigger Condition Editor)可以在簡單的圖形界面建立非常復雜的觸發條件。設計者只需要將運算符拖動到觸發條件編輯器窗口中,就可以建立復雜的觸發條件,
2.6 指定采樣點數及觸發位置
在觸發事件開始之前,可以指定要觀測數據的采樣點數,即數據存儲深度,以及觸發事件發生前后的采樣點數
在Signal Tap Logic Analyzer窗口右側Signal Configuration部分的Data欄中,在Sample depth列表中可以選擇需要觀測的采樣點數;在Trigger欄中,在Trigger Condition列表中可以選擇觸發信號有效前后的數據比例:
Pre trigger position:保存觸發信號發生之前信號狀態信息(88%的觸發前數據,12%的觸發后數據)。
Center trigger position:保存觸發信號發生前后數據,各占50%。
Post trigger position:保存觸發信號發生之后信號狀態信息(12%的觸發前數據,88%的觸發后數據)。
2.7 重新編譯嵌入.stp文件的Quartus工程
配置好并保存.stp文件后,在使用Signal Tap Logic Analyzer之前必須編譯Quartus工程。如下圖2.17所示,點擊Signal Tap Logic Analyzer窗口的編譯按鈕,對工程進行全編譯。
2.8 使用Signal Tap Logic Analyzer進行編程調試
在設計中嵌入.stp文件并完全編譯完成后,通過USB Blaster II下載電纜連接好開發板并接通電源。打開.stp文件后,詳細調試步驟如下:
在.stp文件右上方的JTAG Chain Configuration部分,在Hardware列表中選擇 "DE-SoC[USB-1]",一般情況下Signal Tap Logic Analyzer可以自動掃描到開發板上的FPGA器件并顯示在Device列表中。
點擊SOF Manager右側的"..."按鈕,選擇.sof文件,然后點擊下載按鈕進行器件編程,
2.9 查看Signal Tap Logic Analyzer調試波形
在Signal Tap Logic Analyzer界面中,選擇Run Analysis或AutoRun Analysis按鈕,當觸發條件滿足時,Signal Tap Logic Analyzer開始捕獲數據。
Signal Tap Logic Analyzer工具條上有四個執行邏輯分析的選項,
Run Analysis:單步執行捕獲數據進行邏輯分析,即執行該命令后,Signal Tap Logic Analyzer等待觸發事件,當觸發事件發生時開始采集數據,然后停止。
Autorun Analysis:執行該命令后,Signal Tap Logic Analyzer根據所設置的觸發條件連續采集數據,直到用戶按下Stop Analysis按鈕為止。
Stop Analysis:停止Signal Tap Logic Analyzer。如果觸發事件還沒有發生,則沒有接收數據顯示。
Read Data:顯示捕獲的數據。如果觸發事件還沒有發生,用戶可以點擊該按鈕查看當前采集的數據。
Signal Tap Logic Analyzer會自動將采集的數據顯示在Data標簽頁中