VHDL 多路复用和两个输出
Posted
技术标签:
【中文标题】VHDL 多路复用和两个输出【英文标题】:VHDL multiplexing and two outputs 【发布时间】:2018-05-01 11:12:49 【问题描述】:我需要你的帮助。我有一个嵌套条件的 VHDL,我想将它重新绘制成原理图。我想我应该使用一个 2bit 多路复用器和 4bit 多路复用器。请问有没有人可以帮助我?我尝试了谷歌,但没有找到任何可以帮助我的东西。
process (a,b,c,d) begin
y <= '0';
z <= b;
if d='1' then
y <= b;
if a = '0' then
y <= c;
end if;
z <= '1';
else
y <= '1';
z <= d;
end if;
end process;
a,b,c,d 是 std_logic in
z, y 是标准逻辑输出
【问题讨论】:
这看起来有点像家庭作业问题 欢迎来到 ***。你能澄清你的实际问题吗?我不知道您所说的“重绘成原理图”是什么意思。你想画画吗? 我给你一个提示:看看输出信号,z
只依赖于信号d
状态,而y
依赖于两个信号(d
,a
)状态。此外,您可以看到信号 d
和 a
是控制信号。所以z
将从2bit多路复用器输出,y
将从4bit多路复用器输出,d
将切换2bit(2:1)多路复用器,a
和d
将切换4bit(4:1 ) 多路复用器。
【参考方案1】:
这是一个 4 位多路复用器的代码,您可以轻松修改为 2 位
LIBRARY ieee;
USE ieee.std_logic_1164.ALL;
ENTITY mux_4_1 IS
PORT (
a : IN STD_LOGIC_VECTOR(3 DOWNTO 0);
s : IN STD_LOGIC_VECTOR(1 DOWNTO 0);
b : OUT STD_LOGIC);
END ENTITY;
ARCHITECTURE behavioural OF mux_4_1 IS
BEGIN
PROCESS (a, s)
BEGIN
IF s = "00" THEN
b <= a(0);
ELSIF s = "01" THEN
b <= a(1);
ELSIF s = "10" THEN
b <= a(2);
ELSE
b <= a(3);
END IF;
END PROCESS;
END ARCHITECTURE;
【讨论】:
以上是关于VHDL 多路复用和两个输出的主要内容,如果未能解决你的问题,请参考以下文章