【问题标题】:VHDL code IF statement using a With XXX select alsoVHDL 代码 IF 语句也使用 With XXX 选择
【发布时间】:2016-07-17 23:03:45
【问题描述】:

帮助我的 VHDL 代码 尝试使用 IF 语句选择输出的输入 使用 WITH XXX 选择

s 是选择 d 和 e 用于 4 输入 y 是输出

帮助 谢谢

LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.all;



ENTITY mux_4_1 IS
PORT(
S : in STD_LOGIC;
d : IN STD_LOGIC_VECTOR (3 downto 0);
e : IN STD_LOGIC_VECTOR (3 downto 0);
y : OUT STD_LOGIC_VECTOR (0 to 6));



END mux_4_1;

ARCHITECTURE behavior OF mux_4_1 is
BEGIN
PROCESS(S,d,e)
BEGIN
   IF S = '0' THEN

      WITH d SELECT

      y <=      "1111110" WHEN "0000",--0
                "0110000" WHEN "0001",--1
                "1101101" WHEN "0010",--2
                "1111001" WHEN "0011",--3
                "0110011" WHEN "0100",--4
                "1011011" WHEN "0101",--5
                "1011111" WHEN "0110",--6
                "1110000" WHEN "0111",--7
                "1111111" WHEN "1000",--8
                "1111011" WHEN "1001",--9
                 "0000000" when others;



ELSE S = '1' THEN

      WITH e SELECT

      y <=      "1111110" WHEN "0000",--0
                "0110000" WHEN "0001",--1
                "1101101" WHEN "0010",--2
                "1111001" WHEN "0011",--3
                "0110011" WHEN "0100",--4
                "1011011" WHEN "0101",--5
                "1011111" WHEN "0110",--6
                "1110000" WHEN "0111",--7
                "1111111" WHEN "1000",--8
                "1111011" WHEN "1001",--9
                 "0000000" when others;


END IF;
END PROCESS;
END behavior;

错误 (10500):mux_4_1.vhd(23) 靠近文本“WITH”的 VHDL 语法错误;期待“end”、“(”、标识符(“with”是保留关键字)或顺序语句
错误 (10500):mux_4_1.vhd(25) 靠近文本“WHEN”的 VHDL 语法错误;期待“;”

【问题讨论】:

  • 您缺少MCVE明确的问题陈述部分。 帮助缺乏特异性。你得到什么错误信息做什么?请显示具体的错误信息。
  • 信息:运行 Quartus II 分析和综合信息:版本 9.1 Build 350 03/24/2010 Service Pack 2 SJ Web Edition 信息:处理开始时间:2016 年 7 月 16 日星期六 20:50:13 信息:命令: quartus_map --read_settings_files=on --write_settings_files=off mux_4_1 -c mux_4_1 错误(10500):mux_4_1.vhd(23)靠近文本“WITH”的VHDL语法错误;期待“end”,或“(”,或标识符(“with”是保留关键字),或顺序语句错误(10500):mux_4_1.vhd(25)附近文本“WHEN”的VHDL语法错误;期待“ ;"
  • ELSE 应该是一个ELSIF,后面是一个条件,后面应该是一个THEN
  • 请将您的信息添加到您的问题中,cmets 很脆弱。除了elsif,您似乎对错误消息中的顺序选择信号分配没有-2008 兼容性。搜索显示II 9.1初步支持-2008,不清楚是什么。使用 case 语句代替每个选定的信号赋值语句。
  • 在 IEEE Std 1076-2008 中引入了对选定信号分配的顺序(在进程或子程序中)支持,该标准仍未得到广泛或完全支持。选定的信号赋值语句呈现等效的 case 语句。

标签: vhdl quartus


【解决方案1】:

从你给出的唯一错误我可以看出,else 声明之后没有then

【讨论】:

  • 那个else应该是elsif,这需要一个then跟随条件。
  • 感谢您的帮助,我确实更改了它,但仍然出现错误。错误 (10500):mux_4_1.vhd(23) 靠近文本“WITH”的 VHDL 语法错误;期待“end”,或“(”,或标识符(“with”是保留关键字)或顺序语句。--------我试图让 d 和 e 位更改 4 位选择输出。再次感谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-22
  • 1970-01-01
相关资源
最近更新 更多