版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
如下的源码便宜的时候报错 :
always @ (posedge sys_clk) begin
if(!sys_rst_n)
beepcnt <= 4'b0;//错误在这里
else
if(beepflag == 1) begin
if(beepcnt >= 16'd45_000)
//if(beepcnt > 4'd5)
beep <= 1'b0;
else
beep <= 1'b1;
end
else begin
//if(beepcnt >= 16'd25_000)
beep <= 1'b0;
end
end
//这是个分频器,1KHz
always @ (posedge sys_clk or negedge sys_rst_n) begin
if(!sys_rst_n)
beepcnt <= 4'b0;
else
if(beepcnt >= 16'd50_000)
//if(beepcnt >= 4'd10)
beepcnt <= 4'b0;
else
beepcnt <= beepcnt + 16'b1;
//beepcnt <= beepcnt + 4'd1;
end
错误在注释处,因为在两个always里面都改变了beepcnt 的值,这是不被允许的,情况与.Can't resolve multiple constant drivers for net相同,都是多处都驱动同一个变量的问题,去掉某一个即可。
我的工程做完了是这样的: