你的if 应该写到always块里面
既
"if(switch【1:0】==2‘b00)
select<=4'b1111
"
插入always@(posedge clk )与 if(cnt<4)之间。并加上else
另外begin end 块可以去掉。
你得说的具体是做什么的,下面的修改是根据你写的,做的简单修改,应该编译是没问题的,建议还是多看看Verilog方面的书
module create_select(switch, clk, select);
input wire [1:0] switch;
input wire clk;
output reg [3:0] select;
reg [5:0] cnt;
initial cnt<= 6'b000000;
always @ (posedge clk)
begin
if(switch[1:0]==2'b00)
select<=4'b1111;
else begin
if(cnt<4)
cnt<=cnt+1;
else
cnt<=0;
end
end
endmodule
楼主程序写的很不得要领呀
应该这样写
module create_select(input wire [1:0] switch, input wire clk, output reg [3:0] select);
reg [5:0] cnt;
initial
begin
cnt = 6'b000000;
end
always @(posedge clk)
if(switch[1:0]==2'b00)
select <=4'b1111;
else
if(cnt<4)
cnt<=cnt+1;
else
cnt<=0;
endmodule
if要用在always@() begin...end中,而不是把always放在if里面,基础错误啊!!
同意以上两位,一般是在时钟的上升沿的时候做判断,在时序电路中我写的时候,第一句一般是always @(。。。。。);我看很多人这么写的。