verilog中这几种写法有区别吗?我觉得没什么区别啊, 写代码的时候遇到几个语法问题,在此向各位求助一下
由always引导的顺序语句都会被执行一遍啊,为什么第二种写法通不过编译呢???写法1:reg[15:0]cnt_2;always@(posedgeclkornegedg...
由always引导的顺序语句都会被执行一遍啊,为什么第二种写法通不过编译呢???
写法1:reg [15:0]cnt_2;
always @(posedge clk or negedge rst_n)
begin
if(!rst_n) cnt_2<=0;
else if(cnt_2==16'd50000) cnt_2<=0;
cnt_2<=cnt_2+1;
end
结果:通过编译
写法2:reg [15:0]cnt_2;
always @(posedge clk or negedge rst_n)
begin
cnt_2<=cnt_2+1;
if(!rst_n) cnt_2<=0;
else if(cnt_2==16'd50000) cnt_2<=0;
end
结果:编译出现错误
写法3:reg [15:0]cnt_2;
always @(posedge clk or negedge rst_n)
begin
if(!rst_n) cnt_2<=0;
else if(cnt_2==16'd50000) cnt_2<=0;
else cnt_2<=cnt_2+1;
end
结果:通过编译
我觉得这几种写法,都很正确啊,为什么写法2出现错误呢????? 展开
写法1:reg [15:0]cnt_2;
always @(posedge clk or negedge rst_n)
begin
if(!rst_n) cnt_2<=0;
else if(cnt_2==16'd50000) cnt_2<=0;
cnt_2<=cnt_2+1;
end
结果:通过编译
写法2:reg [15:0]cnt_2;
always @(posedge clk or negedge rst_n)
begin
cnt_2<=cnt_2+1;
if(!rst_n) cnt_2<=0;
else if(cnt_2==16'd50000) cnt_2<=0;
end
结果:编译出现错误
写法3:reg [15:0]cnt_2;
always @(posedge clk or negedge rst_n)
begin
if(!rst_n) cnt_2<=0;
else if(cnt_2==16'd50000) cnt_2<=0;
else cnt_2<=cnt_2+1;
end
结果:通过编译
我觉得这几种写法,都很正确啊,为什么写法2出现错误呢????? 展开
2个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询