論FPGA模擬重要性

在進行FPGA工程開發中,我們都會接觸到模擬這個環節。筆者在之前就粗略的提及過FPGA開發一定要模擬,要養成模擬的習慣。

很多初學者或者學藝不精的工程師都比較排斥模擬。當然,如果您也排斥模擬,那麼您就要捫心自問一下自己是屬於初學者還是學藝不精的工程師。

很多初學者入門FPGA的時候所學習的編程例子都是很簡單的,比如流水燈、數碼管點亮之類的。這種入門級別的例子有個特點,代碼量少,邏輯簡單,分析容易。而且大家剛開始都是照著書本抄一遍的,基本上都是沒有什麼問題的。一上板子就發現效果出來了。

當然,初學者也會進行一些模擬,但是也僅僅是因為書籍有提及到這樣一個功能,然後就嘗試一下這個功能。久而久之很多人厭倦了模擬,覺得模擬很浪費時間,他們往往更傾向於直接燒錄到板子上,然後觀察效果,最後調試代碼。

突然有一天,初學者發現了FPGA開發工具中有個虛擬邏輯分析儀,以Xilinx 公司為例,初學者發現了ChipScope這個工具。這個工具可以直接在板子上捕捉內部寄存器值。很多初學者覺得可以用這個軟體完全取代模擬。

筆者想先從哲學的角度來分析一下。一個技術沒有被淘汰,證明它是市場公認的,不可取代的。遙想當年的BB機,一下子就被淘汰了,因為已經有了可以取代它的產品出現了。FPGA的模擬是一個大方向,甚至有很多第三方的模擬軟體。為什麼這些軟體沒有被淘汰,這就說明了還沒有哪項技術可以取代模擬這個環節,如果真的有,就不會有模擬軟體了。

為什麼需要模擬?模擬有什麼優勢?

模擬可以讓設計者能夠很快知道模塊輸出值是否正確。說到這,就有讀者想問,直接上板子不是更快嗎?如果你以後的工作都是用FPGA來跑流水燈,點數碼管的話,那麼直接上板子確實是比較快。但是筆者相信,不會有哪個公司要求你用FPGA僅僅是跑個流水燈的。如果設計者遇到稍微複雜一點的工程,注意筆者說的是稍微複雜一點,還不是很複雜。那麼當您完成一次綜合、布局布線、生成bit文件的時間超過半個小時是很正常的。當你發現效果不對,又返回來打算用個ChipScope插入寄存器查看懷疑對象,那麼問題來了,你打算用ChipScope查看多少個寄存器值呢?ChipScope是利用FPGA內部資源來存儲數據達到捕捉的功能,加入過大的ChipScope會使得布局布線更為困難,時間會更久。再者ChipScope存儲量是有限的,不可能從時間0開始一直存儲下去。存滿了,下次再來就刷新了。從上面看開,如果不模擬,單純的用ChipScope進行捕捉,每綜合一次消耗大量的時間,再者ChipScope能觀察到的信號有限,以及功能單一。這樣一個流程下來,也許一天也未必能找到問題的所在,更別說處理問題了。

如果換成模擬,你可以添加大量的觀察信號,可以從時間0開始就得到數據,對於稍微複雜的工程,不用跑半個小時的模擬已經可以出很多數據了,足夠開發者逐步分析了。

可能初學者在筆者的再三強調下還是不喜歡模擬。筆者也只是希望大家不要走太多彎路,縱觀現在網上FPGA論壇或者是交流社區,大家更多討論的是我這裡有個項目,我這裡出了個問題,我這裡這個不知道應該怎麼處理。很多書籍也是,直接告訴大家怎麼建工程,舉例一些代碼什麼的,甚至有些書籍只是翻譯FPGA廠家手冊而已。筆者並不是說哪些書籍不好,哪些論壇不好,大家還是要多讀書,多交流。只是在FPGA的學習上,有很多東西被大家忽略的,人們忽略的不是技術,而是思想。沒有一個正確的思想,怎麼能做好一件事呢。

最後,讓我們從今天開始,打開軟體,開始模擬!

推薦閱讀:

TAG:現場可編輯邏輯門陣列FPGA | 模擬 | Modelsim |