軟件開(kāi)發(fā)
- 首頁(yè) >> 電子技術(shù) >> 軟件開(kāi)發(fā)
python軟硬件協(xié)同
現(xiàn)代系統(tǒng)設(shè)計(jì)許多都是由C/C++,Python等高級(jí)語(yǔ)言來(lái)完成,而且這些系統(tǒng)越來(lái)越復(fù)雜,涉及到的算法的運(yùn)算量也越來(lái)越大,許多算法需要用硬件實(shí)現(xiàn)來(lái)滿足算法的實(shí)時(shí)性要求。FPGA是一種可編程的邏輯器件,它具有便于修改,調(diào)試,并能并行地完成大量的運(yùn)算,從而提高算法的實(shí)時(shí)性,并且隨著硬件制造水平不斷地提高,F(xiàn)PGA的資源越來(lái)越大,工作頻率也越來(lái)越高,使得能在其上面完成的算法也越來(lái)越復(fù)雜。但是傳統(tǒng)的軟硬件分開(kāi)設(shè)計(jì)的方法由于軟硬件設(shè)計(jì)者采用不同的設(shè)計(jì)語(yǔ)言,存在軟硬件設(shè)計(jì)者之間難以溝通導(dǎo)致設(shè)計(jì)周期長(zhǎng)等問(wèn)題,這種設(shè)計(jì)方法已不能滿足快速地增長(zhǎng)的市場(chǎng)要求,如何將這些系統(tǒng)設(shè)計(jì)中的算法快速轉(zhuǎn)換為相應(yīng)的硬件來(lái)實(shí)現(xiàn),需要新的軟硬件協(xié)同設(shè)計(jì)方法。當(dāng)前基于C/C++的軟硬件協(xié)同設(shè)計(jì),有一個(gè)SystemC標(biāo)準(zhǔn)化組織一直致力于這個(gè)工作,可以將C/C++算法轉(zhuǎn)換為相應(yīng)的硬件。Python是一種簡(jiǎn)單易學(xué)并且功能強(qiáng)大的編程語(yǔ)言,有許多算法是由Python來(lái)實(shí)現(xiàn),而且這些算法很多是免費(fèi)、開(kāi)源的,和C/C++類(lèi)似需要如何完成基于Python的軟硬件協(xié)同設(shè)計(jì)。
一、基于Python的軟硬件協(xié)同設(shè)計(jì)發(fā)展
由于Python的強(qiáng)大的軟硬件描述能力,近年來(lái)許多研究者在Python的軟硬件協(xié)同設(shè)計(jì)方面進(jìn)行了許多研究,其中一種稱為MyHDL的Python擴(kuò)展包來(lái)進(jìn)行軟硬件協(xié)同設(shè)計(jì),采用MyHDL完成了一個(gè)接口設(shè)計(jì)實(shí)例。這些開(kāi)發(fā)工具各自具有自己的一些特點(diǎn),但是他們有一點(diǎn)是相同,就是采用Python來(lái)進(jìn)行軟硬件協(xié)同設(shè)計(jì)。下面以MyHDL為例介紹基于Python的軟硬件協(xié)同設(shè)計(jì)。
二、基于Python的MyHDL包簡(jiǎn)介
MyHDL采用Python擴(kuò)展包的形式使其能支持硬件設(shè)計(jì)和仿真并在仿真結(jié)果符合要求后可將軟件算法自動(dòng)轉(zhuǎn)換為相應(yīng)的采用Verilog或VHDL硬件描述,由于MyHDL包是基于Python的硬件擴(kuò)展,下面主要對(duì)MyH?DL硬件方面的一些主要特點(diǎn)做簡(jiǎn)要介紹。
1、數(shù)據(jù)類(lèi)型:標(biāo)準(zhǔn)Python的int類(lèi)型已經(jīng)具有許多硬件設(shè)計(jì)所需要特征,但是在硬件設(shè)計(jì)中由于包含許多位操作和處理,MyHDL設(shè)計(jì)了intbv類(lèi),提供索引和切片操作來(lái)支持位的操作和處理。
2、模塊,端口和信號(hào):在MyHDL采用函數(shù)來(lái)對(duì)硬件的模塊進(jìn)行建模,My?HDL也有信號(hào)對(duì)象,類(lèi)似于VHDL語(yǔ)言的信號(hào),采用信號(hào)作為函數(shù)的參數(shù)來(lái)定義模塊的端口。
3、發(fā)生器:發(fā)生器是MyHDL的一個(gè)關(guān)鍵概念,用來(lái)建立并發(fā)性模型,對(duì)應(yīng)于Verilog的always塊或者VHDL的進(jìn)程。
4、自動(dòng)轉(zhuǎn)換:在一定限制條件下,MyHDL使用toVerilog()或者toVHDL()函數(shù)將MyHDL設(shè)計(jì)自動(dòng)轉(zhuǎn)換為相應(yīng)的Veril?og或者VHDL代碼,如果符合MyHDL可綜合子集的要求,就可使用MyHDL完成可硬件綜和的代碼并在FPGA上實(shí)現(xiàn)。
5、仿真:MyHDL通過(guò)Cosimulation對(duì)象使其能支持仿真,對(duì)于自動(dòng)轉(zhuǎn)換的Verilog代碼或者VHDL代碼,MyHDL還可作為硬件校驗(yàn)語(yǔ)言來(lái)對(duì)轉(zhuǎn)換后的Verilog或VHDL進(jìn)行協(xié)同仿真和校驗(yàn)。
三、采用MyHDL的硬件設(shè)計(jì)優(yōu)點(diǎn)
Verilog和VHDL是當(dāng)前的主流硬件設(shè)計(jì)語(yǔ)言,但是使用基于Python的MyHDL作為硬件設(shè)計(jì)也具有許多優(yōu)點(diǎn)使得其可以作為設(shè)計(jì)者特別是硬件設(shè)計(jì)的初學(xué)者另外一種較好的選擇。
1、MyHDL使用成本低:MyHDL是免費(fèi)的并且開(kāi)源,在使用MyHDL設(shè)計(jì)的工具鏈中同樣可以使用大量的免費(fèi)工具比如ICArus,IVERILOG仿真工具,GTKWAVE查看仿真波形,從而可以減少設(shè)計(jì)成本。
2、在硬件設(shè)計(jì)中使用先進(jìn)的軟件開(kāi)發(fā)技術(shù):由于Python本身是一種軟件開(kāi)發(fā)語(yǔ)言,現(xiàn)代軟件開(kāi)發(fā)的先進(jìn)方法比如快速應(yīng)用開(kāi)發(fā),測(cè)試驅(qū)動(dòng)開(kāi)發(fā)都在Python上得以體現(xiàn),由于硬件描述語(yǔ)言的硬件設(shè)計(jì)和軟件開(kāi)發(fā)具有一定的相似性,采用MyHDL可以使用最新的軟件開(kāi)發(fā)技術(shù)。
3、軟硬件設(shè)計(jì)可以采用同樣的開(kāi)發(fā)環(huán)境:Python是算法實(shí)現(xiàn)的一種理想的語(yǔ)言,很多算法都由Python實(shí)現(xiàn),通常算法的軟硬件實(shí)現(xiàn)由不同工程師來(lái)實(shí)現(xiàn),軟件工程師使用Python,硬件工程師使用通用的硬件描述語(yǔ)言,例如Verilog或VHDL,硬件工程師和軟件工程師之間存在一條鴻溝,而采用MyHDL,就可以在同一個(gè)Python環(huán)境實(shí)現(xiàn)算法設(shè)計(jì),仿真和校驗(yàn)。
4、其他優(yōu)點(diǎn):對(duì)于沒(méi)有一定硬件設(shè)計(jì)經(jīng)驗(yàn)的設(shè)計(jì)者,通常采用Verilog設(shè)計(jì)會(huì)混淆阻塞和非阻塞賦值,不清楚Verilog的符號(hào)運(yùn)算,采用VHDL進(jìn)行設(shè)計(jì)又不理解VHDL的信號(hào)概念,會(huì)覺(jué)得VHDL的類(lèi)型和位寬轉(zhuǎn)換很繁瑣,但是如果采用基于Python的MyHDL包作為設(shè)計(jì)語(yǔ)言,這些都將不成為問(wèn)題。
四、基于Python的軟硬件設(shè)計(jì)流程
在現(xiàn)代系統(tǒng)設(shè)計(jì)中,軟件工程師采用Python等高級(jí)語(yǔ)言,而硬件系統(tǒng)設(shè)計(jì)多采用Verilog,VHDL硬件描述語(yǔ)言,在如何將Python描述的軟件映射為相應(yīng)的硬件上,軟硬件開(kāi)發(fā)者之間的交流存在一道天然的鴻溝,而采用Py?thon來(lái)進(jìn)行軟硬件協(xié)同設(shè)計(jì)就可以解決這一個(gè)問(wèn)題,基于Python的軟硬件協(xié)同設(shè)計(jì)的流程如圖1所示。
首先采用Python進(jìn)行系統(tǒng)設(shè)計(jì),然后根據(jù)系統(tǒng)性能要求進(jìn)行軟硬件劃分,對(duì)于系統(tǒng)性能要求比較高的部分采用Python的MyHDL擴(kuò)展包的形式來(lái)由硬件實(shí)現(xiàn),同時(shí)采用Python來(lái)編寫(xiě)硬件測(cè)試平臺(tái)。測(cè)試仿真如果不符合系統(tǒng)設(shè)計(jì)要求可以重新進(jìn)行軟硬件劃分,如果測(cè)試仿真結(jié)果不正確,可重新修改。仿真通過(guò)后可以用MyHDL擴(kuò)展包自動(dòng)將Python轉(zhuǎn)換為Verilog代碼,這時(shí)的Python測(cè)試平臺(tái)無(wú)需修改還可以與轉(zhuǎn)換后的Verilog代碼一起進(jìn)行混合仿真,如果仿真通過(guò)就可以進(jìn)行硬件的綜合,下載,測(cè)試階段,這與傳統(tǒng)的硬件設(shè)計(jì)過(guò)程相同。
結(jié)語(yǔ)
從上面分析可以看出基于Python的MyHDL既是一種軟硬件協(xié)同設(shè)計(jì)方法,同時(shí)其也是Python的擴(kuò)展包,使得整個(gè)開(kāi)發(fā)過(guò)程僅使用一種Python語(yǔ)言,并可以很方便地將一個(gè)軟件算法快速地轉(zhuǎn)換為其相應(yīng)的硬件實(shí)現(xiàn),從而完成一個(gè)軟硬件系統(tǒng)設(shè)計(jì)。由于Python目前的可綜合子集的限制和其本身還處在發(fā)展階段,基于Python的軟硬件設(shè)計(jì)還主要用于系統(tǒng)的建模方面,將其用于芯片設(shè)計(jì)的應(yīng)用還不是很多,有研究者比較過(guò)MyHDL與傳統(tǒng)硬件設(shè)計(jì)語(yǔ)言的實(shí)現(xiàn),對(duì)于小規(guī)模的應(yīng)用優(yōu)勢(shì)不是很明顯。但是隨著現(xiàn)代系統(tǒng)的算法越來(lái)越復(fù)雜性,系統(tǒng)規(guī)模也不斷增大,相對(duì)于傳統(tǒng)的軟硬件設(shè)計(jì)方法采用Python來(lái)進(jìn)行軟硬件協(xié)同設(shè)計(jì)的優(yōu)勢(shì)就會(huì)體現(xiàn)出來(lái),系統(tǒng)設(shè)計(jì)、仿真、校驗(yàn)的速度會(huì)大大提高,采用Python進(jìn)行系統(tǒng)設(shè)計(jì)的產(chǎn)品能更快地進(jìn)入市場(chǎng)。隨著基于Python系統(tǒng)設(shè)計(jì)方法和工具的發(fā)展,基于Python的軟硬件協(xié)同設(shè)計(jì)方法將會(huì)有廣泛的應(yīng)用前景。
- 返回頂部