如下的源碼便宜的時候報錯 :
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相同,都是多處都驅動同一個變量的問題,去掉某一個即可。
我的工程做完了是這樣的: