Forum: FPGA, VHDL & Co. Grund für Aufteilung in Byteblöcke


von Peter (Gast)


Lesenswert?

kann mir einer mal erklären, warum im Beispielcode, der vom EDK (Xilinx) 
erzeugt wird, die gesamten Daten in byte Blöcke aufteilt?
1
for byte_index in 0 to (C_DWIDTH/8)-1 loop
2
  if ( Bus2IP_BE(byte_index) = '1' ) then
3
    slv_reg0(byte_index*8 to byte_index*8+7) <= Bus2IP_Data(byte_index*8 to byte_index*8+7);
4
  end if;
5
end loop;

von Artur Funk (Gast)


Lesenswert?

Vielleicht, weil slv_reg0 ein 8bit Register ist? Bzw. was soll das Ganze 
realisieren?

von Matthias (Gast)


Lesenswert?

Damit man aus dem C Code heraus auch 8 Bit speichern/lesen kann.
z.b. mit
char* slv_reg0 = Basisadresse;
*slv_reg0 = 214; // Schreibt in die 8 höchstwertigsten Bits (slv_reg0(0 
to 7)) des Registers;
*(slv_reg0+1) = 123; // Schreibt in die nächsten 8 bits (slv_reg(8 to 
15)) des Registers. Dabei wird den die entsprechen Byte Enable Signale 
ArBE gesetzt  und nur nur durch deren Auswertung wird sichergestellt, 
dass nicht die ersten geschriebenen 8Bit wieder überschrieben werden.

von Peter (Gast)


Lesenswert?

Super! Vielen Dank Matthias für die gute Beschreibung! Jetzt ist es 
klar!

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
Noch kein Account? Hier anmelden.