vhdl - 子程序 shift_left 没有可行的入口,在附近键入错误
问题描述
我正在尝试在我的项目中使用函数 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;
解决方案
numeric_std 包中的 shift_left 函数将无符号作为第一个参数,并返回一个无符号值。
所以你必须铸造你的价值观:
shifted_pixel <= std_logic_vector(shift_left(unsigned(temp), 5));
高温高压
推荐阅读
- javascript - 什么是“从'grasshopper.data'导入{obj,字符串};”
- java - 如何计算用户给出的数学表达式?
- laravel - 仅当用户在 AT&T 5Ge 网络上且用户已登录时,才会出现网络错误
- objective-c - 什么相当于 Metal 中的 glStencilFunc?
- c# - 如何在 Unity2D 中设置加速度?
- delphi - Firemonkey 样式 - 复制特定样式查找以自定义
- sql - 从 Oracle 存储云读取数据到外部表
- python - 如何正确重塑这个 NumPy 数组?
- php - PHP 复制 PHP 模板文件并使用新文件名保存
- laravel - 我可以使用 max() 函数获得列名吗?