帮忙看看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;
展开
 我来答
nereus78e904
推荐于2016-11-04 · TA获得超过1.5万个赞
知道大有可为答主
回答量:5463
采纳率:90%
帮助的人:1932万
展开全部
  1. loop语句是顺序语句,不能直接出现在结构体中,应当放到进程中。

  2. while loop语句只能被仿真,是不能够被综合的。

  3. 在你的描述中做std_logic_vector与integer类型的相互转换,是不必要的。可以直接做std_logic_vector类型的"-"运算和"<"运算,这些运算在STD_LOGIC_UNSIGNED程序包中已经被预定义了。

  4. 结构体中end loop后面的begin是多余的。

更多追问追答
追问
进程?是不是不要ARCHITECTURE behave OF drive1 IS  这一个了?
那我还想要用循环,怎么办?不用 while loop语句,那用什么?
兄弟,帮个忙。
追答
写硬件描述不是编软件,完全是两回事儿!
进程是process begin........end process;
可以被综合的loop语句只能是for ..... loop!
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式