1

私は VHDL にまったく慣れていないので、他のゲートを使用せずに論理含意S0 => S1に対して次のMUXを実装したいと考えています。

4-1 マルチプレクサ

構造設計を使用したいのですが、主な問題の 1 つは、ポートを正しくマップする方法がわからないため、指定された意味を実装していないことです。

これまでのコードはコンパイルされ、iSim は起動しますが、次の 2 つの警告が表示されます。

  1. mux41_impl は、バインディング エンティティがないため、ブラック ボックスのままです。
  2. mux_out_test の値は U

さらに、コンポーネントがエンティティと正確に一致する必要があることは理解していますが、名前をエンティティ名に変更すると、不正な再帰メッセージが表示されます。

コード

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;

entity MUX41_IMPL_top is
port (
    D0, D1, D2, D3, S0, S1: in STD_LOGIC;
    mux_out : out STD_LOGIC
);
end MUX41_IMPL_top;

architecture structure of MUX41_IMPL_top is

component MUX41_IMPL
    port (
        D0, D1, D2, D3, S0, S1: in STD_LOGIC;
        mux_out : out STD_LOGIC
    );
end component;

begin

u1: MUX41_IMPL port map (D0, D1, D2, D3, S0, S1, mux_out);
end structure;

テストベンチ コード

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;

entity MUX41_IMPL_SIMBOX is
end MUX41_IMPL_SIMBOX;

architecture TEST_MUX41_IMPL of MUX41_IMPL_SIMBOX is

component MUX41_IMPL is
    port (
        D0, D1, D2, D3, S0, S1: in STD_LOGIC;
        mux_out : out STD_LOGIC
    );
end component;

signal D0_test : STD_LOGIC := '1';
signal D1_test : STD_LOGIC := '0';
signal D2_test : STD_LOGIC := '1';
signal D3_test : STD_LOGIC := '1';
signal S0_test, S1_test : STD_LOGIC := '0';
signal mux_out_test : STD_LOGIC;

for my_MUX41_IMPL : MUX41_IMPL use entity work.MUX41_IMPL_top(structure);

begin
    my_MUX41_IMPL : MUX41_IMPL
    port map (
    D0 => D0_test,
    D1 => D1_test,
    D2 => D2_test,
    D3 => D3_test,
    S0 => S0_test,
    S1 => S1_test,
    mux_out => mux_out_test
    );

    S0_test <= not S0_test after 2 ns;
    S1_test <= not S1_test after 4 ns;

end TEST_MUX41_IMPL;
4

1 に答える 1