Debugging “经典之谜”;语法错误“;VHDL-1261

Debugging “经典之谜”;语法错误“;VHDL-1261,debugging,vhdl,fpga,Debugging,Vhdl,Fpga,请帮助我,我已经尝试了我能想到的一切(并在过程中发现了许多不相关的错误)。我最终尽可能地减少了它,但错误仍然存在。 请保存我的理智并增加我的调试清单 编辑: 多亏了这些评论,我找到了开始的位置和所有的声明。 if VHDL1261 rock_pkg.vhd(33)附近的语法错误 您的函数在if之前缺少begin。我还假设这不是全部代码,因为没有为t_DATA_BUFFER对象和std_逻辑定义的“+”函数;非常感谢。我有另一个部分有相同的错误变量单通道:有符号(0到16);单通道(16):=有符

请帮助我,我已经尝试了我能想到的一切(并在过程中发现了许多不相关的错误)。我最终尽可能地减少了它,但错误仍然存在。 请保存我的理智并增加我的调试清单

编辑: 多亏了这些评论,我找到了开始的位置和所有的声明。

if VHDL1261 rock_pkg.vhd(33)附近的语法错误


您的
函数
if
之前缺少
begin
。我还假设这不是全部代码,因为没有为
t_DATA_BUFFER
对象和
std_逻辑定义的
“+”
函数;非常感谢。我有另一个部分有相同的错误<代码>变量单通道:有符号(0到16);单通道(16):=有符号(输入(4)(0));单通道(8到15):=带符号(输入(5)(0到7));单通道(0到7):=带符号(输入(6)(0到7))变量只能在函数的声明性区域中声明。即,
开始之前
处于输出和方向之间。我把它拿出来了before@bananenk几乎与vhdl2008是合法的
library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;


package ROCK_PKG is
    type t_DATA_BUFFER is array (0 to 8) of unsigned (0 to 7);
    function TRIWAVE(input : t_DATA_BUFFER)
                return  t_DATA_BUFFER;
end ROCK_PKG;

package body ROCK_PKG is
    function TRIWAVE(input : t_DATA_BUFFER)
                    return  t_DATA_BUFFER is
    
       variable output : t_DATA_BUFFER;

       variable direction : std_logic := '0';
 
       if (direction)  --line 33
       then
       ...
       else
       ...
       end if;

       output = input + direction;

       return output;
    end TRIWAVE;
end ROCK_PKG;