VHDL:减去std_logic_vector

时间:2015-06-28 19:48:29

标签: signal-processing vhdl

我正在开发VHDL代码,我需要在std_logic_vector上进行减法运算。我试图定义并使用以下库:

library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;
use ieee.std_logic_arith.all; 

然后我定义了如下信号:

signal r0,r1,r2,r3,r4,r5,r6,r7: STD_LOGIC_VECTOR (19 DOWNTO 0);

然后我想做以下减法:

        r0 <= r0(16 downto 8) - r0(7 downto 0);

但它给了我-运算符的错误。错误说:

  

错误(10327):euclidian_vhd_hls.vhd(84)的VHDL错误:无法   确定运算符的定义“” - “” - 找到0个可能的定义

请帮我解决这个问题。

非常感谢。

2 个答案:

答案 0 :(得分:0)

我找到了使用以下语法的答案:

r0 <= std_logic_vector(unsigned(r0(16 downto 8)) - unsigned(r0(7 downto 0)));

我通过this Stackoverflow question

引导了这个解决方案

答案 1 :(得分:0)

我认为你的逻辑不起作用,因为你应用r0 onn r0,它是无限循环。 你需要在上升或下降的过程中声明它