VHDL 案例语句中的选项顺序

VHDL Order of options in case statement

我正在用 VHDL 为基本 CPU 控制单元编写 FSM。在一个过程中,我使用 case 语句来解码指令代码。我的问题是,when "..." => statements matter/change 的顺序是什么,还是推断的 "circuit" 是一样的?我怀疑它会,但我想确定一下。

我宁愿按易于定位的顺序排列案例,而不是按价值排序。

订单没有任何作用。

case State is
  when A => ...
  when B => ...
end case;

等同于

case State is
  when B => ...
  when A => ...
end case;

我想一些综合工具可以根据顺序产生不同的状态编码,但这不应该是您应该担心的事情。

你的顺序没有区别,因为综合工具会收集 case 语句的所有分支,并将它们放在一个大的多路复用器中。多路复用器将根据您的不同分支条件(显然是您的输入)进行评估。

不要忘记 when others => 语句 ;)

有关 "case statement" 的更多信息: http://www.vhdl-online.de/courses/system_design/vhdl_language_and_syntax/sequential_statements/case_statement

when "..." => 语句的顺序不可能 matter/change 模拟或综合中的任何内容,因为在 VHDL 中它们 必须 是互斥的。