Multiplica y desplaza el resultado en VHDL.
Tengo dos vectores sin signo de 8 bits llamados a y b, y un vector sin signo de 16 bits llamado resultado. Quiero calcular a * b * 4 y asignarlo a resultado. No me importa el desbordamiento porque sé que no sucederá por alguna razón, no es importante. ¿Es correcta la siguiente forma?
result <= a * b;
result <= result(13 downto 0) & "00";
(Se supone que estas dos líneas están en un proceso sincronizado.)
davy.ai
No, la forma anterior de calcular a * b * 4 y asignarlo a result no es correcta ya que solo desplaza el resultado dos bits en lugar de multiplicarlo por 4. La forma correcta de hacerlo en VHDL sería:
Esto primero convertirá los vectores de entrada en valores sin signo, luego los multiplicará juntos y finalmente multiplicará el resultado por 4 para obtener el valor final que se asigna al vector de salida.