没有可行的子程序 shift_left 条目,附近键入错误
No feasible entry to subprogram shift_left, type error near
我正在尝试在我的项目中使用函数 shift_left(),但出现 2 个我无法解释的错误:
- 错误:'shift left' 附近出现类型错误;预期类型 'std_logic_vector'
但温度是 std_logic_vector!
- 错误:找不到子程序 'shift_left' 的可行条目
代码中使用的信号定义为:
signal shifted_pixel, temp : std_logic_vector(15 downto 0);
signal i_data : std_logic_vector(7 downto 0);
下面的代码片段是在一个进程中编写的
temp <= "00000000" & i_data;
shifted_pixel <= shift_left(temp, 5);
完整代码如下:
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.numeric_std.ALL;
entity project is
port (
i_clk : in std_logic;
i_rst : in std_logic;
i_start : in std_logic;
i_data : in std_logic_vector(7 downto 0);
);
end project;
architecture rtl of project is
signal shifted_pixel, temp : std_logic_vector(15 downto 0);
begin
process(i_data)
begin
temp <= "00000000" & i_data;
shifted_pixel <= shift_left(temp, 5);
end process;
end rtl;
numeric_std 包中的 shift_left 函数将无符号作为第一个参数,它 returns 一个无符号值。
所以你必须投射你的价值观:
shifted_pixel <= std_logic_vector(shift_left(unsigned(temp), 5));
HTH
我正在尝试在我的项目中使用函数 shift_left(),但出现 2 个我无法解释的错误:
- 错误:'shift left' 附近出现类型错误;预期类型 'std_logic_vector'
但温度是 std_logic_vector!
- 错误:找不到子程序 'shift_left' 的可行条目
代码中使用的信号定义为:
signal shifted_pixel, temp : std_logic_vector(15 downto 0);
signal i_data : std_logic_vector(7 downto 0);
下面的代码片段是在一个进程中编写的
temp <= "00000000" & i_data;
shifted_pixel <= shift_left(temp, 5);
完整代码如下:
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.numeric_std.ALL;
entity project is
port (
i_clk : in std_logic;
i_rst : in std_logic;
i_start : in std_logic;
i_data : in std_logic_vector(7 downto 0);
);
end project;
architecture rtl of project is
signal shifted_pixel, temp : std_logic_vector(15 downto 0);
begin
process(i_data)
begin
temp <= "00000000" & i_data;
shifted_pixel <= shift_left(temp, 5);
end process;
end rtl;
numeric_std 包中的 shift_left 函数将无符号作为第一个参数,它 returns 一个无符号值。
所以你必须投射你的价值观:
shifted_pixel <= std_logic_vector(shift_left(unsigned(temp), 5));
HTH