永发信息网

求解这段verilog语句中的编译错误

答案:5  悬赏:20  手机版
解决时间 2021-02-05 20:44
  • 提问者网友:雾里闻花香
  • 2021-02-05 12:22
module create_select(input wire [1:0] switch, input wire clk, output reg [3:0] select);
reg [5:0] cnt;
initial cnt<= 6'b000000;
if(switch[1:0]==2'b00)
select<=4'b1111;
else begin
always @(posedge clk) begin
if(cnt<4)
cnt<=cnt+1;
else
cnt<=0;
end
end
endmodule

ERROR:HDLCompilers:26 - "create_select.v" line 26 expecting 'endmodule', found 'if'
最佳答案
  • 五星知识达人网友:鱼忧
  • 2021-02-05 12:42
你的if 应该写到always块里面

"if(switch【1:0】==2‘b00)
select<=4'b1111
"
插入always@(posedge clk )与 if(cnt<4)之间。并加上else
另外begin end 块可以去掉。
全部回答
  • 1楼网友:梦中风几里
  • 2021-02-05 17:14
你得说的具体是做什么的,下面的修改是根据你写的,做的简单修改,应该编译是没问题的,建议还是多看看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'b
  • 2楼网友:逐風
  • 2021-02-05 15:40
同意以上两位,一般是在时钟的上升沿的时候做判断,在时序电路中我写的时候,第一句一般是always @(。。。。。);我看很多人这么写的。
  • 3楼网友:逃夭
  • 2021-02-05 14:19
if要用在always@() begin...end中,而不是把always放在if里面,基础错误啊!!
  • 4楼网友:低音帝王
  • 2021-02-05 13:36
楼主程序写的很不得要领呀 应该这样写 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'b你的if 应该写到always块里面 既 if(switch【1:0】==2‘b00) select
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