linzhjbtx 发表于 2011-6-12 19:24:12

出现这个错误“found 2 possible definitions”是为什么?

题目要求是利用减法运算后的符号和结果来判别两个值的大小,
下面是我的源程序:

LIBRARY IEEE;
USE IEEE.STD_LOGIC_ARITH.ALL;
ENTITY cmp8bit_2 IS
        PORT( a : IN SIGNED(7 DOWNTO 0);
                           b : IN SIGNED(7 DOWNTO 0);
                   d,e,f : OUT SIGNED(1 DOWNTO 0));
END ENTITY cmp8bit_2;
ARCHITECTURE one OF cmp8bit_2 IS
        SIGNAL qout : SIGNED(7 DOWNTO 0);
BEGIN
        qout <= a - b;                                                               
                PROCESS(qout)
          BEGIN
                IF qout="00000000" THEN d <= '1';
                                           e <= '0';
                                           f <= '0';
                        ELSIF qout(7)='0' THENd <= '0';
                                             e <= '1';
                                                f <= '0';
                                ELSIF qout(7)='1' THEN d <= '0';
                                                      e <= '0';
                                                      f <= '1';
                                                ELSE d <= 'Z';
                                                               e <= 'Z';
                                                         f <= 'Z';
                END IF;
        END PROCESS;
END ARCHITECTURE one;

可以解释下为什么出现下面这个错误吗?Error (10327): VHDL error at cmp8bit_2.vhd(14): can't determine definition of operator ""="" -- found 2 possible definitions

yq_dream 发表于 2011-6-13 09:42:14

USE IEEE.STD_LOGIC_ARITH.ALL 换成 IEEE.STD_LOGIC_UNSIGNED.ALL 试试

我看不懂代码,我刚开始学,但我帮你google了下,不知道行不

最是那低头温柔 发表于 2011-6-13 11:40:25

你这写了什么程序呀,VHDL中压根就没SIGNED数据类型,建议你先看看语法再说。

linzhjbtx 发表于 2011-6-13 15:27:01

回复 2# yq_dream


    不行噢,SIGNED这个类型不在你说的那个程序包里面!

linzhjbtx 发表于 2011-6-13 15:28:58

回复 3# 最是那低头温柔


    我找的资料书上有SIGNED和UNSIGNED这两个数据类型啊!

最是那低头温柔 发表于 2011-6-13 21:50:57

别扯淡了,你就用STD_LOGIC的就行。我现在就给你写段程序

最是那低头温柔 发表于 2011-6-13 21:51:07

别扯淡了,你就用STD_LOGIC的就行。我现在就给你写段程序

最是那低头温柔 发表于 2011-6-13 22:58:46

LIBRARY IEEE;
use ieee.std_logic_1164.all;
USE IEEE.STD_LOGIC_ARITH.ALL;
use ieee.std_logic_unsigned.all;

ENTITY cmp8bit_2 IS
      PORT( a : IN STD_LOGIC_vector(7 DOWNTO 0);
                           b : IN STD_LOGIC_vector(7 DOWNTO 0);
                   d,e,f : OUT STD_LOGIC );
END ENTITY cmp8bit_2;
ARCHITECTURE one OF cmp8bit_2 IS
      SIGNAL qout : STD_LOGIC_vector(7 DOWNTO 0);
BEGIN
      qout <= a - b;                                                               
                PROCESS(qout)
          BEGIN
                IF qout="00000000" THEN d <= '1';
                                           e <= '0';
                                           f <= '0';
                        ELSIF qout(7)='0' THENd <= '0';
                                             e <= '1';
                                                f <= '0';
                              ELSIF qout(7)='1' THEN d <= '0';
                                                      e <= '0';
                                                      f <= '1';
                                                ELSE d <= 'Z';
                                                               e <= 'Z';
                                                         f <= 'Z';
                END IF;
      END PROCESS;
END ARCHITECTURE one;

yq_dream 发表于 2011-6-14 09:55:25

LIBRARY IEEE;
use ieee.std_logic_1164.all;
USE IEEE.STD_LOGIC_ARITH.ALL;
use ieee.std_logic_unsig ...
最是那低头温柔 发表于 2011-6-13 22:58 http://www.fpgaw.com/images/common/back.gif


    学习下,虽然看不懂,:lol

但对照网络查找了下,至少知道了,定义下面的a,b,c....时,不能用SIGNED,要用STD_LOGIC这个

呵呵

yq_dream 发表于 2011-6-14 10:06:59

我又百度了下

对于楼主的问题 别个是这样说的
你在库里已经定义采用有符号型数据,就不必在数据类型重复定义

其实下面这个代码也是对的,我编译了下也是通过的(虽然我看不懂这个代码是什么意思,= =!),就是UNSIGNED换成SIGNED,
LIBRARY IEEE;
use ieee.std_logic_1164.all;
USE IEEE.STD_LOGIC_ARITH.ALL;
use ieee.std_logic_signed.all;
ENTITY cmp8bit_2 IS
      PORT( a : IN STD_LOGIC_vector(7 DOWNTO 0);
                           b : IN STD_LOGIC_vector(7 DOWNTO 0);
                   d,e,f : OUT STD_LOGIC );
页: [1] 2
查看完整版本: 出现这个错误“found 2 possible definitions”是为什么?