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
这段代码中有几个可能导致报错的地方:
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)