vectores programacion operadores multiplicacion ejemplos arreglos initialization vhdl stdvector

initialization - programacion - VHDL inicializa el vector(la longitud no es un mĂșltiplo de 4) en hexadecimal



vectores en vhdl (4)

Hasta donde yo sé, no hay una forma "directa" de lograr lo que estás buscando. Puede usar lo siguiente que es VHDL válido.

constant init : std_logic_vector (11 downto 0) := X"11A"; signal v : std_logic_vector (9 downto 0) := init(9 downto 0);

Por ejemplo, tengo un vector cuya longitud es 10. ¿Cómo puedo inicializarlo en hexadecimal? (La herramienta de sintetización se queja de desajuste de tamaño ya que piensa que el valor hexadecimal es un múltiplo de 4)

signal v : std_logic_vector (9 downto 0) := x"11A";

¡Muchas gracias! Nigong


Otra variedad de hack feo:

constant init : natural := 16#11A#; signal v : std_logic_vector(9 downto 0) := std_logic_vector(to_unsigned(init, 10));

Después de haber escrito eso, creo que es la peor de las opciones ofrecidas, ¡pero lo dejo aquí como una posibilidad!


una solución posible es escribir múltiplos de 4 bits como valor hexadecimal y agregar el resto en binario, por ejemplo:

signal v: std_logic_vector(9 downto 0) := "01" & X"1A";


x"11A" es un "literal de cadena de bits hexadecimal". Antes de VHDL-2008, estos tenían que ser un múltiplo de 4 bits, de ahí el problema que estás viendo. VHDL-2008 eliminó esta restricción, por lo que ahora puede escribir 10x"11A" . No obstante, no sé cuánto soporte de herramientas hay para 2008.