具有结构设计的vhdl多路复用器

具有结构设计的vhdl多路复用器,vhdl,hardware,hdl,xilinx-ise,hardware-design,Vhdl,Hardware,Hdl,Xilinx Ise,Hardware Design,我对VHDL完全陌生,我想实现它 以下MUX用于逻辑蕴涵S0=>S1 不使用其他门 我想使用结构设计,但我的一个主要问题是我不知道如何使用 正确映射端口,以便实现给定的含义 到目前为止,我的代码正在编译,iSim启动,但我收到两条警告: mux41_impl仍然是一个黑盒,因为它没有绑定实体 mux_out_测试的值为U 此外,我知道我的组件必须与实体完全匹配 但如果我将其重命名为实体名称,则会收到非法的recurion消息 代码 library IEEE; use IEEE.STD_LOGI

我对VHDL完全陌生,我想实现它 以下MUX用于逻辑蕴涵S0=>S1 不使用其他门

我想使用结构设计,但我的一个主要问题是我不知道如何使用 正确映射端口,以便实现给定的含义

到目前为止,我的代码正在编译,iSim启动,但我收到两条警告:

  • mux41_impl仍然是一个黑盒,因为它没有绑定实体
  • mux_out_测试的值为U
  • 此外,我知道我的组件必须与实体完全匹配 但如果我将其重命名为实体名称,则会收到非法的recurion消息

    代码

    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;
    
    测试台代码

    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;
    
    IEEE库;
    使用IEEE.STD_LOGIC_1164.ALL;
    实体MUX41_IMPL_SIMBOX为
    结束MUX41_IMPL_SIMBOX;
    MUX41\U IMPL\U SIMBOX的架构测试\U MUX41\U IMPL为
    组件MUX41_IMPL为
    港口(
    D0、D1、D2、D3、S0、S1:标准逻辑中;
    多路复用输出:输出标准逻辑
    );
    端部元件;
    信号D0_测试:标准_逻辑:='1';
    信号D1_测试:标准_逻辑:='0';
    信号D2_测试:标准_逻辑:='1';
    信号D3_测试:标准_逻辑:='1';
    信号S0_测试,S1_测试:标准_逻辑:='0';
    信号多路复用输出测试:标准逻辑;
    对于my_MUX41_IMPL:MUX41_IMPL使用实体work.MUX41_IMPL_top(结构);
    开始
    my_MUX41_IMPL:MUX41_IMPL
    港口地图(
    D0=>D0_测试,
    D1=>D1_测试,
    D2=>D2_测试,
    D3=>D3_试验,
    S0=>S0_试验,
    S1=>S1_测试,
    mux\u out=>mux\u out\u测试
    );
    S0_测试
    实体MUX41_IMPL_top为
    港口(
    D0、D1、D2、D3:标准逻辑中;
    Sel:标准逻辑向量(1到0);
    多路复用输出:输出标准逻辑
    );
    端部MUX41_IMPL_top;
    MUX41_IMPL_top的架构结构为
    开始
    使用Sel select
    
    mux_out警告:HDLCompiler:-“mux41_impl”仍然是一个黑盒,因为它没有绑定实体。这是一个警告,因为组件不需要绑定。MUX41_IMPL的实体和体系结构在哪里?如果没有在参考库(可以工作)中找到的引用,实例将不会被绑定。为什么这里显示MUX41\u IMPL\u top?未使用。在哪里定义了
    MUX41\u IMPL
    ?当您说我要实现以下MUX时,您可能是想说我要使用以下MUX吗?@rtx13在代码部分,而不是文本工作台中有
    MUX41\u IMPL\u top
    实体。这是我的4:1多路复用实体@user1155120我将其重命名为MUX41_IMPL_top,因为如果它的命名与组件本身类似,则会得到一个递归。@rtx13是的,我想使用此MUX实现逻辑含义“S0=>S1”。仅仅通过使用结构设计:)我仍然不确定我是否遵循
    MUX41\u IMPL\u SIMBOX(TEST\u MUX41\u IMPL)
    使用
    MUX41\u IMPL\u top(结构)
    。反过来,
    MUX41\u IMPL\u top(结构)
    使用
    MUX41\u IMPL
    。在哪里定义了
    MUX41\u IMPL
    ?换句话说,
    MUX41\u IMPL
    的(非结构性)RTL在哪里?