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;

これら 2 つのアプローチの違いを教えてください。(一方が他方より速いか、またはより多くの論理ゲートを使用するか、または ...)

4

2 に答える 2

0

それらは実質的に同じロジックを生成します(または、少なくともそうでない場合は、バグを報告します:)

シミュレータに関する限り、それらも同じ効果を持つはずです.2番目の形式は、swrより明示的な最初の形式と同じであることに敏感な暗黙のプロセスを作成します。

于 2012-12-12T11:31:49.753 に答える
0

違いは、1 つは順次ステートメントであり、プロセス内で発生する必要があるのに対し、もう 1 つは並行ステートメントであり、プロセスの外部に現れることです。選択された信号の割り当て (swr select ... を使用) は、本質的に、適切な機密リストとケース ステートメントと共にプロセスを作成するための簡単な概念です。

于 2012-12-11T22:59:03.953 に答える