“附近的语法错误”;tmp“;用vhdl语言

“附近的语法错误”;tmp“;用vhdl语言,vhdl,xilinx,xilinx-ise,hardware-programming,Vhdl,Xilinx,Xilinx Ise,Hardware Programming,我正试图用Xilinx ise和VHDL语言编写串并转换代码,但出现以下错误: 第57行:“tmp”附近的语法错误 我的VHDL代码如下: library IEEE; use IEEE.STD_LOGIC_1164.ALL; ENTITY STP IS GENERIC(n : INTEGER :=10); PORT(din, clk, s: in std_logic; dout: out std_logic_vector(n-1 downto 0)); END STP; AR

我正试图用Xilinx ise和VHDL语言编写串并转换代码,但出现以下错误:

第57行:“tmp”附近的语法错误

我的VHDL代码如下:

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;

ENTITY STP IS
    GENERIC(n : INTEGER :=10);
    PORT(din, clk, s: in std_logic; dout: out std_logic_vector(n-1 downto 0));
END STP;

ARCHITECTURE BEHAV OF STP IS

    Signal tmp : std_logic_vector(n-1 downto 0);
    Signal c : INTEGER := 0;

BEGIN

    PROCESS(s, clk)
    BEGIN
        IF (s'event AND s = '1' AND clk'event AND clk = '1' AND c = n) THEN
            tmp(c) <= din;
            dout <= tmp;
            c <= 0;
        ELSEIF(s'event AND s = '1' AND clk'event AND clk = '1')
            tmp(c) <= din;
            c <= c +1;
        ELSE
        END IF;

    END PROCESS;

END BEHAV;
IEEE库;
使用IEEE.STD_LOGIC_1164.ALL;
实体STP是
通用(n:整数:=10);
端口(din、clk、s:输入标准逻辑;dout:输出标准逻辑向量(n-1到0));
末端STP;
STP的体系结构行为是
信号tmp:std_逻辑_向量(n-1向下至0);
信号c:整数:=0;
开始
过程(s、clk)
开始
如果(s'event和s='1'和clk'event和clk='1'和c=n),则

tmp(c)您忘记了
,然后
行中的
ELSEIF(s'event和s='1'和clk'event和clk='1')


还应该有
ELSIF
,而不是
ELSEIF
。实际上,在这种情况下不应该有这样的行,因为您的进程在时钟边缘只能有一条语句敏感。

您忘记了
然后
中的ELSEIF(s'event和s='1'和clk'event和clk='1')


还应该有
ELSIF
,而不是
ELSEIF
。实际上,在这种情况下,不应该有这样的行,因为您的流程只能有一条在时钟边缘敏感的语句。

我发布了您问题的直接答案,但我必须补充,您的设计不适合合成。时钟边缘只能有一条语句敏感,该语句之后不能有
ELSE
ELSIF
。通过查看stackoverflow的语法突出显示xDI posted直接回答您的问题,您已经可以看到错误,但我必须补充一点,您的设计不适合合成。时钟边缘上只能有一条语句敏感,该语句之后不能有
ELSE
ELSIF
。通过查看stackoverflow的语法高亮显示xDnow,您已经可以看到一个错误。我得到这个错误:第55行:靠近“THEN”的语法错误这一行现在看起来如何?请接受编辑或编辑您的代码,使其看起来正确,并在您的问题下方添加此编辑行。现在是编辑后的我的代码:ELSEIF(s'event and s='1'and clk'event and clk='1')那么我应该使用ELSEIF还是ELSE IF?您实际上不应该使用任何一个。看看我在你问题下面的评论。在另一种情况下,可能会出现
elsif
。现在我得到了这个错误:第55行:语法错误靠近“THEN”,这行现在看起来怎么样?请接受编辑或编辑您的代码,使其看起来正确,并在您的问题下方添加此编辑行。现在是编辑后的我的代码:ELSEIF(s'event and s='1'and clk'event and clk='1')那么我应该使用ELSEIF还是ELSE IF?您实际上不应该使用任何一个。看看我在你问题下面的评论。在其他情况下,可能会出现
elsif