集成电路技术分享

 找回密码
 我要注册

QQ登录

只需一步,快速开始

搜索
查看: 1506|回复: 4

求大神qq~~~~~新手上路~~~哎

[复制链接]
chenhaoyumax 发表于 2011-5-11 11:37:15 | 显示全部楼层 |阅读模式
本帖最后由 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|小黑屋|手机版|Archiver|集成电路技术分享 ( 京ICP备20003123号-1 )

GMT+8, 2024-5-6 09:14 , Processed in 0.068657 second(s), 20 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表