Я пытаюсь использовать функцию shift_left() в своем проекте, но получаю 2 ошибки, которые не могу объяснить:
- Ошибка: введите ошибку возле «сдвиг влево»; ожидаемый тип 'std_logic_vector'
но temp ЯВЛЯЕТСЯ 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;
shifted_pixel <= std_logic_vector(shift_left(unsigned(temp), 5));
temp
должен быть без знака, чтобы можно было использовать соответствующий SHIFT_LEFT в пакете numeric_std. Полученное значение должно быть совместимо со std_logic_vector, чтобы его можно было присвоитьshifted_pixel
. - person   schedule 27.03.2021