基于NETFPGA的可重構科學(xué)計算平臺
1目標和背景
1.1項目目標
大規??茖W(xué)問(wèn)題對數學(xué)算法運算速度的追求是無(wú)止境的,因此需要探索更快速的方法。目前基于FPGA技術(shù)的可重構高性能計算系統已經(jīng)成為研究熱點(diǎn),把數學(xué)算法轉換成硬件邏輯在FPGA中運行是一個(gè)好辦法,但數學(xué)算法轉換為硬件邏輯的過(guò)程復雜,而且受限于硬件電路規模,并不是所有的數學(xué)算法都適合轉換為硬件邏輯。且其存在的一個(gè)普遍的問(wèn)題就是用戶(hù)應用編程難度較大,且軟件專(zhuān)用、價(jià)格昂貴。
本項目的研究目標是探索和建立圖形化數學(xué)算法向硬件轉換的理論方法,研究開(kāi)發(fā)數學(xué)算法向硬件邏輯轉換的工具,與科學(xué)計算軟件相結合建立起基于FPGA陣列的科學(xué)計算平臺原型。研究目標結構流程如下:
系統目標結構和流程
FPGA 為各種高速算法的實(shí)現提供了一個(gè)很好的平臺,但是同樣引申出的問(wèn)題是如何快速有效的建立這些算法。在數學(xué)中最常用的算法表示是流程圖形式,因此本研究針對如何把數學(xué)流程圖算法轉換成為硬件邏輯以及建立其原型系統進(jìn)行研究,計劃建立起一個(gè)在數學(xué)算法的建立和運算中對用戶(hù)屏蔽EDA軟件層,使得各種層次用戶(hù)均可透明的使用FGPA計算系統,而不用關(guān)心硬件和硬件部署、接口的各個(gè)細節,實(shí)現PC-FPGA科學(xué)計算的原型系統。
1.2應用背景
大規??茖W(xué)問(wèn)題對數學(xué)算法運算速度的追求是無(wú)止境的,因此需要探索更快速的方法。目前基于FPGA技術(shù)的可重構高性能計算系統已經(jīng)成為研究熱點(diǎn),把數學(xué)算法轉換成硬件邏輯在FPGA中運行是一個(gè)好辦法,但數學(xué)算法轉換為硬件邏輯的過(guò)程復雜,而且受限于硬件電路規模,并不是所有的數學(xué)算法都適合轉換為硬件邏輯。且其存在的一個(gè)普遍的問(wèn)題就是用戶(hù)應用編程難度較大,且軟件專(zhuān)用、價(jià)格昂貴。
FPGA 為各種高速算法的實(shí)現提供了一個(gè)很好的平臺,但是同樣引申出的問(wèn)題是如何快速有效的建立這些算法。在數學(xué)中最常用的算法表示是流程圖形式,因此本研究針對如何把數學(xué)流程圖算法轉換成為硬件邏輯以及建立其原型系統進(jìn)行研究,計劃建立起一個(gè)在數學(xué)算法的建立和運算中對用戶(hù)屏蔽EDA軟件層,使得各種層次用戶(hù)均可透明的使用FGPA計算系統,而不用關(guān)心硬件和硬件部署、接口的各個(gè)細節,實(shí)現PC-FPGA科學(xué)計算的原型系統。
FPGA硬件加速能力
FPGA (現場(chǎng)可編程門(mén)陣列)是一種具有大規??删幊涕T(mén)陣列的器件,不僅具有專(zhuān)用集成電路(ASIC)快速的特點(diǎn),更具有很好的系統實(shí)現的靈活性。FPGA可通過(guò)開(kāi)發(fā)工具實(shí)現在線(xiàn)編程。與CPLD (復雜可編程邏輯器件)相比, FPGA屬寄存器豐富型結構,更加適合于完成時(shí)序邏輯控制。FPGA提供大量的并行資源,在硬件中只需要幾個(gè)時(shí)鐘周期就可以執行完函數功能,而順序操作的處理器則需要成百上千的時(shí)鐘周期。由于只需要很少的時(shí)鐘周期,FPGA即使采用較慢的時(shí)鐘,也能夠提升性能。減小時(shí)鐘速率可以降低功耗,因此,FPGA協(xié)處理器的功耗效率遠遠大于處理器。利用當今高性能FPGA(例如,Altera的Stratix III系列FPGA)的結構和資源優(yōu)勢,大量的應用軟件都可以采用硬件加速協(xié)處理器,大大提升性能,如表所示。相對于只采用處理器的應用,基于FPGA的協(xié)處理器在實(shí)際應用中運算執行速度提高了10倍,速度提高100倍也是很常見(jiàn)的。
FPGA硬件加速列表
注:上表來(lái)自 Altera公司.利用FPGA加速實(shí)現高性能計算 [j]電子產(chǎn)品世界
可重構計算
可重構計算(Reconfigurable Computing,RC),簡(jiǎn)單地說(shuō),就是利用FPGA邏輯實(shí)現計算任務(wù)。有些文獻把它稱(chēng)為自適應計算(Adaptive Computing),也有的文獻把它稱(chēng)為FPGA定制計算(Custom Computing)??芍貥嬘嬎愕母拍钤缭?0世紀60年代就已提出。在通用微處理器上也運用了這一思想,如組件就是利用多路選擇器來(lái)實(shí)現功能的變化,而這些組件一般與計算結構不發(fā)生直接聯(lián)系。目前,可重構計算已有較大發(fā)展,主要目標是希望通過(guò)硬件可編程,來(lái)自適應計算任務(wù)的需求,以期達到最佳性能;而且這種硬件結構的變化,能實(shí)時(shí)地適應計算任務(wù)要求的變化??芍貥嬘嬎愕牡讓蛹夹g(shù)是FPGA編程技術(shù),可重構計算的優(yōu)點(diǎn)是硬件設計的實(shí)現基于軟件的靈活性,并且保持了傳統的基于硬件方法的執行速度。其體系結構可變的特點(diǎn),很好地適應了實(shí)際應用中的多元化需求。
國際現狀
國際上主要有XtremeData,Nallatech,美國星橋公司和蘇格蘭愛(ài)丁堡大學(xué)FPGA高性能計算聯(lián)盟研究類(lèi)似產(chǎn)品。
XtremeData:(www.xtremedatainc.com)
采用了多片Altera® Stratix® III FPGA,并且使用Intel QuickAssist技術(shù),XtremeData XD2000i In-Socket加速器(ISA)展示了這一強大的1066 MHz協(xié)處理解決方案。Stratix III FPGA的快速架構和I/O功能在這一模塊中非常有效,實(shí)現了穩定的1,066 MHz FSB速率。XD2000i模塊相對于目前的GPU還具有功耗、體積、存儲器誤碼校正編碼(ECC)等優(yōu)勢:功耗低于60W,模塊可以緊密安裝在刀片外形封裝中。XD2000i模塊結合了Intel Xeon 5000系列處理器和Stratix III FPGA協(xié)處理器,使客戶(hù)能夠使用性能最好的FSB加速器,顯著(zhù)降低了成本和功耗,產(chǎn)品更加緊湊。XD2000i模塊采用了Stratix III FPGA,在基于Intel的平臺上,實(shí)現的某些算法具有優(yōu)異的性能。Intel QuickAssist技術(shù)工作臺為Altera和XtremeData等公司提供了創(chuàng )新的協(xié)處理器解決方案開(kāi)發(fā)環(huán)境。Intel提供基于FPGA的緊耦合In-socket加速器。將基于Stratix III FPGA的XD2000i插入到Intel Xeon處理器插槽中,使協(xié)處理器能夠與存儲器和主處理器實(shí)現高速鏈接,不需要改動(dòng)電路板,從而為設計人員提供了簡(jiǎn)單的硬件集成途徑。今年第三季度將提供新版XD2000i模塊,四插槽電路板通過(guò)單獨的FSB處理器互聯(lián)支持500K邏輯單元(LE)以及1,536個(gè)乘法器。
Nallatech:(http://www.nallatech.com)
該公司一直致力于高性能FPGA計算技術(shù)的研究與開(kāi)發(fā),其解決方案包含了目前業(yè)內FPGA最成熟和先進(jìn)的開(kāi)發(fā)技術(shù),在技術(shù)的領(lǐng)先性和應用的普遍性方面取得了一個(gè)很好的平衡。模塊化的硬件平臺,提供一個(gè)由多個(gè)FPGA、內存、數模接口和串行接口組合而成的高帶寬、內部連接的結構。具體形式有PCI,VME,cPCI 和PCI-104等形式。FUSE系統軟件可以運行在包括Windows,Linux和VxWorks等操作系統的主機系統上,通過(guò)程序環(huán)境中的APIs,提供配置、控制以及和FPGA運算平臺通信等功能。提供了在主機系統和Nallatech FPGA運算平臺之間進(jìn)行配置,控制和通信的功能,支持最常用的操作系統和編程語(yǔ)言。支持的操作系統包括Linux,Windows和VxWorks; FUSE APIs,包括支持DIMEtalk的APIs,支持C/C++ 和Java的APIs; 在單個(gè)系統中支持多個(gè)FPGA平臺; FUSE Toolbox for MATLAB提供了Matlab和FPGA硬件平臺的直接接口; 支持硬件和主機之間接口的TCL腳本語(yǔ)言。
美國星橋公司
星橋公司以175000-700000美元的價(jià)格銷(xiāo)售4種型號的FPGA“超計算機”,被稱(chēng)為HC-62的“超計算機”的售價(jià)為350000美元,配置11個(gè)Xilinx公司生產(chǎn)的價(jià)格為3000美元的FPGA芯片,它每秒能夠完成2000億次浮點(diǎn)運算。售價(jià)為700000美元型號的“超計算機”包含有22有個(gè)Xilinx公司的芯片,每秒能夠完成4000億次浮點(diǎn)運算。另外,客戶(hù)還必須購買(mǎi)Viva的許可證,每人每年的價(jià)格為45000美元。
蘇格蘭愛(ài)丁堡大學(xué)FPGA高性能計算聯(lián)盟的Maxwell
Maxwell只占用了愛(ài)丁堡大學(xué)并行計算中心的兩個(gè)機柜。這一技術(shù)目前存在的問(wèn)題是,編程非常困難。導致Maxwell還很難投入商業(yè)使用。但Maxwell已經(jīng)試運行了來(lái)自石油、金融、醫療成像等行業(yè)對處理能力要求較高的應用軟件。在運行金融行業(yè)的軟件時(shí),Maxwell的速度是使用標準處理器的相似系統的2-300倍。Maxwell采用了Xilinx的FPGA技術(shù)。
國內現狀
在基于FPGA的可重構高性能計算的研究領(lǐng)域,國內主要有中國科學(xué)技術(shù)大學(xué)等少數幾所大學(xué)的相關(guān)教授在研究FPGA可重構計算的結構和算法,國內的FPGA可重構計算還處于起步階段,與國際水平還有很大差距,尚無(wú)通用成品運算平臺,國內主要研究現狀比較見(jiàn)下表。
目前一般情況下對于需要使用PC來(lái)解決一個(gè)科學(xué)計算的問(wèn)題,首先會(huì )使用C、Matlab或者其他語(yǔ)言來(lái)實(shí)現這個(gè)算法,變成程序,程序與操作系統進(jìn)行交互運行,操作系統與機器碼在CPU 的物理層上運行 ,而CPU 層則是工作在硬件邏輯層之上 . 可以看到,運算工作于3個(gè)層次,如果有辦法讓我們的算法直接工作在硬件邏輯層,那么算法的運算速度將大大提高。
科學(xué)計算軟件如Matlab、Scilab是廣大科研工作者廣泛使用的數學(xué)工具,科研中大量的科學(xué)計算問(wèn)題都是由科學(xué)計算語(yǔ)言來(lái)描述的,本研究的最終目的是采用基于FPGA的可重構計算技術(shù)對科學(xué)計算軟件進(jìn)行加速,使其能在PC平臺上完成高性能科學(xué)計算。
這項研究最核心的問(wèn)題就是如何把科學(xué)計算問(wèn)題轉換成為硬件邏輯(可綜合)。
數學(xué)算法在PC上運行和在FPGA上運行情況對比
隨著(zhù)微電子工藝水平的提高和EDA工具的進(jìn)步,目前主流商用FPGA芯片的集成規模已經(jīng)超過(guò)I千萬(wàn)等效門(mén),而且還在按照摩爾定律增加,利用這些芯片解決問(wèn)題的能力越來(lái)越強。另一方面,隨著(zhù)應用要求的發(fā)展,可重構計算技術(shù)所處理問(wèn)題的規模越來(lái)越大,系統也變得越來(lái)越復雜,同時(shí)對系統設計時(shí)間的要求卻是越來(lái)越短,迫切需要開(kāi)發(fā)和使用與此需求相適應的支持電路實(shí)時(shí)重構技術(shù)的高級設計方法和工具來(lái)充分發(fā)揮現有FPGA的能力。目前可重構計算面臨的主要問(wèn)題是大量設計工作依靠手工方法完成,并要求用戶(hù)掌握算法、并行計算、硬件描述語(yǔ)言和電路設計等大量相關(guān)知識及豐富的設計經(jīng)驗,設計難度很大,設計周期較長(cháng),嚴重制約著(zhù)可重構計算技術(shù)的推廣和普及。
目前國際上雖然已經(jīng)有一些面向可編程芯片設計的高級工具,但基本上是借鑒ASIC設計方法,不但缺乏對實(shí)時(shí)可重構的支持,而且最后自動(dòng)生成的電路往往難以滿(mǎn)足用戶(hù)較為嚴格的時(shí)序要求。本研究設計的支持電路實(shí)時(shí)重構的科學(xué)計算平臺為用戶(hù)提供一個(gè)高級語(yǔ)言設計工具,降低用戶(hù)的使用難度,大大加快可重構計算電路設計的速度,必將成為可重構計算技術(shù)發(fā)展的方向,因此本設計是一個(gè)極具前途的研究課題。本系統利用FPGA的可重配置特性,計算機與FPGA運算相結合的計算裝置,如果能與支持電路實(shí)時(shí)重構的編譯技術(shù)相結合,將能很輕松地設計出小規模、高性能、低成本、低功耗的硬件平臺,本系統探索和建立數學(xué)算法向硬件邏輯轉換的理論方法,對于當前的可重構計算、高速信號處理、FPGA應用設計乃至IC 設計都有著(zhù)重要意義 ,其關(guān)鍵的問(wèn)題在于給用戶(hù)提供數學(xué)算法向硬件邏輯轉換的工具,以此來(lái)幫助用戶(hù)更加快速的建立應用。
研究的意義
探索和建立數學(xué)算法向硬件邏輯轉換的理論方法,對于當前的可重構計算、高速信號處理、FPGA應用設計乃至IC 設計都有著(zhù)重要意義 ,其關(guān)鍵的問(wèn)題在于給用戶(hù)提供數學(xué)算法向硬件邏輯轉換的工具,以此來(lái)幫助用戶(hù)更加快速的建立應用?;贔PGA的可重構高性能計算將有可能大大降低對于超級計算機的需求,大量的科學(xué)計算問(wèn)題將有可能提供FPGA的硬件邏輯得以實(shí)現 . 同時(shí) ,基于FPGA的可重構高性能計算系統的硬件成本相比高性能超級計算機來(lái)說(shuō)較低,更加有利于普及和推廣。
1.3研發(fā)計劃
科學(xué)計算工具的研究一直是科學(xué)研究的前沿領(lǐng)域,其目前主要方向集中在更高性能的超級計算機構建方面,其主要是利用CPU陣列的規模優(yōu)勢來(lái)實(shí)現高性能。本研究采用FPGA可重構數字電路硬件加速的方法在Scilab中實(shí)現高性能科學(xué)計算,研究使用圖形化方法把數學(xué)算法轉換到硬件邏輯的方法和軟件,目標實(shí)現PC與FPGA相結合的科學(xué)計算系統:實(shí)現 Scilab - FPGA運算任務(wù)的協(xié)同工作 ,對于用戶(hù)來(lái)說(shuō)整個(gè)系統透明,用戶(hù)使用Scilab/Scicos編程,硬件生成和加速工作由系統自動(dòng)完成,整個(gè)系統構成一個(gè)具備硬件加速功能的科學(xué)計算平臺。
基于前期開(kāi)發(fā)的Scilab/Scicos-HDL軟件,進(jìn)一步完善,構建起配套的FPGA可重構硬件環(huán)境,建立Scilab-FPGA軟硬件聯(lián)合仿真運算平臺,并且在其上建立大規??茖W(xué)運算應用)。
開(kāi)發(fā)與Scilab系統相互通信交FPGA硬件模塊,實(shí)現Scilab/Scicos-HDL與FPGA硬件模塊聯(lián)合仿真;
在該系統上設計建立大規??茖W(xué)計算應用來(lái)進(jìn)行大規模矩陣運算等??尚行裕夯?年時(shí)間的前期工作,課題組已經(jīng)開(kāi)發(fā)出 科學(xué)計算算法(代碼方式和圖形化方式)轉換為 硬件描述語(yǔ)言(支持 VHDL、Verilog、 SystemC)的軟件,本項目申請所要完成的是其FPGA硬件模塊和其協(xié)同工作方法有較高的可行性 。
本項目建在在充分的前期工作基礎之上。項目組成員自主開(kāi)發(fā)了在開(kāi)源的科學(xué)計算軟件上進(jìn)行硬件電路算法設計和仿真的軟件Scicos-HDL (2005-2010). 該項目的研究一直在中科院自動(dòng)化所中法實(shí)驗室和法國 INRIA的支持下進(jìn)行。
目前Scicos-HDL 0.7運行在Windows平臺。具備5個(gè)硬件電路仿真庫,包括50多個(gè)硬件電路仿真元件和VHDL、verilog、systemc語(yǔ)言編譯器模塊。當前可以完成組合邏輯電路設計、時(shí)序邏輯電路設計和基本的數字信號處理,支持VHDL、verilog、SystemC 3種硬件描述語(yǔ)言,支持自動(dòng)文檔生成,并且生成的HDL代碼均為可綜合。Scicos-HDL還支持與其它Open Source的EDA軟件進(jìn)行集成,構建完整的設計工具鏈。用戶(hù)在Scilab / Scicos環(huán)境下對電子電路進(jìn)行高級描述,并可對自己的設計方案進(jìn)行系統仿真和修正,然后通過(guò)編譯生成基于VHDL的RTL級結構模型。該模型可通過(guò)各種商業(yè)化的IC-CAD接口,最終產(chǎn)生對應于所描述系統的硬件平臺。使用這樣的開(kāi)發(fā)工具,用戶(hù)在設計集成電路系統時(shí),即使不了解硬件電路的內部細節,甚至不了解 HDL語(yǔ)言,也可以根據自己的需要進(jìn)行電子電路的設計。還可以使設計數字電路和數字信號處理電路的工作變得快捷,門(mén)檻更低。
Scicos-HDL元件庫示例
課題組前期與中科院自動(dòng)化所中法實(shí)驗室(LIAMA)和法國INRIA Scilab組織在科學(xué)計算算法轉換到硬件描述語(yǔ)言方面有著(zhù)長(cháng)期合作基礎,合作開(kāi)發(fā)Scilab/Scicos-HDL軟件系統已經(jīng)數年,在開(kāi)源領(lǐng)域有一定的知名度。本項目設計把科學(xué)計算軟件與FPGA技術(shù)可重構系統相結合,構建出低成本和易于使用的高性能科學(xué)計算平臺。本系統研究實(shí)現了基于FPGA可重構計算技術(shù)的科學(xué)計算平臺系統原型,實(shí)現了Scilab-FPGA運算任務(wù)的協(xié)同工作,對于廣大用戶(hù),整個(gè)系統透明,將其中的數學(xué)算法轉換為數字電路硬件邏輯的理論方法和軟件,開(kāi)發(fā)與Scilab系統相互通信交互的FPGA硬件模塊,實(shí)現Scilab/scicos-HDL與FPGA硬件模塊聯(lián)合仿真,在高性能科學(xué)計算領(lǐng)域,有較強的應用價(jià)值。
1.4研究意義
探索和建立數學(xué)算法向硬件邏輯轉換的理論方法,對于當前的可重構計算、高速信號處理、FPGA應用設計乃至IC 設計都有著(zhù)重要意義 ,其關(guān)鍵的問(wèn)題在于給用戶(hù)提供數學(xué)算法向硬件邏輯轉換的工具,以此來(lái)幫助用戶(hù)更加快速的建立應用?;贔PGA的可重構高性能計算將有可能大大降低對于超級計算機的需求,大量的科學(xué)計算問(wèn)題將有可能提供FPGA的硬件邏輯得以實(shí)現 . 同時(shí) ,基于FPGA的可重構高性能計算系統的硬件成本相比高性能超級計算機來(lái)說(shuō)較低,更加有利于普及和推廣。
2設計與實(shí)現
本章來(lái)說(shuō)明對于項目整個(gè)系統的設計結構進(jìn)行了說(shuō)明,并且說(shuō)明了目前實(shí)現的部分。
2.1總體設計
2.1.1總體設計圖
系統中 Scicos-HDL模塊負責 硬件電路的設計、仿真和HDL代碼輸出。當用戶(hù)完成了一個(gè) 硬件設計后 ,可以先行在Scicos-HDL中進(jìn)行軟件仿真,仿真完成后,用戶(hù)可以導出VHDL、Verilog、SystemC這三種硬件描述語(yǔ)言的代碼(可綜合)。導出的HDL代碼經(jīng)過(guò)用戶(hù)手動(dòng)處理,下載到NETFPGA板子上后,通過(guò)千兆以太網(wǎng)接口,與Scicos-HDL進(jìn)行軟硬件聯(lián)合仿真。
在NETFPGA板子上,通過(guò)以太網(wǎng)連接MicroBlaze處理核心,使用HTTP協(xié)議進(jìn)行數據交換Scicos-HDL導出的代碼以用戶(hù)自定義IP的方式加入到系統中。
2.1.2技術(shù)發(fā)展路線(xiàn)
本節來(lái)闡述項目技術(shù)的基本原理和發(fā)展的技術(shù)路線(xiàn)。
(1)數學(xué)算法轉換成硬件邏輯原理
圖形化的算法描述和仿真是一種常見(jiàn)的算法表達方式,其也最接近于實(shí)物性質(zhì)的描述,目前計算機軟件中采用圖形化仿真方法的很多,如MatlAB,SystemView、labView等.本研究設計了一套基于硬件知識的圖形化算法仿真機制,使得用戶(hù)在軟件中根據算法需要畫(huà)出算法流程圖,由系統處理后形成硬件邏輯描述,其基本的結構描述如下:
用途 | 計算機程序結構 | FPGA結構 |
加法 | + 運算 | 硬件加法器 |
乘法 | X 運算 | 硬件乘法器 |
循環(huán)結構 | FOR 循環(huán) | 計數器 |
判斷結構 | IF | 數值比較器+數據選擇器 |
遞增結構 | i++ | 加法計數器 |
遞減結構 | i-- | 減法計數器 |
矩陣加法 | 多條程序實(shí)現 | 矩陣加法器 |
矩陣乘法 | 多條程序實(shí)現 | 矩陣乘法器v |
賦值 | 賦值語(yǔ)句 | 寄存器 |
功能模塊 | 函數 | 算法硬件模塊 |
數組 | 數組 | RAM |
計算機程序結構與FPGA程序結構對比
通過(guò)可以看出在程序設計中能夠實(shí)現的程序基本結構在FPGA均有對應的硬件實(shí)現。本系統中數學(xué)算法轉換成硬件邏輯是通過(guò)建立圖形化運算機制基礎上:添加FPGA流水線(xiàn)運算基本元件、使用圖形化方法連接各個(gè)元件構成算法邏輯圖、把算法邏輯圖轉換成為可綜合HDL描述這三個(gè)步驟進(jìn)行完成。
(2)協(xié)同工作中FPGA模塊并行計算
FPGA運算與計算機運算的一個(gè)很大的區別在于FPGA中的各個(gè)運算單元都是實(shí)際硬件存在而計算機運算中的各個(gè)運算單元主要是在軟件系統中建立順序執行,因此FPGA可以實(shí)現所有運算單元的協(xié)調并行計算,但是FPGA并不能自動(dòng)完成并行計算任務(wù),這需要采用流水線(xiàn)技術(shù)來(lái)完成。
流水線(xiàn)處理源自現代工業(yè)生產(chǎn)裝配線(xiàn)上的流水作業(yè),是指將待處理的任務(wù)分解為相對獨立的、可以順序執行的,而又相互關(guān)聯(lián)的一個(gè)個(gè)子任務(wù).圖1 是采用流水線(xiàn)技術(shù)的一個(gè)指令集的操作過(guò)程,我們將某一操作分為4 個(gè)子任務(wù):取指令I(lǐng)1 ,譯碼I2 ,取操作數I3 和運算I4 ,假如每個(gè)操作執行的時(shí)間均為T(mén) ,則執行4 個(gè)操作的執行時(shí)間為4 T ,將這4 個(gè)子任務(wù)在時(shí)間上重疊,用4 個(gè)子部件來(lái)完成,相應的4 個(gè)子部件連接成串行方式,每個(gè)子部件執行的時(shí)間為T(mén) ,每隔T 時(shí)間就可輸出一個(gè)操作處理結果,平均速度提高了4 倍,在加入適當的轉移控制之后,即成為流水線(xiàn)操作的工作方式.
采用流水線(xiàn)技術(shù)的一個(gè)指令集的操作
采用流水線(xiàn)技術(shù),可以大大提高系統運行速度,特別適合于需要進(jìn)行大批量簡(jiǎn)單運算的場(chǎng)合,如數字信號處理中的卷積操作、FIR 或FFT濾波器等。本研究中作為算法流程機制的FPGA模塊均采用流水線(xiàn)結構,其基本結構如下:
基本算法流程模塊
一個(gè)基本的算法流程模塊采用前寄存器和后寄存器,使得系統模塊的工作只取決于自身的運算是否完成,在整體中相對獨立,系統中有多個(gè)此類(lèi)算法模塊是獨立并行工作。
(3) FPGA-PC協(xié)同科學(xué)計算
此項包含2個(gè)方面的內容:一個(gè)是FPGA算法系統中本身就有支持科學(xué)計算的算法模塊;一個(gè)是FPGA運算系統可以和計算機端的科學(xué)計算系統連接起來(lái)完成FPGA-PC協(xié)同科學(xué)計算工作。
對于第一個(gè)方面本研究在系統的元件庫中設置了矩陣運算元件庫在完成基本的矩陣運算:矩陣運算是科學(xué)計算中的一個(gè)重要方法,要實(shí)現高性能的科學(xué)計算在系統內部就必須配置多種硬件矩陣運算處理模塊,如矩陣硬件加法器、乘法器。
對于第二個(gè)問(wèn)題,本研究使用netfpga硬件系統,與開(kāi)源的科學(xué)計算軟件Scilab進(jìn)行接口,實(shí)現FPGA運算系統與科學(xué)計算系統協(xié)同工作。
本研究中系統軟件基于Scilab/Scicos開(kāi)發(fā),完成三個(gè)主要功能:
使用Scilab/Scicos進(jìn)行圖形化算法設計;
把圖形化數學(xué)算法轉換成為硬件邏輯的功能;支持 VHDL、Verilog、 SystemC 三種硬件描述語(yǔ)言,生成的硬件邏輯可綜合;
與NETFPGA硬件系統實(shí)現 FPGA-PC協(xié)同任務(wù)運算;
2.2軟件設計
軟件模塊的主體功能是硬件設計、仿真、輸出、軟硬件聯(lián)合運算。
軟件模塊的結構如下
軟件結構圖
軟件系統目前已經(jīng)實(shí)現的有組合邏輯元件庫、時(shí)序邏輯元件庫、虛擬儀器庫、VHDL編譯器、Verilog編譯器、SystemC編譯器。
組合邏輯元件庫
時(shí)序邏輯元件庫 超級元件庫
虛擬儀器庫
IP 元件庫
2.2.1組合邏輯元件
所有的組合邏輯元件,均派生自ScilabCode組合模塊 ,使用者只要使用scilab 語(yǔ)言在ScilabCode組合模塊 中定義模塊功能 和 模塊的引腳 ,系統會(huì )自動(dòng)生成相應的硬件描述。
例如:
用戶(hù)打開(kāi)一個(gè)ScilabCode組合模塊 放置于 設計區后 ,點(diǎn)擊元件的SET菜單,彈出界面進(jìn)行引腳的功能的設置:
組合邏輯元件引腳設置界面
組合邏輯元件功能設置界面(使用純Scilab語(yǔ)言描述)
設置完成點(diǎn)擊“QUIT”按鈕,系統自動(dòng)生成元件
組合元件 74ls04
2.2.2時(shí)序邏輯元件
所有的時(shí)序邏輯元件,均派生自ScilabCode時(shí)序模塊 ,使用者只要使用scilab 語(yǔ)言在ScilabCode時(shí)序模塊 中定義模塊功能 和 模塊的引腳 ,系統會(huì )自動(dòng)生成相應的硬件描述。
例如:
用戶(hù)打開(kāi)一個(gè)ScilabCode時(shí)序模塊 放置于 設計區后 ,點(diǎn)擊元件的SET菜單,彈出界面進(jìn)行引腳的功能的設置:
時(shí)序邏輯元件引腳設置界面
時(shí)序邏輯元件功能設置界面(使用Scilab語(yǔ)言描述,狀態(tài)轉換圖)
設置完成點(diǎn)擊“QUIT”按鈕,系統自動(dòng)生成元件
時(shí)序邏輯元件例子
2.2.3IP Core元件
所有的IP Core元件,均派生自IP Core模塊 ,使用者只要在IP Core模塊 中定義模塊功能 和 模塊的引腳 ,系統會(huì )自動(dòng)生成元件。
例如:
用戶(hù)打開(kāi)一個(gè)IP Core模塊放置于 設計區后 ,點(diǎn)擊元件的SET菜單,彈出界面進(jìn)行引腳的功能的設置:
IP Core元件引腳設置界面
進(jìn)行引腳設置以后,系統會(huì )自動(dòng)生成VHDL、Verilog、SystemC這三種硬件描述語(yǔ)言的模板,用戶(hù)根據所需功能修改模板,即可完成模塊設計。
VHDL語(yǔ)言模板
Verilog語(yǔ)言模板
SystemC語(yǔ)言模板- 頭文件
SystemC語(yǔ)言模板- 程序文件
編輯完成,點(diǎn)擊:“QUIT”按鈕,系統后自動(dòng)完成元件的建立。
IP Core元件例子
2.2.4超級模塊元件
超級元件是指由多種不同的元件組合起來(lái)的元件,用戶(hù)可以根據需要使用 組合邏輯元件、時(shí)序邏輯元件、IP Core元件 來(lái)建立超級元件,另外超級元件也可由數個(gè)超級元件組成。
超級元件內部
超級邏輯元件例子
2.2.5編譯器模塊
VHDL編譯器,可以將Scicos-HDL中設計的硬件電路輸出成為可綜合的VHDL語(yǔ)言代碼。
Verilog編譯器,可以將Scicos-HDL中設計的硬件電路輸出成為可綜合的Verilog語(yǔ)言代碼。
SystemC編譯器,可以將Scicos-HDL中設計的硬件電路輸出成為可綜合的SystemC語(yǔ)言代碼。
2.2.6虛擬儀器模塊
虛擬儀器模塊主要是針對元件電路調試和仿真中經(jīng)常使用的幾種元件和儀器進(jìn)行虛擬化。但更多的Scicos-HDL中可以Scicos本身眾多的元件作為虛擬儀器元件。
8位的ADC 與 DAC 元件
圖像的讀取和顯示元件
示波器元件
波形發(fā)生器元件
2.2.7接口模塊
接口模塊至關(guān)重要,它負責了Scicos-HDL仿真引擎與 ScilabScicos系統仿真引擎的接口。
接口元件
2.3硬件設計
系統的硬件部分基于NETFPGA實(shí)現。
2.3.1NETFPGA
NetFPGA平臺詳細的組成框圖如下:
NetFPGA是由美國斯坦福大學(xué)(Stanford University)開(kāi)發(fā)設計的一個(gè)低成本可重用硬件平臺。一個(gè)完整的NetFPGA系統由NetFPGA開(kāi)發(fā)板、雙口千兆以太網(wǎng)卡、運行于CentOS操作系統的PC機(或服務(wù)器)以及其他軟件程序組成,通過(guò)各個(gè)層次軟硬件的互相配合完成復雜的網(wǎng)絡(luò )結構測試。其中NetFPGA開(kāi)發(fā)板是整個(gè)平臺的核心,為用戶(hù)提供了及其豐富的硬件資源。
核心部分是一個(gè)Xilinx公司的Virtex-II Pro 50型FPGA,這個(gè)比較大的FPGA由用戶(hù)自定義的邏輯來(lái)編程,其核心時(shí)鐘頻率為125 MHz。另外還有一個(gè)小的Xilinx Spartan型FPGA用來(lái)實(shí)現連接主機處理器的PCI接口的控制邏輯。
在外部存儲器方面,兩片4.5MB的Cypress公司SRAM與FPGA核心邏輯同步運行于125 MHz時(shí)鐘頻率,字長(cháng)36比特??偣?4 MB的兩片Micron公司DDR2型SDRAM與FPGA異步運行,其時(shí)鐘頻率為200MHz,字長(cháng)32比特,存儲帶寬400 M字/秒(12,800Mb/s)。
在外部接口方面,除了連接PC主機的PCI總線(xiàn)插口,一個(gè)Broadcom公司的物理層收發(fā)器(PHY)包含了四個(gè)千兆位以太網(wǎng)接口,使該平臺可以連接四根標準的category 5、category 5e、或category 6以太網(wǎng)雙絞線(xiàn)來(lái)收發(fā)數據分組,并組成網(wǎng)絡(luò )拓撲;四端口的PHY內部連接著(zhù)作為FPGA軟核的四個(gè)千兆位以太網(wǎng)MAC控制器。此外,兩個(gè)SATA連接口使得系統內部的多個(gè)NetFPGA可以通過(guò)SATA數據線(xiàn)連接起來(lái),互相之間直接以很高的速度交換數據,而不必再通過(guò)PCI總線(xiàn)。
NetFPGA通過(guò)PCI總線(xiàn)與主機CPU連接,提供了硬件加速的數據通道,分擔CPU的處理任務(wù)。主機CPU按照DMA方式讀寫(xiě)NetFPGA上的寄存器和存儲器來(lái)配置NetFPGA的工作模式,并對NetFPGA的工作狀態(tài)進(jìn)行監控。
此外,雙口千兆以太網(wǎng)卡用來(lái)給主機提供本地網(wǎng)絡(luò )接口,并與NetFPGA連接,實(shí)現特殊的用法。
NetFPGA平臺的組成框圖
NetFPGA開(kāi)發(fā)板的主要硬件組成:
Xilinx Virtex-II Pro 50 FPGA
內嵌兩顆高性能PowerPC處理器
國際通用的JTAG測試端口
4.5 MB高速靜態(tài)隨機存取器
內嵌64MB二代內存
4組速率高達1Gbps的標準以太網(wǎng)接口
支持 Cat5E和Cat6標準電纜
NetFPGA系統框圖:
2.3.2硬件結構
硬件部分基于NETFPGA的硬件,主體結構如下圖:
基于NETFPGA的硬件結構圖
以MicroBlaze為核心,千兆以太網(wǎng)作為與PC交互接口,Scicos-HDL輸出的代碼,用戶(hù)手動(dòng)添加到 用戶(hù)自定義模塊中 ,完成硬件部署。
由于NETFPGA系統基于LINUX,所以本設計采用了一個(gè)外部的 XILINX Platform Cable USB設備,進(jìn)行下載與調試的工作,使得NETFPGA硬件能夠獨立工作。
NETFPGA硬件連接圖
2.3.3微處理器
MicroBlaze 是基于Xilinx公司FPGA的微處理器IP核,和其它外設IP核一起,可以完成可編程系統芯片(SOPC)的設計。MicroBlaze 處理器采用RISC架構和哈佛結構的32位指令和數據總線(xiàn),可以全速執行存儲在片上存儲器和外部存儲器中的程序,并和其它外設IP核一起,可以完成可編程系統芯片(SOPC)的設計。MicroBlaze處理器采用RISC架構和哈佛結構的32位指令和數據總線(xiàn),可以全速執行存儲在片上存儲器和外部存儲器中的程序,并訪(fǎng)問(wèn)其的數據。
Micro Blaze處理器采用RISC架構和哈佛結構,32位地址總線(xiàn),獨立的指令和數據緩存,并且有獨立的數據和指令總線(xiàn)連接到IBM的OPB總線(xiàn),使得它能很容易和其它外設IP核一起完成整體功能。圖3.2.2顯示了MicroBlaze的接口連接和架構布局,圖3.2.3顯示了MicroBlaze的內部功能塊圖。
MicroBlaze的接口連接和架構布局
MicroBlaze內部的功能塊圖
(1)內部結構
MicroBlaze內部有32個(gè)32位通用寄存器和2個(gè)32位特殊寄存器—PC指針和MSR狀態(tài)標志寄存器。為了提高性能,MicroBlaze還具有指令和數據緩存。所有的指令字長(cháng)都是32位,有3個(gè)操作數和2種尋址模式。指令按功能劃分有邏輯運算、算術(shù)運算、分支、存儲器讀/寫(xiě)和特殊指令等。指令執行的流水線(xiàn)是并行流水線(xiàn),它分為3級流水:取指、譯碼和執行,如圖2所示。
(2)存儲結構
MicroBlaze是一種大端存儲系統處理器,使用如圖3所式的格式來(lái)訪(fǎng)問(wèn)存儲器。
(3)中斷控制和調試接口
MicroBlaze可以響應軟件和硬件中斷,進(jìn)行異常處理,通過(guò)外加控制邏輯,可以擴展外部中斷。利用微處理器調試模塊(MDM)IP核,可通過(guò)JTAG接口來(lái)調試處理器系統。多個(gè)MicroBlaze處理器可以用1個(gè)MDM來(lái)完成多處理器調試。
(4)快速單一連接路接口
MicroBlaze處理器具有8個(gè)輸入和8個(gè)輸出快速單一鏈路接口(FSL)。FSL通道是專(zhuān)用于單一方向的點(diǎn)到點(diǎn)的數據流傳輸接口。FLS和MicroBlaze的接口寬度是32位。每一個(gè)FSL通道都可以發(fā)送和接收控制或數據字。
應用EDK(嵌入式開(kāi)發(fā)套件)可以進(jìn)行MicroBlaze IP核的開(kāi)發(fā)。工具包中集成了硬件平臺生產(chǎn)器、軟件平臺產(chǎn)生器、仿真模型生成器、軟件編譯器和軟件調試工具等。EDK中提供一個(gè)集成開(kāi)發(fā)環(huán)境XPS(Xilinx平臺工作室),以便使用系統提供的所有工具,完成嵌入式系統開(kāi)發(fā)的整個(gè)流程。EDK中還帶有一些外設接口的IP核,如LMB、OPB總線(xiàn)接口、外部存儲控制器、SDRAM控制器、UART、中斷控制器、定時(shí)器等。利用這些資源,可以構建一個(gè)較為完善的嵌入式微處理器系統。
在FPGA上設計的嵌入式系統層次結構為5級??稍谧畹蛯佑布Y源上開(kāi)發(fā)IP核,或或已開(kāi)發(fā)的IP核搭建嵌入式系統,這是硬件開(kāi)發(fā)部件;開(kāi)發(fā)IP核的設備驅動(dòng)、應用接口(API)和應用層(算法),屬軟件開(kāi)發(fā)內容。
利用MicroBlaze構建基本的嵌入式系統。通過(guò)標準總線(xiàn)接口—LMB總線(xiàn)和OPB總線(xiàn)的IP核,MicroBlaze就可以和各種外設IP核相連。
EDK中提供的IP核均有相應的設備驅動(dòng)和應用接口,使用者只需利用相應的函數庫,就可以編寫(xiě)自己的應用軟件和算法程序。對于用戶(hù)自己開(kāi)發(fā)的IP核,需要自己編寫(xiě)相應的驅動(dòng)和接口函數。
2.3.4MAC
MAC的控制采用了XILINX的IP EthernetLITE,簡(jiǎn)化以太網(wǎng)子系統。對于遠程監視或控制應用中所需要的簡(jiǎn)單網(wǎng)絡(luò )接口來(lái)說(shuō),最小化網(wǎng)絡(luò )子系統就足夠了。
MicroBlaze “Lite” Ethernet Subsystem:MicroBlaze以太網(wǎng)簡(jiǎn)化子系統
簡(jiǎn)化以太網(wǎng)子系統
利用不帶中斷的Ethernet Lite IP在簡(jiǎn)單的查詢(xún)模式下實(shí)現設計就可以了。同時(shí)還可以將全部軟件,包括簡(jiǎn)單的應用層,都存儲在Xilinx FPGA中的本地存儲器中。利用XPS中的基本系統構建向導(Base System Builder wizard)可以容易地創(chuàng )建這樣的MicroBlaze設計。
2.3.5HTTP接口
·lwip網(wǎng)絡(luò )協(xié)議棧
Lwip是Light Weight IP的縮寫(xiě),它是專(zhuān)門(mén)為嵌入式系統應用的TCP/IP協(xié)議棧。Lwip既可以移植到操作系統上,又可以在無(wú)操作系統的情況下獨立運行。Lwip支持多網(wǎng)絡(luò )接口下的IP轉發(fā),ICMP協(xié)議,UDP協(xié)議,TCP協(xié)議。不同于一般的TCP/IP協(xié)議棧,在Lwip的處理器模型中,所有TCP/IP協(xié)議棧都在一個(gè)進(jìn)程當中完成,而不是在每一層都有一個(gè)單獨的進(jìn)程。這樣TCP/IP協(xié)議棧就和操作系統內核分開(kāi)了,避免了跨層傳輸數據時(shí)頻繁的上下文操作。而應用層程序既可以是單獨的進(jìn)程也可以駐留在TCP/IP進(jìn)程中。如果應用程序是單獨的進(jìn)程,可以通過(guò)操作系統的郵箱、消息隊列等和TCP/IP進(jìn)程進(jìn)行通訊。如果應用層程序駐留TCP/IP進(jìn)程中,那應用層程序就利用內部回調函數接口和TCP/IP協(xié)議棧通訊。
·SOCKET編程
網(wǎng)絡(luò )的Socket數據傳輸是一種特殊的I/O,Socket也是一種文件描述符,它具有類(lèi)似于打開(kāi)文件的函數調用Socket()?;诓僮飨到y的Socket編程有三種類(lèi)型:流式套接字,數據報式套接字,原始式套接字。其中只有流式套接字提供一個(gè)面向連接的可靠的數據傳輸服務(wù)。
·服務(wù)器端HTTP協(xié)議的實(shí)現
HTTP協(xié)議是一種較為常用的應用層協(xié)議,它是Hypertext Transfer Protocol的縮寫(xiě)。HTTP協(xié)議采用客戶(hù)端和服務(wù)器的模式,通過(guò)客戶(hù)端向服務(wù)器發(fā)出請求,獲得服務(wù)器端的響應。在本系統設計中SOPC系統作為HTTP協(xié)議的服務(wù)器。HTTP請求和響應的報文格式是相似的,報文有一個(gè)請求行/狀態(tài)行和一個(gè)頭部組成,有時(shí)還可能包括主體。在請求行中包括了請求類(lèi)型,URL,版本等。在響應行中包括狀態(tài)碼,狀態(tài)短語(yǔ)等。頭部格式為:(頭部名字:頭值)。下面是一個(gè)HTTP請求的例子。
請求 | 應答 |
GET /usr/bin/image HTTP/1.1 Accept: image/gif Accept: image/jpeg | HTTP/1.1 200 OK Date: Mon,08-Jan-05 13:15:14 GMT Server: Challenger MIME-Version: 1.0 Content-length: 2048 (圖像文件主體) |
表4-1 一個(gè)HTTP請求的例子
在EDK中,每一個(gè)外設IP模塊都有自己的軟件函數庫。利用Libgen工具,將所需外設函數數庫的頭文件添加進(jìn)工程中,通過(guò)調用這些函數可以操作和控制這些外設。例如對串口的操作如下:
//初始化串口,設置波特率等參數,清空發(fā)送和接收緩沖,禁止中斷;
使用標準C語(yǔ)言進(jìn)行應用程序的開(kāi)發(fā),編寫(xiě)相應的算法軟件,完成系統功能。
將編寫(xiě)的程序代碼利用mb-gcc編譯工具,根據系統的軟件一并,生成.ELF文件。在編譯鏈接之前,若選擇調試方式,就會(huì )在生成文件中加入調試接口SMDstub,進(jìn)行程序的硬件調試。
利用系統的硬件模型以及RAM塊的組織結構文件、ELF文件和用戶(hù)結束文件,應用FPGA綜合實(shí)現工具(如Xilinx XST)進(jìn)行綜合,然后下載生成的配置BIT文件到目標板上。利用EDK中提供的GDB調試工具可以進(jìn)行程序調試。有兩種調試方法:軟件仿真和硬件調試。軟件仿真可以進(jìn)行程序的功能調試,在開(kāi)發(fā)工具內部就可以進(jìn)行,不需要硬件支持。硬件調試就是通過(guò)JTAG接口或串口(可在硬件設計時(shí)選擇),連接到目標板上的應用系統中的XMD調試接口,將軟件程序下載到系統中進(jìn)行調試。本課題使用的目標板上的主芯片為Xilinx Spartan IIE 30萬(wàn)門(mén)的FPGA,系統時(shí)鐘為50MHz。實(shí)際運行完全滿(mǎn)足設計要求。
H TTP 協(xié)議及其實(shí)現
嵌入式Web 服務(wù)器技術(shù)的核心是HTTP (超文本傳送協(xié)議) 引擎。HTTP 是WWW 上的協(xié)議。HTTP 協(xié)議使Web 服務(wù)器和瀏覽器可以通過(guò)Web 交換數據。他是一種請求/ 響應協(xié)議,即服務(wù)器等待并響應客戶(hù)方請求。當用戶(hù)要瀏覽服務(wù)器上的一個(gè)網(wǎng)頁(yè)時(shí),一個(gè)HTTP 請求就會(huì )從用戶(hù)的瀏覽器發(fā)到HTTP 服務(wù)器。服務(wù)器響應這個(gè)請求, 把指定的網(wǎng)頁(yè)傳送回來(lái), 用戶(hù)才看到了網(wǎng)頁(yè)。
HTTP協(xié)議不維護與客戶(hù)方的連接,他使用可靠的TCP連接,通常采用TCP 的80 端口??蛻?hù)/ 服務(wù)器傳輸過(guò)程可分為4 個(gè)基本步驟:瀏覽器與服務(wù)器建立連接;瀏覽器向服務(wù)器請求文檔;服務(wù)器響應瀏覽器請求;斷開(kāi)連接。服務(wù)器程序開(kāi)始運行時(shí),主進(jìn)程就創(chuàng )建一個(gè)套接字,
并與主機地址綁定到一起,隨后置為被動(dòng)監聽(tīng)狀態(tài),等待客戶(hù)端連接請求的到來(lái)。一旦接收一個(gè)連接,就返回一個(gè)新的套接字描述符,主程序則開(kāi)辟一個(gè)新的子程序來(lái)處理這個(gè)新的連接。這樣系統可以同時(shí)
接收多個(gè)客戶(hù)端的請求。首先創(chuàng )建套接字,將套接字與本地地址和端口綁定,并設置套接字處于監聽(tīng)狀態(tài)。Web 服務(wù)器在接收一個(gè)連接請求后,讀取用戶(hù)的請求,根據用戶(hù)的請求進(jìn)行相應的處理。當請求位靜態(tài)文本時(shí),文檔直接提交輸出,當請求位動(dòng)態(tài)文本時(shí),請求模塊自動(dòng)調用腳本引擎,將腳本替換位現場(chǎng)數據,再提交輸出,當請求為帶參數的執行命令時(shí),請求解析器調用命令執行模塊分析命令并控制監控前端。
Http 設計模型
CPU 本身是以軟核的方式實(shí)現,其功能可根據需要進(jìn)行定制,非常靈活。EDK 不但在硬件設計上提供了支持,在軟件上也為設計者提供了較好的支持,提供了現成的網(wǎng)絡(luò )協(xié)議棧。加上EDK提供的集成開(kāi)發(fā)環(huán)境使得軟件開(kāi)發(fā)更加便利。采用這種方式的控制系統具有控制分散、開(kāi)放性好、使用簡(jiǎn)單、穩定性好等優(yōu)點(diǎn),而且可以通過(guò)瀏覽器進(jìn)行遠程多點(diǎn)監控和遠程支持,是未來(lái)控制系統發(fā)展的一個(gè)趨勢。
2.3.6IP核封裝
設計使用輸入GPIO 32位,輸出GPIO 32位。
2.3.7設計過(guò)程
Software:Xilinx ISE Design Suite 10.1 SP3
ISE主界面
新建一個(gè)工程
選擇FPGA信號和嵌入式處理器型號
選擇時(shí)鐘頻率和調試方式
添加 ETHERNET模塊、GPIO模塊和內存模塊
添加系統時(shí)鐘
設置調試方式和系統測試
系統設置清單
設置完成并保存
設置完成后的工程
定義內存型號
定義系統中斷
選擇操作系統 petalinux
2.3.8設計截圖
設計完成之后的系統設計圖
2.3.9編譯代碼
對于嵌入式LINUX系統代碼的編譯,本項目采用虛擬機的方式在Ubuntu下完成。
虛擬機采用開(kāi)源的 Sun VirtulBox
啟動(dòng)Ubuntu
安裝缺少的庫
設置環(huán)境變量
設置環(huán)境變量
Petalinux文件
Petalinux文件
設置Petalinux
轉換autoconfig.in的格式。輸入命令:
>vi autoconfig.in
將出現vi的編輯界面,在vi的命令行模式輸入以下命令:
>:set ff=unix
然后保存退出。輸入命令:
>:wq
這樣,就完成了autoconfig.in的導入工作。
編譯Petalinux
開(kāi)始編譯
編譯完成
3實(shí)驗與分析
3.1實(shí)驗設計
3.1.1實(shí)驗題目
24位彩色圖像的2值化處理
3.1.2實(shí)現結構
根據RGB圖像灰度公式 :
Gray =0.299*R+0.587*G+0.114*B (公式1)
Gray = (R^2.2 * 0.2973 + G^2.2 * 0.6274 + B^2.2 *0.0753)^(1/2.2) (公式2)
本實(shí)驗中使用 公式1 進(jìn)行計算
灰度圖像二值化方法:
閾值法二值化
實(shí)驗中采用一個(gè)根據參數可調整的設計,以體現本系統在算法可重構方面的優(yōu)點(diǎn)。
實(shí)驗原理圖
3.2模塊分析
本節對于實(shí)驗中所使用的各個(gè)模塊進(jìn)行分析。
3.2.1輸入模塊
負責圖像的輸入:
圖像讀取模塊
3.2.2數值計算模塊
負責處理圖像數據的灰度變化和二值化計算。
3.2.2.1R分量元件
計算: 0.299*R 采用ScilabCode組合元件模式實(shí)現
引腳設置
功能設置
3.2.2.2G分量元件
計算 0.587*G采用ScilabCode組合元件模式實(shí)現
界面設置
功能設置
3.2.2.3B分量計算元件
計算 0.114*B采用ScilabCode組合元件模式實(shí)現
引腳設置
功能設置
3.2.2.4RGB_ADD
計算 R分量+G分量+B分量 采用IP Core模式實(shí)現
引腳設置
功能設置
功能設置
3.2.3數據比較模塊
二值化元件 采用ScilabCode組合元件模式實(shí)現
引腳設置
功能設置
3.2.4輸出模塊
圖像顯示模塊
3.3實(shí)驗過(guò)程
3.3.1運行環(huán)境
系統軟件
Scilab 5.1
Scicos-HDL 0.7 for Windows
系統硬件
Hardware:NETFPGA board
Software:Xilinx ISE Design Suite 10.1 SP3
3.3.2安裝 Scilab 5.1 for Windows
在 http://www.scilab.org/ 進(jìn)行下載
注意 只支持 scilab5.1 的windows版, scilab5.1以后的版本中因為Scicos改作xcos , 此版本正在開(kāi)發(fā)中。
3.3.3安裝Scicos-HDL
1.Download Scicos-HDL package, save it, like (D:/scicoshdl_nv/scicos-hdl)
2. open /scilab-5.1/modules/scicos/etc/scicos.start
before (//end // if %scicos)
please add the following sentence:
exec(D:/bak/scicoshdl_nv/scicos-hdl/ScicosHDL_start.sce);
3. Run Scilab/Scicos, you can use Scicos-HDL now.
Scicos-HDL is a free software.
Under Scilab licence.
Scicos-HDL Copyright (c) 2004-2010
ZhangDongKangCai (NXU, LIAMA,SCILAB)
scicoshdl@gmail.com
4. all examples :/scicos-hdl/example
5. Contact: scicoshdl@gmail.com
安裝完成之后,啟動(dòng)Scilab5.1 , 可以看到Scilab加載的時(shí)候,Scicos-HDL已經(jīng)啟動(dòng)。
Scicos-HDL安裝后Scilab啟動(dòng)界面
3.3.4安裝SIVP
Scilab圖像讀取等工作我們使用了SIVP作為工具,因此需要安裝 SIVP (http://sivp.sourceforge.net/ 下載 )
啟動(dòng)Scilab后,點(diǎn)擊Toolboxes菜單的SIVP菜單,啟動(dòng)SIVP.
3.3.5啟動(dòng)Scicos
在Scilab中輸入 scicos 命令, 即可啟動(dòng)Scicos
啟動(dòng)scicos
Scicos啟動(dòng)后界面如下:
Scicos界面
點(diǎn)擊Palette菜單的Palette選項
Scicos元件菜單
點(diǎn)擊以后可以看到Scicos-HDL的各個(gè)庫文件已經(jīng)安裝
Scicos元件菜單
3.3.6Scicos-HDL
時(shí)序邏輯元件庫
超級元件庫
虛擬儀器庫
IP 元件庫
組合邏輯元件庫
3.3.7打開(kāi)實(shí)驗工程
使用Scicos 打開(kāi) 設計工程
打開(kāi)實(shí)驗工程
圖像處理工程
加載圖片
加載的圖片顯示
點(diǎn)擊simulate菜單中的RUN選項
處理過(guò)程開(kāi)始
處理完成的結果
代碼輸出
使用VHDL、Verilog、SystemC編譯器對設計好的代碼進(jìn)行輸出。
輸出的VHDL代碼
輸出的Verilog代碼
輸出的SystemC代碼 (帶一個(gè)VC++ 2008的工程文件做調試用,Scicos-HDL系統內置 BCC5.5)
硬件連接圖
NETFPGA直接通過(guò)JTAG接口與計算機相連
NETFPGA與Scicos-HDL協(xié)同運算部分,部分完成,本項目未完全完成,尚需繼續努力。(略)
3.4提交的內容
本項目的軟件部分和設計部分完成,硬件部分部分完成。
提交的內容:
Scicos-HDL 0.7
實(shí)驗設計和測試文件 imgray.cos
實(shí)驗輸出的SystemC 、VHDL、Verilog代碼
FPGA代碼模板
評論