<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 模擬技術(shù) > 設計應用 > 為軟件工程師揭開(kāi) FPGA 的神秘面紗

為軟件工程師揭開(kāi) FPGA 的神秘面紗

作者: 時(shí)間:2011-10-05 來(lái)源:網(wǎng)絡(luò ) 收藏

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

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


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

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


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


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


● I/O接口


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

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


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


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

實(shí)現技術(shù)
FPGA嵌入式處理系統的實(shí)現方法有很多種,但一般可將其分成三類(lèi):從頭組裝系統,使用向導將其組合到一起,或者通過(guò)修改現有設計實(shí)現。


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


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


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


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

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


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


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


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


誤解:FPGA沒(méi)有像ASSP那樣的處理器系統。


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


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


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


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


誤解:不支持我喜愛(ài)的操作系統。


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


誤解:沒(méi)有驅動(dòng)程序。


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


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


事實(shí):可以使用經(jīng)過(guò)測試的預置處理器系統設計,因此可以立即進(jìn)行軟件開(kāi)發(fā)。


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


誤解:無(wú)法使用FPGA嵌入式處理器進(jìn)行特性分析或跟蹤。


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


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


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

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


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


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


● 創(chuàng )建軟件。


● 運行并調試軟件項目。


可選步驟:對軟件項目進(jìn)行特性分析。


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

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

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


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


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

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

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


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


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

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

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


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

c++相關(guān)文章:c++教程


存儲器相關(guān)文章:存儲器原理




關(guān)鍵詞: FPGA 軟件工程師

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>