我的VHDL代码是:
133 if(grupo = '000' or grupo = '111') then -- 0
134 elsif(grupo = '001' or grupo = '010') then -- 1
135 elsif(grupo = '011') then -- 2
136 elsif(grupo = '100') then -- -2
137 elsif(grupo = '101' or grupo = '110') then -- -1
138 end if;
然而,这个错误来了:
错误:COMP96_0049:Multiplicador.vhd:(133,17):表达式中出现语法错误。
错误:COMP96_0015:Multiplicador.vhd:(133,17):')'预期。
错误:COMP96_0019:Multiplicador.vhd:(133,18):关键字'然后'预期。
错误:COMP96_0019:Multiplicador.vhd:(141,6):预期关键字“结束”。
错误:COMP96_0049:Multiplicador.vhd:(141,20):表达式中出现语法错误。
错误:COMP96_0015:Multiplicador.vhd:(141,20):')'预期。
错误:COMP96_0019:Multiplicador.vhd:(141,21):关键字'然后'预期。
错误:COMP96_0019:Multiplicador.vhd:(147,9):预期关键字'进程'。
错误:COMP96_0015:Multiplicador.vhd:(150,8):';'预期
错误:COMP96_0016:Multiplicador.vhd:(150,10):预期的设计单位声明。
但我找不到解决方案。错误发生在这一部分。
答案 0 :(得分:9)
您的代码可能不止一件事。只显示报告语法错误的行并不总是足够的。有时实际错误可能在前一行。
if(grupo = '000' or grupo = '111') then
词汇元素'
(撇号)仅可用于指示属性,指示限定表达式的目标或作为字符文字的一部分。
'000'
等等都不是。属性名称是标识符,用于指定聚合应被视为的类型的类型名称。
这些是否应该使用括号? ("000"
,"111"
等。)
您尚未提供足够的示例代码来重现错误。
这成功地分析了:
entity multiplicador is
end entity;
library ieee;
use ieee.std_logic_1164.all;
architecture que of multiplicador is
signal grupo: std_logic_vector(2 downto 0);
begin
UNLABLED:
process (grupo)
begin
if (grupo = "000" or grupo = "111") then -- 0
elsif(grupo = "001" or grupo = "010") then -- 1
elsif(grupo = "011") then -- 2
elsif(grupo = "100") then -- -2
elsif(grupo = "101" or grupo = "110") then -- -1
end if;
end process;
end architecture;