基于Verilog的quatus 2的报错

timescale 1ns/1ns
module zntd (
input wire clk ,
input wire rst_n , //低电平有效,复位
input wire [8:0] gz , //环境光照

    output  reg      [1:0]    gz_jb     ,     //光照级别
    output  reg                 jz             //久坐提醒
    
 );

    reg     [5:0]  cnt_clk ;//计时
           
    always@(posedge clk or  negedge rst_n)//计时模块
        if (rst_n == 1'b0)
            cnt_clk <= 6'd0; 
        else  if (cnt_clk == 6'd45)
            cnt_clk <= 6'd0;
        else
            cnt_clk <= cnt_clk + 1'd1;
                            
    always@(posedge clk or  negedge rst_n)//久坐提醒
        if (rst_n == 1'b0)
            jz <= 1'b0; 
        else  if (cnt_clk == 6'd44)
            jz <= 1'b1;
        else
            jz <= 1'b0; 

endmodule

img


运用quartus 2 无法运行
望告知

这段代码中有几个可能导致报错的地方:

1.timescale 1ns/1ns:这个语句是设置时钟周期的,如果设置不当可能会导致编译错误。

2.always@(posedge clk or negedge rst_n):这个语句是使用时钟或者复位信号进行触发,如果不是想要的触发方式可能导致编译错误。

3.cnt_clk <= 6'd0; 和 cnt_clk <= cnt_clk + 1'd1; 这两行代码,如果cnt_clk的类型不是6位数并且值域在0-63之间可能会导致编译错误。

4.第20行 else if (cnt_clk == 6'd44) 应该改为 else if (cnt_clk == 6'd45)