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

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

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

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

 

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

 
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级视图如下:

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

 

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

 
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消耗的逻辑单元要多。所以我们在做设计的时候需要考虑到硬件资源的时候也需要优化自己的设计代码,在做时序约束分析的时候也是一样的道理,后续再更新相关内容,告辞。

 

【QQ交流群】

群号:173560979,进群暗语:FPGA技术江湖粉丝。

多年的FPGA企业开发经验,各种通俗易懂的学习资料以及学习方法,浓厚的交流学习氛围,QQ群目前已有1000多名志同道合的小伙伴,无广告纯净模式,给技术交流一片净土,从初学小白到行业精英业界大佬等,从军工领域到民用企业等,从通信、图像处理到人工智能等各个方向应有尽有。

 

【微信交流群】

现微信交流群已建立08群,人数已达数千人,欢迎关注“FPGA技术江湖”微信公众号,可获取进群方式。

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

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

已标记关键词 清除标记
相关推荐
实付 49.90元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值