本来想写两个计数器每当cnt 0——9 循环计数 cnt1 0——3 循环计数
cnt 每次循环 cnt1 = cnt1 + 1
reg [31:0] cnt;
parameter CNT_NUM = 50_000_000 / 1;
always @ (posedge clk ,negedge rst_n) begin
if(rst_n == 1'b0)
cnt <= 1'd0;
else if(cnt < CNT_NUM - 1'd1)
cnt = cnt + 1'd1;
else
cnt <= 32'd0;
end
reg [31:0] cnt1;
parameter T4 = 4;
always @ (posedge clk ,negedge rst_n) begin
if (rst_n == 1'b0)
cnt1 <= 32'd0;
else if((cnt1 < T4 - 1'd1) && (cnt == CNT_NUM - 1'd1))
cnt1 <= cnt1 + 1'd1;
else if(cnt == CNT_NUM - 1'd1)
cnt1 <= 32'd0;
else
cnt1 <= cnt1;
end
代码没找到问题哭
cnt 每计九个数 cnt1加1
你这个错误非常隐蔽,这是堵塞非堵塞混用造成的
reg [31:0] cnt;
parameter CNT_NUM = 10;//50_000_000 / 1;
always @ (posedge clk ,negedge rst_n) begin
if(rst_n == 1'b0)
// cnt <= 1'd0; //这个地方要赋 32'd0;
cnt <= 32'd0; //这个地方要赋 32'd0;
else if(cnt < CNT_NUM - 1'd1)
// cnt = cnt + 1'd1; //这个地方不该用 = 要用 <= 你这个错误主要是这个堵塞非堵塞混用造成的
cnt <= cnt + 1'd1; //这个地方不该用 = 要用 <= 你这个错误主要是这个堵塞非堵塞混用造成的
else
cnt <= 32'd0;
end
reg [31:0] cnt1;
parameter T4 = 4;
always @ (posedge clk ,negedge rst_n) begin
if (rst_n == 1'b0)
cnt1 <= 32'd0;
else if((cnt1 < T4 - 1'd1) && (cnt == CNT_NUM - 1'd1))
cnt1 <= cnt1 + 1'd1;
else if(cnt == CNT_NUM - 1'd1)
cnt1 <= 32'd0;
else
cnt1 <= cnt1;
end