Guten Tag
Ich möchte ein String in einen std_logic_vector umwandeln, den ich dann
an den Prozess weitergebe, der die serielle Schnittstelle steuert.
Ich habe schon diverses ausprobiert, aber auf einen grünen Zweig bin ich
bisher nicht gekommen.
Es sollte ungefähr so aussehen
Jetzt mußt du nur noch die Zeichen aus der Zeile in einen character
extrahieren.
BTW:
> CONV_STD_LOGIC_VECTOR
vergiss die alten Synopsys-Libs, nimm besser die numeric_std.
> Was bedeutet> ...(character'pos('X'),8))> ?VHDL-Buch?
Sieh mal nach, wie der Datentyp Character definiert ist:
1
typecharacteris(
2
nul,soh,stx,etx,eot,enq,ack,bel,
3
bs,ht,lf,vt,ff,cr,soe,si,
4
dle,dc1,dc2,dc3,dc4,nak,syn,tb,
5
can,em,sub,esc,fsp,gsp,rsp,usp,
6
7
' ','!','"','#','$','%','&',''',
8
'(',')','*','+',',','-','.','/',
9
'0','1','2','3','4','5','6','7',
10
'8','9',':',';','<','=','>','?',
11
12
'@','A','B',...'X',...
Dann überlegst du, was das Attribut 'pos zurückgibt, wenn es mit einem
ASCII-Zeichen (z.B. 'X') aufgerufen wird: einen Integer mit der Position
in dem obigen Array.
Und dieser integer wird dann in einen vector gewandelt.
> Muss ich der Reihe nach jeden Character des String in ein> Character-Signal kopieren?
Ja, so ist das...
Danke für die Antwort, es funktioniert und im Terminal auf dem PC kann
ich mein Character empfangen!
Jetzt noch eine Theorie-Frage:
Das 'pos guckt also, wo in der Character-Tabelle der Character (z.Bs.
'X') zu finden ist und gibt dann den ASCII-Code dieser Stelle als
Integer heraus.
Folglich könnte man also mit diesem 'pos auch andere Arrays nach einem
Wert durchsuchen und dann wird der Index dieses Wertes herausgegeben?
Das geht sowieso nicht, weil 'pos einen Integer zurückliefert.
Und zudem ist 'pos nicht auf solche zusammengesetzten Arrays anwendbar:
Prefix of attribute 'pos must be of discrete or physical type or
subtype.
Du müssstest deshalb hier in einem Package deinen eigenen Typ definieren
(ohne die std_logic_vector Sache). Sieh dir doch einfach mal an, wie das
Package mit dem Character aufgebaut ist.
Thomas B. schrieb:> Das sieht fast so aus wie wenn man ein Enum deklariert
Das ist ein enum :-)
> Das 'pos habe ich zwar bisher nicht gefunden!> Wo ist das definiert?
'pos und 'val sind attribute, die es bei jedem enum gibt.
Rick
und dann kannst du diesen Typ als Auswahlelement verwenden:
1
ifoneofmyfamily=mumthen...
2
3
caseoneofmyfamilyis
4
whenmum=>...
5
whendad=>...
6
whenothers=>...
7
endcase;
> Das sieht fast so aus wie wenn man ein Enum deklariert:
Das ist es eigentlich auch, allerdings sind hier bei VHDL wesentlich
tiefergehende Manipulationen möglich, wie du am Typ time (package
standard) sehen kannst.