verilog计数器中增减操作之资源占用

安路Anlogic TD Release_2026.1_SP2,器件选择:EG4A20BG256

方法1)case语句

复制代码
module test( input clk,input rst_n,input sw,output reg [3:0] led );

always @(posedge clk or negedge rst_n)
   if (!rst_n) 
      led<= 0; 
   else begin   
    case (sw)
      1: led<=led+1;
      default: led<=led-1;
    endcase 
   end
endmodule

方法2)if语句

复制代码
module test( input clk,input rst_n,input sw,output reg [3:0] led  );

always @(posedge clk or negedge rst_n)
   if (!rst_n) 
      led<= 0; 
   else begin   
    if (sw)led<=led+1;
    else led<=led-1;
    end
endmodule

方法3)条件运算符? :

复制代码
module test( input clk,input rst_n,input sw,output reg [3:0] led  );

always @(posedge clk or negedge rst_n)
   if (!rst_n) 
      led<= 0; 
   else begin   
    led<=sw?(led+1):(led-1);
    end
endmodule

方法4)2*sw-1

复制代码
module test( input clk,input rst_n,input sw,output reg [3:0] led  );

always @(posedge clk or negedge rst_n)
   if (!rst_n) 
      led<= 0; 
   else begin   
    led<=led+2*sw-1;
    end
endmodule

资源占用比较:方法4占用资源最少!

|---------|-----|-----|-----------|-----------|------|------|
| 方法 | not | DFF | MACRO_ADD | MACRO_MUX | lut4 | lut5 |
| case | 2 | 4 | 2 | 3 | 3 | 1 |
| if | 2 | 4 | 2 | 3 | 3 | 1 |
| ? : | 2 | 4 | 2 | 3 | 3 | 1 |
| 2*sw-1 | 1 | 4 | 2 | 0 | 3 | 1 |

相关推荐
m0_5474866612 天前
《数字电路与逻辑设计:基于Verilog HDL和Quartus Prime》全套PPT课件2026
verilog·数字电路·数字逻辑电路
学习FPGA的电气小兴兴13 天前
基于FPGA的CORDIC旋转模式实现sin和cos运算_采用EGo1板卡上板验证【FPGA数字信号处理第5讲】
fpga开发·信号处理·数字信号处理·verilog·cordic·ego1·fpga设计入门与提高
啄缘之间19 天前
1.【SVA】什么是SVA?
经验分享·学习·测试用例·verilog·sva
学习FPGA的电气小兴兴24 天前
基于FPGA的CORDIC向量模式实现arctan运算,Verilog HDL实现
嵌入式硬件·fpga开发·数字信号处理·verilog·fpga·cordic·arctan
学习FPGA的电气小兴兴1 个月前
基于FPGA的CORDIC旋转模式实现sin和cos运算
fpga开发·信号处理·数字信号处理·verilog·fpga·verilog hdl·cordic
FPGA开源工坊1 个月前
ISP图像处理--Bayer Raw格式
图像处理·人工智能·verilog·fpga·isp
qq_150841991 个月前
用verilog语言在Quartus Prime Lite 18中对CPLD EPM570T100C5进行编程
verilog·quartus·cpld
芯路行者2 个月前
4.4 HDLBits —— 更多时序逻辑电路
fpga开发·verilog·fpga·hdlbits
芯路行者2 个月前
7 HDLBits —— 验证:编写测试激励文件
fpga开发·verilog·fpga·hdlbits