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