VHDL中的案例陈述
问题描述:
使用VHDL编程时,您可以在case语句中使用变量吗?这个变量将通过的情况下VHDL中的案例陈述
即
case task is
when 1 =>
when 2 =>
when number =>
这是一个好修改?
答
对于模拟或合成?
无论哪种方式,从documentation:
的选择必须是常数相同离散型作为表达式的。
使用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-08 03:35:05
@Binary Nerd:为什么你不能使用变量来存储状态?标准实践在这里.. – 2010-04-08 12:54:28
最终取决于OP试图实现什么,这是一个伟大的未知......他/她肯定可以使用(希望注册的)变量来维护状态,如果这是他/她打算做的事情。 – vladr 2010-04-23 20:40:02