在VHDL中使用4:1 Mux的异或

在VHDL中使用4:1 Mux的异或,vhdl,xor,Vhdl,Xor,我需要用4:1复用器创建XOR(我知道没有复用器会更容易…) 我发现这个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_vect

我需要用4:1复用器创建XOR(我知道没有复用器会更容易…)

我发现这个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;
IEEE库;
使用IEEE.STD_LOGIC_1164.ALL;
实体多路复用器4_1是
港口(
i0:标准逻辑中;
i1:标准逻辑中;
i2:标准逻辑中;
i3:标准逻辑中;
sel:标准逻辑向量(1到0);
bitout:输出标准逻辑
);
端多路复用器4_1;
多路复用器4_1的结构是
开始
过程(i0、i1、i2、i3、sel)
开始
case sel是

当“00”=>比特时,我假设您必须构建一个具有2个输入的异或门。一种可能是将两个输入分别连接到
sel(0)
sel(1)
。然后,您可以将常量值连接到剩余输入
i0
i3
,以便MUX4的真值表与异或门的真值表相同。

您的MUX基于选择信号将一个输入连接到输出

如果您将选择信号想象为XOR门的“输入”,那么您只需要确定XOR输入(选择信号)的每个组合的输出应该是什么。然后连接多路复用器输入,以便为每个选择输入输出正确的电平

这方面的VHDL语法只是

inst: entity work.multiplexer4_1 
port map
(
   i0 => '1'; -- or '0'

etc..

   sel => xor_input_signals;
   bitout => xor_output_signal
);
IEEE库;
使用IEEE.STD_LOGIC_1164.ALL;
实体xor4_1是
港口(
--i0:标准逻辑中;
--i1:标准逻辑中;
--i2:标准逻辑中;
--i3:标准逻辑中;
sel:标准逻辑向量(1到0);
bitout:输出标准逻辑
);
末端xor4_1;
xor4_1的体系结构是
信号i0:std_逻辑;
信号i1:std_逻辑;
信号i2:std_逻辑;
信号i3:std_逻辑;
开始
过程(i0、i1、i2、i3、sel)
开始
case sel是

当“00”=>bitout时,XOR门必须有多少个输入?换句话说,当您实例化mux时,分别将“0”、“1”、“1”、“0”连接到i0、i1、i2、i3。那么如何在VHDL中实现这一点?你给我举个例子吗?@EML:这个问题听起来像是家庭作业。我想让OP自己解决这个问题。@AzzUrr1:什么给你带来了问题?您可以实例化MUX4实体,然后将适当的信号连接到其输入和输出。
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;