Array of Strings

Gast #5438904
Lesenswert?

Hallo,

für eine Testbench wollte ich gerne ein array von strings haben, die mir 
mode infos für das Terminal ausgeben, aber unterschiedlichen Längen 
haben.
Ein einfaches array erstellen geht wohl nicht, durch die 
unterschiedlichen Stringlängen. Was ich bis jetzt gefunden habe ist 
folgendes:
1
type line_vector is array(0 to 2) of line;
2
variable modes : line_vector := (
3
  new string'("mode on"),
4
  new string'("mode test"),
5
  new string'("mode off")
6
);

Wenn ich mir jetzt aber einen mode ausgeben lasse möchte in Modelsim 
Terminal
mit z.B.
1
report modes(0) severity note;

Bekomme ich die Fehlermeldung:
"Target type std.STANDARD.STRING in variable assignment is different 
from expression type std.TEXTIO.LINE."

Ich würde aber einen String erwarten.

Hat jemand mit sowas schon Erfahrung, bzw. gibt es eine 
(einfache)Konvertierung von Line nach String ?
#5439212
Lesenswert?

der Typ "line" ist zunächst mal nix anderes als ein Zeiger (access) auf 
String. Du kannst den entsprechend verwenden oder den Stringzeiger 
gleich selber bauen:
1
--  Hello world program.
2
use std.textio.all; -- Imports the standard textio package.
3

4
--  Defines a design entity, without any ports.
5
entity hello is
6
end hello;
7

8
architecture behaviour of hello is
9
    type str_acc is access string;
10
    type str_acc_arr is array (1 to 10) of str_acc;
11

12
    constant CHARS : string := "ABCDEFGHIJK";
13
begin
14
    process
15
        variable l : str_acc_arr;
16
    begin
17
        for i in 1 to 10 loop
18
            l(i) := new string(1 to i);
19
            for j in 1 to i loop
20
                l(i)(j) := CHARS(j);
21
            end loop;
22
        end loop;
23

24
        for i in 1 to 10 loop
25
            report "i=" & integer'image(i) & ", l(i)=" & l(i).all severity note;
26
        end loop;
27
        wait;
28
   end process;
29
end behaviour;
#5439815
Lesenswert?

rupert schrieb:
> Vielen Dank. Das hilft mir sehr weiter und macht das ganze
> verständlicher.
>
> Gibt es für den Zeiger, access Typ irgendwo eine Auflistung welche
> Attribute man verwenden kann ? wie z.B. das ".all"

.all ist kein Attribut, sondern einfach das "Dereferezierungs-Suffix".

Sehr viel mehr gibt es über access Typen auch gar nicht zu wissen 
(deallocate fehlt noch und die Tatsache, dass es für Array- und 
Record-Member eine verkürzte Schreibweise gibt, bei der man auf das .all 
verzichten kann).

Ansonsten hat es - soweit bekannt - noch niemandem geschadet, ein gutes 
Buch zu lesen ;). Ashenden's "Designer's Guide to VHDL" ist definitiv 
ein solches (auch wenn access-Typen dort nur ein paar Seiten der 
Schwarte ausmachen).

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren