Signal Tap 概述
Signal Tap Logic Analyzer是Intel Quartus Prime設(shè)計軟件中自帶的新一代系統(tǒng)級調(diào)試工具,它可以在FPGA設(shè)計中采集和顯示實(shí)時的信號行為。當(dāng)設(shè)計在FPGA上全速運(yùn)行時,無需額外的I/O引腳即可檢查正常器件操作期間內(nèi)部信號的行為。
Signal Tap Logic Analyzer具有可擴(kuò)展性,易于使用,支持以下功能:
無需外部設(shè)備,通過探測內(nèi)部信號的狀態(tài)來調(diào)試FPGA設(shè)計。
自定義觸發(fā)條件邏輯,提高準(zhǔn)確性并提升分析問題的能力。
將所有捕獲的信號數(shù)據(jù)存儲在設(shè)備存儲器中,直到需要進(jìn)行讀取和分析。
Signal Tap Logic Analyzer支持可編程邏輯市場上任何邏輯分析儀中最多的通道數(shù)、最大的采樣深度和最快的時鐘速度。
下圖1.1是Signal Tap Logic Analyzer內(nèi)部結(jié)構(gòu)圖,它是利用JTAG邊界掃描的原理來讀取FPGA內(nèi)部節(jié)點(diǎn)的值,然后傳輸?shù)絙uffer(緩沖器),再由JTAG把數(shù)據(jù)送到Quartus下的Signal Tap Logic Analyzer工具。整個過程只讀取數(shù)據(jù),而數(shù)據(jù)的頻率無法直接知道,只能由設(shè)計者自行計算得出。
圖1.1 Signal Tap Logic Analyzer結(jié)構(gòu)圖
在設(shè)計中嵌入SignalTapLogicAnalyzer
要使用Signal Tap Logic Analyzer對設(shè)計進(jìn)行調(diào)試,需要執(zhí)行幾個任務(wù)來添加、配置和運(yùn)行Signal Tap Logic Analyzer。如下圖所示為Signal Tap Logic Analyzer任務(wù)流程圖。
圖2.1 Signal Tap Logic Analyzer任務(wù)流程圖
在設(shè)計中嵌入Signal Tap Logic Analyzer有以下兩種方法:
建立一個Signal Tap文件,即.stp文件,然后定義該文件的詳細(xì)內(nèi)容。
用MegaWizard Plug-In Manager建立并配置.stp文件,然后使用MegaWizard實(shí)例化一個HDL輸出模塊。
本教程采用第一種方法,在設(shè)計好的Quartus工程文件中嵌入Signal Tap Logic Analyzer進(jìn)行時序波形的在線調(diào)試。
創(chuàng)建.stp文件
.stp文件包括Signal Tap Logic Analyzer設(shè)置部分和捕獲數(shù)據(jù)的查看、分析部分。創(chuàng)建一個.stp文件的步驟如下:
打開Quartus Prime軟件,并打開需要嵌入Signal Tap Logic Analyzer的Quartus工程,然后依次點(diǎn)擊Quartus工具欄的File-->New,如下圖所示2.2所示。
圖2.2 選擇New對話框
2. 在彈出的New對話框中,選擇Verification/Debugging Files中的Signal Tap Logic Analyzer File,如圖2.3所示,點(diǎn)擊OK確認(rèn)。
圖2.3 選擇Signal Tap Logic Analyzer File
3. 彈出新的Signal Tap Logic Analyzer窗口,如圖2.4所示。
圖2.4 Signal Tap Logic Analyzer窗口
以上操作也可以通過Quartus軟件的工具欄Tools-->Signal Tap Logic Analyzer來完成,如下圖2.5所示。
圖2.5 打開Signal Tap Logic Analyzer
設(shè)置.stp文件采集時鐘
在使用Signal Tap Logic Analyzer進(jìn)行FPGA在線調(diào)試之前,需要設(shè)置.stp文件的采集時鐘,采集時鐘是在上升沿采集數(shù)據(jù)。可以使用Quartus工程設(shè)計中的任意信號作為采集時鐘,最好使用全局時鐘,而不要使用門控時鐘,并且選擇的采樣信號和待觀測的信號要滿足奈奎斯特采樣定理。
設(shè)置采集時鐘的步驟如下:
1. 在圖2.4所示的Signal Tap Logic Analyzer窗口的觸發(fā)設(shè)置框,點(diǎn)開Clock后面的"..."按鈕,打開Node Finder對話框,如圖2.6所示。
圖2.6 打開Node Finder對話框
2. 在Node Finder對話框中,在Filter列表中選擇 Design Entry(all names)或SignalTap:pre-synthesis,如圖2.7所示。
圖2.7 選中 Design Entry(all names)
3. 想要看工程里面的哪個文件的信號,就在Look in這里選擇對應(yīng)的文件(或者直接選top文件,所有信號在top文件里面可以找到),然后點(diǎn)擊Name行后的List按鈕,在Nodes Found列表中選擇合適的信號作為Signal Tap Logic Analyzer的采集時鐘,如圖2.8所示,此處舉例選擇Sdram_Control.v文件的信號進(jìn)行查看,選擇Sdram_Control.v文件里面的100MHz作為采樣時鐘。選中后點(diǎn)擊">"按鈕將時鐘信號添加到Nodes Found列表中,也可以直接雙擊CLK將時鐘信號添加到Nodes Found列表。
圖2.8 Node Finder對話框設(shè)置
4. 點(diǎn)擊OK按鈕確定。在Signal Tap Logic Analyzer窗口中可以看到,設(shè)置作為采樣時鐘的信號CLK顯示在Clock欄中。如圖2.9所示。
圖2.9 顯示Clock采樣時鐘信號
注意:如果在Signal Tap Logic Analyzer窗口中沒有分配采集時鐘,Quartus軟件會自動建立一個名為auto_stp_external_clk_0的時鐘引腳。在設(shè)計中必須為這個引腳單獨(dú)分配一個器件引腳。在開發(fā)板上也必須有一個外部時鐘信號驅(qū)動該引腳。
在.stp文件中配置信號節(jié)點(diǎn)
在.stp文件中,常分配如下兩種類型的信號:
Signal Tap: pre-synthesis——該信號在對設(shè)計進(jìn)行Analysis&Elaboration操作以后存在,這些信號表示寄存器傳輸級(RTL)信號。在Signal Tap Logic Analyzer中要分配Pre-synthesis信號,可以選擇Quartus軟件工具欄的Processing-->Start Analysis&Elaboration。對設(shè)計進(jìn)行修改后,如果要在物理綜合之前快速加入一個新的節(jié)點(diǎn)名,使用這項(xiàng)操作特別有用。
Signal Tap: post-fitting——該信號在對設(shè)計進(jìn)行物理綜合優(yōu)化以及布局布線操作后存在。
本教程采用分配Signal Tap: pre-synthesis類型信號為例進(jìn)行說明。
分配數(shù)據(jù)信號
依次點(diǎn)擊Quartus軟件工具欄的Processing-->Start-->Start Analysis&Elaboration,對設(shè)計進(jìn)行Analysis&Elaboration。
圖2.10 對設(shè)計進(jìn)行Analysis&Elaboration
2. 在Signal Tap Logic Analyzer窗口中點(diǎn)擊Setup標(biāo)簽頁,如下圖2.11所示。
圖2.11 Setup標(biāo)簽頁
3. 雙擊Setup標(biāo)簽頁的空白處,彈出Node Finder對話框。
4. 在Node Finder對話框的Filter列表中選擇Signal Tap: pre-synthesis。
5. 點(diǎn)擊Node Finder對話框Name行后的List按鈕查找節(jié)點(diǎn),所有節(jié)點(diǎn)都顯示在Matching Nodes列表中。
圖2.12 Nodes Finder對話框
6. 雙擊相應(yīng)的節(jié)點(diǎn)或總線將其添加到Nodes Found列表中。
7. 點(diǎn)擊Insert按鈕,將選擇的節(jié)點(diǎn)或總線插入到.stp文件。
圖2.13 選擇節(jié)點(diǎn)
SignalTapLogicAnalyzer觸發(fā)設(shè)置
Signal Tap Logic Analyzer觸發(fā)設(shè)置主要是設(shè)置觀測信號的觸發(fā)條件(Trigger Conditions)。
觸發(fā)類型選擇Basic AND或Basic OR:如果觸發(fā)類型選擇Basic,在.stp文件中必須為每個信號設(shè)置相應(yīng)的觸發(fā)模式(Trigger Pattern)。Signal Tap Logic Analyzer中的觸發(fā)模式包括Don't Care(無關(guān)項(xiàng)觸發(fā))、Low(低電平觸發(fā))、High(高電平觸發(fā))、Falling Edge(下降沿觸發(fā))、Rising Edge(上升沿觸發(fā))和Either Edge(雙邊沿觸發(fā))。如圖2.14所示,當(dāng)設(shè)定的觸發(fā)條件滿足時,Signal Tap Logic Analyzer開始捕獲數(shù)據(jù)。
圖2.14-1 設(shè)置類型
圖2.14-2 設(shè)置觸發(fā)模式
觸發(fā)類型選擇Advanced:如果觸發(fā)類型選擇Advanced,則必須為Signal Tap Logic Analyzer建立觸發(fā)條件表達(dá)式。一個Signal Tap Logic Analyzer最關(guān)鍵的特點(diǎn)是它的觸發(fā)能力。如果不能很好的為數(shù)據(jù)捕獲建立相應(yīng)的觸發(fā)條件,它可能無法幫助設(shè)計者捕捉到需要觀測的有效信號。
在Signal Tap Logic Analyzer中,使用高級觸發(fā)條件編輯器(Advanced Trigger Condition Editor)可以在簡單的圖形界面建立非常復(fù)雜的觸發(fā)條件。設(shè)計者只需要將運(yùn)算符拖動到觸發(fā)條件編輯器窗口中,就可以建立復(fù)雜的觸發(fā)條件,如圖2.15所示。
圖2.15 高級觸發(fā)條件編輯器
指定采樣點(diǎn)數(shù)及觸發(fā)位置
在觸發(fā)事件開始之前,可以指定要觀測數(shù)據(jù)的采樣點(diǎn)數(shù),即數(shù)據(jù)存儲深度,以及觸發(fā)事件發(fā)生前后的采樣點(diǎn)數(shù),如圖2.16所示。
圖2.16-1 設(shè)置采樣點(diǎn)數(shù)及觸發(fā)位置
圖2.16-2 設(shè)置采樣點(diǎn)數(shù)及觸發(fā)位置
在Signal Tap Logic Analyzer窗口右側(cè)Signal Configuration部分的Data欄中,在Sample depth列表中可以選擇需要觀測的采樣點(diǎn)數(shù);在Trigger欄中,在Trigger Condition列表中可以選擇觸發(fā)信號有效前后的數(shù)據(jù)比例:
1. Pre trigger position:保存觸發(fā)信號發(fā)生之前信號狀態(tài)信息(88%的觸發(fā)前數(shù)據(jù),12%的觸發(fā)后數(shù)據(jù))。
2. Center trigger position:保存觸發(fā)信號發(fā)生前后數(shù)據(jù),各占50%。
3. Post trigger position:保存觸發(fā)信號發(fā)生之后信號狀態(tài)信息(12%的觸發(fā)前數(shù)據(jù),88%的觸發(fā)后數(shù)據(jù))。
重新編譯嵌入.stp文件的Quartus工程
配置好并保存.stp文件后,在使用Signal Tap Logic Analyzer之前必須編譯Quartus工程。如下圖2.17所示,點(diǎn)擊Signal Tap Logic Analyzer窗口的編譯按鈕,對工程進(jìn)行全編譯。
圖2.17 全編譯Quartus工程
使用Signal Tap Logic Analyzer進(jìn)行編程調(diào)試
在設(shè)計中嵌入.stp文件并完全編譯完成后,通過USB Blaster II下載電纜連接好開發(fā)板并接通電源。打開.stp文件后,詳細(xì)調(diào)試步驟如下:
1. 在.stp文件右上方的JTAG Chain Configuration部分,在Hardware列表中選擇 "DE-SoC[USB-1]",一般情況下Signal Tap Logic Analyzer可以自動掃描到開發(fā)板上的FPGA器件并顯示在Device列表中。如下圖2.18所示。
圖2.18 JTAG Chain設(shè)置
2. 點(diǎn)擊SOF Manager右側(cè)的"..."按鈕,選擇.sof文件,然后點(diǎn)擊下載按鈕對FPGA進(jìn)行配置,如下圖2.19所示。
圖2.19 配置FPGA
查看Signal Tap Logic Analyzer調(diào)試波形
Signal Tap Logic Analyzer工具條上有四個執(zhí)行邏輯分析的選項(xiàng),如下圖所示。
圖2.20-1
1. Run Analysis:單步執(zhí)行捕獲數(shù)據(jù)進(jìn)行邏輯分析,即執(zhí)行該命令后,Signal Tap Logic Analyzer等待觸發(fā)事件,當(dāng)觸發(fā)事件發(fā)生時開始采集數(shù)據(jù),然后停止。
2. Autorun Analysis:執(zhí)行該命令后,Signal Tap Logic Analyzer根據(jù)所設(shè)置的觸發(fā)條件連續(xù)采集數(shù)據(jù),直到用戶按下Stop Analysis按鈕為止。
3. Stop Analysis:停止Signal Tap Logic Analyzer。如果觸發(fā)事件還沒有發(fā)生,則沒有接收數(shù)據(jù)顯示。
4. Read Data:顯示捕獲的數(shù)據(jù)。如果觸發(fā)事件還沒有發(fā)生,用戶可以點(diǎn)擊該按鈕查看當(dāng)前采集的數(shù)據(jù)。
選擇Run Analysis或AutoRun Analysis按鈕,當(dāng)觸發(fā)條件滿足時,Signal Tap Logic Analyzer開始捕獲數(shù)據(jù)。
圖2.20-2
Signal Tap Logic Analyzer會自動將采集的數(shù)據(jù)顯示在Data標(biāo)簽頁中,如圖2.20-2所示。
從波形圖可以看到,寫SDRAM之前先發(fā)送了一個行激活命令,然后是寫命令,連續(xù)寫64個數(shù)據(jù)以后系統(tǒng)發(fā)送了一個預(yù)充電命令結(jié)束頁突發(fā)操作。
-
FPGA
+關(guān)注
關(guān)注
1638文章
21852瀏覽量
608980 -
存儲器
+關(guān)注
關(guān)注
38文章
7563瀏覽量
165088 -
調(diào)試工具
+關(guān)注
關(guān)注
1文章
51瀏覽量
12717 -
SignalTap
+關(guān)注
關(guān)注
0文章
9瀏覽量
9479
原文標(biāo)題:10-SDRAM控制器的設(shè)計—— signaltap 調(diào)試
文章出處:【微信號:友晶FPGA,微信公眾號:友晶FPGA】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
SDRAM控制器的設(shè)計——Sdram_Control.v代碼解析(異步FIFO讀寫模塊、讀寫SDRAM過程)

FPGA之SDRAM控制器設(shè)計(二)精選資料分享
使用Verilog實(shí)現(xiàn)基于FPGA的SDRAM控制器
基于FPGA的高速SDRAM控制器的視頻應(yīng)用
SDRAM控制器簡易化設(shè)計

DDR SDRAM控制器參考設(shè)計VHDL代碼
SDRAM控制器的設(shè)計

FPGA讀寫SDRAM的實(shí)例和SDRAM的相關(guān)文章及一些SDRAM控制器設(shè)計論文

如何使用FPGA設(shè)計SDRAM控制器

DDR SDRAM控制器的設(shè)計與實(shí)現(xiàn)
基于SDRAM控制器軟核的Verilog設(shè)計

PIC32系列參考手冊之DDR SDRAM控制器

評論