首页 > 解决方案 > 如果我确实有结束,为什么我会收到一条错误消息“期待结束”?

问题描述

我试图制作一个 4 位加法器/减法器(我试图在添加 2s 补码之前让它工作)并且我不断收到这些错误消息:

错误 (10500):ASU.vhd(16) 的 VHDL 语法错误,靠近文本“if”;期待“end”,或“(”,或标识符(“if”是保留关键字),或并发语句
错误(10500):ASU.vhd(21)靠近文本“else”的VHDL语法错误;期待“ end”,或“(”,或标识符(“else”是保留关键字),或并发语句
错误 (10500):ASU.vhd(26) 靠近文本“if”的 VHDL 语法错误;期待“;” ,或标识符(“if”是保留关键字),或“架构”

真正让我困惑的是它说如果预期结束,因为我确实写了一个结束如果。如果有人能帮我找出我的代码哪里出错了,我将不胜感激!到目前为止,这是我的代码:

LIBRARY ieee;
USE ieee.std_logic_1164.all;
USE ieee.std_logic_unsigned.all;

ENTITY ASU IS
PORT (Cin  : IN STD_LOGIC;
     X, Y: IN STD_LOGIC_VECTOR(3 DOWNTO 0);
        S   : OUT STD_LOGIC_VECTOR(3 DOWNTO 0);
        Cout, Overflow : out std_logic);
END ASU;

ARCHITECTURE Behaviour OF ASU IS
   signal Sum : STD_LOGIC_VECTOR(3 DOWNTO 0);
BEGIN

if Cin = '1' then 
   sum     <= ('0'& X)-('0'&Y);
   S       <= SUM(3 DOWNTO 0);
   Cout    <= Sum(3);
   Overflow <= Sum(4) XOR X(3) XOR Y(3) XOR Sum(3);
else
    sum     <= ('0'&X)+('0'&Y);
    S       <= SUM(3 DOWNTO 0);
    Cout    <= Sum(3);
    Overflow <= Sum(4) XOR X(3) XOR Y(3) XOR Sum(3); 
end if;

END Behaviour;

标签: vhdlquartusintel-fpga

解决方案


if,elseendif条件是顺序语句,因此只能出现在进程内部。


推荐阅读