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