隨著FPGA的集成度越來(lái)越高,規(guī)模越來(lái)越大,設(shè)計(jì)越來(lái)越復(fù)雜,IC行業(yè)的競(jìng)爭(zhēng)也越來(lái)越激烈,產(chǎn)品的交付周期越來(lái)越短,這與人類(lèi)有限的設(shè)計(jì)能力形成了巨大矛盾。如果FPGA設(shè)計(jì)還是全部由設(shè)計(jì)者從最底層的代碼寫(xiě)起,那么必然不能在越來(lái)越苛刻的開(kāi)發(fā)周期內(nèi)完成相關(guān)項(xiàng)目。
而IP核的出現(xiàn),解決了這個(gè)問(wèn)題。IP核是一段具有特定電路功能的硬件描述語(yǔ)言程序,該程序通常與集成電路工藝無(wú)關(guān),可以移植到不同的半導(dǎo)體工藝中去生產(chǎn)集成電路芯片。由于IP核將一些在數(shù)字電路中常用,但比較復(fù)雜的功能塊設(shè)計(jì)成可修改參數(shù)的模塊,因此FPGA的設(shè)計(jì)人員可以通過(guò)調(diào)用相關(guān)IP核來(lái)完成所需邏輯功能,從而節(jié)省了大量的開(kāi)發(fā)時(shí)間。調(diào)用IP核能避免重復(fù)勞動(dòng),大大減輕設(shè)計(jì)人員的負(fù)擔(dān),因此使用IP核必然成為將來(lái)FPGA設(shè)計(jì)的一個(gè)發(fā)展趨勢(shì)。
按IP核的硬件描述級(jí)實(shí)現(xiàn)程度,可將它分為三類(lèi):即軟核、硬核、固核。
IP軟核一般指的是用硬件描述語(yǔ)言描述的功能塊,它并不涉及用什么具體電路元件實(shí)現(xiàn)這些功能,軟核的代碼直接參與設(shè)計(jì)的編譯流程,就像我們自己編寫(xiě)的HDL代碼一樣,雖然一般會(huì)對(duì)軟核的RTL代碼進(jìn)行加密,但是其保密性還是比較差。
IP硬核是以經(jīng)過(guò)完全的布局布線(xiàn)的網(wǎng)表形式提供,由于不再參與設(shè)計(jì)的編譯流程,因此它的性能具有很強(qiáng)的可預(yù)見(jiàn)性,并且保密性好,不過(guò)移植性差。
IP固核是軟核與硬核的一個(gè)折中,它只對(duì)描述功能中一些比較關(guān)鍵的路徑進(jìn)行預(yù)先的布局布線(xiàn),而其他部分仍然可以任由編譯器進(jìn)行相關(guān)優(yōu)化處理。例如,當(dāng)你使用IP核生成一個(gè)8x8的乘法器時(shí),如果選擇使用邏輯資源塊來(lái)實(shí)現(xiàn)的話(huà),那么此時(shí)的乘法器IP核就相當(dāng)于一個(gè)軟核;
如果你選擇使用DSP資源來(lái)實(shí)現(xiàn)的話(huà),那么此時(shí)的乘法器IP核就相當(dāng)于一個(gè)硬核;如果你要用DSP資源生成一個(gè)36x36的乘法器時(shí),那么FPGA恐怕需要若干DSP資源來(lái)實(shí)現(xiàn),這時(shí)候,每個(gè)DSP核的布局布線(xiàn)是固定的,但是到底選擇那幾個(gè)DSP資源來(lái)實(shí)現(xiàn)是可以由編譯器來(lái)決定的,因此此時(shí)的乘法器IP核就相當(dāng)于一個(gè)固核。
PLL(Phase Locked Loop): 為鎖相回路或鎖相環(huán),用來(lái)統(tǒng)一整合時(shí)鐘信號(hào),使高頻器件正常工作,如內(nèi)存的存取資料等。PLL用于振蕩器中的反饋技術(shù)。許多電子設(shè)備要正常工作,通常需要外部的輸入信號(hào)與內(nèi)部的振蕩信號(hào)同步。
一般的晶振由于工藝與成本原因,做不到很高的頻率,而在需要高頻應(yīng)用時(shí),由相應(yīng)的器件VCO,實(shí)現(xiàn)轉(zhuǎn)成高頻,但并不穩(wěn)定,故利用鎖相環(huán)路就可以實(shí)現(xiàn)穩(wěn)定且高頻的時(shí)鐘信號(hào)。鎖相環(huán)路是一種反饋控制電路,簡(jiǎn)稱(chēng)鎖相環(huán)(PLL,Phase-Locked Loop)。
鎖相環(huán)的特點(diǎn)是:利用外部輸入的參考信號(hào)控制環(huán)路內(nèi)部振蕩信號(hào)的頻率和相位。因鎖相環(huán)可以實(shí)現(xiàn)輸出信號(hào)頻率對(duì)輸入信號(hào)頻率的自動(dòng)跟蹤,所以鎖相環(huán)通常用于閉環(huán)跟蹤電路。鎖相環(huán)在工作的過(guò)程中,當(dāng)輸出信號(hào)的頻率與輸入信號(hào)的頻率相等時(shí),輸出電壓與輸入電壓保持固定的相位差值,即輸出電壓與輸入電壓的相位被鎖住,這就是鎖相環(huán)名稱(chēng)的由來(lái)。鎖相環(huán)通常由鑒相器(PD,Phase Detector)、環(huán)路濾波器(LF,Loop Filter)和壓控振蕩器(VCO,Voltage Controlled Oscillator)三部分組成。
FIFO: 是英文First In First Out 的縮寫(xiě),是一種先進(jìn)先出的數(shù)據(jù)緩存器,他與普通存儲(chǔ)器的區(qū)別是沒(méi)有外部讀寫(xiě)地址線(xiàn),這樣使用起來(lái)非常簡(jiǎn)單,但缺點(diǎn)就是只能順序?qū)懭霐?shù)據(jù),順序的讀出數(shù)據(jù), 其數(shù)據(jù)地址由內(nèi)部讀寫(xiě)指針自動(dòng)加1完成,不能像普通存儲(chǔ)器那樣可以由地址線(xiàn)決定讀取或?qū)懭肽硞€(gè)指定的地址。
FIFO的分類(lèi)根均FIFO工作的時(shí)鐘域,可以將FIFO分為同步FIFO和異步FIFO。同步FIFO是指讀時(shí)鐘和寫(xiě)時(shí)鐘為同一個(gè)時(shí)鐘。在時(shí)鐘沿來(lái)臨時(shí)同時(shí)發(fā)生讀寫(xiě)操作。異步FIFO是指讀寫(xiě)時(shí)鐘不一致,讀寫(xiě)時(shí)鐘是互相獨(dú)立的。
FIFO的寬度: 也就是英文資料里??吹降腡HE WIDTH,它指的是FIFO一次讀寫(xiě)操作的數(shù)據(jù)位,就像MCU有8位和16位,ARM32位等等,F(xiàn)IFO的寬度在單片成品IC中是固定的,也有可選擇的,如果用FPGA自己實(shí)現(xiàn)一個(gè)FIFO,其數(shù)據(jù)位,也就是寬度是可以自己定義的。FIFO的深度:THE DEEPTH,它指的是FIFO可以存儲(chǔ)多少個(gè)N位的數(shù)據(jù)(如果寬度為N)。如一個(gè)8位的FIFO,若深度為8,它可以存儲(chǔ)8個(gè)8位的數(shù)據(jù),深度為12 ,就可以存儲(chǔ)12個(gè)8位的數(shù)據(jù),F(xiàn)IFO的深度可大可小,個(gè)人認(rèn)為FIFO深度的計(jì)算并無(wú)一個(gè)固定的公式。
在FIFO實(shí)際工作中,其數(shù)據(jù)的滿(mǎn)/空標(biāo)志可以控制數(shù)據(jù)的繼續(xù)寫(xiě)入或讀出。在一個(gè)具體的應(yīng)用中不可能由一些參數(shù)精確算出所需的FIFO深度為多少,這在寫(xiě)速度大于讀速度的理想狀態(tài)下是可行的,但在實(shí)際中用到的FIFO深度往往要大于計(jì)算值。
一般來(lái)說(shuō)根據(jù)電路的具體情況,在兼顧系統(tǒng)性能和FIFO成本的情況下估算一個(gè)大概的寬度和深度就可以了。而對(duì)于寫(xiě)速度慢于讀速度的應(yīng)用,F(xiàn)IFO的深度要根據(jù)讀出的數(shù)據(jù)結(jié)構(gòu)和讀出數(shù)據(jù)由那些具體的要求來(lái)確定。
ADC/DAC: adc是analog-to-digital converter的縮寫(xiě),指模擬/數(shù)字轉(zhuǎn)換器。我們常用的模擬信號(hào),如溫度、壓力、電流等,如果需要轉(zhuǎn)換成更容易儲(chǔ)存、處理的數(shù)字形式,用模/數(shù)轉(zhuǎn)換器就可以實(shí)現(xiàn)這個(gè)功能。
adc將模擬輸入信號(hào)轉(zhuǎn)換成數(shù)字信號(hào)的電路或器件。模數(shù)轉(zhuǎn)換器的實(shí)例有逐次逼近adc,電壓-頻率(v/f)轉(zhuǎn)換器,雙斜率adc和高速閃爍adc。模數(shù)轉(zhuǎn)換器也稱(chēng)為數(shù)字化儀。a/d轉(zhuǎn)換的作用是將時(shí)間連續(xù)、幅值也連續(xù)的模擬量轉(zhuǎn)換為時(shí)間離散、幅值也離散的數(shù)字信號(hào),因此,a/d轉(zhuǎn)換一般要經(jīng)過(guò)取樣、保持、量化及編碼4個(gè)過(guò)程。
在實(shí)際電路中,這些過(guò)程有的是合并進(jìn)行的,例如,取樣和保持,量化和編碼往往都是在轉(zhuǎn)換過(guò)程中同時(shí)實(shí)現(xiàn)的。dac是digital-to-analog converter的縮寫(xiě),指數(shù)字/模擬轉(zhuǎn)換器。數(shù)字量是用代碼按數(shù)位組合起來(lái)表示的,對(duì)于有權(quán)碼,每位代碼都有一定的位權(quán)。
為了將數(shù)字量轉(zhuǎn)換成模擬量,必須將每1位的代碼按其位權(quán)的大小轉(zhuǎn)換成相應(yīng)的模擬量,然后將這些模擬量相加,即可得到與數(shù)字量成正比的總模擬量,從而實(shí)現(xiàn)了數(shù)字/模擬轉(zhuǎn)換。dac主要由數(shù)字寄存器、模擬開(kāi)關(guān)、位權(quán)網(wǎng)絡(luò)、求和運(yùn)算放大器和基準(zhǔn)電壓源(或恒流源)組成。用存于數(shù)字寄存器的數(shù)字量的各位數(shù)碼,分別控制對(duì)應(yīng)位的模擬電子開(kāi)關(guān),使數(shù)碼為1 的位在位權(quán)網(wǎng)絡(luò)上產(chǎn)生與其位權(quán)成正比的電流值,再由運(yùn)算放大器對(duì)各電流值求和,并轉(zhuǎn)換成電壓值。
IP代表知識(shí)產(chǎn)權(quán),從它的名字我們就能猜到IP核應(yīng)該不是可以隨便使用的。事實(shí)上,大部分IP核都是需要付費(fèi)的,例如RS編碼器、FIR濾波器、SDRAM控制器、PCI接口等。不過(guò)仍有很多免費(fèi)的IP核資源,這其中最主要的就是每個(gè)FPGA廠(chǎng)商都會(huì)為自己的軟件集成開(kāi)發(fā)環(huán)境提供一些比較基本的免費(fèi)的IP核來(lái)增加自家產(chǎn)品的行業(yè)競(jìng)爭(zhēng)力。例如最最常用的FIFO模塊、PLL模塊等等。對(duì)于我們平常的設(shè)計(jì)來(lái)說(shuō),利用好這些免費(fèi)的IP核就能達(dá)到事半功倍的效果。
-
FPGA
+關(guān)注
關(guān)注
1645文章
22050瀏覽量
618564 -
IC
+關(guān)注
關(guān)注
36文章
6127瀏覽量
179412
發(fā)布評(píng)論請(qǐng)先 登錄
評(píng)論