vhdl - 如果我确实有结束,为什么我会收到一条错误消息“期待结束”?
问题描述
我试图制作一个 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;
解决方案
if
,else
和endif
条件是顺序语句,因此只能出现在进程内部。
推荐阅读
- c++ - C/C++:预处理器指令应该如何处理宏参数列表?
- php - 无法使用 php 在此数组中获取值
- laravel - firstOrCreate 和 firstOrNew 在 laravel 中不起作用
- sql - 按滚动或围绕一个月的时间段进行分区
- python - 在 VS Code 上运行 Django 程序时出现问题
- javascript - 通过javascript中的相似键对数组项进行分组
- jquery - 将事件处理程序绑定到动态创建的元素的问题
- swift - 如何在命令行工具应用程序中将 Timer.publish(...) 与 RunLoop.current... 结合使用?
- javascript - C:\fakepath\ 下载文件时出现问题
- laravel - 使用 laravel 6 在 laravel 上上传的图像和图像无法在线工作