2

假设我们要输出一个 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;

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

4

2 回答 2

0

不同的是,一个是顺序语句,必须出现在进程内部,而另一个是并发语句,出现在进程之外。选定的信号分配(使用 swr select ...)本质上是用于创建过程以及适当的敏感度列表和案例语句的简写概念。

于 2012-12-11T22:59:03.953 回答
0

他们会产生基本相同的逻辑(或者至少如果他们不这样做,我会提交一个错误:)

As far as the simulator goes they should have the same effect too - the second form creates an implicit process sensitive to swr which is the same as your more explicit first form.

于 2012-12-12T11:31:49.753 回答