我想描述200多种情况下的大型多路复用器,每种情况都包含数十个值。一些示例情况:
9000 - 9029 : addr <= 0;
9030 - 9065 : addr <= 1;
9066 - 9131 : addr <= 2;
...
有什么方法可以像VHDL一样描述它
when 9000 to 9027 => addr_int <= 0;
还是SystemVerilog的case(value) inside
?
我找不到类似的东西,只有解决方案使用逗号分隔各个值,或者将'casez'与'?两者都不成问题-整个范围是7000个值,范围不是固定的。
我不是Verilog的新手,对您的帮助将不胜感激。
答案 0 :(得分:1)
您无法使用case
语句在Verilog中执行此操作。您必须使用一系列if
... else
语句。
if ((value >=9000) && (value<=9029))
addr <= 0;
else if ((value >=9030) && (value<=9065))
addr <= 0;
else if ((value >=9066) && (value<=9131))
addr <= 0;
else ...
Verilog中的case
语句基本上与if
... else
语句序列相同。