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