Forum: FPGA, VHDL & Co. FPGA interne Bus


von Tim S. (169)


Lesenswert?

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

von abcd (Gast)


Lesenswert?

Der Bus, den der Microblaze von Haus aus mitbringt? Es soll auch 
bidirektionale Busse geben, die nicht auf Tristate angewiesen sind.

von Duke Scarring (Gast)


Lesenswert?

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

von Tim S. (169)


Lesenswert?

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.

von Trundle T. (shaheed)


Lesenswert?

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.

von Tim S. (169)


Lesenswert?

Und wie ist es mit Wishbone ... das würde doch dann beudeuten meine 
Module anzupassen?

von Duke Scarring (Gast)


Lesenswert?

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

von Klaus F. (kfalser)


Lesenswert?

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.

von Tim S. (169)


Lesenswert?

> 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.

von Matthias (Gast)


Lesenswert?

Hi
Microblaze klingt nach XILINX FPGA, wie sieht es mit der Verwendung des 
AXI Busses aus.

von Bego (Gast)


Lesenswert?

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.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

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.

von Tim S. (169)


Lesenswert?

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?

von rev (Gast)


Lesenswert?

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.

von Klaus F. (kfalser)


Lesenswert?

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?

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Wozu braucht man eigentlich innerhalb eines FPGAs einen 
Multimasterbus?

von Thomas (Gast)


Lesenswert?

Lothar Miller schrieb:
> Wozu braucht man eigentlich innerhalb eines FPGAs einen
> Multimasterbus?

DMA wäre wohl ein klassischer Fall.

von pks (Gast)


Lesenswert?

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.

von Fitzebutze (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.