电竞比分网-中国电竞赛事及体育赛事平台

分享

SignalTap II邏輯分析儀的使用

 favinfeng 2013-01-08

一、例子

       我們使用如圖1所示的verilog代碼所實(shí)現(xiàn)的開關(guān)電路作為例子。這個(gè)電路把DE系列開發(fā)板上的前8個(gè)開關(guān)簡(jiǎn)單的和對(duì)應(yīng)的8個(gè)紅色LED相連接。它是這樣工作的:在時(shí)鐘(CLOCK_50)的上升沿讀取開關(guān)的值,放入對(duì)應(yīng)的寄存器,寄存器的輸出與紅色LED直接相連接。

 

       按照?qǐng)D1代碼實(shí)現(xiàn)該電路,鎖定引腳,編譯整個(gè)工程等等,這些在這里不再重復(fù)累述。

 

二、使用SignalTap II軟件

       在本文的第一部分,我們將建立SignalTap邏輯分析儀來(lái)探測(cè)8個(gè)LED開關(guān)的值,同時(shí),我們將設(shè)定邏輯分析儀的觸發(fā)信號(hào)為當(dāng)?shù)谝粋€(gè)開關(guān)(LED[0])為高電平。

1.       選擇File->New打開邏輯分析儀窗口,該窗口如圖2所示。選擇SignalTap II邏輯分析儀文件并點(diǎn)擊OK。

 

2.       SignalTap II界面如圖3所示。保存文件并命名為switches.stp。在下一步如圖4所示對(duì)話框中點(diǎn)擊OK,接下來(lái)出現(xiàn)對(duì)話框”Do you want to enable SignalTap II file ‘switches.stp’ for the current project?”詢問是否在當(dāng)前工程中使用SignalTap II,點(diǎn)擊Yes(圖5)?,F(xiàn)在,SignalTap II文件switches.stp已經(jīng)和當(dāng)前工程相關(guān)聯(lián)了。

 

注意:如果我們需要在工程中不使用該SignalTap II文件,或者不使用SignalTap II邏輯分析儀,在Quartus II界面中選擇Assignments->Settings。然后在打開窗口左邊的分類列表中選擇SignalTap II Logic Analyzer,如圖6所示??梢园?/span>Enable SignalTap II Logic Analyzer前面的勾去掉來(lái)關(guān)閉邏輯分析儀。在一個(gè)工程中可能同時(shí)會(huì)有多個(gè)SignalTap文件,但在同一時(shí)刻只能有一個(gè)有效。多個(gè)SignalTap II文件是非常有用的,比如工程很大,在工程中不同的部分都需要用SignalTap II來(lái)捕捉信號(hào),這樣探測(cè)不同的部分時(shí)我們只需要使用不同的SignalTap II文件就可以了,避免反復(fù)設(shè)定SignalTap II文件。按照步驟1和步驟2可以建立新的SignalTap II文件,不同的SignalTap II文件擁有不同的文件名。如果要改變當(dāng)前工程中已經(jīng)關(guān)聯(lián)的SignalTap II文件,在圖6中的SignalTap II File name選擇框中點(diǎn)右邊的瀏覽按鈕,選擇所需要的SignalTap II文件,然后點(diǎn)擊Open,最后點(diǎn)擊OK就可以了。在本教程中,我們選中Enable SignalTap II Logic Analyzer選項(xiàng)并使用switches.stp文件。設(shè)定好后點(diǎn)擊OK按鈕關(guān)閉設(shè)置窗口。

3.       現(xiàn)在我們需要把工程中想要觀察的信號(hào)結(jié)點(diǎn)添加進(jìn)來(lái)。在SignalTap II窗口中的Setup標(biāo)簽頁(yè)中,雙擊灰色字體記號(hào)”Double-click to add nodes”的區(qū)域,就會(huì)打開Node Finder窗口,如圖7所示。在Filter區(qū)域中,選擇SignalTap IIpre-synthesis,然后單擊List,在Nodes Found區(qū)域中將會(huì)顯示在工程中能被觀察到的節(jié)點(diǎn)列表。在這里我們選中SW[0],SW[1]…SW[7],然后單擊”>”按鈕,這樣就把要觀察的開關(guān)節(jié)點(diǎn)添加到SignalTap II中。最后單擊OK。

 

