首页 文章

VHDL有三元运算符吗?

提问于
浏览
10

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

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

2 回答

  • 10

    没有 . 有人讨论过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;
    

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

  • 10

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

    destination <= signal1 when condition else signal2;
    

相关问题