chenhaoyumax 发表于 2011-5-11 11:37:15

求大神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 ~~~~~~~
求解

呆鸟 发表于 2011-5-11 15:59:58

把实体名和文件名该为一样的,再编译下

chenhaoyumax 发表于 2011-5-18 16:04:22

回复 2# 呆鸟


    恩,好的。谢谢了。

wangjinzeng 发表于 2011-5-30 15:26:34

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;

chenhaoyumax 发表于 2011-5-30 17:34:40

回复 4# wangjinzeng


    不好意思,你改动的把循环给丢了~
这循环得要~
这是找零计算模块,找钱时得需要者循环~
页: [1]
查看完整版本: 求大神qq~~~~~新手上路~~~哎