Hallo, ist es irgendwie möglich Text auf ein STD_LOGIC_VECTOR zu schreiben, also so ca: ... type line_ram is array(159 downto 0) of std_logic_vector(7 downto 0); ... line_ram<="Hello World..."; ... man müsste vorher irgendwie definieren, dass z.B. A=x"41"; B=x"42"; ... geht sowas irgendwie... weil immer alles per Zahlen zu schreiben ist sehr unübersichtlich...
> line_ram<="Hello World..."; Nein, sooooo einfach geht das nicht. Da müssen einige Umwandlungen mitspielen: Erst muß ein einzelnes Zeichen aus dem String herausgeholt werden, dann muss die Postition dieses Zeichens innerhalb des Datentypen "Character" bestimmt werden, und dann muß diese Zahl noch über einen unsigned Vektor in einen std_logic_vector umgewandelt werden. Das passiert z.B. im Beitrag "Re: String als Konstante definieren" Du könntest das z.B. in einem eigenen Package in eine Funktion packen und damit die Umwandlung vornehmen... BTW: > man müsste vorher irgendwie definieren, dass z.B. > A=x"41"; > B=x"42"; Sieh dir mal an, wie ein String definiert ist, und wie ein Character definiert ist, dann wird dir klar, dass diese Arbeit schon getan ist...
Ja. Ich nutze das um die Versionsnummer in einem kleinen ROM zu speichern:
1 | constant version : string( 1 to 5) := "undef" |
2 | |
3 | |
4 | -- convert ascii from given string to slv
|
5 | function to_slv( s : string; pos : natural) return std_logic_vector is |
6 | variable result : std_logic_vector(7 downto 0); |
7 | begin
|
8 | result := (others => '0'); |
9 | if pos < s'length then |
10 | result := std_logic_vector( to_unsigned( character'pos( s( pos + 1)), 8)); |
11 | end if; |
12 | return result; |
13 | end function to_slv; |
14 | |
15 | |
16 | type version_memory_t is array(0 to 7) of std_logic_vector(7 downto 0); |
17 | constant version_memory_c : version_memory_t := ( |
18 | 0 => to_slv( 0), |
19 | 1 => to_slv( 1), |
20 | 2 => to_slv( 2), |
21 | 3 => to_slv( 3), |
22 | 4 => to_slv( 4), |
23 | 5 => to_slv( 5), |
24 | 6 => to_slv( 6), |
25 | 7 => to_slv( 7)); |
Duke
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.