4

用 VHDL 编程时,可以在 case 语句中使用变量吗?此变量将被其中一种情况修改

IE

case task is

when 1 =>

when 2 => 

when number =>

这个可以吗?

4

1 回答 1

3

模拟还是综合?

无论哪种方式,从文档中:

选择必须是与表达式具有相同离散类型的常量。

用于if测试number,或者:

if task=number then
  ...
else
  case task is
    when 1 => ...
    when 2 => ...
    when others => ...
  end case;
end if;

或者

case task is
  when 1 => ...
  when 2 => ...
  when others =>
    if task=number then
      ...
    else
      ...
    end if;
end case;

您的选择取决于您是否希望if task=number测试结果或when ... =>测试结果具有优先权?(例如,假设无论出于何种原因number=1,您想要when 1 =>if task=number最终提供您的结果?)

在普通情况下,case语句综合为多路复用器;该if语句综合为一个比较器和两输入多路复用器。一个喂另一个。

于 2010-04-08T02:56:23.460 回答