赞
踩
module test(clk,reset,min_H,min_L,min_H_cy,min_L_cy); input clk,reset; output [3:0] min_H,min_L; output min_H_cy,min_L_cy; reg [3:0] min_H,min_L; assign min_L_cy=(min_L==4'b1001)?1:0; always @(posedge clk) begin if(reset) min_L<=4'b0000; if(min_L_cy==1) begin min_L<=4'b0000; end else min_L<=min_L+1; end assign min_H_cy=(min_H==4'b0101)?1:0; //另一种写法是assign min_H_cy=(min_H==4'b0101)&(min_L_cy==1)?1:0 ,需要改下注释P1后的写法; always @(posedge clk) begin if(reset) min_H<=4'b0000; if(min_L_cy==1) //P1 begin if(min_H_cy==1) begin min_H<=4'b0000; end //always不能写min_L; else min_H<=min_H+1; end end endmodule
1)每个always 处理一位(例如59的个位“9”),例如:min_L已经在第一个always处理过了,就不能在第二个always中赋值;(经验总结)
2)每一个begin-end 相当于(c语言中的)一个括号;
3)if-if else-if else … … 最后要补else,(即使语句无实际功能,例如a<=a;)要养成好习惯;
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。