IP核就是知識(shí)產(chǎn)權(quán)核或知識(shí)產(chǎn)權(quán)模塊的意思,在EDA技術(shù)開發(fā)中具有十分重要的地位。美國(guó)著名的Dataquest咨詢公司將半導(dǎo)體產(chǎn)業(yè)的IP定義為“用于ASIC或FPGA中的預(yù)先設(shè)計(jì)好的電路功能模塊”。IP主要分為軟IP、固IP和硬IP。軟IP是用Verilog/VHDL等硬件描述語言描述的功能塊,但是并不涉及用什么具體電路元件實(shí)現(xiàn)這些功能。固IP是完成了綜合的功能塊。硬IP提供設(shè)計(jì)的最終階段產(chǎn)品——掩膜。1
概述IP(知識(shí)產(chǎn)權(quán))核將一些在數(shù)字電路中常用,但比較復(fù)雜的功能塊,如FIR濾波器、SDRAM控制器、PCI接口等設(shè)計(jì)成可修改參數(shù)的模塊。隨著CPLD/FPGA的規(guī)模越來越大,設(shè)計(jì)越來越復(fù)雜(IC的復(fù)雜度以每年55%的速率遞增,而設(shè)計(jì)能力每年僅提高21%),設(shè)計(jì)者的主要任務(wù)是在規(guī)定的時(shí)間周期內(nèi)完成復(fù)雜的設(shè)計(jì)。調(diào)用IP核能避免重復(fù)勞動(dòng),大大減輕工程師的負(fù)擔(dān),因此使用IP核是一個(gè)發(fā)展趨勢(shì),IP核的重用大大縮短了產(chǎn)品上市時(shí)間。
利用IP核設(shè)計(jì)電子系統(tǒng),引用方便,修改基本元件的功能容易。具有復(fù)雜功能和商業(yè)價(jià)值的IP核一般具有知識(shí)產(chǎn)權(quán),盡管IP核的市場(chǎng)活動(dòng)還不規(guī)范,但是仍有許多集成電路設(shè)計(jì)公司從事IP核的設(shè)計(jì)、開發(fā)和營(yíng)銷工作。
基本分類IP核有三種不同的存在形式:HDL語言形式,網(wǎng)表形式、版圖形式。分別對(duì)應(yīng)我們常說的三類IP內(nèi)核:軟核、固核和硬核。這種分類主要依據(jù)產(chǎn)品交付的方式,而這三種IP內(nèi)核實(shí)現(xiàn)方法也各具特色。
軟核軟核是用VHDL等硬件描述語言描述的功能塊,但是并不涉及用什么具體電路元件實(shí)現(xiàn)這些功能。軟IP通常是以硬件描述語言HDL源文件的形式出現(xiàn),應(yīng)用開發(fā)過程與普通的HDL設(shè)計(jì)也十分相似,只是所需的開發(fā)硬軟件環(huán)境比較昂貴。軟IP的設(shè)計(jì)周期短,設(shè)計(jì)投入少。由于不涉及物理實(shí)現(xiàn),為后續(xù)設(shè)計(jì)留有很大的發(fā)揮空間,增大了IP的靈活性和適應(yīng)性。其主要缺點(diǎn)是在一定程度上使后續(xù)工序無法適應(yīng)整體設(shè)計(jì),從而需要一定程度的軟IP修正,在性能上也不可能獲得全面的優(yōu)化。由于軟核是以源代碼的形式提供,盡管源代碼可以采用加密方法,但其知識(shí)產(chǎn)權(quán)保護(hù)問題不容忽視。
硬核硬核提供設(shè)計(jì)階段最終階段產(chǎn)品:掩膜。以經(jīng)過完全的布局布線的網(wǎng)表形式提供,這種硬核既具有可預(yù)見性,同時(shí)還可以針對(duì)特定工藝或購買商進(jìn)行功耗和尺寸上的優(yōu)化。盡管硬核由于缺乏靈活性而可移植性差,但由于無須提供寄存器轉(zhuǎn)移級(jí)(RTL)文件,因而更易于實(shí)現(xiàn)IP保護(hù)。
固核固核則是軟核和硬核的折衷。大多數(shù)應(yīng)用于FPGA的IP內(nèi)核均為軟核,軟核有助于用戶調(diào)節(jié)參數(shù)并增強(qiáng)可復(fù)用性。軟核通常以加密形式提供,這樣實(shí)際的 RTL對(duì)用戶是不可見的,但布局和布線靈活。在這些加密的軟核中,如果對(duì)內(nèi)核進(jìn)行了參數(shù)化,那么用戶就可通過頭文件或圖形用戶接口(GUI)方便地對(duì)參數(shù)進(jìn)行操作。對(duì)于那些對(duì)時(shí)序要求嚴(yán)格的內(nèi)核(如PCI接口內(nèi)核),可預(yù)布線特定信號(hào)或分配特定的布線資源,以滿足時(shí)序要求。這些內(nèi)核可歸類為固核,由于內(nèi)核是預(yù)先設(shè)計(jì)的代碼模塊,因此這有可能影響包含該內(nèi)核的整體設(shè)計(jì)。由于內(nèi)核的建立(setup)、保持時(shí)間和握手信號(hào)都可能是固定的,因此其它電路的設(shè)計(jì)時(shí)都必須考慮與該內(nèi)核進(jìn)行正確地接口。如果內(nèi)核具有固定布局或部分固定的布局,那么這還將影響其它電路的布局。1
技術(shù)應(yīng)用數(shù)字到模擬轉(zhuǎn)換器(DACS)將一個(gè)二進(jìn)制數(shù)轉(zhuǎn)換為與之對(duì)應(yīng)的電壓值,常用的D/A轉(zhuǎn)換器都是由電阻或電容加權(quán)網(wǎng)絡(luò)、受碼元控制的開關(guān)和基準(zhǔn)電壓或電流源組成。當(dāng)D/A轉(zhuǎn)換器需要轉(zhuǎn)換的信號(hào)每次取樣字長(zhǎng)很長(zhǎng)時(shí),對(duì)這些電路的精度要求很高,并且還必須在整個(gè)溫度范圍和整個(gè)使用壽命期間內(nèi)保持電路參數(shù)的穩(wěn)定。例如,一個(gè)16位的D/A轉(zhuǎn)換器,其MSB的精度必須在1/2 16以內(nèi),這是很困難的。所以,需尋求一種中保持高分辨率又可降低對(duì)電路精度和穩(wěn)定度要求的方法。
可綜合的Delta-Sigma DAC(術(shù)語Delta-Sigma分別指算術(shù)差與和,即Δ-∑DAC),是Xilinx公司提供的免費(fèi)IP核,可從網(wǎng)上下載得到。
語言程序用VHDL語言編寫的程序
library ieee;use ieeestd_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity dac_ds isport(reset :in std_logic;clk :in std_logic;din :in std_logic_vector(7 downto 0);--Signed integerdout :out std_logic;);end dac_ds;architecture arch_dac_ds of dac_ds issignal error :std_logic_vector(9 downto 0);--Error accumulator is 2 bits largerconstant zeros:std_logic_vector(7 downto 0):=(others=>'0');beginprocess(reset,clk,din)variable val :std_logic_vector(9 downto 0);beginif reset='1'thenerror'0');dout