vhdl 中 "tmp" 附近的语法错误
Syntax error near "tmp" in vhdl
我正在尝试用 Xilinx ise 和 VHDL 语言编写用于串行并行转换的代码,但出现此错误:
Line 57: Syntax error near "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;
有人可以帮我处理这个错误吗?
您忘记了第 ELSEIF(s'event AND s = '1' AND clk'event AND clk = '1')
行中的 THEN
。
也应该有ELSIF
而不是ELSEIF
。实际上,在这种情况下不应该有这样的行,因为您的进程只能有一个对时钟边沿敏感的语句。
我正在尝试用 Xilinx ise 和 VHDL 语言编写用于串行并行转换的代码,但出现此错误:
Line 57: Syntax error near "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;
有人可以帮我处理这个错误吗?
您忘记了第 ELSEIF(s'event AND s = '1' AND clk'event AND clk = '1')
行中的 THEN
。
也应该有ELSIF
而不是ELSEIF
。实际上,在这种情况下不应该有这样的行,因为您的进程只能有一个对时钟边沿敏感的语句。