【发布时间】:2021-03-25 11:20:06
【问题描述】:
我正在为一个项目编写一个七段解码器的代码,但是当我检查语法错误时,它向我显示了这些:
错误 (10500):Sevenseg.vhd(16) 靠近文本“with”的 VHDL 语法错误;期望“end”,或“(”,或标识符(“with”是保留关键字),或顺序语句
错误 (10500):Sevenseg.vhd(17) 靠近文本“when”的 VHDL 语法错误;期待“;”
我的代码:
library IEEE;
use IEEE.std_logic_1164.all;
entity sevenseg is
port (m3, m2, m1, m0:in std_logic;
out7 : out std_logic_vector (6 downto 0));
end sevenseg;
architecture ssdec of sevenseg is
signal min : std_logic_vector (3 downto 0);
begin
process(m0, m1, m2, m3)
begin
min <= m3 & m2 & m1 & m0; --concatenate m0, m1, m2, m3 into vector min
with min select --here is where the error specify
out7 <= "0111111" when "0000" | "1010", -- 0
"0000110" when "0001" | "1011", -- 1
"1010111" when "0010" | "1100", -- 2
"1001111" when "0011" | "1101", -- 3
"1100110" when "0100" | "1110", -- 4
"1101101" when "0101" | "1111", -- 5
"1111100" when "0110", -- 6
"0000111" when "0111", -- 7
"1111111" when "1000", -- 8
"1100111" when "1001"; -- 9
end process;
end ssdec;
什么是错误以及我如何纠正它,谢谢。
【问题讨论】:
-
这称为选择信号分配。参见 IEEE Std 1076-2008 10. 顺序语句,10.5 信号分配语句,10.5.4 选定信号分配。在修订版 -2008 之前,选定的信号分配仅可用作并发语句(例如 -2002 9 并发语句、9.5 并发信号分配语句、9.5.2 选定信号分配)。另请参阅 -2008 11.6 并发信号分配语句。
标签: syntax-error vhdl