Вам нужно поменять все остальные элементы внутри блока, начинающиеся с
if (A="000") then
.
.
.
end if;
В VHDL нет ключевого слова "else if". Используйте "elsif". При кодировании оператора if-else с несколькими условиями вы не должны писать else после elsif или наоборот. Вы не можете использовать их обоих.
Ключевое слово "else" не объявляет конкретное утверждение. Он используется для проверки только одного условия и выполнения каких-либо действий, когда условие не выполняется.
Также при написании кода VHDL не забудьте включить библиотеки, которые вам понадобятся и могут понадобиться.
Исправленный код приведен ниже.
library ieee;
use ieee.std_logic_1164.all;
entity maashro3o is
port (Q: out bit_vector (0 to 7);
A: in bit_vector(2 downto 0);
en: in bit);
end maashro3o;
architecture maashro3o of maashro3o is
begin
process(A, en)
begin
if (en = '1') then
if (A = "000") then
Q <= "10000000";
elsif (A = "001") then
Q <= "01000000";
elsif (A = "010") then
Q <= "00100000";
elsif (A = "011") then
Q <= "00010000";
elsif (A = "100") then
Q <= "00001000";
elsif (A = "101") then
Q <= "00000100";
elsif (A = "110") then
Q <= "00000010";
elsif(A = "111") then
Q <= "00000001";
end if;
else
Q <= "00000000";
end if;
end process;
end maashro3o;