用C/C++語言開發大規模FPGA (2007-07-28 14:01)

背景

    可編程邏輯器件的設計方法經歷了布爾等式,原理圖輸入,硬件描語言這樣一個發展過程。隨着設計的日益複雜和可編程邏輯器件規模的不斷擴大,人們不停地尋求更加抽象的行爲級設計方法,以便在儘可能短時間內完成自己的設計構思。

 

現狀與問題

    今天,在電子設計領域形成了這樣一種分工:軟件和硬件,相應工程師也被分成軟件工程師和硬件工程師。

    對於複雜算法的實現,人們通常先建立系統模型,根據經驗分析任務,然後將一部分工作劃給軟件工程師,將另一部分工作交給硬件工程師。 硬件工程師爲了實現複雜的功能,使用硬件描述語言設計高速執行的芯片,而這種設計是富有挑戰性和花費時間的,需要一定的硬件工程技巧。

    對於軟件工程師,這些同樣的功能只要簡單地使用C語言整合到整個系統的程序代碼中就可以了。但是傳統的處理器是順序執行的,並且他們執行的高速計算必須依賴於高速時鐘,這樣就限制了處理器的能力。同時,軟件實現算法存在一個指令執行週期的問題——軟件永遠也不能達到硬件執行的速度。

    當然,很少有嵌入式應用是完全使用可編程邏輯器件來實現的。串行化的步進式算法最好是由CPU或DSP用軟件來實現。(參閱文章:DSP+FPGA實時處理系統) 最佳的硬件加速性能大多是由並行執行的功能來完成,其物理形式通常是將硬件協處理器(FPGA) 與CPU緊密的結合在一起,CPU與FPGA的緊密結合可以提供軟硬件的最佳連接方式。 在這種結構中,CPU通常運行系統應用方面的程序,實時很強的任務放到FPGA硬件上,這樣可以減輕處理器的負荷,從而獲得更大的帶寬。這樣我們可以通過把算法移植到硬件上來克服設計瓶頸。 但是這時我們又將面臨一個問題:設計者必須使用複雜的硬件描述語言編寫FPGA代碼,而這些功能原本是用簡單C語言在處理器或DSP中實現的。

    人們希望能夠找到一種方法,在更高的層次下設計更復雜,更高速的系統,並希望將軟件設計和硬件設計統一到一個平臺下。


解決方案

    C/C++語言是軟件工程師在開發商業軟件時的標準語言,也是使用最爲廣泛的高級語言,人們很早就開始嘗試在C語言的基礎上設計下一代硬件描述語言。

    許多公司已經提出了不少方案,目前有兩種相對成熟的硬件C語言:systemC和Handle-C,它們相應的開發系統爲:CoCentric System Stadio和Celoxica DK1。 這兩種語言都是在C/C++的基礎上根據硬件設計的需求加以改進和擴充,用戶可以在它們的開發環境編輯代碼,調用庫文件,甚至可以引進HDL程序,並進行仿真,最終生成網表文件,放到FPGA中執行。 軟件算法工程師不需要特別的培訓,利用他們熟悉的C語言就可以直接進行硬件開發,減輕了硬件開發的瓶頸和壓力。隨着算法描述抽象層次的提高,使用這種C語言設計系統的優勢將更加明顯。

    現在有很多硬件描述語言的人才,也有更多的資深的C語言編程者,他們能夠利用這種工具,可以輕鬆地轉到FPGA設計上。 過去因爲太複雜而不能用硬件描述語言表示的算法以及由於處理器運行速度太慢而不能處理的算法,現在都可以利用C語言在大規模FPGA硬件上得以實現。 設計者可以利用C語言快速而簡潔的構建功能函數,通過標準庫和函數調用技術,設計者還能在很短的時間裏創建更龐大,更復雜和更高速的系統。


問題與展望

    正如同硬件描述語言與原理圖輸入的關係,或是高級語言和彙編語言的關係,抽象的設計方法會減少我們的設計時間,但也會增加對硬件資源的需求,C語言也不例外。 目前直接使用C語言設計硬件系統的準確性和可靠性還在進一步的研究和發展中,可以說,目前各種硬件C語言的編譯軟件都還不夠成熟,很少能直接投入到實際產品的開發中。 C語言輸入方式的廣泛使用還有賴於更多EDA軟件廠家和FPGA公司的支持。 但是可以預見,隨着EDA技術的不斷成熟,軟件和硬件的概念將日益模糊,在5-10年以後,使用單一的高級語言直接設計我們的整個系統將是一個的發展趨勢。

轉載自http://blog.csdn.net/aaaaatiger/article/details/1713562, 原文發表時間

發佈了23 篇原創文章 · 獲贊 8 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章