【问题标题】:syntax-error in vhdl code in the process line进程行中 vhdl 代码中的语法错误
【发布时间】:2021-04-30 20:44:40
【问题描述】:

我正在尝试做一个 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;

【问题讨论】:

  • 您没有描述错误。如果您尝试直接在演示板上实现此功能,则 x 应用作时钟并在边缘进行评估。在综合之后,增量反转数字的二进制表示的至少一个元素,提供反转和(逻辑元素)延迟,门控振荡器。提供minimal reproducible example
  • 它说错误是语法错误,它正在处理函数中
  • 您的elseif丢失了then
  • 实际的错误消息,它应该有一个行号,并且可能在该行上有一个字符位置。在问题中。

标签: if-statement signals vhdl


【解决方案1】:

我刚刚用 Modelsim 尝试了你的代码,唯一的语法错误是,正如 @Tricky 指出的,在第二个 elsif 之后缺少 then

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-14
    • 1970-01-01
    • 1970-01-01
    • 2023-03-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多