【问题标题】:Multiplexer in vhdl with structural design具有结构设计的 vhdl 中的多路复用器
【发布时间】:2020-05-08 09:09:21
【问题描述】:

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

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

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

  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;

【问题讨论】:

  • WARNING:HDLCompiler: - “mux41_impl”仍然是一个黑盒,因为它没有绑定实体。这是一个警告,因为不需要绑定组件。 MUX41_IMPL 的实体和架构在哪里?如果没有在参考库中找到的那些(可以工作),实例将不会被绑定。为什么此处显示 MUX41_IMPL_top?没用过。
  • MUX41_IMPL 是在哪里定义的?当您说我想实现以下MUX时,您的意思可能是说我想使用以下MUX
  • @rtx13 在代码部分,而不是 textbench 有 MUX41_IMPL_top 实体。这是我的 4:1 MUX 实体。 @user1155120 我将其重命名为 MUX41_IMPL_top 因为如果它被命名为组件本身,我会得到递归。
  • @rtx13 是的,我想使用这个 MUX 来实现逻辑含义“S0 => S1”。只需使用结构设计:)
  • 我仍然不确定我是否跟随。 MUX41_IMPL_SIMBOX(TEST_MUX41_IMPL) 使用 MUX41_IMPL_top(structure)。反过来,MUX41_IMPL_top(structure) 使用 MUX41_IMPLMUX41_IMPL 在哪里定义?换句话说,MUX41_IMPL 的(非结构)RTL 在哪里?

标签: vhdl hardware hdl xilinx-ise hardware-design


【解决方案1】:
entity MUX41_IMPL_top is
port (
    D0, D1, D2, D3: in STD_LOGIC;
    Sel : in std_logic_vector(1 downto 0);    
    mux_out : out STD_LOGIC

);
end MUX41_IMPL_top;

architecture structure of MUX41_IMPL_top is
begin

with Sel select
    mux_out <=  D0 when "00",
                D1 when "01",
                D2 when "10",            
                D3 when "11",            
                '0' when others;    

architecture structure;

【讨论】:

    猜你喜欢
    • 2016-09-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多