¿Cómo puedo hacer b * 2^a en VHDL?
Comencé a aprender VHDL en las últimas semanas. Y no entiendo cómo escribir código para B * 2^A. En este caso, B es un entero representado en complemento a 2 de 3 bits, y A es una señal de 2 bits que representa un entero binario sin signo, el resultado de esta multiplicación será una señal de 6 bits representada en complemento a 2.
Intenté usar el desplazamiento aritmético binario a la izquierda porque estoy tratando de mantener el signo de B al realizar esta operación.
Mi código:
biblioteca IEEE;
uso IEEE.std_logic_1164.todos;
entidad mult_2 es
Puerto ( a : in STD_LOGIC_VECTOR (1 downto 0);
b : in STD_LOGIC_VECTOR (2 downto 0);
m_o : out STD_LOGIC_VECTOR (5 downto 0));
end mult_2;
arquitectura mult_2_arch de mult_2 es
begin
m_o <= b sla (2 * a);
end mult_2_arch;
davy.ai
¿Es esta la forma correcta de hacerlo?
Sí, esta es la forma correcta de hacerlo. El operador
sla
desplaza la señalb
hacia la izquierda por el número de bits especificado por la expresión2 * a
. Esto resultará en una señal de 6 bits representada en complemento a 2.