基于C/C++的大規模FPGA設計
背景
本文引用地址:http://dyxdggzs.com/article/190806.htm可編程邏輯器件的設計方法經(jīng)歷了布爾等式,原理圖輸入,硬件描語(yǔ)言這樣一個(gè)發(fā)展過(guò)程。隨著(zhù)設計的日益復雜和可編程邏輯器件規模的不斷擴大,人們不停地尋求更加抽象的行為級設計方法,以便在盡可能短時(shí)間內完成自己的設計構思。
現狀與問(wèn)題
今天,在電子設計領(lǐng)域形成了這樣一種分工:軟件和硬件,相應工程師也被分成軟件工程師和硬件工程師。對于復雜算法的實(shí)現,人們通常先建立系統模型,根據經(jīng)驗分析任務(wù),然后將一部分工作劃給軟件工程師,將另一部分工作交給硬件工程師。硬件工程師為了實(shí)現復雜的功能,使用硬件描述語(yǔ)言設計高速執行的芯片,而這種設計是富有挑戰性和花費時(shí)間的,需要一定的硬件工程技巧。
對于軟件工程師,這些同樣的功能只要簡(jiǎn)單地使用C語(yǔ)言整合到整個(gè)系統的程序代碼中就可以了。但是傳統的處理器是順序執行的,并且他們執行的高速計算必須依賴(lài)于高速時(shí)鐘,這樣就限制了處理器的能力。同時(shí),軟件實(shí)現算法存在一個(gè)指令執行周期的問(wèn)題——軟件永遠也不能達到硬件執行的速度。
當然,很少有嵌入式應用是完全使用可編程邏輯器件來(lái)實(shí)現的。串行化的步進(jìn)式算法最好是由CPU或DSP用軟件來(lái)實(shí)現。(參閱文章:DSP+FPGA實(shí)時(shí)處理系統)最佳的硬件加速性能大多是由并行執行的功能來(lái)完成,其物理形式通常是將硬件協(xié)處理器(FPGA)與CPU緊密的結合在一起,CPU與FPGA的緊密結合可以提供軟硬件的最佳連接方式。在這種結構中,CPU通常運行系統應用方面的程序,實(shí)時(shí)很強的任務(wù)放到FPGA硬件上,這樣可以減輕處理器的負荷,從而獲得更大的帶寬。這樣我們可以通過(guò)把算法移植到硬件上來(lái)克服設計瓶頸。但是這時(shí)我們又將面臨一個(gè)問(wèn)題:設計者必須使用復雜的硬件描述語(yǔ)言編寫(xiě)FPGA代碼,而這些功能原本是用簡(jiǎn)單C語(yǔ)言在處理器或DSP中實(shí)現的。人們希望能夠找到一種方法,在更高的層次下設計更復雜,更高速的系統,并希望將軟件設計和硬件設計統一到一個(gè)平臺下。
解決方案
C/C++語(yǔ)言是軟件工程師在開(kāi)發(fā)商業(yè)軟件時(shí)的標準語(yǔ)言,也是使用最為廣泛的高級語(yǔ)言,人們很早就開(kāi)始嘗試在C語(yǔ)言的基礎上設計下一代硬件描述語(yǔ)言。
許多公司已經(jīng)提出了不少方案,目前有兩種相對成熟的硬件C語(yǔ)言:systemC和Handle-C,它們相應的開(kāi)發(fā)系統為:CoCentricSystemStadio和CeloxicaDK1。這兩種語(yǔ)言都是在C/C++的基礎上根據硬件設計的需求加以改進(jìn)和擴充,用戶(hù)可以在它們的開(kāi)發(fā)環(huán)境編輯代碼,調用庫文件,甚至可以引進(jìn)HDL程序,并進(jìn)行仿真,最終生成網(wǎng)表文件,放到FPGA中執行。軟件算法工程師不需要特別的培訓,利用他們熟悉的C語(yǔ)言就可以直接進(jìn)行硬件開(kāi)發(fā),減輕了硬件開(kāi)發(fā)的瓶頸和壓力。隨著(zhù)算法描述抽象層次的提高,使用這種C語(yǔ)言設計系統的優(yōu)勢將更加明顯。
現在有很多硬件描述語(yǔ)言的人才,也有更多的資深的C語(yǔ)言編程者,他們能夠利用這種工具,可以輕松地轉到FPGA設計上。過(guò)去因為太復雜而不能用硬件描述語(yǔ)言表示的算法以及由于處理器運行速度太慢而不能處理的算法,現在都可以利用C語(yǔ)言在大規模FPGA硬件上得以實(shí)現。設計者可以利用C語(yǔ)言快速而簡(jiǎn)潔的構建功能函數,通過(guò)標準庫和函數調用技術(shù),設計者還能在很短的時(shí)間里創(chuàng )建更龐大,更復雜和更高速的系統。
問(wèn)題與展望
正如同硬件描述語(yǔ)言與原理圖輸入的關(guān)系,或是高級語(yǔ)言和匯編語(yǔ)言的關(guān)系,抽象的設計方法會(huì )減少我們的設計時(shí)間,但也會(huì )增加對硬件資源的需求,C語(yǔ)言也不例外。目前直接使用C語(yǔ)言設計硬件系統的準確性和可靠性還在進(jìn)一步的研究和發(fā)展中,可以說(shuō),目前各種硬件C語(yǔ)言的編譯軟件都還不夠成熟,很少能直接投入到實(shí)際產(chǎn)品的開(kāi)發(fā)中。C語(yǔ)言輸入方式的廣泛使用還有賴(lài)于更多EDA軟件廠(chǎng)家和FPGA公司的支持。但是可以預見(jiàn),隨著(zhù)EDA技術(shù)的不斷成熟,軟件和硬件的概念將日益模糊,在5-10年以后,使用單一的高級語(yǔ)言直接設計我們的整個(gè)系統將是一個(gè)的發(fā)展趨勢。
評論