何时使用“case”以及何时使用“with select”

时间:2012-12-11 22:16:31

标签: vhdl

假设我们想要将4位数(swr)输出到7段显示器(seg)。在第一种方法中,我使用case语句:

process (swr)
begin  
   case swr is
     when "0000" => seg<="1000000";
     when "0001" => seg<="1111001";

     -- and so on...

     when others => seg<="-------";
   end case;
end process;

或者我可以使用“with select”语句(这次不在进程中):

with swr select
  seg<= "1000000" when "0000",
  "1111001" when "0001" ,

  -- and so on...

  "-------" when others;

请告诉我这两种方法有什么区别? (一个比另一个快?或者使用更多的逻辑门?或者......)

2 个答案:

答案 0 :(得分:0)

区别在于一个是顺序语句,必须在进程内部发生,而另一个是并发语句,并且出现在进程外部。选择的信号分配(使用swr select ...)本质上是一个简短的概念,用于创建一个过程以及适当的灵敏度列表和案例陈述。

答案 1 :(得分:0)

他们将产生基本相同的逻辑(或者至少如果他们不提出错误的话):(

就模拟器而言,它们应该具有相同的效果 - 第二种形式创建一个对swr敏感的隐式过程,这与您更明确的第一种形式相同。