FPGA之道(20)FPGA設計的上板調試與項目總結
文章目錄
前言
FPGA設計的上板調試
“實踐是檢驗真理的唯一標準”
如何解決問題
如何找到問題
“時間是檢驗真理的第二標準”
項目總結、備份與后期維護
前言
FPGA設計的上板調試
到了這里,FPGA基本開發流程的介紹就已經快接近尾聲了,但是如來佛祖掐指一算,發現咱們“九九八十一難,還差一難,尚不能修成正果”,于是大手一揮,帶來了這最后一難——FPGA設計的上板調試環節。
“實踐是檢驗真理的唯一標準”
在經歷了漫長的研發與驗證工作之后,我們終于迎來了最關鍵,最激動人心的時刻——上板調試環節。俗話說“真金不怕火煉”,一路走來,相信你對自己的設計早已自信滿滿了,你也許早已迫不及待的啟動了開發板的電源,連接好了JTAG下載線纜,期待著它的表現。但是,我要告訴你,系統能夠如你所愿的工作的概率并不大。如果你發現系統并沒有按照你預想的方式工作,請不要灰心喪氣,因為這其實很正常,否則上板調試環節的存在也就沒有意義了。趕上悲催的時候,花在上板調試環節上的時間可能比之前所有環節加在一起的時間都要長,因為理論和實際之間畢竟是有一定距離的,所以做為一名FPGA開發者,要具有這樣的覺悟。 所謂“兵來將擋,水來土掩”,只要我們不懼怕問題,靈活運用各種上板調試手段,再加上堅韌毅力的支撐,相信成功就在下一秒!接下來我們就來簡要介紹一下如何解決上板調試環節中碰到問題。
如何解決問題
上板調試時碰到的問題千奇百怪、五花八門,針對每一個問題,解決方法都有其一定的特殊性、局限性,不過周總理說得好,我們可以求同存異,因此在這里,還是可以概括幾點基本的問題解決方法,供大家參考。
一、開發板狀態檢查。
系統有問題,第一步就是要先檢查開發板是否工作正常,因為對于開發板來說,FPGA芯片只是其中的一部分,其它部分出問題也會導致系統不正常。當然在此之前,請先確定你使用的開發板經過了預測試。什么是預測試?就是在開發板正式投入FPGA設計調試之前,先針對開發板編寫一些功能較為簡單的FPGA測試設計,通過跑通這些測試設計來確保整個開發板的硬件環境運轉正常。 所以調試FPGA設計時,一定要使用經過預測試的開發板作為載體,否則問題百出不說,燒毀芯片、引爆電容等等都不是什么稀奇事。雖然使用了通過預測試的開發板,但是現實的東西,使用中就會被消耗、被磨損、被破壞,以前好好的東西現在出了問題也是常有的事,因此當系統有問題時,還是應該在第一時間對開發板進行問題的排查,基本步驟包括但不限于如下幾點:
首先,要對系統進行斷電檢測,主要檢查電源和地之間是否有短路、同一網絡之間是否有斷路等,確認無誤后才能上電。
其次,“電路!電路!沒有電就沒有路!”,上電后立馬使用萬用表等工具確認開發板中各個電源網絡的電壓值是否正常,如果供電不正常,談別的都沒有意義。
第三,確認好FPGA的外圍電路是否正確:例如是否有虛焊、短接、斷開等現象; FPGA物理I/O管腳與外圍電路連接是否符合管腳約束文件的要求; I/O端口電平標準是否符合設計的要求等等;
第四,確認板上其他芯片工作是否正常,例如板子上還有ARM、DSP等芯片。
二、測試點監測。
如果開發板工作正常,那么就需要集中精力于FPGA上了。一般開發板都會為FPGA設計預留一些監測點,或者多少會有一些探針可觸及的焊點。這時候我們就可以利用示波器、邏輯分析儀等工具對這些監測點進行波形觀察,看是否有異常。首先,要盡可能的監測所有輸入FPGA或從FPGA輸出的時鐘信號,看看這些時鐘信號的頻率、幅度、穩定性是否滿足要求;其次,要監測一些使能信號,看看是否落在了錯誤的狀態中;最后,要檢測一些數據信號,看看數據線上是否有有意義的數據傳遞、如果傳遞的是數據幀,那么幀結構是否符合預期等等。
三、在線調試
FPGA芯片的管腳數量少則幾百、多則上千,內部信號數量更是成指數級增長,即使再怎么設計,一個開發板所能引出的監測點也是非常有限的,因此,FPGA的調試通常都有其自己的“一套”。
FPGA芯片廠商早已考慮到FPGA設計在實際調試時可能會碰到的這種問題,因此,一般都會在FPGA的軟件集成開發環境中加入在線調試的功能。例如Xilinx公司ISE集成開發環境中的ChipsScope工具, Altera公司Quartus II集成開發環境中的SignalTap等。這些在線調試工具的原理大致是在FPGA設計中添加專門的代碼或IP核用來實現對某些指定內部信號的條件監測(即當設定的條件滿足時才開始采集數據),然后通過JTAG接口發送采集命令或者接收采集到數據。在線調試工具的優點就是只要開發板上有JTAG接口,那么想看內部什么信號就看什么信號,對于FPGA設計的上板調試幫助非常之大;缺點就是需要改變我們的FPGA設計,添加后會影響到芯片內部的布局布線。
了解了在線調試工具的工作原理后,其實我們在進行FPGA項目的開發時,也可以有針對性的編寫一些自測代碼,并讓其成為設計的一部分,從而避免使用在線調試工具給設計帶來變動。 缺點就是需要自己設計測試代碼,較為麻煩。
四、設計的分割調試與增量調試。
有些時候,由于FPGA設計本身規模比較龐大,開發板的電路結構也比較復雜,采用之前的調試方法實在難以找到有效線索,那么這個時候,就可以利用化繁為簡的調試思路。
首先是分割調試的方法。它的基本原理是將FPGA設計按功能分成若干個部分,對每個部分單獨編譯生成配置文件,然后上板調試。這樣由于每個部分的規模都較原來的設計要小,因此問題解決起來也會相對比較方便,并且也便于問題的定位。當然,具體實現的時候遠沒我們這里說得這么輕松,甚至需做不少代碼的改動。
其次是增量調試的方法。它的思路是先將FPGA設計的功能精簡到最簡,先上板調試好這個最簡設計,以后每添加一個功能,就重新編譯、配置、上板調試一次,直到恢復到原先的FPGA設計。這種方法也需要一定量的代碼改動,例如一個FIR濾波器模塊,為了簡化這個功能,我們可以將其內部的所有功能代碼注釋掉,然后直接將輸入與輸出連接起來即可。
具體進行上板調試的時候,情況可能比較復雜,單獨采用分割調試或增量調試的方法可能并不十分有效,一般需要混合使用,甚至使用其他的需要修改設計的調試方法,所以在具體的應用中需要自己掌控。
如何找到問題
經過了上一個環節的辛苦工作,FPGA設計終于在開發板上正常運轉起來了,是不是非常興奮呢?恨不得趕緊舉行一個慶功宴,好好放松一下!別急,慶功的事情還是先放一放吧,目前的首要任務是趁熱打鐵,繼續調試!可是沒有碰到問題怎么調試呢?沒關系,有問題我們就調試,沒有問題創造問題也要調試!就是這樣,你沒有看錯,我也沒有寫錯!做項目,一定要有居安思危的意識,問題并不可怕,可怕的是發現不了問題!相信大家對“豐田召回門”都有所了解吧,如果你不對自己開發的產品進行充分的測試,等到客戶在使用中發現了問題,那么損失的可就不僅僅是召回幾個產品這么簡單。
產品測試是一個非常重要的環節,也是一項非常專業的環節,對于我們開發FPGA項目也是一樣。作為一名FPGA開發者,我們要對自己的項目負責,雖然受限于時間、項目復雜度、個人的能力和細心程度等,我們不可能將所有潛在的不安因素揪出來,但是請盡力而為吧。因此在這里,簡要列舉一些查找問題的思路供參考。
首先,通過全面的測試來查找問題。
這點的思路類似于“時序仿真”,但是由于運行在硬件實體上,所以執行效率非常之高,可能只需要1秒鐘的時間就能完成時序仿真需要幾天才能完成的工作。一個FPGA項目往往由許多基本的功能組成,為了便于問題的查找,我們應該先對系統的功能進行細化,然后針對每個細節功能設計測試方案進行實際測試,這樣比較有利于測試覆蓋率的提高,從而也就比較容易發現一些細節性的問題。
其次,通過重復的測試來查找問題。
有些時候,同樣的功能測試執行一次可能沒有問題,但是執行多次就不一定能夠保證總不出問題。因此,通過重復性的測試,可以發現一些關乎系統穩定性的問題。
第三,通過綜合的測試來查找問題。
有些時候,單獨測試功能一是正常的,單獨測試功能二也是正常的,但是同時測試這兩個功能時,可能由于互相之間的一些影響就會導致FPGA設計出現問題。因此,通過綜合測試,可以讓我們找到設計中的一些缺陷問題。
第四,通過非法的測試來查找問題。
由于我們是FPGA項目的開發者,所以我們清楚它的一切,因此我們會不自覺的按照正確的操作方法來對設計進行測試,這無形中就降低了測試的覆蓋率??墒?,產品的最終使用者是客戶,正所謂“喜歡看電視的不一定懂電視原理,喜歡用iphone的不一定懂手機原理”,你崩指望客戶能老老實實熟讀產品操作指南然后小心翼翼的使用產品。所以,在測試的過程中,我們需要通過一些非常規的、不合法(注:此“法”非法律之法)的操作來找出系統在異常情況下暴露出的問題。
最后,恭喜你發現了新的問題,請開始著手解決吧!
“時間是檢驗真理的第二標準”
任何真理都必須能夠經受得住時間的考驗,例如,人們最開始都以為地球是方的,后來隨著科技的進步,才發現地球原來是個球體。所以在上板調試時,我們的FPGA設計也必須要經過時間的檢驗,例如讓其48個小時、甚至更長時間的連續運轉,看是否會出顯問題。由此可見,時間考驗也是一種查找問題的好方法,但是除此以外,它有其自身的特殊性,所以將它單獨列舉在這里進行介紹。
簡要的講,時間考驗除了可以發現FPGA設計中的一些不穩定因素,還可以發現系統的耐久性問題,這有點類似于復合木地板的打磨測試。這就好比如果你給客戶承諾——“我們的產品質保三年”,你總不希望返修率是100%吧!因此,這里簡要介紹幾點時間測試時需要注意的地方供參考。
一、注意散熱的問題。
任何元器件在上電工作的時候都會產生熱量,從而導致開發板溫度的上升,而溫度的上升對于電子器件的性能會產生很不好的影響。因此,我們需要保證系統具有一定的散熱性,同時也要盡量減少系統的熱損耗,如果散熱量始終小于發熱量,那么開發板將會一直升溫,直到器件工作異常甚至燒毀電路。為什么神州的筆記本配置豪華,但是價位卻很低,而IBM(現在被聯想收購,叫Thinkpad)的筆記本配置一般,但價格卻貴的離譜?就是因為散熱的道理,散熱做不好,再好的配置也發揮不出它該有的性能,而且穩定性也會很差。
二、注意器件壽命的問題。
任何器件都有一個壽命問題,在使用中都會出現老化、損耗等現象,那么我們肯定是希望系統的運轉會讓器件的時間壽命盡量長一些,而時間測試可以幫助我們找到系統中的那些短板。例如,按鍵的設計,如果一個功能可以通過按1下按鍵解決,那么就沒有必要設定為按10次,這樣沒兩天按鈕就壞掉了。指示燈的實現也一樣,如果需要通過閃爍來顯示信息,沒有必要讓LED燈閃的過于頻繁,每秒一次即可。
最后,請記住,只有經過長期穩定的測試,才能認為系統已經具有了比較高的可靠性和穩定性。如果還有遺漏,那也許只有靠客戶的反饋了。God bless you!
項目總結、備份與后期維護
如果通過了上板調試環節,那么整個FPGA基本開發流程才算到了收尾階段,可以開始慶功和放松了,不過高興過后,請記住還有一些工作等著我們來完成。作為一名FPGA開發者,每一個他經手的FPGA項目就好像他的孩子一樣,因為是他為FPGA設計注入了生命,可是如果“管生不管養”,那么就不是稱職的父母。因此接下來,我們將介紹一些項目收尾階段該做的工作。
一、固化FPGA程序。
由于FPGA設計已經正確、穩定,那么我們就可以不在利用JTAG接口來調試設計,此時,我們可以將相應的配置文件直接下載到FPGA的配置芯片中,這樣的話,系統每次上電啟動之后,FPGA芯片就會自動配置成設定的功能,系統就可以立即開始正常運轉。
二、備份最終版本FPGA工程。
備份的重要性就不用多說了,為了能夠在今后需要的時候及時順利的恢復出上板調試得到的最穩定、最正確的系統,這點工作是必須的。一般來說,我們需要備份最終版本的FPGA工程,因為這包括了最終版本的HDL代碼、最終版本的約束文件以及集成開發環節中紛繁復雜的編譯選項,甚至包括當時使用的編譯器版本,只有這些東西都一致,才能保證恢復出一模一樣的FPGA設計。
三、針對最終版本的HDL代碼編寫代碼說明文檔。
即使是自己寫的代碼,一年后回過頭再看,也會覺得非常陌生,更別提讓別人來看了。由于各種各樣的原因,例如在今后的使用中發現了新的問題,客戶需求的變動等等,FPGA設計在以后的日子里難免需要不斷的維護和修改。尤其是經歷了各個驗證、調試環節,HDL代碼的功能和結構可能已經修改的和FPGA設計方案中描述的大相逕庭,因此,針對最終版本的代碼編寫一個完整的代碼說明文檔,的確是一件一勞永逸的事情。
四、進行項目總結。
沒有總結就沒有提高、沒有總結就沒有積累。這次費了九牛二虎之力解決的問題,如果總結一下,下次碰到類似的問題時可能就非常順利的解決。因此項目做完后,進行總結是十分必要的,該環節的輸出可以但不限于一些技術文檔、心得體會、IP核等。并且可以將自己的項目總結與他人進行交流,從而達到共同提高。
FPGA 單片機 硬件開發
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。