我写了一个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学生版
答案 0 :(得分:1)
您缺少函数的begin
语句。
还有其他一些错误。
您尝试分配输入参数(a
和b
)。函数的参数被复制到堆栈中。你可以使用一个程序,但看起来你真的想要一个局部变量。
m
没有声明。那就是那个(一个局部变量)。