2014-09-21 3 views
0

Кусок моего 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): Ключевое слово «then» ожидается.

Ошибка: COMP96_0019: Multiplicador.vhd: (141, 6): Ожидается ключевое слово «конец».

Ошибка: COMP96_0049: Multiplicador.vhd: (141, 20): Синтаксическая ошибка в выражении.

Ошибка: COMP96_0015: Multiplicador.vhd: (141, 20): ')' ожидается.

Ошибка: COMP96_0019: Multiplicador.vhd: (141, 21): Ключевое слово «then» ожидается.

Ошибка: COMP96_0019: Multiplicador.vhd: (147, 9): Ожидается ключевое слово «процесс».

Ошибка: COMP96_0015: Multiplicador.vhd: (150, 8): ';' ожидается.

Ошибка: COMP96_0016: Multiplicador.vhd: (150, 10): ожидается декларация конструкторского подразделения.


Но я не могу найти решение. Ошибка в этой части.

+0

Вы должны * наверное * перепроверить количество открытых скобок вы имеете относительно закрыть скобки. – Makoto

ответ

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; 
+0

Вы абсолютно правы. Например, мне просто пришлось изменить «101» на «101». Проблема заключалась в одиночных кавычках. Странно, что я никогда не видел ее в учебнике по VHDL. Спасибо. –