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

TCP/IP Lean (Web Servers for E

ip防護等級標準下載

PicoBlaze 處理器IP Core 的原理與應用

mc8051 design代碼,MC8051 IP core

USB Function IP Core

Internet IP協議概念原理

USB設備控制器IP Core 的設計與實現

基于TCP/IP 的七自由度機械臂遠程控制

自由口模式下S7200 PLC與上位機的通信

高穩定度步進電機控制器IP Core設計

Intel證實Core Solo和Core Duo處理器

利用FFT IP Core實現FFT算法

各種 IP Core和參考設計

PicoBlaze處理器IP Core的原理與應用


PicoBlaze處理器IP Core的原理與應用


基于NCO IP core的Chirp函數實現設計


什么是Fibre Channel over IP

什么是Fibre Channel over IP

IP網絡存儲的IP SAN支持

Quartus中fft ip core的使用

PCI橋接IP Core的VeriIog HDL實現

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

Core PX30 JD4資源linux headers文件分享

Core 1808 JD4資源linux header/linux image

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

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

評論