前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >简谈FPGA设计中不同设计方法资源消耗对比

简谈FPGA设计中不同设计方法资源消耗对比

作者头像
FPGA技术江湖
发布2020-12-29 17:08:56
6750
发布2020-12-29 17:08:56
举报
文章被收录于专栏:FPGA技术江湖FPGA技术江湖

大侠好,欢迎来到FPGA技术江湖,江湖偌大,相见即是缘分。大侠可以关注FPGA技术江湖,在“闯荡江湖”、"行侠仗义"栏里获取其他感兴趣的资源,或者一起煮酒言欢。

今天和大侠简单聊一聊FPGA设计中不同设计方法硬件资源消耗对比,话不多说,上货。

在这里,我们使用Verilog HDL 设计计数器,通过两种不同的写法,对比资源消耗。计数器实现的功能是计数记到24,清零,然后重新计数。很简单的两个例子,让我们来看一看。

第一种设计方法,代码如下:

代码语言:javascript
复制
module count_1(clk, rst_n, dout);
 
  input   clk;
  input   rst_n;
  output  [4:0]  dout;
   
  reg     [4:0]  cnt;
   
  always @(posedge clk or negedge rst_n) 
    begin
      if(rst_n == 1'b0) 
          begin
             cnt <= {5{1'b0}};
          end 
      else if(cnt == 5'd24)
          begin
             cnt <= {5{1'b0}};
          end 
        else 
          begin  
             cnt <= cnt + 1'b1;
          end 
    end
   
  assign dout = cnt;
 
endmodule

RTL级视图如下:

现在来看看消耗的逻辑单元。如下:

第二种设计方法,代码如下:

代码语言:javascript
复制
module count_2 (clk, rst_n, dout);
 
  input   clk;   
  input   rst_n;
  output  [4:0]  dout;
   
  reg     [4:0]  cnt;
 
  always @(posedge clk or negedge rst_n) 
    begin
         if(rst_n == 1'b0) 
        begin
          cnt <= {5{1'b0}};
        end 
      else if(cnt < 5'd24)
        begin
          cnt <= cnt + 1'b1;
        end 
      else 
        begin
          cnt <= {5{1'b0}};
        end
    end
 
  assign  dout = cnt;
 
endmodule

RTL级视图如下:

第二种设计方法消耗的逻辑单元如下:

第一种写法比第二种写法多耗了3个逻辑单元。

从上面的逻辑单元和RTL级视图对比,在用计数器实现相同的功能时,可以看出 == count 消耗的逻辑单元比 < count消耗的逻辑单元要多。所以我们在做设计的时候需要考虑到硬件资源的时候也需要优化自己的设计代码,在做时序约束分析的时候也是一样的道理,后续再更新相关内容,告辞。

END

后续会持续更新,带来Vivado、 ISE、Quartus II 、candence等安装相关设计教程,学习资源、项目资源、好文推荐等,希望大侠持续关注。

大侠们,江湖偌大,继续闯荡,愿一切安好,有缘再见!

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-03-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 FPGA技术江湖 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档