弄清楚以下的东东的意思 和 作用
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@ 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,装下之后,剩下的资源做其他的逻辑电路应用够不够? 差不多okNiosII 所消耗的逻辑单元数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