VerilogHDL的always过程中IF语句判断的表达式是不是不能包含事件列表以外的量?

2024-11-06 05:25:21
推荐回答(1个)
回答(1):

我在这里提供解决了:
http://hi.baidu.com/sex%5Fappeal/blog/item/44dbc450b3a7fe5f1038c289.html

不是的,如果ALWAYS后有时钟信号,那么这一部分是一时序电路,下面出现的IF后面的信号就不用加进去.

如果想产生组合逻辑,那么下面用到的所有信号必须全部添加到敏感列表中.

如下面两个例子:

1.时序:

always @ ( posedge clock )
begin
if ( reset )
wadd [ 3 : 0 ] <= 4'b0 ;
else
if ( wen )
wadd [ 3 : 0 ] <= wadd [ 3 : 0 ] + 1'b1 ;

end

2.逻辑

always @ ( A )
begin
case ( A )
4'h0 : B [ 3 : 0 ] = 4'd1 ;
4'h1 : B [ 3 : 0 ] = 4'd12 ;
4'h2 : B [ 3 : 0 ] = 4'd7 ;
4'h3 : B [ 3 : 0 ] = 4'd2 ;
4'h4 : B [ 3 : 0 ] = 4'd8 ;
4'h5 : B [ 3 : 0 ] = 4'd3 ;
4'h6 : B [ 3 : 0 ] = 4'd4 ;
4'h7 : B [ 3 : 0 ] = 4'd14 ;
4'h8 : B [ 3 : 0 ] = 4'd11 ;
4'h9 : B [ 3 : 0 ] = 4'd5 ;
4'ha : B [ 3 : 0 ] = 4'd0 ;
4'hb : B [ 3 : 0 ] = 4'd15 ;
4'hc : B [ 3 : 0 ] = 4'd13 ;
4'hd : B [ 3 : 0 ] = 4'd6 ;
4'he : B [ 3 : 0 ] = 4'd10 ;
4'hf : B [ 3 : 0 ] = 4'd9 ;
endcase
end