VHDL语法错误附近

时间:2014-09-21 21:20:38

标签: syntax while-loop vhdl

我写了一个VHDL代码来查找两个数字的gcd。但是,在编译它时会给我以下错误

  

near" while":语法错误

代码是

library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity gcd is
port(a,b:in integer;
    c:out integer);
end gcd;

architecture gcd of gcd is
    function calc_gcd(a,b:integer) return integer is
    while a/=b loop
        if a>b then
            a:=a-b;
        else
            b:=a-b;
        end if;

    end loop;

    return m;
    end calc_gcd;
begin
process(a,b)
begin
gcd<=calc_gcd(a,b);
end process;
end gcd;

我检查了语法。看来是对的。怎么了?

PS:我使用的是ModelSim学生版

1 个答案:

答案 0 :(得分:1)

您缺少函数的begin语句。

还有其他一些错误。

您尝试分配输入参数(ab)。函数的参数被复制到堆栈中。你可以使用一个程序,但看起来你真的想要一个局部变量。

m没有声明。那就是那个(一个局部变量)。