2016-04-25 4 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; 

Wird dieser Code ausgeführt? Ich möchte die Ganzzahlen anstelle der binären Entsprechung zurückgeben.Encoder VHDL-Code

+2

was ist die Frage? –

+0

Ich habe es gerade hinzugefügt. –

Antwort

1

Warum wird dieser Code nicht kompiliert?

Da Ganzzahlliterale in VHDL keine Anführungszeichen haben:

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

Sie haben die Anführungszeichen um die Integer-Werte zu entfernen:

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; 

ein einfaches Testbench Lauf hier: http://www.edaplayground.com/x/5bwv Ich habe folgende Ausgabe:

enter image description here