比如我的verilog里case范围从0-255,我需要一个个手写出来吗?
难道有0255种情况?不应该吧,10是一样的,10~20是一样的,这种你就先除以10再做处理,
比如0
如果是没有规律的很多一样的,就在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