0
У меня возникли проблемы с получением этого кода для работы:Если ... еще ошибки (новичок, VHDL)
if(s="00") then
f3 <= x and not(y);
elsif(s="11") then
f3 <= not(y) xor x;
else
f3 <= x or y;
end if;
где:
f3 : out std_logic_vector(2 downto 0);
x, y : in std_logic_vector(2 downto 0);
s : in std_logic_vector(1 downto 0)
Конечно, я не могу действительно полагаться на сообщения об ошибках компиляции, поскольку они не являются специфическими для ошибки. Заранее спасибо!
Весь код:
library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;
entity cw1 is
port(
f0, f2 : out std_logic;
f3 : out std_logic_vector(2 downto 0);
a0, a1, a2, a3, a4 : in std_logic;
x, y : in std_logic_vector(2 downto 0);
s : in std_logic_vector(1 downto 0)
);
end entity;
architecture A of cw1 is
signal s1 : std_logic_vector(3 downto 0);
signal a : std_logic_vector(2 downto 0);
begin
s1 <= a0 & a1 & a2 & a3;
a <= a0 & a1 &a2;
with a select
f2 <= not(a4) when "000",
a3 when "001"|"010"|"101"|"111",
a4 or not(a3) when "011"|"100",
'-' when "110",
'X' when others;
if s="00" then
f3 <= x and not(y);
elsif s="11" then
f3 <= not(y) xor x;
else
f3 <= x or y;
end if;
end A;
Что _is_ ошибку? Что вы определяете как «работающее»? –
Ошибка в том, что она не компилируется. Ошибка (10500): Синтаксическая ошибка VHDL в zA.vhd (36) рядом с текстом «if»; ожидающий «конец» или «(» или «идентификатор» («if» - зарезервированное ключевое слово) или параллельный оператор и Ошибка (10500): Синтаксическая ошибка VHDL в zA.vhd (36) рядом с текстом «then» Ожидание «<=» повторено несколько раз – Maniek
Ошибка где-то впереди этого кода, и синтаксический анализатор выходит из строя. Вы можете исключить все круглые скобки. Они не нужны для условных выражений, а оператор isn ' t a. –