0

我收到以下错误:来自我的 VHDL 项目:

错误:HDLParsers:800 -“C:/Users/Theo/Desktop/Dropbox/ECE 120/Robotic Arm/top.vhd”第 90 行。in_tilt 的类型与倾斜类型不兼容。

错误:HDLParsers:800 -“C:/Users/Theo/Desktop/Dropbox/ECE 120/Robotic Arm/top.vhd”第 91 行。in_pan 的类型与 pan 的类型不兼容。

错误:HDLParsers:800 - “C:/Users/Theo/Desktop/Dropbox/ECE 120/Robotic Arm/top.vhd” 第 92 行。pwm_tilt 的类型与 pwm_tilt 的类型不兼容。

错误:HDLParsers:800 - “C:/Users/Theo/Desktop/Dropbox/ECE 120/Robotic Arm/top.vhd” 第 93 行。pwm_pan 的类型与 pwm_pan 的类型不兼容。

这是适用的代码。我有一个带有以下代码的顶级 VHDL 模块:

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use ieee.std_logic_unsigned.all; 

entity top is
port (
  clk_in : in std_logic;
  pause : in std_logic;
  reset : in std_logic;
  switch : in std_logic_vector(3 downto 0);-----------------------------------------
  deb_in : in std_logic; ---from another switch
  deb_out : out std_logic; ---to test the debouncer
  pwm_pan : out std_logic_vector(7 downto 0);
  pwm_tilt : out std_logic_vector(7 downto 0)
);
end top;

PWM 的组件声明:

COMPONENT PWM
PORT(
     clk_100 : in  std_logic;
     reset : IN  std_logic;
        in_tilt : in std_logic;
        in_pan : in std_logic;
     pwm_pan : OUT  std_logic;
        pwm_tilt : out std_logic
    );
END COMPONENT;

还有适当的信号:

signal tilt : std_logic_vector (7 downto 0);
signal pan : std_logic_vector (7 downto 0);

然后是这段代码:(这是我的错误出现的地方。)

    u1: PWM PORT MAP (
     clk_100 => clk_100,
     reset => reset,
--Line 90    in_tilt => tilt,
--Line 91   in_pan => pan,          
--Line 92    pwm_tilt => pwm_tilt,
--Line 93    pwm_pan => pwm_pan
);  

这是 PWM VHDL 模块中的代码:

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use ieee.std_logic_unsigned.all; 

entity PWM is
Port ( clk_100 : in  STD_LOGIC;
       reset : in  STD_LOGIC;
          in_tilt : in std_logic_vector( 7 downto 0);
          in_pan : in std_logic_vector( 7 downto 0);
          pwm_tilt : out std_logic_vector (7 downto 0);
          pwm_pan : out std_logic_vector (7 downto 0)
          );
end PWM;    

知道是什么导致了这个错误吗?我希望我已经包含了所有相关的代码。谢谢。

4

2 回答 2

2

在组件声明中,您将 in_tilt、in_pan、pwm_tilt 和 pwm_pan 声明为 std_logic。您稍后附加的信号(倾斜、平移、pwm_tilt、pwm_pan)都是 std_logic_vectors!因此这些类型真的不兼容;-)

要解决这个问题,请调整您的组件声明并在声明中使用 std_logic_vector !

于 2013-04-23T12:52:52.520 回答
0

tilt是类型std_logic

in_tilt是类型std_logic_vector

pan和相同in_pan。类型std_logicstd_logic_vector通常不兼容(除非您的 slv 宽度为 1)。

于 2013-04-23T17:52:26.203 回答