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

ip防護(hù)等級標(biāo)準(zhǔn)下載

PicoBlaze 處理器IP Core 的原理與應(yīng)用

mc8051 design代碼,MC8051 IP core

USB Function IP Core

Internet IP協(xié)議概念原理

USB設(shè)備控制器IP Core 的設(shè)計(jì)與實(shí)現(xiàn)

基于TCP/IP 的七自由度機(jī)械臂遠(yuǎn)程控制

自由口模式下S7200 PLC與上位機(jī)的通信

高穩(wěn)定度步進(jìn)電機(jī)控制器IP Core設(shè)計(jì)

Intel證實(shí)Core Solo和Core Duo處理器

利用FFT IP Core實(shí)現(xiàn)FFT算法

各種 IP Core和參考設(shè)計(jì)

PicoBlaze處理器IP Core的原理與應(yīng)用


PicoBlaze處理器IP Core的原理與應(yīng)用


基于NCO IP core的Chirp函數(shù)實(shí)現(xiàn)設(shè)計(jì)


什么是Fibre Channel over IP

什么是Fibre Channel over IP

什么是IP

什么是移動(dòng)IP

IP網(wǎng)絡(luò)存儲(chǔ)的IP SAN支持

Quartus中fft ip core的使用

PCI橋接IP Core的VeriIog HDL實(shí)現(xiàn)

Xilinx CORE生成器IP列表名稱及說明詳解

Core PX30 JD4資源linux headers文件分享

Core 1808 JD4資源linux header/linux image

IP_數(shù)據(jù)表(A-23):Analog Switch IP Core

P_數(shù)據(jù)表(I-17):Serial ATA 3.2Host Link/Transport IP Core

IP_數(shù)據(jù)表(A-23):Analog Switch IP Core

P_數(shù)據(jù)表(I-17):Serial ATA 3.2Host Link/Transport IP Core

評論