基于VHDL的多路复用器

基于VHDL的多路复用器,vhdl,fpga,hdl,intel-fpga,quartus,Vhdl,Fpga,Hdl,Intel Fpga,Quartus,我尝试创建多路复用器: LIBRARY ieee; USE ieee.std_logic_1164.all; -- Entity Declaration ENTITY multiplekser IS -- {{ALTERA_IO_BEGIN}} DO NOT REMOVE THIS LINE! PORT ( U : IN STD_LOGIC_VECTOR(2 downto 0); V : IN STD_LOGIC_VECTOR(2 downto 0); W : IN STD_LOGIC_

我尝试创建多路复用器:

LIBRARY ieee;
USE ieee.std_logic_1164.all;


--  Entity Declaration

ENTITY multiplekser IS
-- {{ALTERA_IO_BEGIN}} DO NOT REMOVE THIS LINE!
PORT
(
U : IN STD_LOGIC_VECTOR(2 downto 0);
V : IN STD_LOGIC_VECTOR(2 downto 0);
W : IN STD_LOGIC_VECTOR(2 downto 0);
X : IN STD_LOGIC_VECTOR(2 downto 0);
Y : IN STD_LOGIC_VECTOR(2 downto 0);
S : IN STD_LOGIC_VECTOR(2 downto 0);
CS : IN STD_LOGIC;
M : OUT STD_LOGIC_VECTOR(2 downto 0)
);
-- {{ALTERA_IO_END}} DO NOT REMOVE THIS LINE!

END multiplekser;


--  Architecture Body

ARCHITECTURE multiplekser_architecture OF multiplekser IS


BEGIN
    PROCESS(CS)
    BEGIN
    if (CS = '1') then
        with S select
            M<=U when "000",
                V when "001",
                W when "010",
                X when "011",
                Y when others;
    else 
        M<="ZZZ";
    end if;
    END PROCESS;
END multiplekser_architecture;
ieee库;
使用ieee.std_logic_1164.all;
--实体声明
实体多路复用器是
--{{ALTERA\u IO\u BEGIN}请勿删除此行!
港口
(
U:标准逻辑向量(2到0);
V:标准逻辑向量(2到0);
W:标准逻辑向量(2到0);
X:标准逻辑向量(2到0);
Y:标准逻辑向量(2到0);
S:标准逻辑向量(2到0);
CS:标准逻辑;
M:输出标准逻辑向量(2到0)
);
--{{ALTERA_IO__END}请勿删除此行!
终端多路复用器;
--建筑主体
架构multiplekser\u multiplekser的架构是
开始
过程(CS)
开始
如果(CS='1'),则
用S选择

M您使用的是并发语句,其中需要顺序语句

您应该使用case语句或一组if
语句。例如:

architecture multiplekser_architecture of multiplekser is
begin
    process(cs, s, u, v, w, x, y)
    begin
        if cs = '1' then
            case S is
                when "000"  => m <= u;
                when "001"  => m <= v;
                when "010"  => m <= w;
                when "011"  => m <= x;
                when others => m <= y;
            end case;
        else
            m <= "ZZZ";
        end if;
    end process;
end architecture;
architecture multiplekser\u multiplekser的体系结构是
开始
过程(cs、s、u、v、w、x、y)
开始
如果cs='1',则
案例S是

当“000”=>m时,您的“选择S”看起来有问题。(编辑:看到有人已经发布了更正)。如果语言设置为VHDL-2008(ModelSim编译得很好),那么OP的代码应该得到支持,但我用13.0(最新版本,但公认不是最新版本)尝试过,而且Altera的2008合规性似乎落后了。@fru1tbat:Ah。我的回答基于VHDL 2002。谢谢你收集了额外的信息。@Kulis:你试过把语言设置为2008吗?发生什么事了?我只有13.1版。