我喜欢三元运算符vs if子句的整洁 .
该运算符是否存在于vhdl中?我的搜索恰恰相反 . 我还检查了when语句,但它不是运算符,我希望能够在进程中使用它...
没有 . 有人讨论过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) ) . 但是,您必须为您感兴趣的每种类型编写它 .
q <= sel(reset, '0', d)
不是你喜欢的C / C,但你可以使用:
destination <= signal1 when condition else signal2;
2 回答
没有 . 有人讨论过VHDL-2008,但没有进入 . 你有几个选择 . 如果您的工具支持VHDL-2008,则现在支持条件赋值作为顺序语句(它们以前只是并发),因此您可以编写如下内容:
如果你还没有2008,那就写一个函数(
q <= sel(reset, '0', d)
) . 但是,您必须为您感兴趣的每种类型编写它 .不是你喜欢的C / C,但你可以使用: