1

マルチプレクサの「テンプレート」を書きました。

私の目標は、s="01" または s="11" のときに y=1 になることです。

では、d0 とそれが保持する値をどのようにリンクすればよいでしょうか。

(この例では、d0 は 0、d1=1、d2=0、d3=1 を保持する必要があります。)

library IEEE;
use IEEE.std_logic_1164.all;

entity mux4v1 is 

 port(
        d0  : in    std_logic;  -- 0
        d1  : in    std_logic;  -- 1
        d2  : in    std_logic;  -- 0
        d3  : in    std_logic;  -- 1
        s   : in    std_logic_vector(1 downto 0); -- my inputs controller via switches
        y   : out   std_logic
    );

end mux4v1;


architecture struct of mux4v1 is

begin
  with s select
  y <= d0 when "00",
       d1 when "01",
       d2 when "10",
       d3 when "11";
end struct;
4

1 に答える 1

2

あなたが求めているのは、あなたがどのように入力して入力するかだ'0'と思います'1'...

答えは、外部から、マルチプレクサを使用する設計にあります。

シミュレーションでは、上位レベルのデザインを作成し、その中でマルチプレクサをインスタンス化します。より高いレベルの設計はマイクロプロセッサのようなものかもしれませんが、ここでは単純にマルチプレクサをテストしたいので、簡単なテストベンチを作成できます。

通常、テストベンチには入力も出力もないため、設計の最上位を形成し、シミュレータで実行します。

entity mux_tb is
end mux_tb;

内部には、DUT (被試験デバイス) とそれをテストするその他のコンポーネント、それらを相互接続する信号、クロックやその他の信号を生成するプロセス、デバイス出力を期待値と比較してエラーを報告するプロセスが含まれています。 .

architecture simple of mux_tb is

entity mux4v1 is 

signal test_d0 : std_logic := 0;  
signal test_d1 : std_logic := 1;
signal test_d2 : std_logic := 0;
signal test_d3 : std_logic := 0;

signal sel   :   std_logic_vector(1 downto 0); 
signal output :  std_logic;

begin

DUT : entity work.mux4v1
 port map(
        d0  => test_d0,
        d1  => test_d1,
        d2  => test_d2,
        d3  => test_d3
        s   => sel,
        y   => output
    );

Stimulus : process
begin
   sel <= "00";
   wait for 1 us;
   sel <= "01";
   -- and so on
end process;

end simple;

合成の場合、MUX を FPGA に実装したいだけであれば、そのまま合成できます。次に、FPGA をプログラムするためのビットファイルを生成するために配置配線する前に、もう 1 つの手順があります。

そのステップは、デバイス ピンを入力信号と出力信号のそれぞれに割り当てることです。

これらのピンの割り当ては、FPGA の配線方法に応じて、記述した制約ファイルで行われます。たとえば、D0 に接続したいスイッチと Y に接続したい LED がある場合、ボードの回路図からスイッチが接続されている FPGA ピンを見つけ、そのピンを入力 D0 に接続する制約を記述します。この制約ファイル (およびいくつかの例) の構文は、FPGA ツールのドキュメントに記載されています。

于 2014-10-24T09:53:35.330 に答える