www.mikrocontroller.net

Forum: FPGA, VHDL & Co. Virtex 5 ml507- Board, PPC mit FPGA kommunizieren

Autor: Misha M. (Gast)
Datum:

Hallo, ich bin auf der Suche nach einer Lösung wie man PPC mit FPGA
kommunizieren lässt.

Habe ganz Internet durchforstet und nicht vernünftiges gefunden. Dies
finde ich shcon kommisch, da es für mich für ein alltägliches Problem
scheint, dass wenn man auf dem Board PPC ( PowerPC) hat das man mit der
FPGA logic komunizieren will, oder andersrum.

Der Ansatz der Lösung scheint wohl MPMC mit NPI zu sein, die zweit
Begriffe wurden erwähnt als ob es selbstverständliche were, doch ein
Tutorial o.ä. konnte ich dazu net finden.

in youtube fang ich eine Anleitung für Spartan3 einbindung von MPMC aber
sehr schlau wurde ich nicht daraus.

hier der Link (vieleicht ist manchen damit geholfen):

http://www.youtube.com/results?search_query=Xilinx...

Mich würde freuen wenn sich einer meldet der sich damit erfolgreicht
auseinander gesetzt hat.
Autor: Christian R. (supachris)
Datum:

Naja, da gibts viele Möglichkeiten. Das NPI über den MPMC ist schon ein
guter Ansatz, allerdings nicht gerade einfach. Das einfachste ist ein
FSL-Interface, das ist quasi ein doppelter FIFO. Das kann man an den PLB
klemmen und schon mal einfach Daten übertragen.
Du kannst natürlich auch direkt einen PLB-Slave bauen, auch dazu gibts
einige Vorlagen. Im Peripheral-Wizzard kann man sich für FSL und PLB ein
Grundgerüst erstellen lassen. Der rest ist Fleißarbeit. In den
Datenblättern zum jeweligen Bus steht ja alles drin.
Wenn du mit der Logik per DMA über den MPMC kommunizieren willst, ist
NPI (für Adress-basierte Logik) oder LocalLink (für FIFO-basierte Logik)
der Ansatzpunkt. Die LocalLinc Spec bekommt man bei Xilinx nach
(kostenloser) Anmeldung zum herunter laden. Der LocalLink ist ziemlich
universell, weil er Paketbasiert arbeitet und auch Byte oder
Wort-Transfers kann. Außerdem ist der an vielen Xilinx-Cores dran, zum
Beispiel am TEMAC, am PCIe Endpoint....
Autor: Misha M. (Gast)
Datum:

Danke erstmal für die schnelle Antwort.

ich versuche grad wahrscheinlich das was du vorgeschlagen habe, habe

xilkernel expample von xilinx runtergeladen und versuche jetzt über PLB
FPGA anzubinden.

("Chapter 7: Creating Your Own Intellectual Property") in dem Dokument
"EDK Concepts, Tools, and Techniques":

http://www.xilinx.com/support/documentation/sw_man...


hoffe ma ich komme weiter ;-)
Autor: Misha M. (Gast)
Datum:

Hallo,

hat einer schon mal über PLB von PPC auf FPGA zugegrifen??, wollte mit
was ganz einfachem anfangen und z.b. LEDs an/ausmachen.

nach dem "Create or Import Peripheral..." in XPS, wurde mir stücke c
code generiert:
/***************** Macros (Inline Functions) Definitions *******************/

/**
 *
 * Write a value to a IP_TEST register. A 32 bit write is performed.
 * If the component is implemented in a smaller width, only the least
 * significant data is written.
 *
 * @param   BaseAddress is the base address of the IP_TEST device.
 * @param   RegOffset is the register offset from the base to write to.
 * @param   Data is the data written to the register.
 *
 * @return  None.
 *
 * @note
 * C-style signature:
 *   void IP_TEST_mWriteReg(Xuint32 BaseAddress, unsigned RegOffset, Xuint32 Data)
 *
 */
...
#define IP_TEST_mWriteReg(BaseAddress, RegOffset, Data) \
   XIo_Out32((BaseAddress) + (RegOffset), (Xuint32)(Data))

