错误是
teclat.vhdl:57:12:需要“if”而不是“process”
这end if是它应该在的地方。我不明白为什么它不能像缺少end ifalways一样编译。
architecture v1 of teclat is
begin
process(Buttons, COL, ROW) begin
if (Buttons(1) = '1') then
COL <= "100";
ROW <= "100";
else if (Buttons(2) = '1') then
COL <= "010";
ROW <= "100";
else if (Buttons(3) = '1') then
COL <= "001";
ROW <= "100";
else
ROW <= "111";
end if;
end process;
end v1;
Run Code Online (Sandbox Code Playgroud)
有一个 end if它应该在的地方,但您缺少if打开的其余报表的那些。
您的代码当前被处理为
if (Buttons(1) = '1') then
COL <= "100";
ROW <= "100";
else
if (Buttons(2) = '1') then
COL <= "010";
ROW <= "100";
else
if (Buttons(3) = '1') then
COL <= "001";
ROW <= "100";
else
ROW <= "111";
end if;
end if; -- missing
end if; -- missing
Run Code Online (Sandbox Code Playgroud)
或者,使用elsif避免打开如此多的if语句。现在您只有一个语句 if并且只需要一个end if.
if (Buttons(1) = '1') then
COL <= "100";
ROW <= "100";
elsif (Buttons(2) = '1') then
COL <= "010";
ROW <= "100";
elsif (Buttons(3) = '1') then
COL <= "001";
ROW <= "100";
else
ROW <= "111";
end if;
Run Code Online (Sandbox Code Playgroud)