关于if语句语法的VHDL错误10500

关于if语句语法的VHDL错误10500,vhdl,Vhdl,我是vhdl新手,我有简单的代码来模拟slt操作;但是,我得到以下错误: 错误(10500):文本“if”附近SetLessThan.vhd(14)处的VHDL语法错误;应为“end”或“(”或标识符(“if”是保留关键字)或并发语句 有人能帮忙吗?(代码粘贴在下面) 我试着把()放在a

我是vhdl新手,我有简单的代码来模拟slt操作;但是,我得到以下错误: 错误(10500):文本“if”附近SetLessThan.vhd(14)处的VHDL语法错误;应为“end”或“(”或标识符(“if”是保留关键字)或并发语句

有人能帮忙吗?(代码粘贴在下面) 我试着把()放在a
library IEEE;
use IEEE.STD_LOGIC_1164.all;

entity SetLessThan is
     port(
         a : in std_logic_vector(7 downto 0);
         b : in std_logic_vector(7 downto 0);
         cout : out std_logic_vector(7 downto 0)
         );
end SetLessThan;

architecture dataflow of SetLessThan is
begin
            if a < b then
                cout <= '00000001';
            else
                cout <= '00000000';
            end if;
end dataflow;
IEEE库;
使用IEEE.STD_LOGIC_1164.all;
实体SetLessThan是
港口(
a:标准逻辑向量(7到0);
b:标准逻辑向量(7到0);
输出标准逻辑向量(7到0)
);
端部无刚毛;
SetLessThan is的体系结构数据流
开始
如果acout您试图在适合并发语句的位置使用顺序语句

 conditional_signal_assignment ::=
    target  <=  options conditional_waveforms ;

 conditional_waveforms ::=
      { waveform when condition else }
       waveform [ when condition ]
您可以将if-then-else移动到process语句中,也可以将其作为条件波形(signal)赋值语句重新写入

 conditional_signal_assignment ::=
    target  <=  options conditional_waveforms ;

 conditional_waveforms ::=
      { waveform when condition else }
       waveform [ when condition ]
然后,您将在另一类错误中发现,字符串文字由一对双引号(而不是单引号)分隔

演示两种形式以及双引号:

architecture dataflow of SetLessThan is
begin
process (a,b)
    begin
        if a < b then
            cout <= "00000001";
        else
            cout <= "00000000";
        end if;
    end process;
end dataflow;

architecture cond_waveform of SetLessThan is
begin
    cout <= "00000001" when a < b else
            "00000000";
end architecture;
SetLessThan的架构数据流是 开始 过程(a、b) 开始 如果acout您试图在适合并发语句的位置使用顺序语句

 conditional_signal_assignment ::=
    target  <=  options conditional_waveforms ;

 conditional_waveforms ::=
      { waveform when condition else }
       waveform [ when condition ]
您可以将if-then-else移动到process语句中,也可以将其作为条件波形(signal)赋值语句重新写入

 conditional_signal_assignment ::=
    target  <=  options conditional_waveforms ;

 conditional_waveforms ::=
      { waveform when condition else }
       waveform [ when condition ]
然后,您将在另一类错误中发现,字符串文字由一对双引号(而不是单引号)分隔

演示两种形式以及双引号:

architecture dataflow of SetLessThan is
begin
process (a,b)
    begin
        if a < b then
            cout <= "00000001";
        else
            cout <= "00000000";
        end if;
    end process;
end dataflow;

architecture cond_waveform of SetLessThan is
begin
    cout <= "00000001" when a < b else
            "00000000";
end architecture;
SetLessThan的架构数据流是 开始 过程(a、b) 开始 如果acout不允许在体系结构主体raw中使用
if..then..else
。必须将它们包含在
过程中

或者,您可以对并发信号分配使用不同的语法,这称为条件信号分配。在您的情况下,它将变成:

cout <= "0000001" when a < b else "00000000";

cout不允许在体系结构主体raw中使用
if..then..else
。必须将它们包含在
过程中

或者,您可以对并发信号分配使用不同的语法,这称为条件信号分配。在您的情况下,它将变成:

cout <= "0000001" when a < b else "00000000";

无法尝试在流程语句中移动if块。请尝试在流程语句中移动if块。您能解释什么是条件波孔(信号)赋值语句吗?或者发布解释它的链接吗?您能解释什么是条件波孔(信号)赋值语句吗?或者发布解释它的链接吗?