FPGA研發之道(6)架構設計漫談(一)

    勿用諱言,現在國內FPGA開發還處於小作坊的開發階段,一般都是三、四個人,七八臺機器.小作坊如何也能做出大成果。這是每個FPGA工程師都要面臨的問題。架構設計是面臨的第一關。經常有這樣的項目,需求分析,架構設計匆匆忙忙,號稱一兩個月開發完畢,實際上維護項目就花了一年半時間。主要包括幾個問題,一,性能不滿足需求。二,設計頻繁變更。三,系統不穩定,調試問題不收斂。

   磨刀不誤砍柴工,FPGA設計的需求分析是整個設計第一步。如何將系統的功能需求,轉換成FPGA的設計需求,是FPGA架構設計的首要問題。首先, 需要明確劃分軟件和硬件的邊界。軟件主要處理輸入輸出、界面顯示、系統管理、設備維護。而FPGA則負責大數據流的處理。

如果使用幾百元FPGA實現了一個十幾元單片機就能完成的功能,就算實現的非常完美,那麼這是一個什麼樣的神設計?任何一個項目都要考慮成本,研發成本、物料成本、維護成本等等。FPGA的使用位置必定是其他器件難以企及的優勢。

    因此對於一個FPGA架構設計,其首先需要考慮就是性能,如沒有性能的需求,其他的處理器ARM就可能替代其功能。其次就是接口,用於處理器擴展其沒有的接口,作爲高速接口轉換。最後,需要考慮就是可維護性,FPGA的調試是非常耗時的,一個大型的FPGA的編譯時間在幾小時甚至更高(通過嵌入式分析儀抓信號,每天工作8小時,只能分析兩到三次)。而軟件調試只需make,編譯時間以秒來記(這個問題可以通過提升編譯服務器性能改善而不能消失,本質上要考慮可測性設計)。如果不考慮維護性和可測性,調試成本和壓力就非常之大。

   通常,FPGA的大部分架構設計可以採用數據流驅動的方式來實現,例子1,假設一個實現視頻解壓縮FPGA的設計,輸入是無線接口,輸出爲顯示屏。那麼輸入輸出的接口基本就能確定。以數據流爲驅動可以粗略劃分,輸入接口->解壓縮模塊->視頻轉換模塊->顯示接口。如需要視頻緩衝,則確定是否需要連接外部存儲器。那就需要確認在什麼位置進行數據的緩衝。通過要支持顯示的畫面的質量,就能確認最大碼流,同樣可以計算視頻解壓模塊和轉換模塊的計算能力,從而導出所需的內部總線寬度,系統頻率,以及子模塊個數等等。例子2,某支持通過有線電視網上網電視IP網關,同樣也是輸入的普通IP網絡,輸出爲有線調試網的調試解調器。將IP報文等長填充後,在固定時隙內送入有線電視網中,同樣也是基於數據流驅動的方式。

數據流驅動式架構,可以作爲FPGA設計中一個最重要的架構。通常來說應用於IP領域、存儲領域、數字處理領域等較大型FPGA設計都是數據流驅動式架構,主要包括輸入接口單元,主處理單元,輸出接口單元。還可能包括,輔助處理單元、外部存儲單元。這些單元之間一般採用流水式處理,即處理完畢後,數據打包發完下一級處理。其中輸入輸出可能有多個,此時還需要架構內部實現數據的交換。

    另一種較爲常用的架構方式爲調用式架構,即一般FPGA通過標準接口如PCI、PCI-E,CPCI,PCI-X,EMIF等等。各種接口,FPGA內部實現某一加速單元,如視頻加速,數據處理,格式轉換等操作。這種結構基本基本圍繞FPGA接口、加速單元展開,屬於數據的反饋類型,即處理完數據又反饋回接口模塊。

    其他雖然各型各樣,如SOPC,如各型接口,但本質上其都是爲上述架構服務的,或做配置管理替代外部CPU,或在數據流中間傳遞中間參數。或在內部實現CPU+協處理器的架構,因此說,無他變化。

    孫子兵法雲:“兵無常勢,水無常形”。但是對於一種設計技術來說,沒有一種固定演進的架構和設計,那麼項目的整個設計層次總是推到重來,從本質上說,就是一種低水平重複。如果總結規律,提煉共性,才能在提升設計層次,在小作坊中取得大成果。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章