Forum: FPGA, VHDL & Co. N:1 Producer-Consumer Muster in VHDL


von Jörg (Gast)


Lesenswert?

Hallo zusammen,

Der Datenaustausch in einer 1:1 Producer-Consumer Beziehung kann durch
ein einfaches Protokoll oder ein FIFO erfolgen. Was ist aber ein guter
Ansatz für eine N:1 (oder auch 1:N, M:N) Beziehung?

Wie wären folgende Ansätze:
Protokoll: Der Consumer kommuniziert immer nur mit einem Producer,
die anderen werden z.B. per ENABLE-Signal bzgl. Kommunikation
deaktiviert.
FIFO: Jedem Producer wird ein FIFO zugeordnet. Der Consumer arbeitet
reihum die FIFOs ab.

Und wie würde ich bei einer M:N-Beziehung vorgehen?

Gruss und Danke,

Jörg

von Ingenieur (Gast)


Lesenswert?

Mehrdimensionaler Philosphenprozess nach Dijkstra mit zwei 
Semaphorschichten: Eine für die Readergruppe eine für die Writergruppe. 
Läuft in FPGAs faktisch auf n Fifos mit n Eingangsdekodern und einem n 
zu m Multiplexer auf m Ausgangsfifos hinaus. Anders, als in reinen 
SW-Prozessen, kann das tatsächlich paralle läufen und man kann bei 
sollsynchronem Betrieb eine Semaphorschicht unter den Tisch 
fallenlassen.

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


Lesenswert?

> Und wie würde ich bei einer M:N-Beziehung vorgehen?
Ich würde eine M:W Beziehung (auf neudeutsch M:F) eingehen, und nach 
entsprechender Augabenverteilung den Counterpart für zuständig erklären 
;-)

@  Jörg (Gast)
WAS willst du fragen?
Gibt es dafür eine deutsche oder wenigstens englische Erklärung?
Wird hier etwas Einfaches einfach umständlich formuliert?

von Jörg (Gast)


Lesenswert?

@Ingenieur (Gast),

die Idee mit einer zweischichtigen FIFO-Architektur ist ja sehr
interessant: So hat jeweils der Producer und der Consumer nur die
Sicht auf jeweils EINEN anderen (virtuellen) Partner und die
multidimensionale Beziehung bleibt für beide Seiten vollständig
transparent.
Das einzige Problem das noch bleibt ist der M:N-Mux zwischen
beiden FIFO-Ebenen (würde ich aber eher Dispatcher nennen). Das
werde ich hoffentlich aber selbst hinbekommen.

Gruss und Danke,

Jörg

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.