4.       SignalTap II邏輯分析儀能正常工作之前,我們需要為SignalTap II模塊指定驅(qū)動(dòng)時(shí)鐘,在例化時(shí),SignalTap II模塊包含在我們的設(shè)計(jì)中。在SignalTap窗口Signal Configuration面板中的單擊Clock部分右邊的”…”打開Node Finder窗口。點(diǎn)擊List,顯示所有能被添加為時(shí)鐘的信號(hào)節(jié)點(diǎn),然后雙擊CLOCK_50,結(jié)果如圖8所示,最后點(diǎn)擊OK。

 

5.       SignalTap窗口中Setup標(biāo)簽頁(yè)中,選中Trigger Conditions列中的單選框,然后在單選框右邊的下拉菜單中選擇Basic。右鍵節(jié)點(diǎn)SW[0]相對(duì)應(yīng)的Trigger Conditions單元,選擇High,如圖9所示。這樣設(shè)置以后,當(dāng)DE系列開發(fā)板上對(duì)應(yīng)的第一個(gè)開關(guān)被設(shè)置為高電平時(shí),邏輯分析儀將會(huì)開始運(yùn)行捕捉數(shù)據(jù)。注意到我們可以右鍵Trigger Conditions列單元中的添加進(jìn)來(lái)的任何信號(hào)節(jié)點(diǎn),并可以選擇一系列不同的觸發(fā)條件。當(dāng)所有這些條件都同時(shí)滿足時(shí)實(shí)際的觸發(fā)條件才成立。在本文中,我們選擇觸發(fā)條件SW[0]為高電平,SW[1],SW[2]…SW[7]設(shè)為默認(rèn)值Don’t Care,即觸發(fā)條件和SW[1],SW[2]…SW[7]的值無(wú)關(guān)。

 

6.       接下來(lái)我們還需要正確的建立硬件環(huán)境。首先,確保DE系列開發(fā)板已經(jīng)和電腦連接好且電源已經(jīng)開啟。然后,在SignalTap II窗口右上方中的Hardware部分,單擊Setup,打開如圖10所示的窗口,在Available Hardware Items菜單中雙擊USB-Blaster,最后點(diǎn)擊Close。

 

7.       最后一步就是重新編譯整個(gè)工程。在Quartus II窗口中,選擇Processing->Start Compilation,接下來(lái)會(huì)彈出提示說(shuō)需要保存改動(dòng),這里選擇Yes。編譯完后,打開Tools->Programmer,把重新編譯的工程下載到DE系列開發(fā)板上。

 

三、使用邏輯分析儀觀察信號(hào)

       現(xiàn)在工程中嵌入的SignalTap II邏輯分析儀已經(jīng)例化完成,并已經(jīng)加載到DE系列開發(fā)板上,我們可以像使用外部的邏輯分析儀一樣使用SignalTap II邏輯分析儀來(lái)觀察信號(hào)。

1.       首先把DE系列開發(fā)板上所有的開關(guān)(0-7)設(shè)為低,當(dāng)開關(guān)0的值變?yōu)?/span>1時(shí),我們將會(huì)觀察到這些開關(guān)的值。

2.       SignalTap窗口,選擇Processing->Run Analysis或者單擊圖標(biāo)。接著,單擊SignalTap II窗口中的Data標(biāo)簽頁(yè)。這時(shí),我們應(yīng)該得到和圖11相似的界面。注意到這時(shí)SignalTap II Instance Manager面板中狀態(tài)Status中顯示”Waiting for trigger”,這是因?yàn)橛|發(fā)條件(開關(guān)0的值變?yōu)?/span>1)沒有滿足。(我們?cè)谥暗牟襟E中把開關(guān)0的值初始化設(shè)為0,如果沒有初始化開關(guān)0的值為0,現(xiàn)在可以把它設(shè)為0然后再一次點(diǎn)擊Run Analysis)。

 

