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 )状态。此外,您可以看到信号 da 是控制信号。所以z将从2bit多路复用器输出,y将从4bit多路复用器输出,d将切换2bit(2:1)多路复用器,ad将切换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 多路复用和两个输出的主要内容,如果未能解决你的问题,请参考以下文章

VHDL:当涉及时钟信号时,多路复用器输出不跟随输入

VHDL组件多路复用器不在modelsim中返回值

VHDL多路复用器实现?

使用 4 对 1 实现 8 对 1 多路复用器的 VHDL 程序(结构建模)

IO多路复用

第五十五节,IO多路复用