2016-05-08 2 views
0

У меня проблема с синтаксисом if VHDL. Код выглядит следующим образом:Оператор VHDL IF не работает

library IEEE; 
use IEEE.STD_LOGIC_1164.ALL; 

entity Shifting_zero is 
    port (clk : in STD_LOGIC; 
      zeros : buffer STD_LOGIC_VECTOR (3 downto 0)); 
end Shifting_zero; 

architecture Behavioral of Shifting_zero is 
begin 

process 
    begin 
     if (clk'event and clk='1') then 
      if (zeros='0111') then 
       zeros <= '1011'; 
      elsif (zeros='1011') then 
       zeros <= '1101'; 
      elsif (zeros-'1101') then 
       zeros <= '1110'; 
      else 
       zeros <= '0111'; 
      end if; 
     end if; 
end process; 

end Behavioral; 

я получаю следующие ошибки:

Ошибка линии 15. синтаксического анализа, неожиданный ПРОЦЕСС

линии 18. ошибку синтаксического анализа, неожиданный TICK

Строка 20. Ошибка синтаксического анализа, неожиданный TICK

Строка 23. Ошибка синтаксического анализа, неожиданный T ICK

Line ошибка 26. синтаксического анализа, неожиданные END, не ожидая SEMICOLON

линии 12. Нет списка чувствительности и не ждать в процессе (предупреждение)

Я новичок в VHDL и довольно путать по этим ошибкам.

+2

Обратите внимание на разнице между символьным литералом '“A'' и строковым литералом'»AAAA" '. –

+0

Вы разместили правильный код? Потому что номера строк не совпадают. Даже если мы игнорируем это, в строке 'process' нет ошибки, и нет также неожиданного' END'. –

ответ

-1

Хорошо, я нашел его.

мне пришлось использовать «вместо„в сигналах.

+1

Не в сигналах, а в векторах вместо простых типов. –

+0

Это не решает другие ошибки. –

Смежные вопросы