新聞中心

EEPW首頁 > 模擬技術 > 設計應用 > 為軟件工程師揭開 FPGA 的神秘面紗

為軟件工程師揭開 FPGA 的神秘面紗

作者: 時間:2011-10-05 來源:網絡 收藏

隨著產品設計復雜性的增加,需要使用集成組件(如ASSP)來滿足設計上的要求。幾年前,工程師會針對處理器、存儲器和外設選擇單獨的組件,然后通過分立邏輯器件將這些元素拼合到一起。后來,他們會搜索ASSP處理系統(tǒng)目錄,試圖找出最相稱的組合,以滿足系統(tǒng)要求。當他們需要其他邏輯或外設時,通常會將某個與某個ASSP配對來完成解決方案。的確,調查表明在目前全部嵌入式系統(tǒng)中的使用比例占50%70%。

本文引用地址:http://2s4d.com/article/187293.htm


在過去的幾年中,的尺寸有了增加,在單個器件中提供了足夠的空間來容納完整的處理器和邏輯系統(tǒng)?,F(xiàn)在,需要為FPGA內部的處理器開發(fā)和調試代碼。在有些情況下,他們害怕這么做。不過,通過掌握FPGA基礎知識并了解如何創(chuàng)建和調試用于FPGA嵌入式處理器的代碼可以讓他們坦然面對。

FPGA是什么?
現(xiàn)場可編程門陣列(field-programmable gate array,F(xiàn)PGA)是一種集成電路,其中包含的邏輯可以在制造后進行配置和連接(即“現(xiàn)場模式”)。在這方面,過去工程師會從產品目錄中購買各種邏輯器件,然后通過印刷電路板上的連接將它們組裝成一個邏輯設計,而現(xiàn)在的硬件設計人員可以在單個器件中實施完整的設計。形式最簡單的FGPA中包括:


● 由與、或、非及其他許多邏輯函數組成的可配置邏輯塊


● 使邏輯塊可以連接到一起的可配置互連功能


● I/O接口


利用這些元素,用戶可以創(chuàng)建任意邏輯設計。
硬件工程師通常用HDL(一般是Verilog或VHDL)編寫代碼,然后將設計匯編到一個對象文件中,該文件可加載到器件中供執(zhí)行。在表面上,HDL程序可能看起來很像C語言之類的高級語言。

FPGA的技術優(yōu)勢
由于不使用ASIC以及沒有與其關聯(lián)的高額模板費用,F(xiàn)PGA是實現(xiàn)數據處理元素最靈活且高性價比的方法。FPGA由于采用了靈活的架構,能夠允許硬件設計人員實現(xiàn)同時包含并行和串行元素的處理系統(tǒng)。這樣一來,設計人員可以針對性能和延遲對系統(tǒng)進行優(yōu)化。通常,與使用通用處理器可獲得的性能相比,這些數據處理系統(tǒng)獲得的性能級別更高,但成本卻更低。


您可以將外部微處理器耦合到FPGA中的某個數據處理系統(tǒng)上,然后用它進行控制。但是,在FPGA中嵌入一個處理器可以提供幾項優(yōu)勢。一個內部處理器可以極大地減少處理器與數據處理系統(tǒng)之間的延遲,能夠消除大量處理器周期。處理器與數據處理系統(tǒng)之間的通信信道可以是32位或更高,擁有更多的尋址和控制線纜。對于一個外部處理器,這些增加的線纜可能需要更大的封裝來容納處理器和FPGA,從而抬高了系統(tǒng)成本?;蛘?,也可以使用PCI Express(PCIe)來減少引腳的數量。而不幸的是,由于這是相對較新的接口,并非所有處理器和FPGA都支持PCIe。雖然PCIe具有與生俱來的高性能,但它是串行接口,因此會增加處理器與數據處理系統(tǒng)之間的延遲。


在FPGA中同時實現(xiàn)處理器與數據處理元素可以減少元件數量,縮小電路板空間,有時還能降低功耗。這可能產生一個成本顯著降低的解決方案。FPGA中可提供固化的處理器實現(xiàn)(如ARM Cortex-A9處理器)或軟核實現(xiàn)(如Xilinx MicroBlaze處理器)。基于FPGA的處理器還可根據應用的要求進行配置。基于FPGA的系統(tǒng)支持系統(tǒng)級的調優(yōu):它可以靈活地選擇將計算功能在處理器或FPGA邏輯中實現(xiàn)。

實現(xiàn)技術
FPGA嵌入式處理系統(tǒng)的實現(xiàn)方法有很多種,但一般可將其分成三類:從頭組裝系統(tǒng),使用向導將其組合到一起,或者通過修改現(xiàn)有設計實現(xiàn)。


FPGA工具可支持您從頭組裝一個處理系統(tǒng),方法是:從列表中選擇一個必需的IP,然后通過總線和線纜連接該IP。這樣的組裝雖然有效,但可能會耗費時間。


