利用SignalTap II邏輯分析儀調(diào)試FPGA
1 概述
隨著FPGA容量的增大,F(xiàn)PGA的設(shè)計(jì)日益復(fù)雜,設(shè)計(jì)調(diào)試成為一個(gè)很繁重的任務(wù)。為了使得設(shè)計(jì)盡快投入市場(chǎng),設(shè)計(jì)人員需要一種簡(jiǎn)易有效的測(cè)試工具,以盡可能的縮短測(cè)試時(shí)間。傳統(tǒng)的邏輯分析儀在測(cè)試復(fù)雜的FPGA設(shè)計(jì)時(shí),將會(huì)面臨以下幾點(diǎn)問(wèn)題:1)缺少空余I/O引腳。設(shè)計(jì)中器件的選擇依據(jù)設(shè)計(jì)規(guī)模而定,通常所選器件的I/O引腳數(shù)目和設(shè)計(jì)的需求是恰好匹配的。2)I/O引腳難以引出。設(shè)計(jì)者為減小電路板的面積,大都采用細(xì)間距工藝技術(shù),在不改變PCB板布線的情況下引出I/O引腳非常困難。3)外接邏輯分析儀有改變FPGA設(shè)計(jì)中信號(hào)原來(lái)狀態(tài)的可能,因此難以保證信號(hào)的正確性。4)傳統(tǒng)的邏輯分析儀價(jià)格昂貴,將會(huì)加重設(shè)計(jì)方的經(jīng)濟(jì)負(fù)擔(dān)。
伴隨著EDA工具的快速發(fā)展,一種新的調(diào)試工具Quartus II 中的SignalTap II 滿足了FPGA開(kāi)發(fā)中硬件調(diào)試的要求,它具
有無(wú)干擾、便于升級(jí)、使用簡(jiǎn)單、價(jià)格低廉等特點(diǎn)。本文將介紹SignalTap II邏輯分析儀的主要特點(diǎn)和使用流程,并以一個(gè)實(shí)例介紹該分析儀具體的操作方法和步驟。
2 SignalTap II的特點(diǎn)及使用
SignalTap II嵌入邏輯分析儀集成到Quartus II設(shè)計(jì)軟件中,能夠捕獲和顯示可編程單芯片系統(tǒng)(SOPC)設(shè)計(jì)中實(shí)時(shí)信號(hào)的狀態(tài),這樣開(kāi)發(fā)者就可以在整個(gè)設(shè)計(jì)過(guò)程中以系統(tǒng)級(jí)的速度觀察硬件和軟件的交互作用。它支持多達(dá)1024個(gè)通道,采樣深度高達(dá)128Kb,每個(gè)分析儀均有10級(jí)觸發(fā)輸入/輸出,從而增加了采樣的精度。SignalTap II為設(shè)計(jì)者提供了業(yè)界領(lǐng)先的SOPC設(shè)計(jì)的實(shí)時(shí)可視性,能夠大大減少驗(yàn)證過(guò)程中所花費(fèi)的時(shí)間。目前SignalTap II邏輯分析儀支持的器件系列包括:APEXT II, APEX20KE, APEX20KC, APEX20K, Cyclone, Excalibur, Mercury, Stratix GX, Stratix。
SignalTap II將邏輯分析模塊嵌入到FPGA中,如圖1所示。邏輯分析模塊對(duì)待測(cè)節(jié)點(diǎn)的數(shù)據(jù)進(jìn)行捕獲,數(shù)據(jù)通過(guò)JTAG接口從FPGA傳送到Quartus II軟件中顯示。使用SignalTap II無(wú)需額外的邏輯分析設(shè)備,只需將一根JTAG接口的下載電纜連接到要調(diào)試的FPGA器件。SignalTap II對(duì)FPGA的引腳和內(nèi)部的連線信號(hào)進(jìn)行捕獲后,將數(shù)據(jù)存儲(chǔ)在一定的RAM塊中。因此,需要用于捕獲的采樣時(shí)鐘信號(hào)和保存被測(cè)信號(hào)的一定點(diǎn)數(shù)的RAM塊。
使用SignalTap II的一般流程是:設(shè)計(jì)人員在完成設(shè)計(jì)并編譯工程后,建立SignalTap II (.stp)文件并加入工程、配置STP文件、編譯并下載設(shè)計(jì)到FPGA、在Quartus II軟件中顯示被測(cè)信號(hào)的波形、在測(cè)試完畢后將該邏輯分析儀從項(xiàng)目中刪除。以下描述設(shè)置 SignalTap II 文件的基本流程:
1.設(shè)置采樣時(shí)鐘。采樣時(shí)鐘決定了顯示信號(hào)波形的分辨率,它的頻率要大于被測(cè)信號(hào)的最高頻率,否則無(wú)法正確反映被測(cè)信號(hào)波形的變化。SignalTap II在時(shí)鐘上升沿將被測(cè)信號(hào)存儲(chǔ)到緩存。
2.設(shè)置被測(cè)信號(hào)??梢允褂肗ode Finder 中的 SignalTap II 濾波器查找所有預(yù)綜合和布局布線后的SignalTap II 節(jié)點(diǎn),添加要觀察的信號(hào)。邏輯分析器不可測(cè)試的信號(hào)包括:邏輯單元的進(jìn)位信號(hào)、PLL的時(shí)鐘輸出、JTAG引腳信號(hào)、LVDS(低壓差分)信號(hào)。
3.配置采樣深度、確定RAM的大小。SignalTap II所能顯示的被測(cè)信號(hào)波形的時(shí)間長(zhǎng)度為T(mén)x,計(jì)算公式如下: --- Tx="N"×Ts --- N為緩存中存儲(chǔ)的采樣點(diǎn)數(shù),Ts為采樣時(shí)鐘的周期。 4.設(shè)置buffer acquisition mode。buffer acquisition mode包括循環(huán)采樣存儲(chǔ)、連續(xù)存儲(chǔ)兩種模式。循環(huán)采樣存儲(chǔ)也就是分段存儲(chǔ),將整個(gè)緩存分成多個(gè)片段(segment),每當(dāng)觸發(fā)條件滿足時(shí)就捕獲一段數(shù)據(jù)。該功能可以去掉無(wú)關(guān)的數(shù)據(jù),使采樣緩存的使用更加靈活。
5.觸發(fā)級(jí)別。SignalTap II支持多觸發(fā)級(jí)的觸發(fā)方式,最多可支持10級(jí)觸發(fā)。
6.觸發(fā)條件??梢栽O(shè)定復(fù)雜的觸發(fā)條件用來(lái)捕獲相應(yīng)的數(shù)據(jù),以協(xié)助調(diào)試設(shè)計(jì)。當(dāng)觸發(fā)條件滿足時(shí),在signalTap時(shí)鐘的上升沿采樣被測(cè)信號(hào)。
完成STP設(shè)置后,將STP文件同原有的設(shè)計(jì)下載到FPGA中,在Quartus II中SignalTap II窗口下查看邏輯分析儀捕獲結(jié)果。SignalTap II可將數(shù)據(jù)通過(guò)多余的I/O引腳輸出,以供外設(shè)的邏輯分析器使用;或輸出為csv、tbl、vcd、vwf文件格式以供第三方仿真工具使用。
3 實(shí)例分析
本文以一個(gè)ADC0809器件的采樣控制器作為實(shí)例,具體說(shuō)明如何用SignalTap II 來(lái)進(jìn)行FPGA設(shè)計(jì)的驗(yàn)證。使用Altera公司的器件Cyclone系列FPGA- EP1C12Q240C8,該器件支持SignalTap II 嵌入式邏輯分析儀的使用。
FPGA的設(shè)計(jì)結(jié)構(gòu)如圖2所示。數(shù)字倍頻器的倍頻輸出提供ADC控制器的采樣觸發(fā)脈沖。A/D轉(zhuǎn)換器ADC0809的操作時(shí)序見(jiàn)數(shù)據(jù)手冊(cè),根據(jù)其操作時(shí)序,ADC控制器來(lái)實(shí)現(xiàn)ADC0809的數(shù)據(jù)采集操作,采樣的時(shí)機(jī)由倍頻器來(lái)控制??刂破髅靠刂仆瓿梢淮尾蓸硬僮?,則停止等待下一個(gè)觸發(fā)脈沖的到來(lái)。倍頻器每輸出一個(gè)低電平脈沖,ADC采樣控制器的狀態(tài)機(jī)進(jìn)行一次采樣操作。在倍頻器的觸發(fā)控制下,完成被測(cè)信號(hào)一個(gè)基波周期N個(gè)點(diǎn)的等間隔采樣,同時(shí)數(shù)字倍頻器跟蹤輸入信號(hào)的頻率的變化,盡可能地保持N個(gè)點(diǎn)的采樣寬度正好為被測(cè)信號(hào)一個(gè)周波的寬度。
點(diǎn)擊看原圖
測(cè)試項(xiàng)目是基于FPGA的AD采樣控制器,它是用狀態(tài)機(jī)控制的周期性的重復(fù)事件,一次采樣操作完成后等待采樣脈沖、開(kāi)始下一次的采樣。針對(duì)待測(cè)項(xiàng)目的周期性,
在STP文件中將buffer acquisition mode分別設(shè)為連續(xù)存儲(chǔ)和循環(huán)采樣存儲(chǔ)兩種模式進(jìn)行驗(yàn)證。連續(xù)存儲(chǔ)方式記錄采樣操作的連續(xù)過(guò)程,而在循環(huán)采樣存儲(chǔ)方式下SignalTap II記錄多次采樣時(shí)刻數(shù)據(jù)。
按照上述SignalTap II的使用步驟,在編譯后的工程中添加STP文件,并對(duì)文件進(jìn)行設(shè)置,如圖3所示。如1處設(shè)置采樣時(shí)鐘ct[3],系統(tǒng)時(shí)鐘的16分頻。2處添加測(cè)試信號(hào),包括待測(cè)模塊輸出的AD采樣控制信號(hào)和狀態(tài)機(jī)的狀態(tài)等。3處是采樣深度的設(shè)置,設(shè)為512。在4處的設(shè)置確定了在clko時(shí)鐘的上升沿觸發(fā)邏輯分析儀。在連續(xù)存儲(chǔ)模式下設(shè)置buffer acquisition mode為Circular前觸發(fā)位置。在分段存儲(chǔ)模式下設(shè)置為Sigmented 512 1 bit segments,表示將存儲(chǔ)區(qū)劃分成512個(gè)段,每段1個(gè)位的存儲(chǔ)深度。存儲(chǔ)模式的設(shè)置如圖中6所示。另外,使用Mnemonic Table將狀態(tài)機(jī)的7個(gè)狀態(tài)標(biāo)示為直觀名稱。
首先將STP文件設(shè)置成連續(xù)存儲(chǔ)模式,并將該文件連同工程一起下載到FPGA中。在連續(xù)存儲(chǔ)模式下,SignalTap II在clko時(shí)鐘的上升沿連續(xù)采樣直到采樣點(diǎn)數(shù)達(dá)到512個(gè)。這樣,SignalTap II記錄了一次采樣過(guò)程的所有數(shù)據(jù),捕獲結(jié)果如圖4所示,從中可以看到FPGA控制ADC0809轉(zhuǎn)換的時(shí)序波形。
將圖3所示步驟6中的Buffer acquisition node改為Segmented方式,設(shè)其值為256 1 bit segments,并將修改后的STP文件連同工程重新下載到FPGA中。和單次觸發(fā)相同的是邏輯分析儀在ADC0809采樣時(shí)鐘上升沿時(shí)觸發(fā)邏輯分析儀,不同的是因?yàn)槊恳欢沃挥?bit的存儲(chǔ)深度,因此捕獲1位數(shù)據(jù)后邏輯分析儀停止,等待下一次滿足觸發(fā)信號(hào)再次啟動(dòng),一共啟動(dòng)256次。在波形顯示窗口,設(shè)顯示格式為L(zhǎng)ine Chart,這樣結(jié)果就直觀的顯示為連續(xù)的波形。分片采樣,可觀察同步采樣的結(jié)果,圖5是連續(xù)采樣256個(gè)點(diǎn)的結(jié)果波形。
4 結(jié)論
SignalTap II 嵌入式邏輯分析器,提供了芯片測(cè)試的一個(gè)很好的途徑。通過(guò)SignalTap II 測(cè)試芯片無(wú)需外接專用儀器,它在器件內(nèi)部捕獲節(jié)點(diǎn)進(jìn)行分析和判斷系統(tǒng)故障。本文通過(guò)對(duì)Cyclone EP1C12器件的實(shí)驗(yàn)證實(shí)該測(cè)試手段大大提高系統(tǒng)的調(diào)試能力,具有很好的效果。