2017-03-14 1 views
0

Ich arbeite an einer Zuweisung machen einen Demux mit 2^n Ausgänge mit n Zeilen auswählen. Ich habe eine meine Eingabe (x Bit breit, in diesem Fall x ist 32 Bit) und meine Enable-Pins erledigt. Aber ich weiß nicht, wie man die Entity so aufbaut, dass meine Ausgabe 2^n ist mit n Select-Zeilen. Bisher meine Entity-Deklaration wie folgt aussieht:Wie richte ich die Entity für eine 1 bis 2^n Ausgabe demux mit n ein, selektiere Zeilen mit VHDL?

-- Entity declaration 
entity DEMUX is 
-- Get the size of an integer 
generic(Len :integer); 
-- Map input, output, selection and enable signal ports 
port(
    Inp : in std_logic_vector(Len-1 downto 0); -- Input pin 
    Ena : in std_logic; -- Enable pin 
    Sel : --How to set select lines? 
    Oup : --How to set outputs? 
); 
end DEMUX; 

Also im Grunde ich eine demux haben, die einen Eingang nimmt die x Bits in der Breite („01001011“ Folge von 32 Bits). Ich möchte das nehmen und es auf der anderen Seite des Demux weitergeben, wo es 2^n Anzahl von Pfaden braucht. Die Auswahlzeile bestimmt, welcher Pfad genommen werden soll. Ich wollte wissen, wie man die Deklaration von Entitäten für den Ausgang und den Auswahl-Pin einrichtet.

+0

Ihre Frage ist nicht klar: Was soll die Auswahl Pins tun und was soll die Ausgabe zeigen? – JHBonarius

+0

@ J.H.Bonarius Ich habe die Frage oben aktualisiert. – dikshant

Antwort

1

Wenn ich Sie richtig verstehe, haben Sie einen Eingang (x-Bits) und 2^n Ausgänge (jeweils x-Bits) Am einfachsten ist es, einen unbeschränkten Array-Datentyp in einem separaten Paket zu definieren. (Anmerkung: Dies ist VHDL-2008!)

library ieee; 
use ieee.std_logic_1164.all; 

package array_type is 
    type std_logic_vector_array is array (natural range <>) of std_logic_vector; 
end package; 

library ieee; 
use ieee.std_logic_1164.all; 
use work.array_type.all; 

-- Entity declaration 
entity DEMUX is 
    -- Get the size of an integer 
    generic(
     x : positive; 
     n : positive 
    ); 
    -- Map input, output, selection and enable signal ports 
    port(
     Inp : in std_logic_vector(x-1 downto 0); 
     Ena : in std_logic; 
     Sel : in std_logic_vector(0 to n-1); 
     Oup : out std_logic_vector_array(0 to (2**n)-1)(x-1 downto 0) 
    ); 
end DEMUX; 

edit: Ich habe gerade this topic die gleiche Erklärung.

Verwandte Themen