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

2020-12-29 17:08:56 浏览数 (1)

大侠好,欢迎来到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等安装相关设计教程,学习资源、项目资源、好文推荐等,希望大侠持续关注。

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

0 人点赞