Добавление в VHDL не приводит к автоматическому увеличению битов. Чтобы учесть бит переноса, просто добавьте '0' к MSB операндов. (добавить бит знака для арифметики со знаком). Это означает, что вы можете просто взять полученный MSB как бит переноса.
например.
op <= ('0' & A) + ('0' & B);
carry <= op(op'high);
числовой стандарт также имеет функцию изменения размера для этого (как для подписи, так и для без знака):
op <= resize(A, op'length) + resize(B, op'length)
carry <= op(op'high);
Еще один момент - почему бы не сделать ваши входы и выходы без знака, а не SLV? тогда вам не понадобятся все преобразования типов (или вы можете использовать библиотеку numeric_std_unsigned из VHDL 2008 для арифметики с std_logic_vector).