Quiero hacer algo como esto:
variable a, b (both signed)
variable error (signed also)
if (a is positive)
b = error
else
b = -error
Hasta ahora tengo algo como esto:
if (a(a'high) = '0') then
b <= error;
else
b <= -1 * error;
end if;
Pero esto no funciona porque la multiplicación hace que el RHS tenga un ancho mayor.
¿Cuál es la mejor manera de atacar esto? Podría escribir una función para hacer una negación del complemento a 2 y usar esto, pero también estoy bastante preocupado por el efecto sobre los requisitos de tiempo.