"变量"的类型与"变量"的类型不兼容

时间:2013-04-23 02:54:45

标签: vhdl

我收到以下错误:来自我的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的类型与平移类型不兼容。

     

错误: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;    

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

2 个答案:

答案 0 :(得分:2)

在组件声明中,您将in_tilt,in_pan,pwm_tilt和pwm_pan声明为std_logic。稍后你想要的信号(tilt,pan,pwm_tilt,pwm_pan)都是std_logic_vectors!因此这些类型实际上是不兼容的; - )

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

答案 1 :(得分:0)

tiltstd_logic类型。

in_tiltstd_logic_vector类型。

panin_pan的情况相同。类型std_logicstd_logic_vector通常不兼容(除非您有宽度为1的slv)。