FPGA設(shè)計(jì)及調(diào)試問(wèn)題分析
現(xiàn)代科技對(duì)系統(tǒng)的可靠性提出了更高的要求,而FPGA技術(shù)在電子系統(tǒng)中應(yīng)用已經(jīng)非常廣泛,因此FPGA易測(cè)試性就變得很重要。要獲得的FPGA內(nèi)部信號(hào)十分有限、FPGA封裝和印刷電路板(PCB)電氣噪聲,這一切使得設(shè)計(jì)調(diào)試和檢驗(yàn)變成設(shè)計(jì)中最困難的一個(gè)流程。另一方面,當(dāng)前幾乎所有的像CPU、DSP、ASIC等高速芯片的總線,除了提供高速并行總線接口外,正迅速向高速串行接口的方向發(fā)展,F(xiàn)PGA也不例外。每一條物理鏈路的速度從600 Mbps到10 Gbps,高速I/O的測(cè)試和驗(yàn)證更成為傳統(tǒng)專注于FPGA內(nèi)部邏輯設(shè)計(jì)的設(shè)計(jì)人員所面臨的巨大挑戰(zhàn)。這些挑戰(zhàn)使設(shè)計(jì)人員非常容易地將絕大部分設(shè)計(jì)時(shí)間放在調(diào)試和檢驗(yàn)設(shè)計(jì)上。
本文就調(diào)試FPGA系統(tǒng)時(shí)遇到的問(wèn)題及有助于提高調(diào)試效率的方法,針對(duì)Altera和Xilinx的FPGA調(diào)試提供了最新的方法和工具。
1 FPGA一般設(shè)計(jì)流程
在FPGA系統(tǒng)設(shè)計(jì)完成前,有2個(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.1 設(shè)計(jì)階段
在這一階段不僅要設(shè)計(jì),而且要使用仿真工具開始調(diào)試。實(shí)踐證明,正確使用仿真為找到和校正設(shè)計(jì)錯(cuò)誤提供了一條有效的途徑。但是,不應(yīng)依賴仿真作為調(diào)試FPGA設(shè)計(jì)的唯一工具。
在設(shè)計(jì)階段,還需要提前考慮調(diào)試和檢驗(yàn)階段,規(guī)劃怎樣在線快速調(diào)試FPGA,這可以定義整體調(diào)試方法,幫助識(shí)別要求的任何測(cè)試測(cè)量工具,確定選擇的調(diào)試方法對(duì)電路板設(shè)計(jì)帶來(lái)的影響。針對(duì)可能選用的FPGA存在的高速總線,除了考慮邏輯時(shí)序的測(cè)試和驗(yàn)證外,還應(yīng)該充分考慮后面可能面臨的信號(hào)完整性測(cè)試和分析難題。
1.2 調(diào)試和檢驗(yàn)階段
在調(diào)試階段,必須找到仿真沒(méi)有找到的棘手問(wèn)題。怎樣以省時(shí)省力的方式完成這一工作是一個(gè)挑戰(zhàn)。本文將研究如何選擇正確的FPGA調(diào)試方法及如何有效地利用新方法的處理能力,這些新方法可以只使用少量的FPGA針腳查看許多內(nèi)部FPGA信號(hào)。如果使用得當(dāng),可以突破最棘手的FPGA調(diào)試問(wèn)題。
1.3 FPGA調(diào)試方法
在設(shè)計(jì)階段需要作出的關(guān)鍵選擇是使用哪種FPGA調(diào)試方法。在理想情況下,設(shè)計(jì)者希望有一種方法,這種方法可以移植到所有FPGA設(shè)計(jì)中,能夠洞察FPGA內(nèi)部運(yùn)行和系統(tǒng)運(yùn)行過(guò)程,為確定和分析棘手的問(wèn)題提供相應(yīng)的處理能力。
基本在線FPGA調(diào)試方法有2種:使用嵌入式邏輯分析儀以及使用外部邏輯分析儀。選擇使用何種方法取決于項(xiàng)目的調(diào)試需求。
2 嵌入式邏輯分析儀內(nèi)核
主要的FPGA廠商針對(duì)器件的在線調(diào)試都提供了嵌入式邏輯分析儀內(nèi)核,這些知識(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)核帶來(lái)的開銷。一般來(lái)說(shuō),用戶希望內(nèi)核占用的FPGA邏輯資源不超過(guò)可用資源的5%。
與其他調(diào)試方法一樣,還要知道這種方法存在的部分矛盾。
2.1 針腳與內(nèi)部資源
嵌入邏輯分析儀內(nèi)核不使用額外的測(cè)試針腳,因?yàn)樗ㄟ^(guò)現(xiàn)有的JTAG針腳訪問(wèn)內(nèi)核。這意味著即使設(shè)計(jì)受到FPGA針腳限制,仍可以使用這種方法。矛盾在于,它使用的內(nèi)部FPGA邏輯資源和存儲(chǔ)模塊可以用來(lái)實(shí)現(xiàn)設(shè)計(jì)。此外,由于使用片內(nèi)內(nèi)存存儲(chǔ)捕獲的數(shù)據(jù),因此內(nèi)存深度一般相對(duì)較淺。
2.2 探測(cè)與運(yùn)行模式
嵌入式邏輯分析儀核心的探測(cè)非常簡(jiǎn)單,它使用現(xiàn)有的JTAG針腳。矛盾在于,盡管嵌入式邏輯分析儀可以查看FPGA操作,但沒(méi)有一種方式將這些信息與電路板級(jí)或系統(tǒng)級(jí)信息時(shí)間關(guān)聯(lián)起來(lái)。而將FPGA內(nèi)部的信號(hào)與FPGA外部的信號(hào)關(guān)聯(lián)起來(lái)對(duì)解決棘手的調(diào)試問(wèn)題至關(guān)重要。在分析方法上,嵌入式邏輯分析儀只能進(jìn)行狀態(tài)分析。
2.3 成本與靈活性
大多數(shù)FPGA廠商提供了嵌入式邏輯分析儀內(nèi)核,而其價(jià)格要低于全功能外部邏輯分析儀。雖然用戶希望更多的功能,但嵌入式邏輯分析儀內(nèi)核的功能無(wú)論從通用性、分析方式、觸發(fā)能力,還是從存儲(chǔ)和分析能力都弱于全功能外部邏輯分析儀,而用戶通常需要這些功能來(lái)捕獲和分析棘手的調(diào)試問(wèn)題。例如,嵌入式邏輯分析儀只能在狀態(tài)模式下操作,它們捕獲與FPGA設(shè)計(jì)中已有的指定時(shí)鐘同步的數(shù)據(jù),因此不能提供精確的信號(hào)定時(shí)關(guān)系。
3 外部邏輯分析儀
由于嵌入式邏輯分析儀方法存在部分限制,F(xiàn)PGA設(shè)計(jì)人員采用外部邏輯分析儀方法,來(lái)利用FPGA的靈活性和外部邏輯分析儀的處理能力,如泰克TLA系列邏輯分析儀。
在這種方法中,有用的內(nèi)部信號(hào)路由到FPGA沒(méi)有使用的針腳上,然后連接到邏輯分析儀上。這種方法提供了非常深的內(nèi)存,適合調(diào)試出現(xiàn)故障和實(shí)際導(dǎo)致該故障的原因在時(shí)間上相距很遠(yuǎn)的問(wèn)題;對(duì)于需要采集大量數(shù)據(jù)進(jìn)行后期分析的設(shè)計(jì)人員也非常必要。另外,它還可以把內(nèi)部FPGA信號(hào)與電路系統(tǒng)中的其他活動(dòng)時(shí)間關(guān)聯(lián)起來(lái)。
與嵌入式邏輯分析儀方法一樣,也需要考慮許多矛盾。
評(píng)論