请问case语句范围太大如何解决?

比如我的verilog里case范围从0-255,我需要一个个手写出来吗?

难道有0255种情况?不应该吧,
比如0
10是一样的,10~20是一样的,这种你就先除以10再做处理,
如果是没有规律的很多一样的,就在case后面写多个

你的需求肯定可以简化的,说一下你的具体需求呢

找到规律,就不用一个个写出来了,使用程序表达出来就可以了。

可以用 casez 和通配符 试试,当然你这个是 0-255 用这个合适,如果 11-37 这样的数就没办法了


reg    [15:0]    case_val;
reg    [15:0]    val;
//? 是通配符
casez(case_val)
16'h123?:                    val    <= 0;    //范围 0x1230-0x123f
16'h12??:                    val    <= 1;    //范围 0x1200-0x12ff
16'b1000_1001_????_????:    val    <= 1;    //范围 0x8900-0x89ff
16'b1000_1001_0???_????:    val    <= 1;    //范围 0x8900-0x897f
16'b1000_1001_01??_????:    val    <= 1;    //范围 0x8940-0x897f
16'b1000_????_0101_????:    val    <= 1;    //范围 
endcase