mikrocontroller.net

Forum: FPGA, VHDL & Co. Ungereimtheiten beim Xilinx xps_mch_emc_v2_00_a


Autor: 1660ES (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo vielleicht kann mir jemand bei einem Problem beim Xilinx 
xps_mch_emc_v2_00_a IP Core.

Hintergrund:
Ich setze EDK 10.1 für ein Virtex 5 ein. Ich benutze den PPC (32 bit 
interner Bus) Der oben genannte Core soll das Interface für einen 
FXC128XFTG64C sein (Flash Baustein für den Virtex 5 Bitstream, 16bit 
Datenbus).

Es sollen nicht benutzte Teile in dem Flash Baustein verwendet werden um 
andere Daten abzulegen. Da ja der interne Datenbus 32 bit breit ist, der 
Datenbus des Flashspeichers aber nur 16bit habe ich im IP Core das 
"Execute Multiple Memory Accesses to match Bank x Data Bus width to PLB 
Data Bus Width" auf True gesetzt.

Wenn ich jetzt im C Code des PPC versuche über das gemappte Memory auf 
den Flash zu schreiben bekomme ich auf dem Logic Analyzer eine 
verschiedene Anzahl von Schreibzugriffen (die Write Leitung wird auf GND 
gezogen) angezeigt.

Problem:
Die Anzahl der Schreibzugriffe hängt kurioser weise von der zu 
beschreibenden Adresse ab:

Beschreiben von Adresse 0x0H:
*u16 = u16 (Beschreiben eines 16bit Pointers mit 16bit Daten) 1 
Schreibzugriff

*u16 = u32 (Beschreiben eines 16bit Pointers mit 32bit Daten) 1 
Schreibzugriff

*u32 = u32 (Beschreiben eines 32bit Pointers mit 32bit Daten) 2 
Schreibzugriffe

*u32 = u16 (Beschreiben eines 32bit Pointers mit 16bit Daten) 2 
Schreibzugriffe



Soweit ist noch alles ok (zumindest halbwegs nachvollziehbar) Schreibe 
ich jedoch jetzt auf die Adresse 0xBDDF - (Ich muss dort hinschreiben um 
den Flash in den Async Lesemodus zu versetzen) bekomme ich die folgende 
Anzahl von Schreibzugriffen:

*u16 = u16 (Beschreiben eines 16bit Pointers mit 16bit Daten) 2 
Schreibzugriffe

*u16 = u32 (Beschreiben eines 16bit Pointers mit 32bit Daten) 2 
Schreibzugriffe

*u32 = u32 (Beschreiben eines 32bit Pointers mit 32bit Daten) 3 
Schreibzugriffe

*u32 = u16 (Beschreiben eines 32bit Pointers mit 16bit Daten) 3 
Schreibzugriffe



Speziell im 2. Fall kann ich ebenfalls die Adresse, die an den Adressbus 
anliegt (müsste ja 0xBDDF sein) nicht nachvollziehen. Das der PPC Big 
Endian und der Flash Little Endian ist habe ich beachtet.

Hat jemand noch eine Idee?

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Schreibe ich jedoch jetzt auf die Adresse 0xBDDF
Ein unaligned Zugriff...

Fall 1 und Fall 2 wird wohl einfach das selbe sein. Auch im zweiten Fall 
werden wohl nur 16 Bit geschrieben. Oder wie willst du auf eine 16 Bit 
Variable 32 Bit unterbringen?

> Adresse, die an den Adressbus anliegt (müsste ja 0xBDDF sein)
Nein, ich würde 0xBDDE und 0xBDE0 erwarten.

> Das der PPC Big Endian und der Flash Little Endian ist...
hat damit nichts zu tun.

Autor: 1660ES (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Schreibe ich jedoch jetzt auf die Adresse 0xBDDF
>Ein unaligned Zugriff...

ok - das Fachwort kannte ich jetzt nicht - aber wie kann ich einen 
solchen machen? Ich muß ihn machen, da beim FXC128XFTG64C der zu 
schreibende Inhalt des Configuration Registers (so wie ich es verstanden 
habe) auf den Addressbus gelegt werden muss. (siehe 
http://www.xilinx.com/support/documentation/data_s... Seite 
20)

>Oder wie willst du auf eine 16 Bit
>Variable 32 Bit unterbringen?

nein - ist mir schon klar dass das Quatsch ist - nur der vollständigkeit 
halber alle Kombinationen ;-)


>Nein, ich würde 0xBDDE und 0xBDE0 erwarten.

klingt logisch - hilf aber nichts - siehe 2. Absatz....

Noch jemand eine Idee? (& Dank uns Lothar!)

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.