帮忙看看vhdl语言哪里出错了
LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_ARITH.ALL;USEIEEE.STD_LOGIC_...
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_ARITH.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY diver1 IS
PORT(a:IN STD_LOGIC_VECTOR(7 DOWNTO 0);
b:IN STD_LOGIC_VECTOR(7 DOWNTO 0);
clk:IN STD_LOGIC;
s:OUT STD_LOGIC_VECTOR(7 DOWNTO 0);
y:OUT STD_LOGIC_VECTOR(7 DOWNTO 0)
);
END ;
ARCHITECTURE behave OF drive1 IS
SIGNAL c:STD_LOGIC_VECTOR(7 DOWNTO 0);
SIGNAL d:integer;
SIGNAL e:integer;
SIGNAL f:integer;
BEGIN
d<=Conv_Integer(a)-Conv_Integer(b);
e<=Conv_Integer(b);
while d<e loop
f<=f+1;
d<=Conv_Integer(a)-Conv_Integer(b);
end loop;
begin
s<=Conv_Std_Logic_Vector(f,8);
y<=Conv_Std_Logic_Vector(d,8);
END behave; 展开
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_ARITH.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY diver1 IS
PORT(a:IN STD_LOGIC_VECTOR(7 DOWNTO 0);
b:IN STD_LOGIC_VECTOR(7 DOWNTO 0);
clk:IN STD_LOGIC;
s:OUT STD_LOGIC_VECTOR(7 DOWNTO 0);
y:OUT STD_LOGIC_VECTOR(7 DOWNTO 0)
);
END ;
ARCHITECTURE behave OF drive1 IS
SIGNAL c:STD_LOGIC_VECTOR(7 DOWNTO 0);
SIGNAL d:integer;
SIGNAL e:integer;
SIGNAL f:integer;
BEGIN
d<=Conv_Integer(a)-Conv_Integer(b);
e<=Conv_Integer(b);
while d<e loop
f<=f+1;
d<=Conv_Integer(a)-Conv_Integer(b);
end loop;
begin
s<=Conv_Std_Logic_Vector(f,8);
y<=Conv_Std_Logic_Vector(d,8);
END behave; 展开
1个回答
展开全部
loop语句是顺序语句,不能直接出现在结构体中,应当放到进程中。
while loop语句只能被仿真,是不能够被综合的。
在你的描述中做std_logic_vector与integer类型的相互转换,是不必要的。可以直接做std_logic_vector类型的"-"运算和"<"运算,这些运算在STD_LOGIC_UNSIGNED程序包中已经被预定义了。
结构体中end loop后面的begin是多余的。
更多追问追答
追问
进程?是不是不要ARCHITECTURE behave OF drive1 IS 这一个了?
那我还想要用循环,怎么办?不用 while loop语句,那用什么?
兄弟,帮个忙。
追答
写硬件描述不是编软件,完全是两回事儿!
进程是process begin........end process;
可以被综合的loop语句只能是for ..... loop!
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询