簡(jiǎn)化FPGA測(cè)試和調(diào)試
引言
本文引用地址:http://m.butianyuan.cn/article/47820.htm隨著FPGA的設(shè)計(jì)速度、尺寸和復(fù)雜度明顯增長(zhǎng),使得整個(gè)設(shè)計(jì)流程中的驗(yàn)證和調(diào)試成為當(dāng)前FPGA系統(tǒng)的關(guān)鍵部分。獲得FPGA內(nèi)部信號(hào)有限、FPGA封裝和印刷電路板(PCB)電氣噪聲,這一切使得設(shè)計(jì)調(diào)試和檢驗(yàn)變成設(shè)計(jì)周期中最困難的流程。另一方面,幾乎當(dāng)前所有的像CPU、DSP、ASIC等高速芯片的總線,除了提供高速并行總線接口外,正迅速的向高速串行接口的方向發(fā)展,F(xiàn)PGA也不例外,每一條物理鏈路的速度從600Mbps到高達(dá)10Gbps,高速IO的測(cè)試和驗(yàn)證更成為傳統(tǒng)專注于FPGA內(nèi)部邏輯設(shè)計(jì)的設(shè)計(jì)人員面臨的巨大挑戰(zhàn)。這些挑戰(zhàn)使設(shè)計(jì)人員非常容易會(huì)把絕大部分設(shè)計(jì)周期時(shí)間放在調(diào)試和檢驗(yàn)設(shè)計(jì)上。
為幫助您完成設(shè)計(jì)調(diào)試和檢驗(yàn)流程,它需要使用新的調(diào)試和測(cè)試工具,幫助調(diào)試設(shè)計(jì),同時(shí)支持在FPGA上全速運(yùn)行;高速信號(hào)完整性測(cè)試工具和方法也越來越多的在FPGA中體現(xiàn)出來。
本文根據(jù)當(dāng)前FPGA的設(shè)計(jì)人員面臨的挑戰(zhàn)分為2個(gè)部分,第一部分重點(diǎn)介紹在調(diào)試FPGA系統(tǒng)時(shí)遇到的問題及有助于提高調(diào)試效率的技術(shù);第二部分針對(duì)復(fù)雜FPGA中內(nèi)嵌的高速IO的信號(hào)完整性測(cè)試和分析,提供了最新的方法和工具。
FPGA設(shè)計(jì)流程概述
在FPGA系統(tǒng)設(shè)計(jì)完成前,有兩個(gè)不同的階段:設(shè)計(jì)階段,調(diào)試和檢驗(yàn)階段(參見圖1)。設(shè)計(jì)階段的主要任務(wù)是輸入、仿真和實(shí)現(xiàn)。調(diào)試和檢驗(yàn)階段的主要任務(wù)是檢驗(yàn)設(shè)計(jì),校正發(fā)現(xiàn)的任何錯(cuò)誤。
圖1 FPGA設(shè)計(jì)流程圖
設(shè)計(jì)階段
在這一階段不僅要設(shè)計(jì),而且要使用仿真工具開始調(diào)試。實(shí)踐證明,正確使用仿真為找到和校正設(shè)計(jì)錯(cuò)誤提供了一條有效的途徑。但是,不應(yīng)依賴仿真作為調(diào)試FPGA設(shè)計(jì)的唯一工具,有許多問題僅僅通過仿真無能為力。
此外,還需要提前考慮調(diào)試和檢驗(yàn)階段,規(guī)劃怎樣在線快速調(diào)試FPGA,這可以定義整體調(diào)試方法,幫助識(shí)別要求的任何測(cè)試測(cè)量工具,確定選擇的調(diào)試方法對(duì)電路板設(shè)計(jì)帶來的影響。針對(duì)可能選用的FPGA存在的高速總線,除了考慮邏輯時(shí)序的測(cè)試和驗(yàn)證外,應(yīng)該充分考慮后面可能面臨的信號(hào)完整性測(cè)試和分析難題。
調(diào)試和檢驗(yàn)階段
在調(diào)試階段,必需找到仿真沒有找到的棘手問題。怎樣以省時(shí)省力的方式完成這一工作是一個(gè)挑戰(zhàn)。
FPGA調(diào)試方法
在設(shè)計(jì)階段需要作出的關(guān)鍵選擇是使用哪種FPGA調(diào)試方法。在理想情況下,希望有一種方法可以移植到所有FPGA設(shè)計(jì)中,能夠洞察FPGA內(nèi)部運(yùn)行和系統(tǒng)運(yùn)行過程,為確定和分析棘手的問題提供相應(yīng)的處理能力。基本在線FPGA調(diào)試方法有兩種:使用嵌入式邏輯分析儀以及使用外部邏輯分析儀。選擇使用哪種方法取決于項(xiàng)目的調(diào)試需求。
嵌入式邏輯分析儀內(nèi)核
主要FPGA廠商針對(duì)器件的在線調(diào)試都提供了嵌入式邏輯分析儀內(nèi)核,如Altera的SignaiTap II和Xilinx的ChipScope ILA。這些知識(shí)產(chǎn)權(quán)模塊插入FPGA設(shè)計(jì)中,同時(shí)提供觸發(fā)功能和存儲(chǔ)功能。它們使用FPGA邏輯資源實(shí)現(xiàn)觸發(fā)電路,使用FPGA存儲(chǔ)模塊實(shí)現(xiàn)存儲(chǔ)功能。它們使用JTAG配置內(nèi)核操作。并用來把捕獲的數(shù)據(jù)傳送到PC上進(jìn)行查看。由于嵌入式邏輯分析儀使用內(nèi)部FPGA資源,因此其通常用于大型FPGA電這些大型FPGA可以更好地消化插入內(nèi)核帶來的開銷。一般來說,用戶希望內(nèi)核占用的FPGA邏輯資源不超過可用資源的5%。與任何調(diào)試方法一樣,還要知道這種方法存在的部分矛盾。
針腳與內(nèi)部資源
嵌入邏輯分析儀內(nèi)核不使用額外的測(cè)試針腳,因?yàn)樗ㄟ^現(xiàn)有的JTAG針腳訪問內(nèi)核。這意昧著即使設(shè)計(jì)受到FPGA針腳限制,您可以使用這種方法。矛盾在于,它使用的內(nèi)部FPGA邏輯資源和存儲(chǔ)模塊可以用來實(shí)現(xiàn)設(shè)計(jì)。此外,由于使用片內(nèi)內(nèi)存存儲(chǔ)捕獲的數(shù)據(jù),因此內(nèi)存深度一般相對(duì)較淺。
探測(cè)與運(yùn)行模式
嵌入式邏輯分析儀核心的探測(cè)非常簡(jiǎn)單。它使用現(xiàn)有的JTAG針腳,因此不必?fù)?dān)心怎樣把外部邏輯分析儀連接到系統(tǒng)上。矛盾在于,盡管嵌入式邏輯分析儀可以查看FPGA操作,但沒有一種方式把這些信息與電路板級(jí)或系統(tǒng)級(jí)信息時(shí)間關(guān)聯(lián)起來。而把FPGA內(nèi)部的信號(hào)與FPGA外部的信號(hào)關(guān)聯(lián)起來對(duì)解決最棘手的調(diào)試挑戰(zhàn)至關(guān)重要。在分析方法上,嵌入式邏輯分析儀只能進(jìn)行狀態(tài)分析。
成本與靈活性
大多數(shù)FPGA廠商提供了嵌入式邏輯分析儀內(nèi)核,而其價(jià)格要低于全功能外部邏輯分析儀。雖然用戶希望更多的功能,但嵌入式邏輯分析儀內(nèi)核的功能無論從通用性,分析方式,觸發(fā)能力,還是從存儲(chǔ)和分析能力都弱于全功能外部邏輯分析儀,而用戶通常需要這些功能,來捕獲和分析棘手的調(diào)試挑戰(zhàn)。例如,嵌入式邏輯分析儀只能在狀態(tài)模式下操作,它們捕獲與FPGA設(shè)計(jì)中已有的指定時(shí)鐘同步的數(shù)據(jù),因此不能提供精確的信號(hào)定時(shí)關(guān)系
外部邏輯分析儀
由于嵌入式邏輯分析儀方法存在的部分限制,許多FPGA設(shè)計(jì)人員已經(jīng)采用外部邏輯分析儀方法,來利用FPGA的靈活性和外部邏轄分析儀的處理能力,如泰克TLA系到邏輯分析儀。
在這種方法中,感興趣的內(nèi)部信號(hào)路由到FPGA沒有使用的針腳上,然后連接到邏輯分析儀上,這種方法提供了非常深的內(nèi)存,適合調(diào)試那種出現(xiàn)故障和實(shí)際導(dǎo)致該故障的原因在時(shí)間上相距很遠(yuǎn)的問題;對(duì)于需要采集大量數(shù)據(jù)進(jìn)行后期分析的設(shè)計(jì)人員也非常必要。另外它還可以把內(nèi)部FPGA信號(hào)與電路系統(tǒng)中的其它活動(dòng)時(shí)間關(guān)聯(lián)起來。
與嵌入式邏輯分析儀方法一樣,也需要考慮許多矛盾。
針腳與內(nèi)部資源
外部邏輯分析儀方法采用非常少的邏輯資源,不使用FPGA內(nèi)存資源。它釋放了這些資源,來實(shí)現(xiàn)所需功能?,F(xiàn)在的矛盾在于,必需增加專用于調(diào)試的部分針腳數(shù)量,而很明顯,設(shè)計(jì)要使用這些針腳。
探測(cè)與工作模式
外部邏輯分析儀探測(cè)要比嵌入式邏輯分析儀方法要求的探測(cè)復(fù)雜一些。必需確定怎樣使用邏輯分析儀探頭探測(cè)FPGA內(nèi)部信號(hào),而不能使用電路板上已有的JTAG連接器。最簡(jiǎn)便的方式是在電路板中增加一個(gè)測(cè)試連接器,這可以簡(jiǎn)便地把FPGA信號(hào)與系統(tǒng)中的其它信號(hào)關(guān)聯(lián)起來。{{分頁}}
成本與靈活性
盡管外部邏輯分析儀的購買價(jià)格確實(shí)要高于嵌入式邏輯分析儀,但使用外部邏輯分析儀可以解決更加廣泛的問題。邏輯分析儀不僅可以用于FPGA調(diào)試,還可以用來解決其他數(shù)字設(shè)計(jì)挑戰(zhàn),它被公認(rèn)為進(jìn)行通用數(shù)字系統(tǒng)硬件調(diào)試的最佳工具。外部邏輯分析儀能夠?qū)崿F(xiàn)更加靈活的采集模式和觸發(fā)功能。通過外部邏輯分析儀,可以設(shè)置最多16個(gè)不同的觸發(fā)狀態(tài)(每一個(gè)狀態(tài)含高16個(gè)條件判斷分支),每一個(gè)通道提供256M的內(nèi)存,并且可以在定時(shí)分析模式下以高達(dá)125ps的分辨率(8GHz采樣)捕獲數(shù)據(jù)。
選擇合適的FPGA調(diào)試方法
這兩種方法都可以使用,采用哪種方法要視具體情況而定。挑戰(zhàn)在于確定哪種方法更適合您的設(shè)計(jì),用戶可以問自己下面的問題:
預(yù)計(jì)有哪些問題?
如果您認(rèn)為問題僅限于FPGA內(nèi)部的功能性問題,那么使用嵌入式邏輯分析儀可以提供要求的所有調(diào)試功能。但是,如果預(yù)計(jì)有更多的調(diào)試問題。要求檢驗(yàn)定時(shí)余量、把內(nèi)部FPGA活動(dòng)與電路板上的其它活動(dòng)關(guān)聯(lián)起來、或要求更強(qiáng)大的觸發(fā)功能,那么使用外部邏輯分析儀更適合滿足調(diào)試需求。
當(dāng)FPGA芯片針腳存在超過200M的高速總線,例如集成內(nèi)存控制器的DDRI、DDRII內(nèi)存總線,以及集成高SerDes的高速串行IO總線,信號(hào)完整性測(cè)試是保證設(shè)計(jì)成功的基礎(chǔ)。在本文的后半部分會(huì)介紹主流的測(cè)試工具和方法。
除狀態(tài)數(shù)據(jù)外,是否需要考察快速定時(shí)信息?
外部邏輯分析儀允許以高達(dá)125ps的分辨率(8GS/s采樣)查看FPGA信號(hào)詳細(xì)的定時(shí)關(guān)系,這有助于檢驗(yàn)設(shè)計(jì)中實(shí)際發(fā)生的事件,檢驗(yàn)設(shè)計(jì)的定時(shí)余量。嵌入式邏輯分析儀只能捕獲與FPGA中已有的指定時(shí)鐘同步的數(shù)據(jù)。
需要捕獲多深的數(shù)據(jù)?外部邏輯分析儀提供的采集內(nèi)存更深。一般在嵌入式邏輯分析儀中,最大取樣深度設(shè)為128Kb,這一數(shù)字受到器件限制。
而在外部邏輯分析儀中,可以捕獲最多256Mb樣點(diǎn)。這有助于查看和分析更多的問題及潛在原因,從而縮短調(diào)試時(shí)間。
設(shè)計(jì)中更多地受限于針腳還是受限于資源?
使用嵌入式邏輯分析儀不要求任何額外的輸出針腳,但必須使用內(nèi)部FPGA資源,實(shí)現(xiàn)邏輯分析儀功能。使用外部邏輯分析儀要求使用額外的輸出針腳,但使用內(nèi)部FPGA資源的需求達(dá)到最小(或消除了這種需求)。
FPGAView FPGA調(diào)試
FPGAView概述
外部邏輯分析儀方法有效利用FPGA的處理能力,并根據(jù)需要重新對(duì)設(shè)備配置,把感興趣的內(nèi)部信號(hào)路由到通常很少的針腳上。這是一種非常有用的方法,但它也有一定的局限性:
* 用戶每次需要查看一套不同的內(nèi)部信號(hào)時(shí),都必需改變?cè)O(shè)計(jì)(在RTL級(jí)或使用FPGA編輯器工具),把希望的信號(hào)組路由到調(diào)試針腳上。這不僅耗費(fèi)時(shí)間,而且如果要求重新匯編設(shè)計(jì),那么還會(huì)改變?cè)O(shè)計(jì)的定時(shí),可能會(huì)隱藏需要解決的問題;
* 當(dāng)更改FPGA內(nèi)部測(cè)試信號(hào)時(shí),在外部邏輯分析儀上的被測(cè)信號(hào)名稱需要手工進(jìn)行更新;
* 一般來說,調(diào)試針腳數(shù)量很少,內(nèi)部信號(hào)與調(diào)試針腳之間1:1的關(guān)系限制著設(shè)計(jì)查看能力和洞察力。
為克服這些局限性,出現(xiàn)了一種新的FPGA調(diào)試方法,它不僅提供了外部邏輯分析儀方法的所有優(yōu)勢(shì),還消除了主要局限性。FPGAView軟件在與泰克TLA系列邏輯分析儀配套使用時(shí),為調(diào)試FPGA和周邊硬件電路提供了一個(gè)完整的解決方案(參見圖2)。
圖2 典型的FPGAView實(shí)現(xiàn)方案
這種組合可以:
* 時(shí)間關(guān)聯(lián)的查看FPGA內(nèi)部活動(dòng)和外部活動(dòng);
* 迅速改變FPGA內(nèi)部探點(diǎn),而無需重新匯編設(shè)計(jì);
* 每個(gè)針腳監(jiān)測(cè)多個(gè)內(nèi)部信號(hào);
* 在TLA邏輯分析儀上自動(dòng)更新切換的內(nèi)部信號(hào)名稱。
此外,F(xiàn)PGAView可以在一臺(tái)設(shè)備中處理多個(gè)測(cè)試內(nèi)核(適合監(jiān)測(cè)不同的時(shí)鐘域),并可以在一個(gè)JTAG鏈上處理多臺(tái)FPGA設(shè)備。
快速使用FPGAView
可以通過下面幾個(gè)簡(jiǎn)單的步驟使用FPGAView:
第1步,在設(shè)計(jì)中配置和插入相應(yīng)的測(cè)試內(nèi)核(Configure and Insert);
第2步,加載測(cè)試內(nèi)核信息(Load);
第3步,建立FPGA針腳與TLA邏輯分析儀通道的對(duì)應(yīng)關(guān)系(Mapping);
第4步,進(jìn)行測(cè)量(Run)。
第一步是配置測(cè)試內(nèi)核,把它插入到FPGA設(shè)計(jì)中。例如,在使用ALtera設(shè)備時(shí),可以使用Altera的邏輯分析儀接口編輯器,創(chuàng)建最
適合自己需求的測(cè)試核(參見圖3)。
圖3 使用(邏輯分析儀節(jié)口編輯器)定義和插入內(nèi)核的實(shí)例
對(duì)大多數(shù)測(cè)試內(nèi)核,可以指定下述參數(shù):
Pin Count(針腳數(shù)量):表示希望專用于邏輯分析儀接口的針腳數(shù)量。
Bank Count(組數(shù)):表示希望映射到每個(gè)針腳上的內(nèi)部信號(hào)數(shù)量。
Output/Capture Mode(輸出/捕獲模式):選擇希望執(zhí)行的采集類型??梢赃x擇Combination/Timing(組合邏輯/定時(shí)模式)或Registered/State(寄存器/狀態(tài)模式)。
Clock(時(shí)鐘):如果用戶選擇了Registered/State(寄存器/狀態(tài))的捕獲模式,這一選項(xiàng)允許選擇測(cè)試內(nèi)核的取樣時(shí)鐘。
Power-Up State(通電狀態(tài)):這個(gè)參數(shù)允許指明指定用于邏輯分析儀接口的針腳的通電狀態(tài)。
從FPGAView軟件窗口中,可以與JTAG編程電纜建立連接,并且連接到TLA系列邏輯分析儀(TLA邏輯分析儀使用windows平臺(tái))或PC工作站上。{{分頁}}
在使用ALTERA FPGA芯片時(shí),按Open(打開)工具條按鈕,調(diào)出一個(gè)文件瀏覽器,選擇Quartus II LAI Editor軟件以前生成的邏輯分析儀接口(LAI)文件。這樣就加載了與LAI核心有關(guān)的所有信息電包括每一組的信號(hào)數(shù)量、組數(shù)和信號(hào)名稱,另外如果設(shè)備中的LAI內(nèi)核多于一個(gè),那么還包括每個(gè)LAI內(nèi)核的信息。
下一步是映射FPGA針腳和TLA邏輯分析儀探頭之間的物理連接,F(xiàn)PGAView可以自動(dòng)更新邏輯分析儀上顯示的信號(hào)名稱,與測(cè)試內(nèi)核當(dāng)前監(jiān)測(cè)的信號(hào)相匹配。
為此,簡(jiǎn)單地點(diǎn)擊Probes(探頭)按鈕,將出現(xiàn)一個(gè)拖放窗口,把測(cè)試內(nèi)核輸出信號(hào)名稱與邏輯分析儀上的相應(yīng)通道連接起來(參見圖4)。對(duì)某條目標(biāo)連接,這個(gè)通道分配過程只需一次。
圖4 FPGAView迅速簡(jiǎn)便地映射針腳
使用Bank(組)列表下拉菜單,選擇想要測(cè)量的組。一旦選擇了組,F(xiàn)PGAView會(huì)通過JTAG接口與FPGA通信并配置測(cè)試內(nèi)核,以便選擇希望的組。
FPGAView還將這些通道名稱通過對(duì)TLA系列邏輯分析儀的控制進(jìn)行自動(dòng)分配,從而可以簡(jiǎn)便地理解測(cè)量結(jié)果。為測(cè)量不同的一套內(nèi)部信號(hào),用戶只需選擇不同的信號(hào)組(參見圖5)。全功能TLA系列邏輯分析儀會(huì)自動(dòng)把這些FPGA信號(hào)與系統(tǒng)中的其它信號(hào)關(guān)聯(lián)起來(參見圖6)。
圖5 選擇希望測(cè)量的信號(hào)組
圖6 TLA系列邏輯分析儀自動(dòng)完成和簡(jiǎn)化了許多測(cè)量
在TLA邏輯分析儀中,針對(duì)設(shè)計(jì)人員關(guān)心的各種時(shí)間信息,提供了業(yè)內(nèi)獨(dú)有的定時(shí)參數(shù)自動(dòng)測(cè)量功能,通過鼠標(biāo)簡(jiǎn)單的拖放操作,能夠得到周期,頻率,占空比,脈沖寬度,通道一通道延遲,邊沿計(jì)數(shù),周期計(jì)數(shù),違規(guī)計(jì)數(shù),周期抖動(dòng),以及周期間抖動(dòng)等信息。
高速FPGA的信號(hào)完整性測(cè)試和分析
當(dāng)前流行的FPGA芯片都提供高速總線,例如DDR內(nèi)存總線,PCI-X總線、SPI總線;針對(duì)超高速的數(shù)據(jù)傳輸,F(xiàn)PGA通過集成SerDes提供高速串行I0,支持各種諸如PCI-E、GBE、XAUI等高速串行總線協(xié)議,為各種不同標(biāo)準(zhǔn)的高速傳輸提供極大的靈活性。
高速串行總線眼圖測(cè)試
對(duì)于采用內(nèi)嵌SERDES電路的FPGA芯片,其高速串行信號(hào)進(jìn)行測(cè)試和驗(yàn)證,最基本的工具是通過示波器進(jìn)行對(duì)其眼圖測(cè)試。因?yàn)檠蹐D能夠非常直觀的反映一條被測(cè)信號(hào)路徑上的整體信號(hào)質(zhì)量問題,包括信號(hào)的抖動(dòng)量大小(眼寬)以及幅度的大小(眼高)等重要信息。圖7是一個(gè)高速數(shù)據(jù)信號(hào)的眼圖形成的過程。
圖7 眼圖的形成過程
從眼圖的形成過程可以看出,一個(gè)NRZ編碼的高速數(shù)據(jù)無論傳輸何種碼流,都可以看一個(gè)重復(fù)信號(hào),經(jīng)過一定時(shí)間和樣本數(shù)的累計(jì),它反映整個(gè)傳輸通路上的信號(hào)質(zhì)量。
示波器的帶寬要求
示波器進(jìn)行高速總線測(cè)試啕帶寬是對(duì)示波器的基本要求。以一個(gè)NRZ編碼的高速串行總線為例,它理想的波形是一個(gè)方波信號(hào),方波信號(hào)是由它的基波(正弦波)和奇次諧波(3次,5次,7次)組成。根據(jù)信號(hào)的傳輸速率和上升時(shí)間時(shí)間,選擇盡量高帶寬和最快上升時(shí)間的示波器,這樣測(cè)試結(jié)果保留更多的諧波分量,構(gòu)建高精度的眼圖測(cè)試結(jié)果。
示波器帶寬反映了對(duì)被測(cè)信號(hào)幅度上的衰減,而示波器上升時(shí)間決定了對(duì)被測(cè)信號(hào)上升時(shí)間測(cè)試的誤差。經(jīng)典的示波器帶寬和上升時(shí)間的關(guān)系為:帶寬
評(píng)論