中州大學(xué) 時(shí) 偉 李可勝
安徽移動蚌埠分公司 李永亮
隨著集成電路行業(yè)制造工藝的飛速發(fā)展,芯片的集成度急劇增加,且具有較高的功能和復(fù)雜度。從設(shè)計(jì)開發(fā)和市場的角度來看,這些特征都對電路設(shè)計(jì)人員提出了新的挑戰(zhàn)。目前,設(shè)計(jì)復(fù)用技術(shù)已成為了解決問題的有效方法;根據(jù)業(yè)界經(jīng)驗(yàn),任何模塊如果不作任何修改就可以在十個(gè)或更多項(xiàng)目中復(fù)用,都應(yīng)以IP核的形式進(jìn)行開發(fā)設(shè)計(jì)。
IP(Intellectual Property)核是指具有獨(dú)立知識產(chǎn)權(quán)的電路核,用于實(shí)現(xiàn)特定的電路功能和結(jié)構(gòu),一般包括軟核、硬核與固核[1]。軟核是以PLD器件為目標(biāo)載體用硬件描述語言設(shè)計(jì)可復(fù)用電路,硬核是針對集成電路制造而設(shè)計(jì)的電路結(jié)構(gòu)掩膜,固核是完成綜合后以網(wǎng)表形式存在的文件。在基于可編程邏輯器件(FPGA/CPLD)的工程設(shè)計(jì)中,由于開發(fā)工具的通用性、設(shè)計(jì)語言的標(biāo)準(zhǔn)化,使得電路的設(shè)計(jì)過程基本與器件硬件結(jié)構(gòu)無關(guān);以IP核形式設(shè)計(jì)的各種功能模塊具有良好的兼容性和移植性,恰當(dāng)?shù)貜?fù)用這些IP核可使設(shè)計(jì)效率大大提高,降低設(shè)計(jì)成本和開發(fā)周期。
目前各PLD廠家(Altera,Xilinx,Lattice等)均提供商用的IP核設(shè)計(jì),這些IP核多針對目標(biāo)器件的結(jié)構(gòu)進(jìn)行優(yōu)化設(shè)計(jì),使得嵌入該類IP核的系統(tǒng)電路在不同廠家芯片上實(shí)現(xiàn)時(shí)需花額外的時(shí)間做修改,降低了系統(tǒng)可移植性;且該類IP核多集成于相應(yīng)的開發(fā)工具中或單獨(dú)向用戶提供銷售,用戶無法得到源代碼,這為資金短缺的設(shè)計(jì)團(tuán)體或個(gè)人增加了一定負(fù)擔(dān),也為系統(tǒng)集成帶來了一定困難。
作為一種推廣嘗試,國際上一些非盈利組織(如OpenCores[2]等)和個(gè)人致力于自由(或稱免費(fèi))IP核的發(fā)展,為電路設(shè)計(jì)人員提供遵循GNU GPL[3]或LGPL協(xié)議的免費(fèi)開源IP核。本文以通信接口(Communication Interface)免費(fèi)IP核為例,介紹了免費(fèi)IP核的使用,包括資源的獲取方式和工具,文檔的應(yīng)用,測試方法等問題,希望以此引起設(shè)計(jì)人員對免費(fèi)資源的關(guān)注。文中使用的免費(fèi)資源取自O(shè)penCores開源社區(qū)。
免費(fèi)IP Core資源通常由非盈利性組織或個(gè)人提供,有些PLD廠家也提供部分類似資源,但因大多是針對某個(gè)特定的芯片,所以可移植性較差。本文主要關(guān)注以發(fā)展免費(fèi)開源IP核為宗旨的OpenCores組織提供的資源。
開源社區(qū)OpenCores是國際上比較有影響力的組織,致力于LGPL(GNU Lesser Public License)協(xié)議下IP核的設(shè)計(jì)和發(fā)布,保證設(shè)計(jì)資源能被自由免費(fèi)使用。該組織還制定和發(fā)展開放式IP核的設(shè)計(jì)標(biāo)準(zhǔn)及平臺,為用戶提供免費(fèi)的EDA設(shè)計(jì)工具,及相關(guān)設(shè)計(jì)資源與工具的文檔支持。
該社區(qū)使用SVN工具[4]管理所有設(shè)計(jì)資源,使用者可以通過SVN工具或以WEB方式下載資源的最新版本。作為項(xiàng)目資源的開發(fā)和維護(hù)人員,可使用SVN工具來管理更新項(xiàng)目。所提供的資源分類有算術(shù)運(yùn)算器、通信接口、DSP、存儲器、ECC模塊、微處理器、SoC、系統(tǒng)控制器、視頻控制器及其他程序庫設(shè)計(jì)等。該組織維護(hù)管理的WISHBONE總線標(biāo)準(zhǔn)因其具有開放性,且有豐富免費(fèi)IP核資源支持,實(shí)際已成為免費(fèi)IP核設(shè)計(jì)的互連標(biāo)準(zhǔn);該組織提供的OR1000(OpenRisc1000)處理器軟核已被數(shù)家公司的開發(fā)系統(tǒng)采用并在ASIC上實(shí)現(xiàn),同時(shí)在近年來推出了其更新版本OR1200和OR2000。
SVN(Subversion)是一套成熟的自由開源版本控制系統(tǒng),完成在代碼開發(fā)過程中涉及到的各種資源的自動化版本管理功能。SVN支持Linux和Windows平臺的安裝,下載并安裝后,即可訪問OpenCores社區(qū)提供的資源,該網(wǎng)站提供相關(guān)資源所在服務(wù)器的配置信息和資源管理信息,使用者以所提供的信息,可以直接訪問所需的指定資源,執(zhí)行瀏覽和下載等操作。
完善的IP核一般包含源代碼文件、說明文件、測試向量文件、仿真結(jié)果及綜合結(jié)果。以下以通信接口IP核為例進(jìn)行說明。
SPI(Serial Peripheral Interface)接口為板級設(shè)備間通信提供了經(jīng)濟(jì)性的解決方案,廣泛應(yīng)用于微處理器、DAC、ADC及其他設(shè)備間的信息交換,已成為實(shí)際應(yīng)用中的工業(yè)標(biāo)準(zhǔn)。首先用從OpenCores下載所需要的資源(此例的項(xiàng)目名為SPI),下載到本地后的文件解壓后包含若干文件夾,如圖1所示。其中trunk文件夾中存放了設(shè)計(jì)資源,其他文件夾為SVN系統(tǒng)自動生產(chǎn)用于版本控制。在trunk目錄下包含的資源信息如下:bench文件夾內(nèi)為測試向量文件,用于對IP核進(jìn)行功能仿真;doc文件夾內(nèi)為說明文件;rtl文件夾內(nèi)為源代碼文件,一般使用Verilog或VHDL語言編寫;sim文件夾下存放了RTL級的仿真結(jié)果。

