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+EDK+Tutorial+-+Adding+MPMC+to+an+EDK+Project&search_type=&aq=f Mich würde freuen wenn sich einer meldet der sich damit erfolgreicht auseinander gesetzt hat.
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....
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_manuals/xilinx11/edk_ctt.pdf hoffe ma ich komme weiter ;-)
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:
1 | /***************** Macros (Inline Functions) Definitions *******************/
|
2 | |
3 | /**
|
4 | *
|
5 | * Write a value to a IP_TEST register. A 32 bit write is performed.
|
6 | * If the component is implemented in a smaller width, only the least
|
7 | * significant data is written.
|
8 | *
|
9 | * @param BaseAddress is the base address of the IP_TEST device.
|
10 | * @param RegOffset is the register offset from the base to write to.
|
11 | * @param Data is the data written to the register.
|
12 | *
|
13 | * @return None.
|
14 | *
|
15 | * @note
|
16 | * C-style signature:
|
17 | * void IP_TEST_mWriteReg(Xuint32 BaseAddress, unsigned RegOffset, Xuint32 Data)
|
18 | *
|
19 | */
|
20 | ...
|
21 | #define IP_TEST_mWriteReg(BaseAddress, RegOffset, Data) \
|
22 | XIo_Out32((BaseAddress) + (RegOffset), (Xuint32)(Data))
|
23 | |
24 | /**
|
25 | *
|
26 | * Read a value from a IP_TEST register. A 32 bit read is performed.
|
27 | * If the component is implemented in a smaller width, only the least
|
28 | * significant data is read from the register. The most significant data
|
29 | * will be read as 0.
|
30 | *
|
31 | * @param BaseAddress is the base address of the IP_TEST device.
|
32 | * @param RegOffset is the register offset from the base to write to.
|
33 | *
|
34 | * @return Data is the data from the register.
|
35 | *
|
36 | * @note
|
37 | * C-style signature:
|
38 | * Xuint32 IP_TEST_mReadReg(Xuint32 BaseAddress, unsigned RegOffset)
|
39 | *
|
40 | */
|
41 | #define IP_TEST_mReadReg(BaseAddress, RegOffset) \
|
42 | XIo_In32((BaseAddress) + (RegOffset))
|
43 | ...
|
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) ...
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.
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...
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.
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.
Vermutlich mithilfe von Interrupts und dann eine interrupt service routine im c-code schreiben
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
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
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.