计数器是非常基本的使用,没有计数器就无法处理时序。我在学习时发现市面上有几种不同的计数器写法,非常有趣,在此记录下来:
一、时序逻辑和组合逻辑彻底分开(by锆石科技FPGA教程)
1.代码
1 //====================================================================== 2 // --- 名称 : Count_1 3 // --- 作者 : xianyu_FPGA 4 // --- 日期 : 2018-12-10 5 // --- 描述 : 模10计数器,0到10循环累加 6 //====================================================================== 7 8 module Count_1 9 ( 10 input clk , 11 input rst_n , 12 output reg [ 3:0] cnt 13 ); 14 15 //---------------------------------------------------------------------- 16 //-- 组合电路 17 //---------------------------------------------------------------------- 18 reg [ 3:0] cnt_n ; 19 20 always @(*)begin 21 if(cnt == 4'd9) 22 cnt_n = 4'd0; 23 else 24 cnt_n = cnt + 1'b1; 25 end 26 27 //---------------------------------------------------------------------- 28 //-- 时序电路 29 //---------------------------------------------------------------------- 30 always @(posedge clk or negedge rst_n)begin 31 if(!rst_n) 32 cnt <= 4'