vhdl中“tmp”附近的语法错误

时间:2017-05-11 11:14:15

标签: 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;

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;

有人可以帮我处理这个错误吗?

1 个答案:

答案 0 :(得分:2)

您忘记了THEN中的ELSEIF(s'event AND s = '1' AND clk'event AND clk = '1')

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