这一两天要做的事--关于Altera FPGA首先要搞清楚的几个问题 以及解答
弄清楚以下的東東的意思 和 作用
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
? ??? @ FPGA的片內(nèi)存儲(chǔ)器??? ok
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
? ? ? @ 有些人說(shuō)的“你的RAM存儲(chǔ)器空間不夠了,裝不下你的程序了”到底是個(gè)怎么回事?這個(gè)程序是DHL編譯出來(lái)的程序還是在NIOS處理器中運(yùn)行的程序。??? ok
??? A: 這一定是在Nios軟核處理器中運(yùn)行的可執(zhí)行程序了,它可放在外部flash中,由Nios處理器reset時(shí)從flash的地址boot調(diào)用(可參見(jiàn) Nios II Software Developer's Handbook之? Boot Configurations 4-67? 或? Memory Usage->Boot Modes 6-46);也可由Jtag直接下載到片內(nèi)RAM 或 片外SDRAM 中運(yùn)行(可參考一下Nios II Processor Reference Handbook之 JTAG Debug Module->Download and Execute Software 2-18。至于JTAG嫩不能下程序到片外SDRAM 中運(yùn)行?這個(gè)還不能確定,等日后 實(shí)作時(shí)再探明吧,關(guān)系不大。)。
???? 而DHL編譯出來(lái)的程序是下載到配置芯片中的,上電時(shí)再傳入FPGA芯片中,配置FPGA網(wǎng)絡(luò)。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
????? @ DSP Builder?? ok? (具體詳細(xì)的應(yīng)該還要以后用到了才深入了解)
?~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
????? @ 配置芯片? ok???
???????? 可詳見(jiàn)”config_handbook.pdf“文檔
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
?@Cyclone II 系列中? 帶有 “內(nèi)嵌乘法器”,此作用為何,效果怎樣?? ok
A: 下面搜集了一些關(guān)于乘法器的一些 只言片語(yǔ) 的集錦,綜合集結(jié)起來(lái)看,可以很好得回答上面的問(wèn)題:
如果FPGA有內(nèi)嵌乘法器,可以用乘號(hào);否則就要設(shè)計(jì)乘法器或使用IP core。
1.加法、減法現(xiàn)在可以綜合,乘法、除法現(xiàn)在還不能綜合,只能仿真。
2.無(wú)論是加法、減法電路,都是有很多種電路結(jié)構(gòu)的,光加法器就不
下5、6種這些電路結(jié)構(gòu)有不同的特征,比如速度快或者面積小。而且
有時(shí)候還需要多時(shí)鐘周期的運(yùn)算單元。
所以,有時(shí)候是要自己來(lái)設(shè)計(jì)運(yùn)算單元的。
補(bǔ)充一點(diǎn),現(xiàn)在乘法器和除法器在dc中是可以綜合的,但這是調(diào)用DC中的DW中的現(xiàn)有IP來(lái)實(shí)現(xiàn)的.
如果你的要求比較特殊當(dāng)然需要自己寫(xiě)了,但一般情況下這個(gè)IP還是可以的!
一 般 來(lái) 說(shuō) 現(xiàn) 在 的 綜 合 器 都 能 對(duì) 加 減 乘 除 進(jìn)行 綜合。
比如D C,一般如果你本人對(duì)乘法器沒(méi)有相當(dāng)?shù)牧私?#xff0c;
或沒(méi)有獨(dú)特的算法來(lái)實(shí)現(xiàn),那么建議直接調(diào)用,就是直接寫(xiě) A * B
因?yàn)楦鶕?jù)你綜合時(shí)約束條件的不同,綜合器能調(diào)用你所想要的乘法器了。
synopsys 公司的 Design Compiler工具 簡(jiǎn)稱DC。是集成編譯綜合的一種工具。
另外Quartus里面也有乘法除法的IP,充分利用即可。
一般不是特別要求,現(xiàn)在的FPGA中的設(shè)計(jì)遇到的乘除法運(yùn)算都不自己寫(xiě)了。
SE自帶的IP核調(diào)乘法器還比較好用,但除法器根據(jù)數(shù)據(jù)的位寬不同,輸出有較大的延時(shí)。
其實(shí)直接調(diào)用 AMBIT WARE或者DESIGN WARE里面的乘法器, 再配合合成的的時(shí)候下不同的constraint,基本上可以滿足一般的設(shè)計(jì)要求...如果不是非常特殊的運(yùn)用,這種運(yùn)用特殊到DC/AC,不能幫你綜合你令你滿意的電路,那可能要自己動(dòng)手寫(xiě)了...不過(guò),除非有很新穎的算法,否則,可能自己寫(xiě)的也不會(huì)令你滿意....,Anyway, AMBIT/ DESIGN WARE值得一用..
個(gè)人觀點(diǎn):自己做alu(運(yùn)算器)的好處就是可以自己控制面積與時(shí)序的折中,對(duì)于需要時(shí)間緊湊而面積可以忽略的可以考慮設(shè)計(jì)成純組合邏輯的,對(duì)面積要求嚴(yán)格而對(duì)時(shí)序要求不是很高的話可以考慮純時(shí)序邏輯的RTL設(shè)計(jì)。當(dāng)然一般情況是采用2種方法的折中。當(dāng)然也可以有很多牛B的算法。
乘法器規(guī)模比加法器大很多。不過(guò)要是乘數(shù)就幾個(gè)bit的話,直接寫(xiě)個(gè)*也沒(méi)有大問(wèn)題
如果FPGA有內(nèi)嵌乘法器,可以用乘號(hào);否則就要設(shè)計(jì)乘法器或使用IP core。
首先乘法器 有很多種實(shí)現(xiàn)方法 比如 carry-save-arrays, wallace trees . booth-wallace-trees ......
每個(gè)都有自己對(duì)應(yīng)的優(yōu)點(diǎn)(area , speed, power) 就看你需要什么了? 。??
如果能滿足你的要求的話。 你可以直接 用*? . 一般的 fpga 已經(jīng)有了 專用的乘法器 你可以 直接用的 。
但是你也可以設(shè)計(jì)自己的乘法。
直接寫(xiě)的*綜合器會(huì)把它綜合為自帶的乘法器,占用了乘法器資源,自己寫(xiě)乘法器省資源。特別是對(duì)簡(jiǎn)單的幾bit乘法的情況,沒(méi)必要再消耗一個(gè)乘法器。當(dāng)然,不是什么綜合器都能認(rèn)*的,lz最好在代碼內(nèi)不要寫(xiě)*。
呵呵。。FPGA里的乘法器,和鎖相環(huán)一樣,是珍惜資源。不容浪費(fèi)的。(dl注:鎖相環(huán)即PLL,詳細(xì)的參考日志里另一篇文章)
咳咳,如果是定系數(shù)乘法,移位加比較省
如果是兩個(gè)變量乘就直接*好了,具體實(shí)現(xiàn)的時(shí)候在選擇不同的方式
總之是要根據(jù)你的芯片取速度與面積平衡的問(wèn)題,關(guān)于使用“*”? 移位加? 或者 對(duì)移位加進(jìn)行改造? 比如使用csd數(shù)
這些你在設(shè)計(jì)中慢慢體會(huì),看看關(guān)于這方面資料才會(huì)有比較全面的了解。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@怎么能夠把FPGA芯片中自帶的乘法器使用起來(lái)呢?? ok
A:分兩個(gè)步驟:
一、首先,把芯片自帶的乘法器 例化,例化的方法,沒(méi)具體操作不是很明了,到時(shí)實(shí)作一下就行了。
????? 網(wǎng)上有兩種說(shuō)法如下,參考一下:
1、Tools—MegaWizard Plug-in Manager—選擇“Create a new custom megafunction variation”—選擇 “Installed Plug-Ins”—選擇
“LPM_MULT ”這就是你需要的IP核啦? 進(jìn)去以后可以根據(jù)你的需要進(jìn)行設(shè)置 。。。
2、在MegaWizard Plug-in Manager->Arithmetic中LPM_MULT是乘法器IP,可以選擇自帶的乘法器或者用邏輯單元生成乘法器。
? (dl注:上面提到的LPM即 library of parameterized modules (LPM) )
二、自帶的乘法器 例化好了,在HDL語(yǔ)言中,直接用“乘號(hào)”(*)就可以使用了。
(可參考:Cyclone II Device Handbook 之 Section V. DSP -> 12. Embedded Multipliers in Cyclone II Devices
????????? 和?? quartusii_handbook 之 Volume 1: Design and Synthesis -> 6. Recommended HDL Coding Styles ->
??????????????? Inferring Multiplier and DSP Functions from HDL Code? 6-7
?這兩篇文檔)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
????? @ 為何 諸如 同為EP2C5系列 又有EP2C5Q208C8型號(hào)的,又有EP2C5T144C8型號(hào)的?兩者有什么區(qū)別?ok
????????? 好像同系列的 形如EP2C5T144C8型號(hào)的要比EP2C5Q208C8型號(hào)的要便宜,兩者在資源上有什么差異?ok
??? ??? A: 差別見(jiàn)圖可知(此圖在datasheet, section I->第6節(jié)->Figure 6–1):???
?????? ? ?? 同是EP2C5,出了封裝、管腳和可用I/O口上的差別,內(nèi)部資源沒(méi)差別。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
?????? @? 器件型號(hào)最后的C8、C7、C6代表speed grades,但這個(gè)speed是個(gè)什么速度,grades等級(jí)又是怎么分得???? ok
??????????? 要在datasheet中 第5章 “DC Characteristics and Timing Specifications”中尋找答案。 ok
?????? A:? Cyclone II Device Handbook中 第5章 “DC Characteristics and Timing Specifications”看過(guò)了,其文中雖多次提到speed grades,但并沒(méi)有解釋speed grades的具體意義。
??????????? 網(wǎng)上一搜FPGA speed grade,果然也有其他人對(duì)這個(gè)概念有疑惑,在網(wǎng)上收集了兩篇文章:
??????????? ”Speed Grade——芯片的“速度等級(jí)”初探“?? 和
??????????? ”FPGA的速度等級(jí)(speed grade)“
?????????? 解釋了speed grade的意義,特別是”Speed Grade——芯片的“速度等級(jí)”初探“這一篇對(duì)speed grade的本質(zhì)意義做了解釋探討。
?~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~????
????? @像EP1C6Q240C8這種資源較少的FPGA能不能裝下Nios,裝下之后,剩下的資源做其他的邏輯電路應(yīng)用夠不夠???? 差不多ok???????????????? NiosII 所消耗的邏輯單元數(shù)Les
??
各型號(hào)核心板FPGA資源統(tǒng)計(jì)表
型號(hào)
EP1C6型
EP1C12型
EP2C5型
EP2C8型
EP2C20型
Les
5,980
12,060
4,608
8,256
18,752
RAM bits
92,160
239,616
119,808
165,888
240,000
內(nèi)嵌乘法器
無(wú)
無(wú)
13
18
26
PLLs
2
2
2
2
4
IO腳
185
173
143
139
142
?
?????
總結(jié)
以上是生活随笔為你收集整理的这一两天要做的事--关于Altera FPGA首先要搞清楚的几个问题 以及解答的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 我的世界怎么刷铁
- 下一篇: “李书福造手机”新进展 首款机型上半年发