自由IP Core資源的利用
摘 要:本文介紹了與免費IP Core運作有關(guān)的問題以及免費資源的若干來源,然后通過對兩個不同來源的、免費的八位RISC CPU進行比較和分析,給出了若干選用免費核時應考慮的問題。
關(guān)鍵詞:IP Core; CPU
引言
隨著集成電路單位面積晶體管數(shù)量的激增和人們對縮短設計周期的追求,設計重用已經(jīng)成為有效的應對方法,它不但適合于ASIC,也適合于CPLD/FPGA。在CPLD/FPGA的設計過程中,由于開發(fā)工具的通用性、設計語言的標準化,設計過程幾乎與所用器件的硬件結(jié)構(gòu)無關(guān),設計成功的邏輯功能塊也具有很好的兼容性和可移植性,從而使得產(chǎn)品設計效率大幅度提高。這些具有可再利用功能的邏輯功能模塊都可以成為IP Core,因此IP Core可以是算法核、加密核、微處理器等。TI公司認為,一個ASIC設計80%的功能可用IP Core等現(xiàn)成邏輯合成,未來大系統(tǒng)的CPLD/FPGA設計將僅僅是各類再應用邏輯與IP Core的拼裝。
自由IP Core
為何免費
目前有許多商業(yè)公司出售IP Core ,但價格昂貴,原因之一是高昂的開發(fā)費用。據(jù)測算,在IP Core的整個過程中,編寫源代碼所花費的成本只占總成本的10%,而調(diào)試和修正則占50%,市場銷售和支持占到40%。如果將整個成本分攤到多個主體,那么對于單個主體而言成本就大大降低了,這就是設計開放共享的IP Core的初衷。由組織開放IP的機構(gòu)將自愿參加者的設計開放,使用者可以找到設計的錯誤,或加入新的內(nèi)容對原設計加以完善,使IP Core趨于成熟。同時CPLD/FPGA的生產(chǎn)商公布芯片的編程技術(shù)或者提供免費的EDA設計工具,從而使開放式硬件的設計者可以將該公司的芯片應用于新設計的系統(tǒng),由此達到“多贏”的目標。
充分意義上的硬件開放必須達到三個條件:首先,硬件的接口必須清楚地公布出來,這樣才能由他人自由的使用;其次,硬件設計本身必須公布于眾,這樣他人才能將其在不同的應用中加以實現(xiàn)或糾錯;最后,應盡量采用免費的設計工具,以便于其他使用者對設計進行改進。
知識產(chǎn)權(quán)歸屬和法律問題
免費IP Core常用的認證有GPL、LGPL等。這兩種認證原來是用于自由軟件的,現(xiàn)已推廣到對自由 IP Core的認證。大多數(shù)的軟件認證都不允許對軟件共享與修改,而GPL認證則旨在保證共享與修改軟件的自由,確保軟件對于所有的用戶都是共享的。GPL認證為了確保用戶有傳播自由軟件副本、根據(jù)自己的需要進行修改的自由,規(guī)定在傳播軟件的副本時,必須給予接受者同樣的權(quán)利。必須確定他們收到或者可以得到源代碼,并且知道這些條款,即自己的權(quán)利。
LGPL認證應用于某些特別指定的軟件包——共享庫。這一許可允許將這些庫連入某些非共享程序中。在法律上,當程序中連入某個庫,不論是靜態(tài)的還是使用共享的庫,這兩者的結(jié)合都是原始庫的派生,因此,只有整個結(jié)合物符合共享的標準,GPL認證才允許這種鏈接。但LGPL認證則以更寬松的準則允許其它代碼和庫的連接,因此在與非共享軟件的競爭中,與GPL認證相比,LGPL為共享軟件開發(fā)者提供的利益少一些。正是由于這一原因,許多庫使用GPL認證,然而,在某些特殊情況下LGPL認證是有利的。例如:在特殊的情況下,可能需要鼓勵某種庫的廣泛使用,以使其成為事實上的標準。為了達到這一目的,就會使用LGPL認證,允許非共享程序使用這種庫。從另一個方面來看,允許非共享程序使用某種庫將可以促使大量使用共享軟件。例如,GNU C庫允許在非共享的軟件中使用促使了更多人使用GNU操作系統(tǒng),以及它的派生GNU/Linux操作系統(tǒng)。
免費IP Core的部分來源
許多非盈利的組織提供免費IP Core,有些CPLD/FPGA的芯片廠商也提供這類共享資源,而芯片廠商提供較多的是針對他們所生產(chǎn)的具體芯片的共享設計。下面介紹兩個免費IP Core的非盈利機構(gòu)。
OpenIPCore工程
該機構(gòu)旨在推動開放式硬件的發(fā)展,其業(yè)務既包括提供開放核的平臺,也對開放硬件核的權(quán)益進行認證,定義設計的方法以及設計接口的標準化。該機構(gòu)收集經(jīng)其授權(quán)的設計以及免費的開發(fā)工具例如gEDA、Savant等,供設計者自由選用。另外為已有的設計如編譯器、驅(qū)動器、外部電路提供工具、設計和文檔的支持。
OpenIPCore工程的基本條款包括:電路核是可以更改的,但必須修改文檔記錄;不能靠出售核本身來贏利,但是可以出售用核實現(xiàn)的設備,例如基于某些免費核的集成電路、基于某些電路圖或版圖的電路板,甚至可以是文本模式驅(qū)動的圖形界面;任何更新都應該備案,并反饋給原設計者;對核的更新、修改或加以完善等成果都應該是共享的;將原封不動的共享核與其他模塊結(jié)合產(chǎn)生更大的設計,可以在OpenIPCore認證下共享,也可以受其他認證的保護;該網(wǎng)站不保證在實際硬件實現(xiàn)中核的功能和性能。該工程采用OHGPL認證,對基本原創(chuàng)性工作和導出性工作做了明確的定義。該機構(gòu)不排斥發(fā)布人采用其他認證,但要求有明確的聲明。
Free-IP 工程
該機構(gòu)的目標在于利用傳統(tǒng)工具發(fā)展自由的或成本較低的IP core。由Free-IP 工程提供的IP Core權(quán)益不歸公共所有而歸發(fā)布人所有。使用Free-IP核必須遵循以下幾點:核的使用是自由的,但是必須遵循所注明的費用項中的信息;不可以出售核,但可以收取復制的費用,也可以對自己添加的有價值的部分收取費用;允許對核修改,但是Free-IP工程不對所做的修改加以認證;對于核的使用沒有任何限制,可用于軍用、商用、教育等領(lǐng)域。
八位RISC CPU
的比較和分析
核的使用者最關(guān)心的是其可靠性。想對所有免費核做出可靠性評價是不可能的,本文通過對兩個8位(指數(shù)據(jù)總線的寬度,指令碼為12位)RISC核的對比和分析,給出了在使用免費核時可靠性方面的大體概念。
RISC5X是一個用VHDL編寫的、與Microchip公司的PIC16C5系列兼容的CPU核,該系列CPU除了程序分支指令外,全部是單周期指令,所以RISC5X在40MHz單一時鐘下基本可以達到40MIPS的處理速度。 如采用Xilinx 公司的Virtex-E系列FPGA,該核占用110CLB單元,在E-6上速度可達33MHz,在E-8上可達40MHz。該核提供了VHDL源代碼和16進制代碼,并且提供了一些不錯的免費工具,包括編譯器、仿真器和匯編工具(gusim、guasm等)。該核所提供的每一個宏都采用兩種結(jié)構(gòu)體寫成,一種只適用于Virtex系列目標芯片,另一種是用VHDL的RTL級描述,用戶必須根據(jù)需要在源程序中作出相應選擇。但是存在的缺點是用于定義總線寬度的宏,在第二次使用時,有些綜合器并不按要求重復產(chǎn)生第二個硬件模塊。一個解決方法是將該宏轉(zhuǎn)換為EDIF格式,每次用到時使用與其對應的EDIF文件名。另一個不足是該核對于雙周期指令未做處理,需要用戶自己對程序計數(shù)器做一定修改。
RISC8是與RISC5X很類似的免費核,與Microchip公司的PIC16C57兼容。該核在ASIC和FPGA層面上都是可綜合的,并且已經(jīng)被使用過。該核提供了CPU、指令譯碼器、寄存器、累加器、RAM等基本部件,此外還提供了基本的測試向量。在該核的程序包里還可以找到“basic”和“DDS”兩個匯編程序,basic用來檢測RISC8的指令,DDS則是利用該核的一個應用程序。此外還提供了關(guān)于16C57的第三方資源。但是與16C57相比,兩者是有明顯差別的。表1列出了兩者在功能方面的比較。與其他免費核一樣,該核也有明顯的不足之處,如狀態(tài)字STATUS中的DC位功能沒有完成,以及TRIS不能影響I/O口等。
相比之下,RISC8應該比較成熟,但是由于不能直接使用I/O口,對于有此需要的用戶來說,顯然尚有很多要做的補充工作。RISC5X的工作相對比較齊全,僅在測試方面稍嫌不足。雖然雙周期指令不能直接使用,但是可以用別的指令替代。
從以上比較可以看出,免費核總是有缺陷的,但是工程師可以根據(jù)自己的需要找到較為合適的核和使用方法。一般說,一個核往往是由多個模塊組成的,有經(jīng)驗的工程師完全可以自行“拼接”比較成熟的模塊,成為自己的核。本文的建議如下:
* 在決定選用某個核之前先仔細閱讀有關(guān)該核的評論(一般可以在核所在的網(wǎng)頁上找到),選用那些所存在的缺陷并不影響個人應用的核。例如有些未完成的部分你恰好是不用的;
* 如有多個版本,則宜選用高版本核。高版本都會對核的BUG進行修改,優(yōu)化后的核通常會有更高的可靠性,例如工作頻率的提高等,可以適應更高性能的芯片。
* 如果使用FPGA實現(xiàn),應盡量采用與發(fā)布人一樣系列的目標芯片。隨核發(fā)布的說明文件中通常會指出該核使用何種語言、用何種軟件環(huán)境調(diào)試、曾經(jīng)綜合下載到何種芯片以及硬件調(diào)試設備等,在使用時,最好選用同樣的芯片和調(diào)試環(huán)境,而且最好選擇同時發(fā)布測試向量的核,這樣測試起來比較方便。
* 選擇時要考慮核使用何種總線標準。如果把不同的IP Core組成一個系統(tǒng),則需要這些IP Core具有標準的接口。通常情況下,要盡量避免使用三態(tài)總線,因為三態(tài)總線技術(shù)依靠電路延時來避免時序沖突問題,這種對工藝的依賴性,不利于IP Core的復用。免費IP Core通常使用Wishbone總線標準,由于其開放性,擁有了不少的用戶。它的特點是同時支持高字節(jié)在后(BIG ENDIAN)和低字節(jié)在后(LITTLE ENDIAN)的字節(jié)編址方式;支持多個主單元;支持點對點、數(shù)據(jù)流、共享總線以及交叉開關(guān)等連接方式。尤其是其交叉方式使得多個主單元可以同時進行數(shù)據(jù)交換,大大提高了數(shù)據(jù)吞吐率。
結(jié)語
免費IP Core這一豐富的共享資源的有效利用將會帶來巨大的價值,開放式硬件的商業(yè)應用也是有可能實現(xiàn)的?;陂_放式硬件設計的商業(yè)模式可以從設計的支持、實現(xiàn)、應用等方面進行,只要仔細研究開放機構(gòu)的宗旨和規(guī)定,使用者就可以發(fā)現(xiàn)很多商業(yè)應用的渠道?!?/p>
參考文獻
1 潘松,黃繼業(yè). EDA技術(shù)實用教程. 科學出版社. 2002
評論