这一两天要做的事--关于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

1.jpg


  

各型号核心板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










 

     

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值