2016-04-25 8 views
1
-- Code your design here 

library IEEE; 

use IEEE.std_logic_1164.all; 

entity encoder8_3 is 

    port(

     din : in STD_LOGIC_VECTOR(7 downto 0); 

     dout : out INTEGER RANGE 0 TO 15 

     ); 

end encoder8_3; 

architecture encoder8_3_arc of encoder8_3 is 

begin 

    dout <= "0" when (din="10000000") else 
      "1" when (din="01000000") else 
      "2" when (din="00100000") else 
      "3" when (din="00010000") else 
      "4" when (din="00001000") else 
      "5" when (din="00000100") else 
      "6" when (din="00000010") else 
      "7"; 

end encoder8_3_arc; 

このコードは実行されますか?そのバイナリ同等物の代わりに整数を返したいと思います。エンコーダVHDLコード

+2

どのような質問ですか? –

+0

私はちょうどそれを追加しました。 –

答えて

1

なぜこのコードはありませんをコンパイルしますか?

整数リテラルVHDLでは引用符を持っていないので:

library IEEE; 

use IEEE.std_logic_1164.all; 

entity encoder8_3 is 

    port(

     din : in STD_LOGIC_VECTOR(7 downto 0); 

     dout : out INTEGER RANGE 0 TO 15 

     ); 

end encoder8_3; 

architecture encoder8_3_arc of encoder8_3 is 

begin 

    dout <= 0 when (din="10000000") else 
      1 when (din="01000000") else 
      2 when (din="00100000") else 
      3 when (din="00010000") else 
      4 when (din="00001000") else 
      5 when (din="00000100") else 
      6 when (din="00000010") else 
      7; 

end encoder8_3_arc; 

http://www.edaplayground.com/x/5f2M

1

あなたは整数値の前後に引用符を削除する必要があります。

dout <= 0 when (din="10000000") else 
     1 when (din="01000000") else 
     2 when (din="00100000") else 
     3 when (din="00010000") else 
     4 when (din="00001000") else 
     5 when (din="00000100") else 
     6 when (din="00000010") else 
     7; 

は、単純なテストベンチを実行しますここに:http://www.edaplayground.com/x/5bwv私は次の出力を得ました:

enter image description here