En Sección 2.5 vimos que era posible informar mensajes al usuario. Dichos mensajes pueden ser cadenas de caracteres como las que vimos en Sección 2.4 o bien cadenas de caracteres encerradas con comillas dobles. Es posible concatenar varias cadenas de caracteres utilizando el operador &, no olvidemos que sólo son vectores de char.
El problema aparece cuando deseamos que el mensaje incluya valores de señales o variables que no son cadenas de caracteres. Para esto se utiliza la siguiente sintaxis:
Esto nos devuelve la representación en texto (por eso image) del ELEMENTO indicado (variable o señal) utilizando la conversión necesaria para el TIPO_DE_DATOS indicado. En el Ejemplo 2-7 vemos algunos casos posibles.
Este tipo de conversión sólo puede aplicarse a escalares (enteros, coma flotante, tipos físicos y enumeraciones) y no a vectores o tipos compuestos. |
Ejemplo 2-7. Como obtener una representación en formato de texto
-- En la arquitectura tenemos declarado signal sx : integer:=5; signal tiempo : time:=20 ns; -- En un proceso podemos reportar report "El valor de la señal sx es "&integer'image(sx) severity note; report "tiempo="&time'image(tiempo) severity note; -- Estos reportes se verán como algo así /tmp/test.vhdl:22:7:@0ms:(report note): El valor de la señal sx es 5 /tmp/test.vhdl:23:7:@0ms:(report note): tiempo=20000000 fs