3.       現(xiàn)在,我們可以把DE系列開發(fā)板上的開關(guān)0的值設(shè)為1來(lái)觀察邏輯分析儀的觸發(fā)特性。我們應(yīng)該會(huì)得到如圖12所示的數(shù)據(jù)。注意到數(shù)據(jù)窗口中不僅顯示了8個(gè)開關(guān)節(jié)點(diǎn)在滿足觸發(fā)條件之后的數(shù)據(jù)值,還包含觸發(fā)之前的一段數(shù)據(jù)值。為了更進(jìn)一步的觀察,我們可以把開關(guān)0-7的值設(shè)置為任意組合然后再次單擊Run Analysis。當(dāng)開關(guān)0的值再一次被設(shè)為1時(shí),我們將在SignalTap II Logic Analyzer中觀察到所有開關(guān)的數(shù)值。

 

四、高級(jí)觸發(fā)選項(xiàng)

       相比如上述的SignalTap II的基本觸發(fā)控制,有時(shí)在一個(gè)設(shè)計(jì)中我們可能會(huì)需要一個(gè)更復(fù)雜的觸發(fā)條件。在下面的部分中,我們將講述如何使用高級(jí)觸發(fā)條件來(lái)設(shè)置更復(fù)雜的觸發(fā)條件。

       4.多級(jí)觸發(fā)

       在這部分中,我們?cè)O(shè)置SignalTap II的觸發(fā)條件為:當(dāng)開關(guān)0,1,2,3的值依次從0變?yōu)?/span>1,即開關(guān)0-3的上升沿按順序到來(lái)時(shí)。

1.       單擊SignalTap II窗口中的Setup標(biāo)簽頁(yè)。

2.       Signal Configuration面板中,在Trigger Conditions下拉菜單中選擇4,如圖13所示(你可能需要往下滾動(dòng)Signal Configuration面板才能看到該菜單)。這樣,我們將在節(jié)點(diǎn)列表窗口中看到3個(gè)新的觸發(fā)條件列表。

3.       右鍵點(diǎn)擊觸發(fā)條件1中對(duì)應(yīng)SW[0]的單元,并選擇上升沿Rising Edge。進(jìn)行同樣的操作把觸發(fā)條件2SW[1],觸發(fā)條件3SW[2]和觸發(fā)條件4SW[3]的觸發(fā)條件設(shè)為Rising Edge。這時(shí),我們應(yīng)該會(huì)得到如圖14相似的Setup標(biāo)簽頁(yè)界面。

 

4.       重新編譯整個(gè)工程然后把配置文件重新加載到DE系列開發(fā)板上。

5.       回到SignalTap II窗口,單擊Data標(biāo)簽頁(yè),然后點(diǎn)擊Processing->Run Analysis。注意到窗口顯示狀態(tài)將一直會(huì)是”Waiting for trigger”直到滿足相應(yīng)的觸發(fā)條件。接下來(lái),按順序依次把開關(guān)的值從0設(shè)為1,開關(guān)1的值從0設(shè)為1,開關(guān)2的值從0設(shè)為1,開關(guān)3的值從0設(shè)為1。

完成這些工作后,我們將會(huì)觀察到如圖15所示的所有開關(guān)的值。我們可以按照這一部分所講述的方法建立不同的觸發(fā)條件,然后在DE系列開發(fā)板上檢驗(yàn)這些觸發(fā)條件。

如果我們需要連續(xù)的觀察邏輯分析儀,可以點(diǎn)擊”Run Analysis”旁邊的”Autorun Analysis”按鈕,這樣,在任何時(shí)刻,只要滿足觸發(fā)條件,要觀察的信號(hào)值就會(huì)立刻得到更新顯示而不需要再次選擇”Run Analysis”。點(diǎn)擊圖標(biāo)可以停止”Autorun Analysis”功能。

 

       4.2 高級(jí)觸發(fā)條件

       在這個(gè)部分中,我們將學(xué)習(xí)如何設(shè)置高級(jí)觸發(fā)條件。這次,我們將把觸發(fā)條件設(shè)為:當(dāng)開關(guān)0,開關(guān)1和開關(guān)2中的任何一個(gè)發(fā)生跳變(上升沿或下降沿)。這意味著當(dāng)這3個(gè)開關(guān)中的一個(gè)的值改變時(shí),邏輯分析儀將會(huì)更新顯示所有觀察信號(hào)的值。注意,我們可以把要觀察信號(hào)的不同組合邏輯功能來(lái)作為邏輯分析儀的觸發(fā)條件。作為本例,我們?cè)O(shè)置為上訴的觸發(fā)方式,當(dāng)我們學(xué)會(huì)了本教程后,可以自己體驗(yàn)下設(shè)置不同的高級(jí)觸發(fā)方式。

