求大神qq~~~~~新手上路~~~哎
本帖最后由 chenhaoyumax 于 2011-5-11 12:13 编辑在编译的时候出现了CANNOT FIND VHDL 'WORK',这是怎么回事啊?我查了下相关的网页,说是工作区设置出错了~
我先file下project的name新建为chen.vhd,然后file下的new选择text editor file,写下程序,LIBRARY IEEE;
USE IEEE.std_logic_1164.ALL;
USE IEEE.std_logic_arith.ALL;
USE IEEE.std_logic_signed.ALL;
ENTITY calculator IS
PORT(rst :IN std_logic;
ok :IN std_logic;
clear :IN std_logic;
sum :IN integer RANGE 0 TO 20;
sum_10 :IN integer RANGE -10 TO 15;
sum_50 :IN integer RANGE -10 TO 15;
sum_100 :IN integer RANGE -10 TO 15;
Rsum_10 :INOUT integer RANGE 0 TO 15;
Rsum_50 :INOUT integer RANGE 0 TO 15;
Rsum_100 :INOUT integer RANGE 0 TO 15);
END calculator;
ARCHITECTURE Behavioral OF calculator IS
CONSTANT valus :integer :=13;
BEGIN
PROCESS(sum,rst,ok,clear)
VARIABLE s,x,y,z: integer RANGE 20 DOWNTO 0;
BEGIN
s:=sum;
IF(rst='1' OR clear='1')THEN
Rsum_10<=0;
Rsum_50<=0;
Rsum_100<=0;
x: =0;
y: =0;
z: =0;
ELSIF (ok='1')THEN
IF (sum<value)THEN
Rsum_10<=sum_10;
Rsum_50<=sum_50;
Rsum_100<=sum_100;
END IF;
IF (sum=value)THEN
Rsum_10<=0;
Rsum_50<=0;
Rsum_100<=0;
END IF;
IF (sum>value)THEN
WHILE s>value LOOP
IF ((s-5) > value) THEN
x: =x+1;
s: =s-10;
ELSIF((s-5) > =value) THEN
y: =y+1
s: =s-5;
ELSIF((s-1) > =value) THEN
z: =z+1;
s: =s-1;
END IF;
END LOOP;
Rsum_100<=x;
Rsum_50<=y;
Rsum_10<=z;
END IF;
END IF;
END PROCESS;
END Behavioral;
然后编译就出现了cannot find vhdl work ~~~~~~~
求解 把实体名和文件名该为一样的,再编译下 回复 2# 呆鸟
恩,好的。谢谢了。 LIBRARY IEEE;
USE IEEE.std_logic_1164.ALL;
USE IEEE.std_logic_arith.ALL;
USE IEEE.std_logic_signed.ALL;
ENTITY calculator IS
PORT(rst :IN std_logic;
ok :IN std_logic;
clear :IN std_logic;
sum :IN integer RANGE 0 TO 20;
sum_10 :IN integer RANGE -10 TO 15;
sum_50 :IN integer RANGE -10 TO 15;
sum_100 :IN integer RANGE -10 TO 15;
Rsum_10 :OUT integer RANGE 0 TO 15;
Rsum_50 :OUT integer RANGE 0 TO 15;
Rsum_100 :OUT integer RANGE 0 TO 15);
END calculator;
ARCHITECTURE Behavioral OF calculator IS
CONSTANT valus :integer :=13;
BEGIN
PROCESS(sum,rst,ok,clear,sum_10,sum_50,sum_100)
VARIABLE s,x,y,z: integer RANGE 20 DOWNTO 0;
BEGIN
s:=sum;
IF(rst='1' OR clear='1')THEN
Rsum_10<=0;
Rsum_50<=0;
Rsum_100<=0;
x:=0;
y:=0;
z:=0;
ELSIF (ok='1')THEN
IF (sum<valus)THEN
Rsum_10<=sum_10;
Rsum_50<=sum_50;
Rsum_100<=sum_100;
elsIF (sum=valus)THEN
Rsum_10<=0;
Rsum_50<=0;
Rsum_100<=0;
elsIF (sum>valus)THEN
if s>valus then
IF ((s-5) > valus) THEN
x:=x+1;
s:=s-10;
ELSIF((s-5) >=valus) THEN
y:=y+1;
s:=s-5;
ELSIF((s-1) >=valus) THEN
z:=z+1;
s:=s-1;
END IF;
Rsum_100<=x;
Rsum_50<=y;
Rsum_10<=z;
END IF;
END IF;
end if;
END PROCESS;
END Behavioral; 回复 4# wangjinzeng
不好意思,你改动的把循环给丢了~
这循环得要~
这是找零计算模块,找钱时得需要者循环~
页:
[1]