If statement 进程行中的vhdl代码中存在语法错误

If statement 进程行中的vhdl代码中存在语法错误,if-statement,signals,vhdl,If Statement,Signals,Vhdl,我试着做一个8状态的3位运行LED。当输入x为1时,LED将向前移动,当x为0时,LED将向后移动。有下列情况 我已经试了几个小时了,不知道怎么了。我现在正在学习vhdl,所以请对我放松点。它说是语法错误,但我不知道在哪里 library IEEE; use IEEE.std_logic_1164.all; entity Quiz10 is port( x : in std_logic; output : out std_logic_ve

我试着做一个8状态的3位运行LED。当输入x为1时,LED将向前移动,当x为0时,LED将向后移动。有下列情况

我已经试了几个小时了,不知道怎么了。我现在正在学习vhdl,所以请对我放松点。它说是语法错误,但我不知道在哪里

library IEEE;
use IEEE.std_logic_1164.all;


entity Quiz10 is 

 port(
        x   : in    std_logic;
        output  : out   std_logic_vector(6 downto 0)
    );

end Quiz10;


architecture arch1 of Quiz10 is
    signal digit : integer range 0 to 9 := 0;

begin

process (x,digit)
begin
    if x = '1' then
        digit <=digit+1;
    elsif x = '0' then
        digit <=digit-1;
    elsif (digit>=9)
        digit<=0;
    end if;
end process;




output <="1111110" when digit = 0 else
               "0110000" when digit = 1 else
               "1101101" when digit = 2 else
               "1111001" when digit = 3 else
               "0110011" when digit = 4 else
               "1011011" when digit = 5 else
               "1011111" when digit = 6 else
               "1110000" when digit = 7 else
               "1111111" when digit = 8 else
               "1111011" when digit = 9 else
               "0000000";
    
  -- Your VHDL code defining the model goes here

end arch1;
IEEE库;
使用IEEE.std_logic_1164.all;
实体Quiz10是
港口(
x:在标准逻辑中;
输出:输出标准逻辑向量(6到0)
);
结束Quiz10;
Quiz10的架构arch1是
信号位:0到9的整数范围:=0;
开始
进程(x,数字)
开始
如果x='1',则

digit我刚刚用Modelsim尝试了你的代码,唯一的语法错误是,正如@Tricky所指出的,第二个
elsif
之后缺少
,你没有描述错误。如果您试图直接在演示板上实现此功能,则应将x用作时钟,并在边缘上进行评估。在合成之后,增量反转数字的二进制表示的至少一个元素,提供反转和(逻辑元素)延迟,门控振荡器。提供一个。它表示错误是语法错误,正在处理中。如果您的
elseif
丢失
,则
实际的错误消息,该消息应该有行号,并且可能在该行上有一个字符位置。在这个问题上。