VHDL中的案例陈述

问题描述:

使用VHDL编程时,您可以在case语句中使用变量吗?这个变量将通过的情况下VHDL中的案例陈述

case task is 

when 1 => 

when 2 => 

when number => 

这是一个好修改?

+1

可能值得发布更多的代码,以便我们可以看到您的建议如何使用变量!如果您计划编写综合代码,那么您必须确保您不使用变量来维护状态,并且仅用于计算的临时结果。 – 2010-04-08 03:35:05

+0

@Binary Nerd:为什么你不能使用变量来存储状态?标准实践在这里.. – 2010-04-08 12:54:28

+0

最终取决于OP试图实现什么,这是一个伟大的未知......他/她肯定可以使用(希望注册的)变量来维护状态,如果这是他/她打算做的事情。 – vladr 2010-04-23 20:40:02

对于模拟或合成?

无论哪种方式,从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语句作为比较器和双输入多路复用器进行综合。一个喂入另一个。