Hallo, In Beispielcode aus dem I-net-Fundus fand ich Speicher, der mal als little, mal als big endian ausgelesen werden konnte. Kann mir bitte jemand erklären, welchen Sinn es macht, dieses in einem FPGA tun zu wollen? Für mich war little endian immer an Intel CPUs (bzw. kompatible) gekoppelt. Ethernet ist ja big endian basiert, also welche Schnittstellen brauchen noch little endian integers? Ich dachte bislang, dass es in bitorientierten Architekturen Jacke wie Hose is...?!?
> dass es in bitorientierten Architekturen Jacke wie Hose is...?!? Das gilt nur solange du auf deiner eigenen Plattform bleibst. Interessant wird das Thema genau dann, wenn du Daten an einen anderen Teilnehmer (uC, PC...) weitergibst. Aber auch im FPGA kann das Thema in abgewandelter Form auftauchen. Was passiert z.B. hier:
1 | signal xxx : std_logic_vector(7 downto 0); |
2 | signal yyy : std_logic_vector(0 to 7); |
3 | :
|
4 | xxx <= "11110000"; |
5 | yyy <= xxx; |
Welchen Wert hat jetzt das Bit 0 von yyyy?
Anfänger schrieb: > Ich dachte bislang, dass es in bitorientierten Architekturen Jacke wie > Hose is...?!? Einzig bei wortorientierten Architekturen ist es Jacke wie Hose. Nur wenn zwei aufeinander folgende Speicherworte eine Adressdifferenz von 1 haben, dann ist endgültig Ruhe an der Front. Sobald man Speicherworte irgendwie in Bytes oder gar Bits runterbricht geht der Spuk los.
> Welchen Wert hat jetzt das Bit 0 von yyyy?
Gute Alptraumfrage. Zuem Glueck hast Du ein Schlupfloch gelassen, das
die Antwort ganz einfach macht.
yyyy ist nicht definiert, Bit 0 also auch nicht.
> Zuem Glueck hast Du ein Schlupfloch gelassen
Oh, Mann, ein Typo :-/
Also, die eigentliche Frage lautet:
1 | signal xxx : std_logic_vector(7 downto 0); |
2 | signal yyy : std_logic_vector(0 to 7); |
3 | :
|
4 | xxx <= "00000001"; |
5 | yyy <= xxx; |
6 | bit7 <= yyy(7); |
7 | bit6 <= yyy(6); |
8 | bit5 <= yyy(5); |
9 | bit4 <= yyy(4); |
10 | bit3 <= yyy(3); |
11 | bit2 <= yyy(2); |
12 | bit1 <= yyy(1); |
13 | bit0 <= yyy(0); |
Welchen Wert hat bit0? Und welchen Wert bit7? Und hier die für manche überraschende Antwort: Nach der Zuweisung xxx <= "00000001"; hat xxx den Wert "00000001", also xxx(7) = '0' und xxx(0) = '1' und nach der Zuweisung yyy <= xxx; hat yyy den Wert "00000001" also yyy(0) = '0' und yyy(7) = '1'
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.