圖1 資源目錄
要將IP核嵌入到自己的系統(tǒng)中使用,首先要對其功能和特性做全面的了解。OpenCores社區(qū)要求開發(fā)人員為其IP核項(xiàng)目提供相應(yīng)的說明文件(Specification),該SPEC文件一般包含變動記錄(Revision History)、功能特性簡介(Introduction),IO及參數(shù)說明(IO Ports & Parameters)、寄存器說明(Registers)、工作原理(Operation)、組成結(jié)構(gòu)(Architecture)及IP核配置說明(Configuration)等內(nèi)容。
本文所使用的IP核說明文件表明,該設(shè)計(jì)是WISHBONE總線兼容的SPI主控電路,具有以下特性:雙向同步串行數(shù)據(jù)傳輸,最高支持128位的可變長度傳輸,起始位可選MSB或LSB,Rx和Tx可選上升沿或下降沿工作,8個(gè)從電路選擇,與工藝無關(guān)的Verilog語言編程及可綜合特性。在SPEC中另有詳細(xì)的IO和寄存器描述。
在..spi tlverilog目錄下有該IP核的源代碼設(shè)計(jì)文件,使用者可以根據(jù)需要選用,并對所選的源代碼進(jìn)行分析,了解其實(shí)現(xiàn)特定邏輯功能的編程方法,這也有助于對該電路核進(jìn)行修改。
該電路核能否正常工作只能通過仿真和測試來確定。主流仿真軟件有Modelsim、ActiveHDL、Cadence NC-Verilog/NC-VHDL等;另外,OpenCcores也提供免費(fèi)開源的設(shè)計(jì)工具如,Icarus Verilog Simulator,Verilator,GHDL VHDL simulator等。
本文使用Active-HDL 8.1和ISE9.1在Xilinx的Spartan XC2S100-5TQ144C芯片上進(jìn)行了驗(yàn)證。

表1 通信接口IP核的源代碼文件
本例中bench目錄下存有用于仿真的測試文件,tb_spi_top.v為該IP核的頂層測試文件,可以用來對電路所實(shí)現(xiàn)的邏輯功能做仿真測試。由于資源是免費(fèi)的,該文件里給出的測試向量可能是不完全的或只對部分電路功能做測試。如果要做更全面的測試,使用者要在分析源代碼的基礎(chǔ)上繼續(xù)添加測試項(xiàng)來完善該測試文件。SPI的IP核源代碼文件如表1所示。
免費(fèi)IP核的商業(yè)應(yīng)用將減少開發(fā)成本,縮短產(chǎn)品投放市場的時(shí)間,愛好者可以利用該資源來設(shè)計(jì)實(shí)現(xiàn)和驗(yàn)證自己的設(shè)想,在教育和科研領(lǐng)域?qū)γ赓M(fèi)IP核的使用將進(jìn)一步完善其設(shè)計(jì)和功能。但免費(fèi)資源并不是十分成熟或完善的資源,要妥善處理后才可以得以發(fā)揮作用。
[1]付燕,王瑋,王福源.免費(fèi)IP核的應(yīng)用[J].河南科技,2004.
[2]OpenCores.http://www.opencores.org.
[3]張平.GPL規(guī)范的自由[J].軟件世界,2007,15.
[4]劉佳,徐博,雍少為.基于SVN的部隊(duì)文檔管理方法研究[J].艦船電子工程,2010,4.