')'预期。 - VHDL

时间:2014-09-21 05:41:44

标签: vhdl

我的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):预期的设计单位声明。


但我找不到解决方案。错误发生在这一部分。

1 个答案:

答案 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;