XILINXFPGA设计中如何更好的优化资源_第1页
XILINXFPGA设计中如何更好的优化资源_第2页
XILINXFPGA设计中如何更好的优化资源_第3页
XILINXFPGA设计中如何更好的优化资源_第4页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、XILINX FPGA 设计中如何更好的优化资源在设计过程中我们只要注意一些要点,就可以节省下宝贵的芯片资源。下面以XILINXFPGA为例阐述在设计中如何节约资源。一从器件角度来理解如何节省资源FPGA是基于查找表技术的可编程逻辑器件,其内部包含丰富的资源:CLB,BlockRam而有些器件还包含了 DSP48等资源。CLB是FPGA的基本逻辑单元,CLB模块不仅可以用 于实现组合逻辑,时序逻辑,还可以配置为分布式RAM和分布式ROM。每个CLB由2个或4个相同的Slice和附加逻辑构成,CLB内部结构如图1所示。COUTCOUTCINCIN图1 . CLB内部结构每个Slice由2个LUT

2、,2个FF和进位链构成。图 2即为6输入LUT的内部结构。图2 . LUT6内部结构1.利用Slice来优化资源。巧妙利用Slice可以节约很多的资源,典型的例子就是移位寄存器。对比用代码编写的 32位移位寄存器和用原语调用的32位移位寄存器,就可以看出怎样利用Slice节约资源。用代码编写的32位移位寄存器:always(posedge elk)beginQ <= Q30:0,D;end用原语调用一个32位移位寄存器:SRL32#(NIT(32'h00000)U_DIV_LATENCY_OIF02:0(.CLK(Gclk), .D(Oif_base_q),.Q(Oif_base

3、_qO), .A0(1'b1), .A1(1'b1), .A2(1'b1), .A3(1'b1) , .A4(1'b1);综合之后可以发现,使用代码会消耗32个FF,而使用原语只要一个 LUT6就可以完成。 用原语生成移位寄存器要比用代码生成寄存器节约32个触发器资源。当然我们也可以例化IP核,但是,使用原语会比例化 IP核是由.v和.ngc文件构成的。 在综合和编译的时候还是要调用IP核在complier时候更加节省时间。因为 Verilog语言的 .v只有一些接口信号,而实质的内容者存在于.ngc文件中,.ngc文件的,这样就会浪费时间。2.利用BR

4、AM来优化资源RAM小于18K,我们可以使用BRAM是一个大头,下面来谈一在设计中,选择合适的 RAM可以节约很多资源。如果DRAM,因为BRAM最小的容量是18K。在资源优化中, 谈如何用BRAM来优化资源。在ISE中用core generator来生成Block Ram 的时候,会发现里面有 single port (单口),simple dual port (准双口), true dual port (双口)这三个选项。这三种模式的比较见表1。表1 三种BRAM的比较功能功耗最小容量si ngle port最小最小18Ksimple dual port居中居中18Ktrue dual p

5、ort最大最大36K我们可以根据需要来选择BRAM,如果光从节约资源角度来选用双口 RAM的话,可以优先考虑 simple dual port。此外,XILINX IP 核中的Build in FIFO 就是利用BRAM做成的,已经将控制的逻辑资 源封装进去了。因此我们能够使用Build in FIFO时候,直接例化就可以了,无需再耗费额外的资源了。3.利用DSP48来优化资源在V4,V5,V6和S3,S6系列的FPGA中都有DSP48,只是S系列和V系列的位宽不 一样。DSP48可以通过一系列用户指定的算术表达式来完成不同的计算,比如:乘法器, 乘加器,累加等等。如果算术运算调用DSP48的

6、话,我们可以节约下很多的逻辑资源,并且运算速度也比较快。DSP48的结构如图3所示:ire 弑4乍1.-i-r25图.3 DSP48的结构二 如何在编码中节省资源1. 慎用reset复位信号reset复位信号,这样往往会导致我们在编写代码的时候,总是会习惯于在时序电路中加上 资源无形的浪费。还是以移位寄存器为例,来说明这种情况。不加复位信号的移位寄存器always(posedge elk) beginQ <= Q30:0,D;end加异步复位信号的移位寄存器 always(posedge clk or posedge rst) begin if ( rst)Q<= 32 '

7、b0;elseQ <= Q30:0,D;End加同步复位信号的移位寄存器 always(posedge clk ) begin if ( rst)Q<= 32 'b0;elseQ <= Q30:0,D; end综合后发现,不加复位信号和加了异步复位信号的移位寄存器用了 32 个 DFF ,而加了 同步复位信号之后用了 32 个 DFF 和 32 个与门,资源明显增加。移位寄存器这类的直通型电路, 其只是起到一个传输信号的作用, 本身不对信号产生影 响。其传输的信号正确与否,在于其输入端的信号是否正确。 因此,此类电路自身无需加复 位信号,而只需在其输入端口加复位信号,

8、以控制输入数据。在写代码的时候,在上电复位, 直通型的电路中就不用加复位信号;而在功能复位,带 反馈的电路中就需要加复位信号。 当然这不是绝对的, 在实际应用中还需要根据实际情况来 决定是否加复位信号。2. pipeline 流水线在代码中, pipeline 也非常重要, 直接影响着资源利用的效率。 在这节中留给大家题目, 大家可以通过这道题目来理解 pipeline 在资源优化中的意义。题目要求:请大家分析下面的代码占用了多少资源,并且修改下面的代码,在保留 rst 的前 提下使其只占用一个DSP48,且速度达到400M。module practice (clk, rst, a, b, c, p );inputclk;inputrst;input 24:0 a;input 17:0 b;input 42:0 c;output 42:0 p;reg42:0 m;reg42:0 p;always(posedg

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论