Forum: FPGA, VHDL & Co. Stream AXI split


von Yonas (Gast)


Angehängte Dateien:

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!

von Samuel C. (neoexacun)


Lesenswert?

Nimm dafür den AXI-Stream-Broadcaster-IP von Xilinx. Einfach nur Signale 
im BD zu verbinden wird dich nicht weit bringen. Die Streams müssen 
beide aktiv bedient werden.

von Yonas (Gast)


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!

von Yonas (Gast)


Angehängte Dateien:

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?

von Yonas (Gast)


Angehängte Dateien:

Lesenswert?

sorry, die zwei Bild sind nicht hochgeladen worden.

von Samuel C. (neoexacun)


Lesenswert?

Das ist ein Darstellungsfehler im Broadcaster (welcome to Xilinx). Das 
kannst du ignorieren. Es zählt nur, was in der Konfiguration eingestellt 
ist.

https://support.xilinx.com/s/question/0D52E00006hpKflSAE/using-axi-broadcaster?language=en_US

: Bearbeitet durch User
von FPGA-Spezi (Gast)


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.

von Samuel C. (neoexacun)


Lesenswert?

Lässt sich mit dem dämlichen AXI-Kram 1:1 so bauen. Außer man ist 
allergisch dagegen.

von FPGA-Spezi (Gast)


Lesenswert?

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

von VHDL hotline (Gast)


Lesenswert?

FPGA-Spezi schrieb im Beitrag #7332537:
> 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.

von Yonas (Gast)


Lesenswert?

Hallo zusammen,

ich habe den Bugg auch hier gefunden:

https://imperix.com/doc/implementation/axi4-stream-ip-from-xilinx

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. Also 
werde ich mich mal heute rumprobieren.

von FPGA-Spezi (Gast)


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.

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.