Stream AXI split

Gast #7330766
Lesenswert?

Hallo zusammen,

ich würde gerne ein Stream Master AXI auf zwei slaves spliten, ich habe folgendes versucht (siehe Bild), allerdings bekommen weder der FFT-Block Slave noch der zweiter Block (nicht im Bild zu sehen, die Ausgänge gehen einfach in ein zweiter Block, der allerdings in VHDL code realisiert wurde, somit im Block nicht enthalten). Wie kann man so etwas am besten realisieren? Vielen Dank im voraus!

Angehängte Dateien:
Gast #7331330
Lesenswert?

Danke Samuel, ich probiere es morgen aus, allerdings habe ich schon bevor ich gepostet habe, die AXI infrastructure IPs angeschaut. Wenn ich mich richtig entsinne waren die AXI broadcastes von Slave auf Master. Aber morgen mehr dazu. Vielen lieben Dank!

Gast #7332027
Lesenswert?

Hallo Samuel,

wie muss ich den Broadcuster parametrisieren, also ich habe für den Slave databytes 8 und für den Master auch 8 bytes eingestellt, da ich 64 Bits habe (Siehe Bild Broadcuster_Einstellung 1). Dann ist die zwete seite Stream Splitting Options auch jeweils auf 64 Bits (siehe Bild Broadcuster_Einstellung_2). Allerdings wird der Broadcuster mit 127 bits generiert (siehe BildBroadcuster. Ich möchte eigentlich die 64 Bit eingangsseitig Slave 1 auf die Master zwei Masters 1:1 ausgeben. Hast du vielleicht eine Ahnung woran es liegen könnte?

Angehängte Dateien:
Gast #7332240
Lesenswert?

Und wenn man ohne den dämlichen AXI-Kram baut, dann spult man alles auf 2 FIFOs und lässt das per hgand shake individuell abholen. Im Vergleich zum AXI-BC kommt man bis an 100% der möglichen Masterbandbreite, wenn man die Vereinigungsmenge der Slaves bildet.

Gast #7332559
Lesenswert?

FPGA-Spezi schrieb:

Es lässt sich einfacher und übersichtlicher auch ohne das AXI bauen.

Mindestens ein Handshake und Datenbus brauchst du am FIFO auch, und da sind wir am Eingang bei FIFO_Data_in=tdata, FIFO_Data_enable=tvalid, not FIFO_full=tready und am Ausgang ähnlich.

Je nachdem, welche Features du brauchst (byte enable, frame-basiertes stop flag), kommst du auch bei was selbst gestricktem nicht auf weniger Signale.

Am einfachsten ist, zumindest für mich, das was schon da ist und funktioniert. Am übersichtlichstens ist das, was nicht an jedem Modul ein anderes Interface hat. AXI-Stream ist da meiner Meinung nach geeignet.

Ich würde zustimmen, dass es sich "einfacher und übersichtlicher" ohne diesen IP-Block-Design Kram bauen lässt, aber das ist Sache der persönlichen Präferenz bzw. Fähigkeiten.

Gast #7333430
Lesenswert?

Yonas schrieb:

Allerdings will bei mir der Broadcaster einfach nicht laufen, ich habe tready signal gleich ~fifo_busy gesetzt, da in diesem zweiten Pfade bevor die Daten verarbeitet werden in eiem FIFO gespeichert werden.

Das ist so ein Beispiel, wo der broadcaster einfach nicht universell genug ist. Wenn man so etwas bauen möchte, dann baucht das System VOR und NACH der Ausgabelung ein ausreichend großes FIFO, damit der Master jederzeit reinschreiben kann, auch wenn nur einer der beiden Slaves abholen kann.

Da in jeder Anwendung das Abhol- und Einschreib-Muster anders ist, gibt es keine einheitliche Lösung für das Problem, auch wenn XI das immer wieder suggeriert.

Wenn man unbedingt AXI nehmen will oder muss, dann ERST die FIFOs und mit verundetem READY und DANN die Slaves.

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