1.       打開switches工程。

2.       打開SignalTap窗口并選擇Setup標(biāo)簽頁(yè),在Signal Configuration面板中確認(rèn)多級(jí)觸發(fā)的值為1。

3.       在信號(hào)節(jié)點(diǎn)列表中的Trigger Conditions列中,確認(rèn)Trigger Conditions復(fù)選框已經(jīng)選中,然后在下拉菜單中選擇Advanced,如圖16所示。這將立即彈出如圖17所示的窗口,該窗口允許你使用SignalTap中觀察的信號(hào)節(jié)點(diǎn)中的不同信號(hào)來(lái)建立一個(gè)邏輯電路,作為觸發(fā)條件。

 

 

4.       在圖17窗口的Node List部分中,高亮選中SW[0]SW[1]SW[2],然后把它們拖曳到右邊空白處的Advanced Trigger窗口,如圖18所示。注意,我們也可以單獨(dú)的對(duì)每個(gè)信號(hào)節(jié)點(diǎn)進(jìn)行拉入和拖出。

 

5.       現(xiàn)在,我們需要添加必須的邏輯運(yùn)算符到我們的電路中。我們需要1個(gè)OR門和3個(gè)邊沿檢測(cè)器。單擊左下Object Library窗口Logical Operators左邊的+號(hào),可以找到OR門,如圖19所示,然后把OR門拖入到Advanced Trigger Condition Editor窗口中。

 

6.       這次,單擊Edge & Level Edtector并把它拖入編輯窗口中。重復(fù)3次,然后把這些元件組成如圖20所示的電路。3個(gè)輸入SW[0]SW[1]SW[2]分別和3個(gè)edge and level detector連接,3個(gè)detector的輸出再和OR門相連。OR門的輸出連接到輸出腳Result上,輸出腳本身就已經(jīng)在編輯窗口中的了。

 

7.       我們現(xiàn)在需要設(shè)置每個(gè)edge and level detector,讓它們都能檢測(cè)到下降沿或者上升沿。雙擊第一個(gè)detector,打開如圖21所示窗口,在Setting輸入框中輸入E然后單擊OK。這代表著當(dāng)輸入出現(xiàn)下降沿或者上升沿時(shí),detector的輸出為1。重復(fù)上訴步驟設(shè)置第二和第三個(gè)detector。

 

8.       為了測(cè)試上訴高級(jí)觸發(fā)條件,重新編譯工程然后重新配置DE系列開發(fā)板。接下來(lái)按照之前部分的方法運(yùn)行SignalTap。我們應(yīng)該會(huì)注意到,每當(dāng)板上的開關(guān)0,12中的其中一個(gè)的值發(fā)生改變,SignalTap II邏輯分析儀都將會(huì)被觸發(fā)。

 

五、采樣深度和緩存獲取模式

       在本部分中,我們將學(xué)習(xí)怎樣設(shè)置采樣深度邏輯分析儀的Sample Depth和兩種緩存獲取模式。我們將使用之前的工程并使用分段緩存。分段緩存允許我們把數(shù)據(jù)獲取緩存分成幾個(gè)獨(dú)立并劃分好大小的部分。本例中,我們將把采樣深度為256bits的緩存分成8個(gè)32bits的部分。這樣將會(huì)允許我們捕捉發(fā)生在8個(gè)連續(xù)觸發(fā)時(shí)間附近的8個(gè)不同事件。

1.       把觸發(fā)配置設(shè)回Basic并只有一級(jí)觸發(fā)。檢查觸發(fā)條件是否為SW[0]的跳變沿。

