Verilog:如何在case语句中将值范围定义为单个条件?

时间:2019-05-24 10:31:50

标签: verilog

我想描述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的新手,对您的帮助将不胜感激。

1 个答案:

答案 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语句序列相同。