在 verilog HDL 语言里面 case 语句分支 表示一个范围,如3~80 该怎么写。

2025-03-25 18:49:06
推荐回答(4个)
回答1:

可以在一个always @语句中定义一个状态变量state,比如在3——80时是state=1,当然也可以用逻辑语句。然后再在主状态机里进行对于state的判断。

回答2:

比如你定义一个14位状态变量A_cnt[13:0],那么代码编写如下:
alawys @(*)
begin
case(A_cnt[13:0])
14'b00000000000011://3
begin
#######
end
14'b00000000000100://4
begin
#######
end



14'b00000001010000://80
begin
#######
end

default
begin
end
endcase
end

个人认为是这样,或者是我理解错了你的意思。
不过你要是从3写道80,这样太麻烦了,你可以用嵌套来写就简单多了。有问题大家继续讨论。

回答3:

case语句只能全部列出来。用case语句有利于对电路状态的裁割,可以适当提高工作时钟频率,而用if语句不行,所以用case语句还是好些的,只是多列一些而已。。

回答4:

如果是范围的话,case语句要全部列出的,还不如用if语句方便