VHDL有三元运算符吗?

use*_*795 12 ternary-operator vhdl

我喜欢三元运算符vs if子句的整洁.

该运算符是否存在于vhdl中?我的搜索恰恰相反.我还检查了when语句,但它不是运算符,我希望能够在进程中使用它...

EML*_*EML 12

没有.有人讨论过VHDL-2008,但没有进入.你有几个选择.如果您的工具支持VHDL-2008,则现在支持条件赋值作为顺序语句(它们之前只是并发),因此您可以编写如下内容:

process(clock)
begin
  if rising_edge(clock) then
    q <= '0' when reset else d; -- ie. much like q <= reset? '0':d;
  end if;
end process;
Run Code Online (Sandbox Code Playgroud)

如果你还没有2008,那就写一个函数(q <= sel(reset, '0', d)).但是,您必须为您感兴趣的每种类型编写它.


Cal*_*dan 11

不是你喜欢的C/C++,但你可以使用:

destination <= signal1 when condition else signal2;
Run Code Online (Sandbox Code Playgroud)