If statement “附近的语法错误”;如果;(VHDL)

If statement “附近的语法错误”;如果;(VHDL),if-statement,syntax,vhdl,If Statement,Syntax,Vhdl,我得到了下面的错误“第44行:“If”附近的语法错误”和第65、67、69、73行中的类似错误(除了一些“Else”和其他“If”) 这可能是一个非常愚蠢的问题,但有人能帮忙吗?:) IEEE库; 使用IEEE.STD_LOGIC_1164.ALL; 使用IEEE.NUMERIC_STD.ALL; 使用IEEE.STD_LOGIC_UNSIGNED.ALL; 实体四位加法器十进制输出为 端口(A:标准逻辑向量(3到0); B:标准逻辑向量(3到0); Cin:标准逻辑; Res:输出标准逻辑向量

我得到了下面的错误“第44行:“If”附近的语法错误”和第65、67、69、73行中的类似错误(除了一些“Else”和其他“If”)

这可能是一个非常愚蠢的问题,但有人能帮忙吗?:)

IEEE库;
使用IEEE.STD_LOGIC_1164.ALL;
使用IEEE.NUMERIC_STD.ALL;
使用IEEE.STD_LOGIC_UNSIGNED.ALL;
实体四位加法器十进制输出为
端口(A:标准逻辑向量(3到0);
B:标准逻辑向量(3到0);
Cin:标准逻辑;
Res:输出标准逻辑向量(4到0);
Cout:输出标准逻辑;
Dsp:输出标准逻辑向量(3到0);
Seg:out标准逻辑向量(从6到0);
结束四位加法器十进制输出;
四位加法器的结构四位加法器的十进制输出是
--嵌入式信号
信号Tmp:STD_逻辑_向量(4到0);
开始
--显示选择

Dspif语句总是用作顺序语句。在进程或子程序(函数/过程)等位置可以找到顺序语句

体系结构四位加法器十进制输出四位加法器十进制输出的拱
...
开始
...
过程(全部)已开始
如果((A<9)和(B<9))='1',则
...
如果结束;
结束过程;
端结构四位加法器十进制输出;

-daniel

您正在适合并发语句的位置使用顺序语句(If语句)。您的代码还有其他问题。
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.NUMERIC_STD.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;

entity Four_Bit_Adder_Decimal_Output is
    Port ( A : in  STD_LOGIC_VECTOR (3 downto 0);
           B : in  STD_LOGIC_VECTOR (3 downto 0);
           Cin : in  STD_LOGIC;
           Res : out  STD_LOGIC_VECTOR (4 downto 0);
           Cout : out  STD_LOGIC;
           Dsp : out  STD_LOGIC_VECTOR (3 downto 0);
           Seg : out  STD_LOGIC_VECTOR (6 downto 0));
end Four_Bit_Adder_Decimal_Output;  

architecture Four_Bit_Adder_Decimal_Output_Arch of Four_Bit_Adder_Decimal_Output is
    --Embedded signals
    signal Tmp : STD_LOGIC_VECTOR (4 downto 0);

begin
    --Display Selection
    Dsp <= "0111";

    --Check if any of the 4-bit inputs are bigger than 9
    If ((A < 9) and (B < 9)) = '1' Then
        Tmp   <= ("00000" & A) + (B & "00000") + ("00000" & Cin);
        Res   <= Tmp;
        Cout    <= Tmp(4);
        --Output must be in decimal, so you print the first digit in the display
        seg     <= "1000000" when (Tmp = X"0") else
                   "1111001" when (Tmp = X"1") else
                   "0100100" when (Tmp = X"2") else
                   "0110000" when (Tmp = X"3") else
                   "0011001" when (Tmp = X"4") else
                   "0010010" when (Tmp = X"5") else
                   "0000010" when (Tmp = X"6") else
                   "1111000" when (Tmp = X"7") else
                   "0000000" when (Tmp = X"8") else
                   "0010000" when (Tmp = X"9") else
                   "1000000" when (Tmp = X"A") else
                   "1111001" when (Tmp = X"B") else
                   "0100100" when (Tmp = X"C") else
                   "0011001" when (Tmp = X"D") else
                   "0010010" when (Tmp = X"F");
        --Check if result has 2 digits, then turn ON Cout
        If (Tmp >= 10) Then
            Cout <= '1';
        Else
            Cout <= '0';
        End If;
    Else          -- If any of the inputs is bigger than 9, throw an error
        --Put "E" in the display
        Seg <= "0000110";
    End If;
end Four_Bit_Adder_Decimal_Output_Arch;
architecture Four_Bit_Adder_Decimal_Output_Arch of Four_Bit_Adder_Decimal_Output is
    ...
begin
    ...
    process(all) is begin
        if ((A < 9) and (B < 9)) = '1' then
        ...
        end if;
    end process;
end architecture Four_Bit_Adder_Decimal_Output_Arch;