Hallo, bin gerade dabei ein LCD mit FPGA anzusteuern. Dabei werden die Zeichen in Form von Bytes seriell in das LCD "geschoben". Das LCD kann 32 Zeichen darstellen. Nun wollte ich eine entity schreiben, der man nur eine Art Byte-Vektor übergibt. Ich frage mich also, ob es möglich ist einen Type zu deklarieren, dessen Elemente 1Byte groß sind also nach folgenden Schema: type Byte_array is (1stesByte 2tesByte .... ntesByte) ? letztlich wollte ich ja später mit einer "Laufvariablen" jedes Byte ansteuern können? Viele Grüße Olli
entity
....
architecture Behavioral of bla is
type Data_array is array(0 to 19) of STD_LOGIC_VECTOR(7 downto 0);
Signal Data : Data_array;
begin
...
Ich hab es so genutzt.
zugriff über
8BitVektor <= Data(1);
Gruß
John-Eric
Zusatz
=====================
Wenn die Daten Konstant sind, wäre auch das denkbar:
type table is array(0 to 63) of std_logic_vector(15 downto 0);
constant coeff :table := (x"fd93",x"0089",x"009f",x"00c3",x"00ef",
x"0118",x"0137",x"0142",x"0133",x"0105",
x"00b9",x"004f",x"ffce",x"ff3f",x"feaf",
x"fe2e",x"fdca",x"fd94",x"fd9a",x"fde7",
x"fe82",x"ff6b",x"009e",x"0211",x"03b2",
x"056f",x"072e",x"08d6",x"0a4e",x"0b7f",
x"0c55",x"0cc4",x"0cc4",x"0c55",x"0b7f",
x"0a4e",x"08d6",x"072e",x"056f",x"03b2",
x"0211",x"009e",x"ff6b",x"fe82",x"fde7",
x"fd9a",x"fd94",x"fdca",x"fe2e",x"feaf",
x"ff3f",x"ffce",x"004f",x"00b9",x"0105",
x"0133",x"0142",x"0137",x"0118",x"00ef",
x"00c3",x"009f",x"0089",x"fd93");
eigentlich gleich.
Signalen kannst du ja auch einen Startwert zuweisen.
Olli R. schrieb: > Nun wollte ich eine entity schreiben, der man nur eine Art Byte-Vektor > übergibt. Du mußt dir deinen Typ in einem Package definieren, dann kannst du ihn im Port einer Entity verwenden... Such mal hier im Forum nach FPGA und LCD... Beitrag "Re: Xilinx und LCD"
John-eric K. schrieb: > entity > > .... > > architecture Behavioral of bla is > type Data_array is array(0 to 19) of STD_LOGIC_VECTOR(7 downto 0); > Signal Data : Data_array; > begin > > ... > > Ich hab es so genutzt. > > zugriff über > > 8BitVektor <= Data(1); Ok so wie hier oben kann ich also die Daten des zweiten Bytes von "Data" lesen! kann ich dann auch ganz einfach das n-te Byte von "Data" schreiben bzw. einen Wert zuweisen? also z.B. Data(0) <= mein8BitVektor (7 downto 0); ?
Olli R. schrieb: > kann ich dann auch ganz einfach das n-te Byte von "Data" schreiben bzw. > einen Wert zuweisen? Ja. Aber das müsste dann so heißen: Data(n) <= mein8BitVektor (7 downto 0); Denn sonst weist du immmer dem 0. Element des Vektors was zu... ;-) BTW: Wenn du ebenfalls einen 8 Bit Vektor hast: Data(0) <= mein8BitVektor (7 downto 0); Dann kannst du sogar so schreiben: Data(0) <= mein8BitVektor;
Lothar Miller schrieb: > Olli R. schrieb: >> kann ich dann auch ganz einfach das n-te Byte von "Data" schreiben bzw. >> einen Wert zuweisen? > Ja. Aber das müsste dann so heißen: > Data(n) <= mein8BitVektor (7 downto 0); > Denn sonst weist du immmer dem 0. Element des Vektors was zu... ;-) > > BTW: > Wenn du ebenfalls einen 8 Bit Vektor hast: > Data(0) <= mein8BitVektor (7 downto 0); > Dann kannst du sogar so schreiben: > Data(0) <= mein8BitVektor; Vielen Dank.. werde ich morgen früh mal ausprobieren und am nachmittag und am abend.....;)
Gast
#2163999
so nun ist der nächste Tag und ich frage mich nun, ob ich meinen eigenen Datentyp nun auch in eine andere Entity einbetten kann. Zurzeit sieht das ja so aus: type BYTE_ARRAY is array(31 downto 0) of std_logic_vector (7 downto 0); signal DATAIN : BYTE_ARRAY; kann ich diesen Datentyp auch als Port verwenden?
Gast
#2164015
Olli R. schrieb: > kann ich diesen Datentyp auch als Port verwenden? Ja, sowas mache ich ständig. Dafür liegen die types in einem eigenen Package, welches überall eingebunden wird. Duke
Gast
#2164021
Ok über diese Packages werden also z.B. persönliche Datentypen eingebunden! geht das auch indem ich einfach im Port jeweils den Datentyp deklariere? oder wie geht das mit den Packages einbinden (nutze Xilinx ISE 13.1) etc.?
Olli R. schrieb: > oder wie geht das mit den Packages einbinden (nutze Xilinx ISE 13.1) > etc.?
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
16 | |
17 | |
18 | |
19 | |
20 | |
21 | |
22 | |
23 | |
24 | |
25 | |
26 | |
Gast
#2164522
Vielen Dank das hat mir sehr weitergeholfen. Alles läuft!!
Auch ich danke Lothar. Wieder was dazu gelernt!
Olli R. schrieb: > Vielen Dank Steffen H. schrieb: > Auch ich danke De nada... ;-) Da fällt mir noch was auf: die Entity MachWas braucht in diesem Beispiel nicht wirklich einen Takt... ;-)
Gast
#2167466
Eigentlich verwendet man für diesen Zweck immer einen internen BLOCK RAM
Johann schrieb: > Eigentlich verwendet man für diesen Zweck immer einen internen BLOCK RAM Das kommt eigentlich immer drauf an, ob man die Daten evtl. komplett parallel braucht...
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.