mikrocontroller.net

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


Autor: Misha M. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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:

Bewertung
0 lesenswert
nicht lesenswert
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:

Bewertung
0 lesenswert
nicht lesenswert
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:

Bewertung
0 lesenswert
nicht lesenswert
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:

Bewertung
0 lesenswert
nicht lesenswert
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:

Bewertung
0 lesenswert
nicht lesenswert
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:

Bewertung
0 lesenswert
nicht lesenswert
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:

Bewertung
0 lesenswert
nicht lesenswert
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. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vermutlich mithilfe von Interrupts und dann eine interrupt service 
routine im c-code schreiben

Autor: Misha M. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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:

Bewertung
0 lesenswert
nicht lesenswert
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 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.