【问题标题】:XOR using a 4:1 Mux in VHDL在 VHDL 中使用 4:1 多路复用器进行异或
【发布时间】:2013-05-02 20:04:16
【问题描述】:

我需要使用 4:1 Mux 创建 XOR(我知道没有 Mux 会更容易...)

我发现这个 4:1 的有用示例

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;

entity multiplexer4_1 is
port (
      i0 : in std_logic;
      i1 : in std_logic;
      i2 : in std_logic;
      i3 : in std_logic;
     sel : in std_logic_vector(1 downto 0);
     bitout : out std_logic
     );
end multiplexer4_1;

architecture Behavioral of multiplexer4_1 is
begin

process(i0,i1,i2,i3,sel)
begin
case sel is
  when "00" => bitout <= i0;
  when "01" => bitout <= i1;
  when "10" => bitout <= i2;
  when others => bitout <= i3; 
end case; 
end process;

end Behavioral;

但是我有点困惑如何告诉多路复用器在输入 01 或 10 时输出 1,否则输出 0。 我可以为 i0-i3 赋值吗?抱歉,我是 VHDL 新手

【问题讨论】:

  • 异或门必须有多少个输入?

标签: vhdl xor


【解决方案1】:
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;

entity xor4_1 is
port (
  --i0 : in std_logic;
  --i1 : in std_logic;
  --i2 : in std_logic;
  --i3 : in std_logic;
 sel : in std_logic_vector(1 downto 0);
 bitout : out std_logic
 );
end xor4_1;

architecture Behavioral of xor4_1 is

signal    i0 : std_logic;
signal    i1 : std_logic;
signal    i2 : std_logic;
signal    i3 : std_logic;



begin

process(i0,i1,i2,i3,sel)
begin
case sel is
  when "00" => bitout <= i0;
  when "01" => bitout <= i1;
  when "10" => bitout <= i2;
  when others => bitout <= i3; 
end case; 
end process;

-- Now just hardcode the input bits to the appropriate values.
-- I might be mistaken, but I'm pretty sure this is how the implementation tool
--s actually would implement an XOR gates.
i0    <= '0';
i1    <= '1';
i2    <= '1';
i3    <= '0';

end Behavioral;

【讨论】:

    【解决方案2】:

    我假设您必须构建一个具有 2 个输入的 XOR 门。一种可能性是将两个输入分别连接到sel(0)sel(1)。然后,您可以将常量值连接到剩余的输入 i0i3,这样 MUX4 的真值表就与 XOR 门的真值表相同。

    【讨论】:

    • 换句话说,当你实例化你的多路复用器时,将'0'、'1'、'1'、'0'分别连接到i0、i1、i2、i3。
    • 那么我如何在 VHDL 中做到这一点?你有我的例子吗?
    • @EML:这个问题对我来说听起来像是家庭作业。我想让 OP 自己解决问题。
    • @AzzUrr1:你遇到了什么问题?您可以实例化一个 MUX4 实体,然后将适当的信号连接到它的输入和输出。
    【解决方案3】:

    您的 MUX 根据选择的信号将一个输入连接到输出。

    如果您认为选择信号是 XOR 门的“输入”,您只需要弄清楚 XOR 输入(选择信号)的每种组合的输出应该是什么。然后连接 MUX 输入,以便为每个选择输入输出正确的电平。

    VHDL 语法只是

    inst: entity work.multiplexer4_1 
    port map
    (
       i0 => '1'; -- or '0'
    
    etc..
    
       sel => xor_input_signals;
       bitout => xor_output_signal
    );
    

    【讨论】:

      猜你喜欢
      • 2021-08-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-06
      相关资源
      最近更新 更多