2017-03-14 10 views
0

私は代入に取り組んでいますが、n個の選択行を持つ2^n出力のdemuxを作っています。私は自分の入力(xビット幅、この場合はxは32ビット)と私の有効化ピンの世話をしている。しかし、エンティティを設定する方法を知りませんので、出力は2行n行でn行になります。これまでのところ、私のエンティティの宣言は次のようになります。VHDLを使用してn個の選択ラインを持つ1〜2^n出力demuxのエンティティを設定するにはどうすればよいですか?

-- 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; 

だから、基本的に私は、幅xビット(32ビットの「01001011」シーケンス)である1つの入力を取っているデマルチプレクサを持っています。私はそれを取って、それが2^n個のパスを取るデマルチプレクサの反対側でそれを渡したいと思う。選択行は、どのパスを取るかを決定します。出力と選択ピンのエンティティ宣言を設定する方法を知りたかったのです。

+0

あなたの質問は明確ではありません:選択したピンに何をしたいのですが、出力に何を表示したいですか? – JHBonarius

+0

@ J.H.Bonarius上記の質問を更新しました。 – dikshant

答えて

1

あなたが正しく理解している場合は、入力(xビット)と2^n出力(各xビット)があります。 最も簡単なのは、制約のない配列のデータ型を別のパッケージに定義することです。 (注:これは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; 

編集:私はちょうど同じことを説明するthis topicを見つけました。

関連する問題