Wie kann der PPC mit dem FPGA kommunizieren?

Gast #1421846
Lesenswert?

Hallo,

ich habe ein ml507 board und benutze den mit integrierten PowerPC. Im 
Moment bin ich soweit gekommen, dass ich über Ethernet ein Bild vom PC 
zum Board schicken kann. Der PPC legt dass dann im DDR2 Speicher ab und 
schickts es wieder zurück. Nun sollte natürlich noch was mit dem Bild 
berechnet werden. Allerdings nicht auf dem PPC sondern mit dem FPGA. Nun 
zu meiner Frage: Wie kriege ich das Bild in den FPGA rein? Muss ich mir 
extra ein DDR2 Modul schreiben (und ist es überhaupt möglich, mit dem 
FPGA auf den Speicherbereich des PPC, also dem Heap, zuzugreifen?) oder 
gibts es die Möglichkeit, die Daten direkt vom PPC über ein paar Ports 
auf ein VHDL Modul zu leiten (wäre mir am liebsten)? Oder gibt es 
vielleicht noch andere Möglichekiten?

Gruß
Sascha
#1421861
Lesenswert?

Am schnellsten geht die Datenübertragung über den MPMC DMA Controller. 
Da kannst du dir dann für deine Schnittstelle zur FPGA Logik was 
aussuchen. NPI oder LocalLink Interface. Beide erlauben DMA Transfer. 
Wir haben das hier mal für LocalLink gemacht, ist überschaubar und 
FIFO-basiert. Noch einfacher gehts per FSL, aber da geht kein DMA, das 
muss der PPC alles im Polling machen...
Gast #1421911
Lesenswert?

danke schonmal

aber leider läuft der MPMC über den PLB. das ist mir zu langsam. der PPC 
hat ja ne direkte anbindung an den DDR speicher. das sollte auch so 
bleiben. dazu kommt, dass ich überhaupt keine ahnung hab, wie ich das in 
vhdl bzw. systemc programmieren soll. hab leider noch nicht so viel 
ahnung von fpga und den xilinx tools. und mit FSL kann ich leider nix 
anfangen :(
Gast #1422088
Lesenswert?

ok. die timingdiagramme helfen mir schon weiter.
kann mir jetzt bitte noch einer sagen, wie ich den mpmc im edk und ise 
konfigurieren muss, damit ein vhdl modul auf die ports des mpmc zugrifen 
kann und der ppc möglichst direkt an den mpmc angeschlossen wird? währe 
euch wirklich sehr dankbar. ich blick da noch nicht so richtig durch.
#1422188
Lesenswert?

Sascha schrieb:
> danke schonmal
>
> aber leider läuft der MPMC über den PLB. das ist mir zu langsam.

Der PLB steuert den DMA nur. Du kannst dann einen Datentransfer direkt 
von deiner Hardware zum RAM oder zum Ethernet machen, ohne das durch den 
PPC schleifen zu müssen. Schneller gehts nicht. Dazu ist der DMA 
Controller ja da.
#1423107
Lesenswert?

Benutz doch einfach den Base System Builder des EDK. Da kannst du das 
System schon mal für den DemoBoard zusammen klickern. Aber da du ja 
schon den DDR Speicher mit dem PPC verbunden hast, nehme ich einfach mal 
an, dass du sowieso schon den MPMC drin hast.
Dann musst du "nur" noch die passenden VHDL IP Cores schreiben und im 
EDK importieren. Dann kannst du die genauso in das System einfügen wie 
die IPs, die Xilinx mitliefert. Ist allerdings immer etwas Handarbeit, 
die Files entsprechend aufzubereiten. Allerdings wirst du ohne VHDL 
Kenntnisse nicht sehr weit kommen, denn das ist alles andere als 
trivial.
Gast #1423127
Lesenswert?

Der PPC ist direkt am DDR angeschlossen. Den MPMC macht der BSB nur bei 
Microblaze rein, weil der wohl keine integrierte MMU hat.

Ich dachte, wenn der MPMC erstmal richtig konfiguriert ist, dass ich 
dann einfach mit einem VHDL Modul (was ich unter ISE einfüge und dann 
mit dem XPS Projekt verbinde) über diesen NPI Bus an die Daten rankomme. 
Oder verstehe ich das jetzt falsch?

Wollte das dann mit SystemC schrieben und dann nach VHDL synthetisieren 
(hab ein Programm dafür). Hat bisher immer ganz gut geklappt.
#1423226
Lesenswert?

Sascha schrieb:
> Der PPC ist direkt am DDR angeschlossen. Den MPMC macht der BSB nur bei
> Microblaze rein, weil der wohl keine integrierte MMU hat.

Du meinst das Modul was sich irgendwie DDRSDRAM_0 oder so nennt? Das ist 
der MPMC. Der PPC an sich hat doch nur IPLB und DPLB dran, das geht gar 
nicht direkt an den Ram anzuschließen. Der MPMC wird nur vom Base System 
Builder gleich als DDR_SDRAM bla bla benannt. Das ist aber nur der 
Instanz-Name.
Wenn du in der Systemansicht auf den doppelklickst, kannst du noch einen 
zusätzlichen Port aktivieren, für dein Modul. NPI, XCL oder halt SDMA 
(ist LocalLink).

> Ich dachte, wenn der MPMC erstmal richtig konfiguriert ist, dass ich
> dann einfach mit einem VHDL Modul (was ich unter ISE einfüge und dann
> mit dem XPS Projekt verbinde) über diesen NPI Bus an die Daten rankomme.
> Oder verstehe ich das jetzt falsch?

Ja so in etwa. Wobei das "einfach" hier nicht ganz passt. Du kannst ein 
NPI oder XCL oder LocalLink kompatibles VHDL Modul basteln und das im 
XPS dann ins System integrieren. Wie gesagt, da ist noch bissl 
Handarbeit, die entsprechende Ordnerstruktur mit den Dateien zu machen, 
aber das geht schon.

> Wollte das dann mit SystemC schrieben und dann nach VHDL synthetisieren
> (hab ein Programm dafür). Hat bisher immer ganz gut geklappt.

Hmm...da kenn ich mich nicht aus. Aus Erfahrung weiß ich aber, dass man 
die meisten Sachen verkompliziert, wenn man sie versucht, zu 
vereinfachen.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren