【问题标题】:Type of "variable" incompatible with type of "variable"“变量”类型与“变量”类型不兼容
【发布时间】:2013-04-23 02:54:45
【问题描述】:

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

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

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

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

ERROR: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;    

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

【问题讨论】:

  • “倾斜”和“平移”有哪些类型? “PWM”的组件声明是怎样的?
  • @baldyHDL 我添加了组件声明以及倾斜和平移的类型。

标签: vhdl


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    tiltstd_logic 类型。

    in_tiltstd_logic_vector 类型。

    panin_pan 也是如此。 std_logicstd_logic_vector 类型通常不兼容(除非您的 slv 宽度为 1)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-08-06
      • 1970-01-01
      • 2019-11-08
      • 2020-02-18
      • 1970-01-01
      • 2021-01-12
      • 2020-04-21
      • 1970-01-01
      相关资源
      最近更新 更多