custom IP über PLB zu µBlaze?

Gast #2490674
Lesenswert?
• ▲
▼
Hallo,

ich habe einen IPcore, der muss dem Microblaze unbedingt etwas 
mitteilen. :)

Geht das denn, daß der IP über PLB an eine Microblaze-Adresse schreibt?
XPS "Create and Import Peripheral" bietet keine Möglichkeit an den 
eigenen Core zu einem PLB-Master zu machen. Man kann höchstens eine 
Read-Fifo anlegen. Aber kann die auch der Microblaze auslesen?

Welche Möglichkeiten habe ich noch zu µBlaze zu sprechen? Ist FSL die 
richtige Wahl?

Wäre nett, wenn jmd was schreiben könnte.
Das ist mein erstes vollständiges Design und ich kenne mich mit gutem 
Stil nicht aus.
Danke.
#2490763
Lesenswert?
• ▲
▼
Du hast drei Möglichkeiten:

1) Der Microblaze holt die Daten AKTIV über den PLB aus einem FIFO in 
deinem Device, evtl. aufgeweckt durch einen Interrupt. Dauert halt ein 
paar Taktzyklen pro Wort. Ist an sich das einfachste und sehr portabel 
(alles normale Speicherzugriffe und keine FSL-Extravaganzen).

2) Der Microblaze holt AKTIV die Daten vom FSL, dahinter brauchst du 
auch ein FIFO. Das ganze evtl. aufgeweckt von einen Interrupt. Geht 
etwas schneller als 1, für kontinuierlich hohe Datenraten (mal so übern 
Daumen >1Mbyte/s) aber auch nicht so geeignet, ausser du machst dein 
FIFO sehr gross, damit nichts verloren geht. Insgesamt spart das 
FSL-Interface aber nicht viel, die IRQ-HW braucht man so oder so. Der 
FSL ist eher für ein schnelles Coprozessor-Interface gedacht, also Daten 
schnell hinschreiben und zurücklesen.

3) Dein Device macht selbst DMA-Zugriffe über den PLB. Dazu gibt es 
AFAIR einen DMA-Central-Core oder du machst den PLB-Master selbst (etwas 
mühsam). Ist das effizienteste, erfordert aber etwas Koordinierung im 
Speicher (unter MMU-Linux also einen Treiber, uCLinux bräuchte keinen) 
und das Debugging ist auch nicht ganz so einfach (wenn was schief geht).

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