Похоже, вы используете ieee.std_logic_unsigned (или _arith) или оба.
Пожалуйста, не делайте этого .Вместо этого используйте ieee.numeric_std.all
.
Мой Verilog практически не существует, поэтому я забываю, если Verilog по умолчанию использует арифметику со знаком или без знака ... Но в зависимости от того, что это, сделайте все свои числовые сигналы в signed
или unsigned
типов для соответствия.
Ваше предложение сброса, вероятно, хочет прочитать что-то вроде:
sigmalatch <= (width+1 => '1', others => '0');
, а обновление deltafeedback выглядит примерно так:
deltafeedback(width+2 downto width+1) <= sigmalatch(width+2) & sigmalatch(width+2);
deltafeedback(width downto 0) <= (others => '0');
Наконец,чтобы соответствовать Verilog, я думаю, что ваш width
универсальный должен называться MSBI
и установлен на 7 (или изменить все ваши width+2
s на width+1
s, чтобы соответствовать вашему намерению для width
универсального)