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'
求解这段verilog语句中的编译错误
答案:5 悬赏:20 手机版
解决时间 2021-02-05 20:44
- 提问者网友:雾里闻花香
- 2021-02-05 12:22
最佳答案
- 五星知识达人网友:鱼忧
- 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 块可以去掉。
既
"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
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