/**
 *
 * Read a value from a IP_TEST register. A 32 bit read is performed.
 * If the component is implemented in a smaller width, only the least
 * significant data is read from the register. The most significant data
 * will be read as 0.
 *
 * @param   BaseAddress is the base address of the IP_TEST device.
 * @param   RegOffset is the register offset from the base to write to.
 *
 * @return  Data is the data from the register.
 *
 * @note
 * C-style signature:
 *   Xuint32 IP_TEST_mReadReg(Xuint32 BaseAddress, unsigned RegOffset)
 *
 */
#define IP_TEST_mReadReg(BaseAddress, RegOffset) \
   XIo_In32((BaseAddress) + (RegOffset))
...

meine Frage ist jetzt wie finde ich heraus auf welche Adresse ich
write/read Register funktion ausführen kann (um z.B. auf ml507 Boarg
LEDs an/aus zu machen) ...
Autor: Christian R. (supachris)
Datum:

Für die LEDs kannst du den xps_gpio Core benutzen. Aber da du ja über
kurz oder lang deine eigene Hardware anschließen willst, musst du dich
durch die PLB Spec wühlen und einen Slave implementieren. Die
Basisadresse wird im Normalfall über ein Generic bereitgstellt und im
EDK dann eingestellt.
Autor: Misha M. (Gast)
Datum:

hy,

will jetzt nicht undankbar wirken, aber gehts etwas datailierter, bin
mit der themaik nicht so vertraut und arbeite mich grad darein. Mit ISE
hate ich schon keinere Erfahrungen aber EDK ist echt mächtig...
Autor: Christian R. (supachris)
Datum:

Naja, schau dir mal die PLB Slaves an, die im EDK mitgeliefert werden.
Da kannst du welche zum Projekt hinzufügen, dann stehen die in der Liste
bei "System Assembly View". Da kannst du dann "View MPD" oder View HDL
Sources mit der rechten Maustaste die Beschreibungen anschauen. Aber
ohne Erfahrung mit der Materie einen PLB Slave schreiben.....naja. Such
dir am besten mal ein Tutorial oder benutz erst mal die Beispielprojekte
von Xilinx.
Autor: Misha M. (Gast)
Datum:

hey,

also bin jetzt soweit, kann von ppc auf FPGA schreiben udn lesen, das
einzige was ich bis jetzt nicht verstanden wie ich das synchronisieren
kann, also auf FPGA seite habe ich signale wie.

...
Bus2IP_BE                  : in  std_logic_vector(0 to
C_SLV_DWIDTH/8-1);
Bus2IP_RdCE                : in  std_logic_vector(0 to C_NUM_REG-1);
Bus2IP_WrCE                : in  std_logic_vector(0 to C_NUM_REG-1);
IP2Bus_Data                : out std_logic_vector(0 to C_SLV_DWIDTH-1);
IP2Bus_RdAck               : out std_logic;
IP2Bus_WrAck               : out std_logic;
IP2Bus_Error               : out std_logic;
...

die woll dafür sorgen, um zu gucken ob daten zum lesen da sind, bzw.
wenn man auf die daten was gescchrieben hab...

meine frage ist jetzt wie kann ich mit was vergleichbaren auf ppc-seite
mit C-Code abrufen, dass er wolange wartet bis ich auf der FPGA seine
ihm signalisiere, jetzt sind neue daten da!?


LG Misha M.
Autor: D. I. (grotesque)
Datum:

Vermutlich mithilfe von Interrupts und dann eine interrupt service
routine im c-code schreiben
Autor: Misha M. (Gast)
Datum:

Weiss einer ob PLB read/write Operationen auf dem PowerPC man mit
Interrupts realisieren kann, denn momentan blokiert der PowerPC wenn
z.B. der read-Acknowledge nicht gesetzt ist
Autor: Duke Scarring (Gast)
Datum:

Ich kenne mich mit PLB nicht aus, aber bei Wishbone etc. ist es ähnlich.
Evtl. kannst Du einen WatchDog auf das Acknowledge ansetzen, der dann
einen Fehler signalisiert.

Duke

Antwort schreiben

Die Angabe einer Email-Adresse ist freiwillig. Wenn Sie automatisch per Email ü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




Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder GIF-Format hochladen.
Siehe Bildformate

Mit dem Abschicken erkennst du die Nutzungsbedingungen an.

webmaster@mikrocontroller.netImpressumNutzungsbedingungenWerbung auf Mikrocontroller.net