XILINX FPGA设计中如何更好的优化资源.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
XILINX FPGA设计中如何更好的优化资源

 PAGE \* MERGEFORMAT 5 XILINX FPGA设计中如何更好的优化资源 在设计过程中我们只要注意一些要点,就可以节省下宝贵的芯片资源。下面以XILINX FPGA为例阐述在设计中如何节约资源。 一 从器件角度来理解如何节省资源 FPGA是基于查找表技术的可编程逻辑器件,其内部包含丰富的资源:CLB,BlockRam而有些器件还包含了DSP48等资源。CLB是FPGA的基本逻辑单元,CLB模块不仅可以用于实现组合逻辑,时序逻辑,还可以配置为分布式RAM和分布式ROM。每个CLB由2个或4个相同的Slice和附加逻辑构成,CLB内部结构如图1所示。 图1 . CLB内部结构 每个Slice由2个LUT,2个FF和进位链构成。图2即为6输入LUT的内部结构。 图2 . LUT6内部结构 利用Slice来优化资源。 巧妙利用Slice可以节约很多的资源,典型的例子就是移位寄存器。对比用代码编写的32位移位寄存器和用原语调用的32位移位寄存器,就可以看出怎样利用Slice节约资源。 用代码编写的32位移位寄存器: always@(posedge clk) begin Q = {Q[30:0],D}; end 用原语调用一个32位移位寄存器: SRL32#(.INIT(32h00000))U_DIV_LATENCY_OIF0[2:0](.CLK(Gclk), .D(Oif_base_q), .Q(Oif_base_q0), .A0(1b1), .A1(1b1), .A2(1b1), .A3(1b1) , .A4(1b1)); 综合之后可以发现,使用代码会消耗32个FF,而使用原语只要一个LUT6就可以完成。用原语生成移位寄存器要比用代码生成寄存器节约32个触发器资源。当然我们也可以例化IP核,但是,使用原语会比例化IP核在complier时候更加节省时间。因为Verilog语言的IP核是由.v和.ngc文件构成的。.v只有一些接口信号,而实质的内容者存在于.ngc文件中,在综合和编译的时候还是要调用.ngc文件的,这样就会浪费时间。 利用BRAM来优化资源 在设计中,选择合适的RAM可以节约很多资源。如果RAM小于18K,我们可以使用DRAM,因为BRAM最小的容量是18K。在资源优化中,BRAM是一个大头,下面来谈一谈如何用BRAM来优化资源。 在ISE中用core generator 来生成Block Ram的时候,会发现里面有single port(单口),simple dual port(准双口),true dual port(双口)这三个选项。这三种模式的比较见表1。 表1 三种BRAM的比较 功能功耗最小容量single port最小最小18Ksimple dual port居中居中18Ktrue dual port最大最大36K我们可以根据需要来选择BRAM,如果光从节约资源角度来选用双口RAM的话,可以优先考虑simple dual port。 此外,XILINX IP核中的Build in FIFO就是利用BRAM做成的,已经将控制的逻辑资源封装进去了。因此我们能够使用Build in FIFO时候,直接例化就可以了,无需再耗费额外的资源了。 利用DSP48来优化资源 在V4,V5,V6 和S3,S6系列的FPGA中都有DSP48,只是S系列和V系列的位宽不一样。DSP48可以通过一系列用户指定的算术表达式来完成不同的计算,比如:乘法器,乘加器,累加等等。如果算术运算调用DSP48的话,我们可以节约下很多的逻辑资源,并且运算速度也比较快。DSP48的结构如图3所示: 图.3 DSP48的结构 二 如何在编码中节省资源 慎用reset复位信号 我们在编写代码的时候,总是会习惯于在时序电路中加上reset复位信号,这样往往会导致资源无形的浪费。还是以移位寄存器为例,来说明这种情况。 不加复位信号的移位寄存器 always@(posedge clk) begin Q = {Q[30:0],D}; end 加异步复位信号的移位寄存器 always@(posedge clk or posedge rst) begin if(rst) Q= 32’b0; else Q = {Q[30:0],D}; End 加同步复位信号的移位寄存器 always@(posedge clk ) begin if(rst) Q= 32’b0; else Q = {Q[30:0],D}; end 综合后发现,不加复位信号和加了异步复位信号

文档评论(0)

xcs88858 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档