文章目錄
- 1 IP 核是什么
- 2 為什么要使用 IP 核
- 3 IP 核的存在形式
- 4 IP 核的缺點
- 5 Quartus II 軟件下 IP 核的調用
- 6 Altera IP 核的分類
在本小節當中,我們來學習一下 IP 核的相關知識。
IP 核在 FPGA 開發當中應用十分廣泛,它被稱為快速開發的法寶。在本小節當中,我們將和各位朋友一起來學習了解 IP 核的相關知識、理解掌握 IP 核的調用方法。
我們分為以下幾個部分進行 IP 核的學習
- 首先是第一部分:IP 核是什么。在這一部分,我們會對 IP 核的基本概念做一個解析
- 第二部分是:為什么要使用 IP 核。在這一部分會告訴大家 IP 核的一個使用目的
- 第三部分是:IP 核的存在形式,也就是 IP 核的一個分類
- 第四部分是:IP 核的缺點。事物的存在有利也有弊,IP 核也不例外。這一部分會講解一下:IP 核使用的一個局限性
- 第五部分就是:Quartus II 軟件下 IP 核的一個調用。在這一部分會帶領各位朋友,了解如何在 Quartus II 軟件下調用 IP 核
- 第六部分是 Altera IP 核的一個分類。這部分內容的講解目的是方便各位朋友,在以后的使用過程中能夠快速準確的調用 IP 核
首先是第一部分內容的講解:IP 核是什么?
1 IP 核是什么
IP 是一個英文(首字母縮寫)簡稱,英文全稱是:Intllectual Property,譯為中文就是知識產權。在半導體產業中將 IP 核定義為:用于 ASIC 或者 FPGA 中預先設計好的電路功能模塊;換句話說:IP 就是指電路功能模塊。
在數字電路當中,我們將常用的而且比較復雜的功能模塊設計成參數可修改的模塊。比如說后面常用到的 FIFO、RAM,還有 SDRAM 控制器;這些常用的而且比較復雜的功能模塊設計成參數可修改的模塊,在使用過程中其他用戶可以直接調用這些模塊,這個就是 IP 核。
現在了解了 IP 核的概念之后,我們進入下一個問題:為什么要使用 IP 核?
2 為什么要使用 IP 核
隨著科技的進步、IC 工藝的提高,FPGA 的規模越來越大;隨著 FPGA 的規模越來越大,FPGA 的設計也是越來越復雜;IC 的復雜度每年以 55% 的速率提高,而我們的設計能力每年只提高 20% 左右;我們設計者的主要任務,是在規定的時間周期內完成一個復雜的設計,但是 IC 復雜度遞增的速率大于我們設計能力的提高,這樣就使得設計者需要的設計周期就越來越長,這樣不利于產品的一個上市;為了解決這個問題,將一些在數字電路中常用的但是比較復雜的功能塊,比如說前面提到的 FIFO、RAM、SDRAM 控制器設計成可修改的參數模塊,就是前面提到的 IP 核,然后在開發過程中使用 IP 核,這樣就可以避免重復勞動、提高開發效率、減少設計和調試的時間,加速開發進程、降低開發成本,這樣也大大縮短了產品上市時間、減輕了工程師的一個負擔,也是業內的一個發展趨勢。這就是我們使用 IP 核開發的一個目的。
了解了 IP 核的概念以及使用目的之后,我們進入第三部分:IP 核的一個存在形式,就是它的分類
3 IP 核的存在形式
IP 核根據產品交付的方式進行分類,有三種不同的存在形式,分別對應我們常說的三類 IP 內核,這三種 IP 內核實現的方法也是各具特色
-
HDL 語言形式–>軟核
軟核也稱為軟 IP,它通常是以硬件描述語言 HDL 源文件的形式出現,它的應用開發過程與普通的 HDL 設計也是十分的相似,大多數應用于 FPGA 的 IP 內核均是軟核。軟核有助于用戶調節參數并增強可復用性,就是說它可以進行參數的調整(復用性強);軟核通常是以加密的形式提供,實際的用戶是看不到內部的 RTL 代碼的,但是它的布局布線是十分靈活的;在這些加密的軟核當中如果對內核進行了參數化,用戶就可以通過頭文件或者說 GUI 圖形界面對參數進行一個設置。軟核它的設計周期短、設計投入少,軟核由于不涉及物理實現,為后續設計留有很大的發揮空間,增大了 IP 核的一個靈活性和適應性。
同時,軟核也是有缺點的。軟核是以源代碼的形式提供,盡管源代碼可以采用加密的方法,但是它的知識產權保護的問題仍然不容忽視。
-
網表形式–>固核
固核是軟核與硬核的一個折中,固核是完成了綜合的功能塊,它有較大的設計深度。對于那些對時序要求十分嚴格的內核,比如說:PCIE 接口內核,對于這種時序要求比較嚴格的內核,它可以預布線特定信號,或者說分配特定的一個布線資源,目的是滿足這些內核的時序要求。
固核也是有缺點的:如果說固核它有固定的布局或者部分固定的布局,在使用過程中會影響其他電路的一個布局,這是它的一個缺點。
-
版圖形式–>硬核
硬核是完整提供設計的最終階段產品——掩膜,硬核是以經過完全的布局布線的網表形式提供,這種硬核既具有可預見性,同時還可以針對特定的工藝或者說購買商進行功耗和尺寸的一個優化。
但是它缺乏靈活性、可移植性較差;但是,它不存在 RTL 文件,更易于實現 IP 核的一個保護。
事物的存在有利也有弊,IP 核在擁有眾多的優點的同時,它也存在巨大的缺點
4 IP 核的缺點
我們來看一下 IP 核的缺點
- 首先第一點:IP 核往往不能跨平臺使用。這句話什么意思呢?每個 FPGA 開發廠商會根據自己的芯片適配定制的 IP,如果說你之前使用的是賽靈思的芯片,使用了其中的一個 IP 核,但是因為某些原因,你需要將這個代碼移植到 Altera 平臺上,就必須在 Altera 平臺上選擇具有相同功能的 IP 核,進行一個替換,否則你就不能使用,這樣就增加了代碼移植的一個復雜性。
- IP 核的第二條缺點是:IP 核不透明,看不到內部的核心代碼。IP 核相當于一個黑匣子,它是不透明的,我們只能看到輸入信號和輸出信號,內部的核心代碼是看不到的;因為 IP 核都是各大 FPGA 廠商專門設計的,都會進行一個加密,內部的核心代碼是看不到的。如果說我們在使用過程中,想要根據實際的應用進行一個優化,這是不可能的;因為我們是無法進行修改的。這個問題在使用過程中就很棘手
- IP 核的第三個缺點就是:定制的 IP 需要額外收費。我們平時使用的一些具有簡單功能的 IP 核是 FPGA 廠商提供的,是免費的;但是說,如果你想要使用某些能夠實現特殊功能的 IP 核,需要進行一個額外收費。
IP 核在能夠縮短我們開發周期的情況下存在以上三個問題。這時候我們就需要權衡利弊,針對具體的需求來做一個具體的選擇。
下面我們講解第五部分:在 Quartus II 開發軟件下進行 IP 核的一個調用
5 Quartus II 軟件下 IP 核的調用
在 Quartus II 開發軟件下進行 IP 核的調用有四種方式
- 第一種是 Mega Wizard 的插件管理器
- 第二種是 SOPC 構造器
- 第三種是 DSP 構造器
- 第四種是 Qsys 設計系統例化
在這四種方式中,后兩種方式(DSP 構造器、Qsys 設計系統例化)它們僅支持部分的一個 IP 核的例化和使用,最為常用的 IP 核的調用方式是第一種:使用插件管理器的調用方式
Mega Wizard 插件管理器它可以用于創建和修改包含定制 IP 核的一個設計文件,然后在設計文件中例化 IP 核;可以自動生成設計文件、例化模板以及例化聲明文件;使用這個插件管理器,可以指定 IP 核的不同選項,包括設置參數值、選擇可選端口;還可以為第三方綜合工具生成網表文件(第三方的 IP 核是以網表文件的形式進行提供的)。
說了這么多,下面就和各位朋友一起學習使用插件管理器進行一個 IP 核的調用。
我們回到桌面,然后打開 Quartus II 開發軟件,關閉開發軟件的啟動頁
第一步就是啟動 Mega Wizard 插件管理器:選擇 Tools–>MegaWizard Plug-In Manager
彈出了一個 Mega Wizard 插件管理器的選擇頁面
其中有三個選項
- Create a new custom megafunction variation:創建一個新的 IP 核
- Edit an existing custom megafunction variation:編輯已經存在的 IP 核
- Copy an existing custom megafunction variation:復制已經存在的 IP 核
我們這兒選擇第一個:創建一個新的 IP 核,然后點擊下一步
然后就到了 2a 頁面
首先第一步要選擇右上角的位置,選擇我們的 FPGA 芯片屬于哪個系列;因為不同的器件類型,它可以使用的 IP 核是不同的;比如說我們選擇征途系列開發板使用的器件就是 Cyclone IV E 系列
所以說這個地方要保持與工程創建時我們選擇的器件系列一致,避免出現 IP 核不支持器件的一個情況。
第二個位置要設置 IP 核輸出文件的語言類型,語言類型的設置取決于工程具體設計所使用的語言,我們使用的是 Verilog 就選擇 Verilog HDL
第三個位置就是搜索框以及搜索框下方的列表,如果搜索框中不進行輸入,下方列表就會分類顯示出所有的 IP 核
在這個搜索框當中輸入我們想要使用的 IP 核的名稱來進行一個 IP 核的搜索,比如說我們想要使用鎖相環的 IP 核就輸入 pll,下方列表當中就會顯示出與我們搜索 IP 核相關的一些 IP 核
然后我們選擇使用其中一個 IP 核,選中 ALTPLL;在列表右側我們就要選擇 IP 核輸出文件的一個保存位置,這個保存位置一般都是工程文件夾
假如說在 2a 頁面選擇完畢之后,點擊下一步就可以進行參數的一個設置,最后生成我們的 IP 核
以上部分,就是使用 Mega Wizard 插件管理器實現 IP 核一個調用。
下面進入第六部分,就是 Altera IP 核的一個分類
6 Altera IP 核的分類
我們回到 Mega Wizard 插件管理器的 2a 頁面,然后清空搜索框,搜索框下方的 IP 核列表當中顯示的就是 Altera 提供的 IP 核
下面就參照這個列表來對 Altera IP 核的類型做一個講解。首先是:數學運算 IP 核
這里面包含了四個部分
-
第一部分就是:LPM 類型的整數運算 IP 核
LPM 表示參數化類型 IP 核庫。LPM_ADD_SUB這個就是加法器和減法器的 IP 核、LPM COMPARE這個是比較器、LPM_COUNTER是計數器、LPM_DIVIDE是除法器、LPM_MULT是乘法器
-
第二部分就是:ALT 類型的整數運算 IP 核
ALT 表示的是 Altera 特定的 IP 核。ALTMULT_ACCUM(MAC)是乘累加器、ALTMEMMULT是基于存儲的常系數乘法器、ALTMULT_ADD是它的乘加器、ALTMULT_COMPLEX是它的復數乘法器
-
第三部分就是:浮點數運算 IP 核
ALTFP_ADD_SUB就是浮點數加/減法器、ALTFP_DIV是浮點數的除法器、ALTFP_MULT是浮點數的乘法器、ALTFP_SQRT就是浮點數的平方根計算器
然后就是:邏輯運算 IP 核
LPM_CLSHIFT是循環移位、LPM_CONSTANT常數、LPM_DECODE解碼和LPM_MUX復用。
第三大類是:存儲器 IP 核
里面有 FIFOFIFO、RAM initializerRAM:1-PORTRAM:2-PORTRAM、ROM:1-PORTROM:2-PORTROM 等等
第四大類是:數字信號處理 IP 核
這里邊有 CIC v13.0CIC、FIR Compiler II v13.0FIR Compiler v13.0FIR 編碼器,然后還有 NC0 v13.0NCO、FFT v13.0FFT(傅里葉變換)
然后是:數字通信類的 IP 核
這兒有 CRC Compiler v13.0CRC 編碼,還有 8B10B Encoder-Decoder v13.08B 轉 10B 的編碼譯碼器 IP 核。
下一個分類是:視頻和圖像處理 IP 核
接下來就是:輸入輸出 IP 核
剛才使用的 PLL(鎖相環) 也在這里面ALTPLL,然后還有 ALTLVDS_RXALTLVDS_TXLVDS 收發器的 IP 核。
下面就是:接口 IP 核
這里面有 PCIPCI 接口、PCI ExpressPCIE 接口、SDISDI 接口,還有 Ethernet以太網的接口等等一些的接口。
最后是:FPGA 調試部分的 IP 核
這兒有 Parallel Flash Loader并行的 Flash、Serial Flash Loader串行的 Flash,然后后面會講到的 SignalTap II Logic Analyzer在線邏輯分析儀。
除了剛剛講到的一些 IP 核的分類之外,還有一些針對部分 Altera 系列的 FPGA 應用的專用的一些 IP 核,這兒就不再進行講解了。
參考資料:
41-第二十四講-快速開發的法寶
24. 快速開發的法寶 — IP核
File:Kamehameha DB scheme.svg