為了加快速度,F(xiàn)PGA工具還允許通過向導快速組裝微處理器系統(tǒng)。通過使用下拉列表或復選框,可以輕松指定目標部件以及所需的處理器和外設。圖1展示了向導啟動的介紹窗口以及向導生成的最終系統(tǒng)。類似地,也可以使用 MATLAB?軟件之類的工具,快速地將數據處理系統(tǒng)與用于控制的處理器總線接口組裝起來。然后,只需匹配總線接口,就可將處理器與數據處理系統(tǒng)連接起來。


嵌入式處理系統(tǒng)的第三種實現(xiàn)方法是修改現(xiàn)有的參考設計,或將其添加到現(xiàn)有的硬處理器系統(tǒng)上。FPGA參考設計和硬處理器系統(tǒng)會繼續(xù)演變,其中許多會變得更加側重于市場。在許多情況下,設計均非常全面,無須硬件設計人員增加任何額外的組件。軟件設計人員通常會找到完整的驅動程序,以及為這些參考設計預置的操作系統(tǒng)。


前面提及的前兩種方法都是創(chuàng)建處理器系統(tǒng)的有效方法。但是,第三種方法從現(xiàn)有的經過驗證的參考設計入手,因此可以極大地減少硬件和的開發(fā)時間。

澄清誤解
在工程設計界已經出現(xiàn)了一些有關在FPGA中開發(fā)處理器代碼很困難的誤解。我們希望能澄清這些誤解。
誤解:在FPGA中為處理器編寫代碼很困難。


事實:大多數FPGA嵌入式處理開發(fā)都是在現(xiàn)代化軟件開發(fā)環(huán)境中用C或C++完成的。


許多FPGA供應商現(xiàn)在都支持使用Eclipse進行軟件開發(fā)。Eclipse是一種支持插件的靈活軟件開發(fā)環(huán)境,提供文本編輯器、編譯器、鏈接程序、調試器、跟蹤模塊和代碼管理等功能。


作為一個開放的環(huán)境,Eclipse擁有一個龐大的開發(fā)人員社區(qū),不斷地增加新功能。例如,如果程序員不喜歡提供的編輯器,他們可以安裝一個更符合其需求的編輯器。


誤解:FPGA沒有像ASSP那樣的處理器系統(tǒng)。


事實:現(xiàn)在已經有預置的FPGA軟嵌入式處理器設計,也有具備像ASSP那樣的外設集的硬處理器設計。


包含軟處理器和硬處理器的FPGA增加了一個額外的功能。FPGA嵌入式軟處理器參考設計整合了32位RISC處理器、內存接口以及符合行業(yè)標準的外設。此類處理器的靈活特性允許用戶用邏輯換取額外的性能功能,如增加支持最新操作系統(tǒng)的MMU。眾多的FPGA選擇使用戶可以選擇某個處理器配置、外設、數據處理邏輯和邏輯性能級別來滿足其系統(tǒng)要求。預置的類似于ASSP的參考設計使得軟件設計人員可以立刻開始編寫代碼,不一定需要硬件工程師先實現(xiàn)一個處理器系統(tǒng)。在許多情況下,預置的設計會滿足嵌入式處理器系統(tǒng)的要求,從而無須硬件工程師來進行進一步的處理器系統(tǒng)設計。在少數情況下,硬件工程師擁有一個出色的平臺,可以在上面增加外設以及連接定制的硬件加速器。


誤解:使用FPGA中的處理器調試代碼很困難。


事實:FPGA嵌入式處理器的軟件調試跟非嵌入式處理器的調試一樣方便。調試器支持下載代碼、運行程序、在源代碼和對象代碼級別單步執(zhí)行、設置斷點、檢查存儲器和寄存器。另外,還有其他工具可用于對代碼進行特性分析和跟蹤。


誤解:不支持我喜愛的操作系統(tǒng)。


事實:大多數常見的嵌入式處理器都支持最常見的操作系統(tǒng),并且這個名單還在不斷增加中。Xilinx MicroBlaze支持Linux、ThreadX、MicroC/OS-II和eCos等操作系統(tǒng)。


誤解:沒有驅動程序。


事實:FPGA嵌入式處理器有一個很大的外設庫,其中包含了驅動程序。表1是一個有代表性的名單,其中列出了FPGA軟處理器可用的一些軟外設。所有這些設備都存在相應的驅動程序。


誤解:硬件工程師必須先建立它之后我才能編寫代碼。


事實:可以使用經過測試的預置處理器系統(tǒng)設計,因此可以立即進行軟件開發(fā)。


這些預置的類似ASSP的處理器系統(tǒng)中包含處理器、內存控制器和內存、閃存控制器以及UART、GPIO和以太網接口等外設。這些系統(tǒng)在交付時都帶有參考軟件設計實例,其中包括對Linux引導的展示。


誤解:無法使用FPGA嵌入式處理器進行特性分析或跟蹤。


事實:特性分析和跟蹤工具也是可以使用的。開發(fā)人員可以通過特性分析了解處理器在各個函數上所用的時間,以及對任何指定函數的調用次數。


誤解:FPGA軟件開發(fā)工具價格太貴了。


事實:ASSP和FPGA供應商為其嵌入式軟件開發(fā)功能提供的定價在200美元到500美元之間。此外,許多供應商還提供試用版本以及免費或功能受限的版本,另外還有打折的評估套件。

