Verilog中,case语句是并发的么?即只会执行其中一条么? 这样的话,是不是以下两个程序是等价的? 5
例如:case(qout)3'd0:d=8'b00000001;3'd1:d=8'b00000010;3'd2:d=8'b00000100;3'd3:d=8'b00001...
例如:
case (qout)
3'd0:d=8'b00000001;
3'd1:d=8'b00000010;
3'd2:d=8'b00000100;
3'd3:d=8'b00001000;
3'd4:d=8'b00010000;
3'd5:d=8'b00100000;
3'd6:d=8'b01000000;
3'd7:d=8'b10000000;
default:d=8'b00000000;
endcase
case (qout)
3'd0:d<=8'b00000001;
3'd1:d<=8'b00000010;
3'd2:d<=8'b00000100;
3'd3:d<=8'b00001000;
3'd4:d<=8'b00010000;
3'd5:d<=8'b00100000;
3'd6:d<=8'b01000000;
3'd7:d<=8'b10000000;
default:d<=8'b00000000;
endcase
上述程序我已经在QUARTUS软件中仿真过,仿真波形是一样的~ 展开
case (qout)
3'd0:d=8'b00000001;
3'd1:d=8'b00000010;
3'd2:d=8'b00000100;
3'd3:d=8'b00001000;
3'd4:d=8'b00010000;
3'd5:d=8'b00100000;
3'd6:d=8'b01000000;
3'd7:d=8'b10000000;
default:d=8'b00000000;
endcase
case (qout)
3'd0:d<=8'b00000001;
3'd1:d<=8'b00000010;
3'd2:d<=8'b00000100;
3'd3:d<=8'b00001000;
3'd4:d<=8'b00010000;
3'd5:d<=8'b00100000;
3'd6:d<=8'b01000000;
3'd7:d<=8'b10000000;
default:d<=8'b00000000;
endcase
上述程序我已经在QUARTUS软件中仿真过,仿真波形是一样的~ 展开
4个回答
展开全部
case只执行其中1条 相当于是1个赋值。 以上2个可以看成是相同。
不过具体还得和上下的程序相关。
如果你要做设计的话,即程序需要综合,建议所有的赋值都用非阻塞“<=”。
在testbench中,才用阻塞赋值 “=” 。
还是要说,和上下的程序有关。
initial begin
a <= b;
case (qout)
3'd0:d<=8'b00000001;
3'd1:d<=8'b00000010;
3'd2:d<=8'b00000100;
3'd3:d<=8'b00001000;
3'd4:d<=8'b00010000;
3'd5:d<=8'b00100000;
3'd6:d<=8'b01000000;
3'd7:d<=8'b10000000;
default:d<=8'b00000000;
endcase
end
initial begin
a = b;
case (qout)
3'd0:d=8'b00000001;
3'd1:d=8'b00000010;
3'd2:d=8'b00000100;
3'd3:d=8'b00001000;
3'd4:d=8'b00010000;
3'd5:d=8'b00100000;
3'd6:d=8'b01000000;
3'd7:d=8'b10000000;
default:d=8'b00000000;
endcase
end
这2个你再仿真下吧。
这已经和case无关了,主要是阻塞和非阻塞。
不过具体还得和上下的程序相关。
如果你要做设计的话,即程序需要综合,建议所有的赋值都用非阻塞“<=”。
在testbench中,才用阻塞赋值 “=” 。
还是要说,和上下的程序有关。
initial begin
a <= b;
case (qout)
3'd0:d<=8'b00000001;
3'd1:d<=8'b00000010;
3'd2:d<=8'b00000100;
3'd3:d<=8'b00001000;
3'd4:d<=8'b00010000;
3'd5:d<=8'b00100000;
3'd6:d<=8'b01000000;
3'd7:d<=8'b10000000;
default:d<=8'b00000000;
endcase
end
initial begin
a = b;
case (qout)
3'd0:d=8'b00000001;
3'd1:d=8'b00000010;
3'd2:d=8'b00000100;
3'd3:d=8'b00001000;
3'd4:d=8'b00010000;
3'd5:d=8'b00100000;
3'd6:d=8'b01000000;
3'd7:d=8'b10000000;
default:d=8'b00000000;
endcase
end
这2个你再仿真下吧。
这已经和case无关了,主要是阻塞和非阻塞。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
给你个观念
non-blocking ----> synthesize 完你想让他变DFF
blocking ----> synthesize 完你想让他变 NAND, NOR, INV, etc...
切记先想清楚电路再写code,verilog不是写C....
non-blocking ----> synthesize 完你想让他变DFF
blocking ----> synthesize 完你想让他变 NAND, NOR, INV, etc...
切记先想清楚电路再写code,verilog不是写C....
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2011-02-16
展开全部
综合成电路没区别的。仿真时候会有区别
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询