2.       SignalTap II窗口中的Signal Configuration面板中的Data面板的Sample Depth下拉菜單中選擇256。這個(gè)選項(xiàng)允許我們指定在我們的設(shè)計(jì)中的觸發(fā)時(shí)刻附近總共有多少個(gè)采樣點(diǎn)。如果我們需要更多的采樣點(diǎn)來(lái)調(diào)試我們的設(shè)計(jì),可以選擇更大的采樣深度。注意,如果采樣深度選擇過大,在我們的設(shè)計(jì)中將可能會(huì)不夠資源來(lái)實(shí)現(xiàn),這樣,設(shè)計(jì)就會(huì)編譯不過。如果這種情況發(fā)生,請(qǐng)減小采樣深度的大小。

3.       SignalTap II窗口的Signal Configuration面板中的Data部分,選中Segmented。然后在Segmented右邊的下拉菜單中,選擇8 32 sample segments。完成后的類似界面如圖22所示。

 

4.       重新編譯工程并加載配置文件。好了,我們可以使用分段獲取模式Segmented Acquistion mode來(lái)觀察我們的設(shè)計(jì)。

5.       回到SignalTap II窗口并單擊Processing->Run Analysis。現(xiàn)在,反復(fù)撥動(dòng)開關(guān)SW[0]并在兩次撥動(dòng)之間改變其他7個(gè)開關(guān)的值。當(dāng)我們完成8SW[0]的值改變時(shí),采樣緩存中的值將顯示在data窗口中,這些顯示的采樣值是8個(gè)開關(guān)在觸發(fā)時(shí)刻附近的數(shù)值。一種可能出現(xiàn)的波形如圖23所示。該波形來(lái)源于實(shí)踐者在改變SW[0]的值時(shí)同時(shí)改變其他開關(guān)的狀態(tài)。

 

5.1使用Synthesis Keep指令

       有時(shí)我們?cè)O(shè)計(jì)中的線網(wǎng)型wire變量在Quartus II編譯中有可能會(huì)被優(yōu)化掉。一個(gè)簡(jiǎn)單的例子如下面的verilog代碼所示:

 

       該電路的原理圖如圖25所示。標(biāo)注ababc的三角符號(hào)元件為Quartus II插入的緩存模塊,這些緩存并不改變通過它們的信號(hào)的值。

 

       我們想利用SignalTTap II來(lái)觀察輸入SW[2:0]和輸出LEDR[2:0]的值。同時(shí),我們也想要觀察內(nèi)部信號(hào)wire ab的值。然而,如果沒有加/*synthesis keep*/指令,只是按通常的verilog代碼來(lái)編譯,wire ab將會(huì)被優(yōu)化掉,如圖26所示:

 

       因此,如果我們需要觀察這個(gè)內(nèi)部信號(hào),我們可以告訴Quartus II我們不想把這個(gè)線網(wǎng)信號(hào)優(yōu)化掉。加入/*synthesis keep*/指令在所聲明的wire類型變量所在行的分號(hào)之前。圖24所示代碼已經(jīng)包含了這句指令。按下面操作我們將可以觀察到這個(gè)線型變量。

1.建立新的Quartus II工程threeInputAnd,并把圖24所給出的verilog代碼輸入到工程文件中,編譯工程。

2.打開Tools->SignalTap II Logic Analyzer,然后在SignalTap II窗口的Setup面板中,右鍵并選擇Add Nodes

3.Filter區(qū)域中,選擇SignalTap II:pre-synthesis,點(diǎn)擊List。然后把節(jié)點(diǎn)ab,SW[0]SW[1],SW[2]LEDR[0]加入到Selected Nodes List中并單擊OK

4.Signal Configuration面板中,選擇CLOCK_50作為時(shí)鐘信號(hào)。

5.設(shè)置觸發(fā)條件為當(dāng)ab的值變高電平。

6.導(dǎo)入相關(guān)的引腳分配文件。

7.重新編譯工程。

8.打開Tool->Programmer下載配置文件到DE系列開發(fā)板上。

9.再次打開SignalTap窗口,選擇Data標(biāo)簽頁(yè)。把DE系列開發(fā)板上的所有開關(guān)撥到值為0的位置。然后,單擊Processing->Run Analysis啟動(dòng)邏輯分析儀。

10.把前兩個(gè)開關(guān)撥到值為1的位置,這時(shí),觸發(fā)條件滿足,觀察信號(hào)。

 

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多