創(chuàng)建和調試代碼
FPGA嵌入式處理器系統(tǒng)的軟件開發(fā)流程遵循一些常規(guī)步驟:


● 創(chuàng)建軟件開發(fā)工作區(qū)并導入硬件平臺。


● 創(chuàng)建軟件項目和板支持包。


● 創(chuàng)建軟件。


● 運行并調試軟件項目。


可選步驟:對軟件項目進行特性分析。


步驟3、4和5是大多數開發(fā)人員都熟悉的。有些開發(fā)人員可能不熟悉步驟1和2,但這些步驟都很明確。我們將采用Eclipse開發(fā)環(huán)境作為例子,更具體地了解每個步驟。

創(chuàng)建工作區(qū)并導入硬件平臺
啟動Eclipse以后,系統(tǒng)會提示用戶要使用的工作區(qū)。工作區(qū)就是一個目錄路徑,用于存儲項目文件。接著,用戶指定硬件平臺(設計)。硬件開發(fā)工具會自動生成此文件。該文件對處理器系統(tǒng)進行描述,其中包括存儲器接口和外設以及存儲器映射。該文件是硬件開發(fā)工具的輸出內容,硬件工程師通常會向軟件開發(fā)人員提供此文件。指定以后,就會導入硬件平臺,此步驟也宣告完成。

創(chuàng)建軟件項目和板級支持包
板級支持包 (board support package,BSP)包含供軟件應用使用的庫和驅動程序。軟件項目是軟件應用源和設置。


在針對Xilinx項目定制的Eclipse版本中,可以選擇“File(文件)”→“New(新建)”→“Xilinx C Project(Xilinx C項目)”。對于Xilinx C項目,Eclipse會自動創(chuàng)建Makefiles,將源文件編譯成對象文件,并將這些對象文件鏈接到一個可執(zhí)行文件中。在此步驟中,用戶可以定義“Project Name(項目名稱)”,通過提供在步驟1中創(chuàng)建的硬件平臺名稱將其與硬件平臺關聯(lián),然后指定項目名稱。


接下來,系統(tǒng)會確認BSP的生成情況,并根據定義的硬件平臺和操作系統(tǒng)自動加載適用的驅動程序。隨后會編譯這些驅動程序,生成BSP。

創(chuàng)建軟件
此時可以導入軟件實例,或者從頭創(chuàng)建代碼。保存代碼時,Eclipse會自動編譯并鏈接代碼,并報告任何出現(xiàn)的編譯器或鏈接程序錯誤。

運行并調試軟件項目
使用FPGA時,在執(zhí)行代碼之前必須完成一個步驟:為FPGA編程。在Eclipse中,只需選擇“Tools(工具)”→“Program FPGA(FPGA編程)”。此步驟將獲取硬件工程師已創(chuàng)建的硬件設計,并將其下載到FPGA上。該作業(yè)完成后,就可以選擇要構建的軟件類型了。“Debug(調試)”會禁用代碼優(yōu)化并插入調試符號,而“Release(發(fā)布)”則會啟用代碼優(yōu)化。若要進行特性分析,可使用-pg編譯選項。


最后,通過選擇“Run(運行)”并定義運行配置的類型和編譯器選項,可以運行代碼。如果選擇了“Release(發(fā)布)”,則處理器將立即開始執(zhí)行代碼。否則,處理器將執(zhí)行一些引導指令,并將在源代碼的第一行處停止,Eclipse中將出現(xiàn)調試視圖。


調試視圖會顯示源代碼或對象代碼、寄存器、存儲器和變量??梢栽谠创a或對象代碼級別單步執(zhí)行代碼,并可以設置代碼執(zhí)行的斷點。

對軟件項目進行特性分析
如果您需要,可以在此時對代碼進行特性分析,查看函數調用的次數,并可查看用在任何指定函數上的時間百分比。圖3展示了包含特性分析器結果的Eclipse特性分析視圖實例。

FPGA的優(yōu)勢
在成本、能耗、尺寸和整體系統(tǒng)效率方面,F(xiàn)PGA嵌入式處理器正在成為主要的設計選擇。好消息是,不需要將FPGA嵌入式處理器看得很神秘,或者不再比外部處理器更難以編程。


FPGA供應商提供的是符合行業(yè)標準的開發(fā)環(huán)境(如Eclipse),成本上有競爭力,并針對FPGA嵌入式處理進行了定制。在這些環(huán)境中,用戶可以創(chuàng)建、編譯、鏈接和下載代碼,并可像其以前對待外部處理器一樣,以相同的方式調試其設計。借助預置的處理器參考設計,軟件工程師可以立即開始編寫代碼并進行測試,不一定需要硬件工程師提供最終設計。最后,F(xiàn)PGA嵌入式處理器擁有豐富的IP庫、驅動程序和操作系統(tǒng)支持。

c++相關文章:c++教程


存儲器相關文章:存儲器原理




關鍵詞: FPGA 軟件工程師

評論


相關推薦

技術專區(qū)

關閉