Я разрабатываю код на VHDL, и мне нужно сделать операцию вычитания на векторный вектор std. Я пытался определить и использовать следующие библиотеки:VHDL: Subtract 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): ошибка в VHDL euclidian_vhd_hls.vhd (84): не может определить определение оператора "" - "" - найдено 0 возможных определений
Пожалуйста, помогите мне решить эту проблему.
Большое спасибо.
Если вы имитируете, это приведет к ошибке времени выполнения при инициализации, даже если оно анализирует и разрабатывает. Выражение в правой части (длина 9) не имеет той же длины, что и цель в левой части (длина 20). IEEE Std 1076-2008, 14.7.3.4 Обновление сигнала: «Если S представляет собой составной сигнал (включая срез массива), эффективное значение S неявно преобразуется в подтип S. Преобразование подтипа проверяет, что для каждого элемента из S есть соответствующий элемент в эффективном значении и наоборот. Произошла ошибка, если эта проверка завершилась неудачей ». – user1155120