Hallo Leute, ich stehe vor einem Problem. In meinem FPGA sind derzeit mehrere Module eingebaut. Zu diesen zählt unter anderem ein Microblaze. Die Module sollen un im nächsten Schritt miteinander kommunizieren können. Ich dachte da an einen bidirektionalen Bus! Dies ist aber, wie ich vernommen habe nicht möglich(kein tristate im FPGA). Welche Möglichkeiten bieten sich noch an? ... Vielen Dank
Der Bus, den der Microblaze von Haus aus mitbringt? Es soll auch bidirektionale Busse geben, die nicht auf Tristate angewiesen sind.
Tim S. schrieb: > Welche Möglichkeiten bieten sich noch an? Wie viele Busmaster hast Du? Wenn Du nur einen hast, kannst Du alle Modulausgänge miteinander verodern. Du mußt nur dafür sorgen, daß ein inaktives Modul "0000" auf den Bus gibt. Duke
Hallo, ich habe vergessen zu erwähnen, dass es ein Multi-Master Bus sein soll. Sprich jeder Teilnehmer soll sowohl als Master als auch Slave fungieren(wenn er addressiert wird). Also später sollen es ungefähr 10 Teilnehmer werden.
ich würde nen Controller-Modul(ne Art von Arbiter) schreiben, welches Schreib- und Leseanfragen verarbeitet und entsprechend deiner eigenen Prioriäten dann Schreib- und Leserechte an die einzelnen Busteilnehmer vergibt. Ist ein bissel extra Arbeit und die Businterface(s? = Plural??) müssen um entsprechende Logik und Signale erweitert werden, aber mir fällt nichts mit mehr Kontrolle und Sicherheit ein.
Und wie ist es mit Wishbone ... das würde doch dann beudeuten meine Module anzupassen?
Tim S. schrieb: > Und wie ist es mit Wishbone ... Würde gehen. Du mußt trotzdem sicherstellen, das nur ein Master den Buszugriff genehmigt bekommt. > das würde doch dann beudeuten meine > Module anzupassen? Ja. Die brauchen dann eine Wishbone-Master und eine Wishbone-Slave Schnittstelle. Duke
Tim S. schrieb: > In meinem FPGA sind derzeit mehrere Module eingebaut. Zu diesen zählt > unter anderem ein Microblaze. > Die Module sollen un im nächsten Schritt miteinander kommunizieren > können. Vielleicht beschreibst Du uns eine bischen genauer was Du machen möchtest? Miteinander kommunizieren kann vieles bedeuten, das reicht vom Austausch kleiner Pakete bis zu einer schnellen Datenübertragung mit MB/s und Mbytes an Daten. Das macht einen Unterschied. Außerdem : Du sprichst von einem Multimastersystem unter anderem mit Microblaze. Wie soll aber der MB als Slave reagieren? Man kann einen Speicher als Slave haben, aber nicht einen Prozessor.
> Du sprichst von einem Multimastersystem unter anderem mit Microblaze. > Wie soll aber der MB als Slave reagieren? Man kann einen Speicher als > Slave haben, aber nicht einen Prozessor. Da hast du recht daran habe ich nicht gedacht! Hier sei noch gesagt, dass es nur einen Prozessor geben wird. Dieser wird dann halt nur Master sein. > Miteinander kommunizieren kann vieles bedeuten, das reicht vom Austausch > kleiner Pakete bis zu einer schnellen Datenübertragung mit MB/s und > Mbytes an Daten. Es handelt sich nur um kleine Pakete. > Ja. Die brauchen dann eine Wishbone-Master und eine Wishbone-Slave > Schnittstelle. Wie groß ist da der Aufwand.
abcd schrieb: > Der Bus, den der Microblaze von Haus aus mitbringt? Es soll auch > bidirektionale Busse geben, die nicht auf Tristate angewiesen sind. Im FPGA stets 2 Busse parallel, non duplex.
Bego schrieb: > Im FPGA stets 2 Busse parallel, non duplex. Und zum Umschalten ein Sack voll Multiplexer... Jeder bidirektionale Bus wird auf Schreib- und Lesebus aufgetrennt. Und aus diesem Grund sollte das Design im FPGA auch gleich so machen, dass das problemlos möglich ist. Oder dass es gar nicht nötig ist.
Ich stehe jetzt vor der Entscheidung:
Wishbone Interface an meine Module anbinden
oder
> ein Sack voll Multiplexer
und eignen Arbiter
Wie schätzt ihr den Aufwand?
Warum eigentlich alles neu erfinden? Alles wichtige steht doch schon oben: Mit dem Microblaze verwendet man am besten den xilinx AXI4 Bus. Bei einem FPGA der älter als ein Spartan6 ist eben den PLB-Bus. Alles andere (Arbiter, Bus-Mastering) erübringt sich. Wenn man nur Single-Word Zugriffe macht (kein Bursts) sind eigen IP-Module sehr schnell angepasst. Stichwort ist Xilinx IPIF.
Tim S. schrieb: > Ich stehe jetzt vor der Entscheidung: > Wishbone Interface an meine Module anbinden > oder >> ein Sack voll Multiplexer > und eignen Arbiter > Ich kenne Wishone nicht, aber wenn man sich http://en.wikipedia.org/wiki/Wishbone_%28computer_bus%29 ansieht, und Du wirklich 10 Master hast, dann wird die Crossbar ziemlich aufwändig. > Wie schätzt ihr den Aufwand? Wie ist Dein Kenntnisstand?
Lothar Miller schrieb: > Wozu braucht man eigentlich innerhalb eines FPGAs einen > Multimasterbus? DMA wäre wohl ein klassischer Fall.
Ich versuche möglichtst immer mit Wishbone zu arbeiten. Zum Einen finde ich den recht schlank und übersichtlich, einfach handhabbar und meist völlig ausreichend. Zum Anderen haben eben viele OS-Cores ein WB-Interface. Im Falle eine Microblaze mache ich dann eine Umsetzung von AXI/PLB auf Wishbone.
Thomas schrieb: > Lothar Miller schrieb: >> Wozu braucht man eigentlich innerhalb eines FPGAs einen >> Multimasterbus? > > DMA wäre wohl ein klassischer Fall. Kann man auch gut abseits vom Master bus implementieren. D.h. einen parallel laufenden DMA-Bus ziehen. Bringt mehr Performance, vereinfacht einiges und die meisten FPGAs schaffen das von den Resourcen her.
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.