<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > FPGA系統(tǒng)調試問題及提高調試效率的方法

          FPGA系統(tǒng)調試問題及提高調試效率的方法

          作者: 時間:2017-06-05 來源:網(wǎng)絡 收藏

          現(xiàn)代科技對系統(tǒng)的可靠性提出了更高的要求,而技術在電子系統(tǒng)中應用已經(jīng)非常廣泛,因此易測試性就變得很重要。要獲得的內部信號十分有限、FPGA封裝和印刷電路板(PCB)電氣噪聲,這一切使得設計調試和檢驗變成設計中最困難的一個流程。另一方面,當前幾乎所有的像CPU、DSP、ASIC等高速芯片的總線,除了提供高速并行總線接口外,正迅速向高速串行接口的方向發(fā)展,F(xiàn)PGA也不例外。每一條物理鏈路的速度從600 Mbps到10 Gbps,高速I/O的測試和驗證更成為傳統(tǒng)專注于FPGA內部邏輯設計的設計人員所面臨的巨大挑戰(zhàn)。這些挑戰(zhàn)使設計人員非常容易地將絕大部分設計時間放在調試和檢驗設計上。

          本文就調試FPGA系統(tǒng)時遇到的問題及有助于提高調試效率的方法,針對Altera和Xilinx的FPGA調試提供了最新的方法和工具。

          1 FPGA一般設計流程

          在FPGA系統(tǒng)設計完成前,有2個不同的階段:設計階段、調試和檢驗階段,如圖1所示。設計階段的主要任務是輸入、仿真和實現(xiàn);調試和檢驗階段的主要任務是檢驗設計,校正發(fā)現(xiàn)的錯誤。


          1.1 設計階段

          本文引用地址:http://www.ex-cimer.com/article/201706/349015.htm

          在這一階段不僅要設計,而且要使用仿真工具開始調試。實踐證明,正確使用仿真為找到和校正設計錯誤提供了一條有效的途徑。但是,不應依賴仿真作為調試FPGA設計的唯一工具。

          在設計階段,還需要提前考慮調試和檢驗階段,規(guī)劃怎樣在線快速調試FPGA,這可以定義整體調試方法,幫助識別要求的任何測試測量工具,確定選擇的調試方法對電路板設計帶來的影響。針對可能選用的FPGA存在的高速總線,除了考慮邏輯時序的測試和驗證外,還應該充分考慮后面可能面臨的信號完整性測試和分析難題。

          1.2 調試和檢驗階段

          在調試階段,必須找到仿真沒有找到的棘手問題。怎樣以省時省力的方式完成這一工作是一個挑戰(zhàn)。本文將研究如何選擇正確的FPGA調試方法及如何有效地利用新方法的處理能力,這些新方法可以只使用少量的FPGA針腳查看許多內部FPGA信號。如果使用得當,可以突破最棘手的FPGA調試問題。

          1.3 FPGA調試方法

          在設計階段需要作出的關鍵選擇是使用哪種FPGA調試方法。在理想情況下,設計者希望有一種方法,這種方法可以移植到所有FPGA設計中,能夠洞察FPGA內部運行和系統(tǒng)運行過程,為確定和分析棘手的問題提供相應的處理能力。

          基本在線FPGA調試方法有2種:使用嵌入式以及使用外部。選擇使用何種方法取決于項目的調試需求。

          2 嵌入式內核

          主要的FPGA廠商針對器件的在線調試都提供了嵌入式邏輯分析儀內核,這些知識產(chǎn)權模塊插入FPGA設計中,同時提供觸發(fā)功能和存儲功能。它們使用FPGA邏輯資源實現(xiàn)觸發(fā)電路;使用FPGA存儲模塊實現(xiàn)存儲功能;使用JTAG配置內核操作,并用它將捕獲的數(shù)據(jù)傳送到PC上進行查看。

          由于嵌入式邏輯分析儀使用內部FPGA資源,因此其通常用于大型FPGA,這些大型FPGA可以更好地消化插入內核帶來的開銷。一般來說,用戶希望內核占用的FPGA邏輯資源不超過可用資源的5%。

          與其他調試方法一樣,還要知道這種方法存在的部分矛盾。

          2.1 針腳與內部資源

          嵌入邏輯分析儀內核不使用額外的測試針腳,因為它通過現(xiàn)有的JTAG針腳訪問內核。這意味著即使設計受到FPGA針腳限制,仍可以使用這種方法。矛盾在于,它使用的內部FPGA邏輯資源和存儲模塊可以用來實現(xiàn)設計。此外,由于使用片內內存存儲捕獲的數(shù)據(jù),因此內存深度一般相對較淺。

          2.2 探測與運行模式

          嵌入式邏輯分析儀核心的探測非常簡單,它使用現(xiàn)有的JTAG針腳。矛盾在于,盡管嵌入式邏輯分析儀可以查看FPGA操作,但沒有一種方式將這些信息與電路板級或系統(tǒng)級信息時間關聯(lián)起來。而將FPGA內部的信號與FPGA外部的信號關聯(lián)起來對解決棘手的調試問題至關重要。在分析方法上,嵌入式邏輯分析儀只能進行狀態(tài)分析。

          2.3 成本與靈活性

          大多數(shù)FPGA廠商提供了嵌入式邏輯分析儀內核,而其價格要低于全功能外部邏輯分析儀。雖然用戶希望更多的功能,但嵌入式邏輯分析儀內核的功能無論從通用性、分析方式、觸發(fā)能力,還是從存儲和分析能力都弱于全功能外部邏輯分析儀,而用戶通常需要這些功能來捕獲和分析棘手的調試問題。例如,嵌入式邏輯分析儀只能在狀態(tài)模式下操作,它們捕獲與FPGA設計中已有的指定時鐘同步的數(shù)據(jù),因此不能提供精確的信號定時關系。

          3 外部邏輯分析儀

          由于嵌入式邏輯分析儀方法存在部分限制,F(xiàn)PGA設計人員采用外部邏輯分析儀方法,來利用FPGA的靈活性和外部邏輯分析儀的處理能力,如泰克TLA系列邏輯分析儀。

          在這種方法中,有用的內部信號路由到FPGA沒有使用的針腳上,然后連接到邏輯分析儀上。這種方法提供了非常深的內存,適合調試出現(xiàn)故障和實際導致該故障的原因在時間上相距很遠的問題;對于需要采集大量數(shù)據(jù)進行后期分析的設計人員也非常必要。另外,它還可以把內部FPGA信號與電路系統(tǒng)中的其他活動時間關聯(lián)起來。

          與嵌入式邏輯分析儀方法一樣,也需要考慮許多矛盾。

          3.1 針腳與內部資源

          外部邏輯分析儀方法采用非常少的邏輯資源,不使用FPGA內存資源。它釋放了這些資源,來實現(xiàn)所需功能。其矛盾在于,必須增加專用于調試的針腳數(shù)量,而設計時需要使用這些針腳。

          3.2 探測與工作模式

          外部邏輯分析儀探測要比嵌入式邏輯分析儀方法要求的探測復雜一些。必須確定怎樣使用邏輯分析儀探頭探測FPGA內部信號,而不能使用電路板上已有的JTAG連接器。最簡便的方式是在電路板中增加一個測試連接器,這可以簡便地把FPGA信號與系統(tǒng)中的其他信號關聯(lián)起來。

          3.3 成本與靈活性

          盡管外部邏輯分析儀的購買價格確實要高于嵌入式邏輯分析儀,但使用外部邏輯分析儀可以解決更加廣泛的問題。邏輯分析儀不僅可以用于FP

          GA調試,還可以用來解決其他數(shù)字設計挑戰(zhàn),它被公認為是進行通用數(shù)字系統(tǒng)硬件調試的最佳工具。外部邏輯分析儀能夠實現(xiàn)更加靈活的采集模式和觸發(fā)功能。通過外部邏輯分析儀,可以設置最多16個不同的觸發(fā)狀態(tài)(每一個狀態(tài)含有16個條件判斷分支),每一個通道提供256 MB的內存,并且可以在定時分析模式下以高達125 ps的分辨率(8 GS/s采樣) 捕獲數(shù)據(jù)。

          4 FPGAView進行FPGA調試

          外部邏輯分析儀方法有效地利用了FPGA的處理能力,并根據(jù)需要重新對設備配置,將有用的內部信號路由到通常很少的針腳上。這是一種非常有用的方法,但它也有一定的局限性:用戶每次需要查看一套不同的內部信號時,都必須改變設計(在RTL級或使用FPGA編輯器工具),把希望的信號組路由到調試針腳上。這不僅耗時,而且如果要求重新匯編設計,還會改變設計的定時,可能會隱藏需要解決的問題。當更改FPGA內部測試信號時,在外部邏輯分析儀上的被測信號名稱需要手工進行更新。一般說來,調試針腳數(shù)量很少,內部信號與調試針腳之間1:1的關系限制著設計查看能力和洞察力。為克服這些局限性,出現(xiàn)了一種新的FPGA調試方法,它不僅提供了外部邏輯分析儀方法的所有優(yōu)勢,還消除了主要局限性。FPGAView軟件在與泰克TLA系列邏輯分析儀配套使用時,為調試FPGA和周邊硬件電路提供了一個完整的解決方案,如圖2所示。

            
          這種組合可以時間關聯(lián)的查看FPGA的內部活動和外部活動;迅速改變FPGA內部探點,而無須重新匯編設計;每個針腳監(jiān)測多個內部信號;在TLA邏輯分析儀上自動更新切換的內部信號名稱。此外,F(xiàn)PGAView可以在一臺設備中處理多個(適合監(jiān)測不同的時鐘域),并可以在一個JTAG鏈上處理多臺FPGA設備。

          5 快速使用FPGAView

          使用FPGAView的步驟如下所述:

          (1) 插入內核

          這步是配置,把它插入到FPGA設計中。例如,在使用ALTERA或Xilinx器件時,可以使用FPGA開發(fā)工具提供的邏輯分析儀接口編輯器,創(chuàng)建最適合自己需求的測試核。

          對大多數(shù)的,可以指定下述參數(shù):

          ①針腳數(shù)量(pin count):表示希望專用于邏輯分析儀接口的針腳數(shù)量;

          ②組數(shù)(bank count):表示希望映射到每個針腳上的內部信號數(shù)量;

          ③輸出/捕獲模式(output/capture mode):選擇希望執(zhí)行的采集類型;可以選擇組合邏輯/定時模式(combina-tion/timing)或寄存器/狀態(tài)模式(registered/state);

          ④時鐘(clock):如果用戶選擇了registered/state的捕獲模式,這一選項允許選擇測試內核的取樣時鐘;

          ⑤通電狀態(tài)(power-up state):這個參數(shù)允許指明用于邏輯分析儀接口的針腳的通電狀態(tài)。

          (2) 把測試內核信息加載到FPGAView中

          從FPGAView軟件窗口中,可以與JTAG編程電纜建立連接,并且連接到TLA系列邏輯分析儀(TLA邏輯分析儀使用Windows平臺)或PC工作站上。

          在使用ALTERA FPGA芯片時,按打開(Open)工具條按鈕,調出一個文件瀏覽器,選擇QuartusⅡLAI Editor軟件以前生成的邏輯分析儀接口(.lai)文件。這樣就加載了與LAI核心有關的所有信息,包括每一組的信號數(shù)量、組數(shù)和信號名稱,另外如果設備中的LAI內核多于一個,那么還包括每個LAI內核的信息。

          (3) 把FPGA針腳映射到邏輯分析儀上

          映射FPGA針腳和TLA邏輯分析儀探頭之間的物理連接。FPGAView可以自動更新邏輯分析儀上顯示的信號名稱,與測試內核當前監(jiān)測的信號相匹配。為此,簡單地點擊探頭(probes)按鈕,將出現(xiàn)一個拖放窗口,把測試內核輸出信號名稱與邏輯分析儀上的相應通道連接起來。對某條目標連接,這個通道分配過程只需一次。

          (4) 進行測量

          使用組(bank)列表下拉菜單,選擇想要測量的組。一旦選擇了組,F(xiàn)PGAView會通過JTAG接口與FPGA通信,并配置測試內核,以便選擇希望的組。

          FPGAView還將這些通道名稱通過對TLA系列邏輯分析儀的控制進行自動分配,從而可以簡便地理解測量結果。為測量不同的一套內部信號,用戶只需選擇不同的信號組。全功能TLA系列邏輯分析儀會自動地把這些FPGA信號與系統(tǒng)中的其他信號關聯(lián)起來。

          在TLA邏輯分析儀中,針對設計人員關心的各種時間信息,提供了業(yè)內獨有的定時參數(shù)自動測量功能,通過鼠標簡單地拖放操作,能夠得到周期、頻率、占空比、脈沖寬度、通道/通道延遲、邊沿計數(shù)、周期計數(shù)、違規(guī)計數(shù)、周期抖動、以及周期間抖動等信息。

          6 結論

          調試針對Altera和Xilinx的FPGA系統(tǒng)時用嵌入式邏輯分析儀和外部邏輯分析儀這2種方法各有其優(yōu)勢和不足,而FPGAView等新方法進一步提高了外部邏輯分析儀方法的吸引力。能夠快速方便地移動探點,而不需重新匯編設計,同時能夠把內部FPGA信號活動與電路板級信號關聯(lián)起來,能夠較好地滿足產(chǎn)品開發(fā)周期的要求。



          評論


          相關推薦

          技術專區(qū)

          關閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();