Gast
#6256681
Hallo MC,
angenommen, wir haben folgende Architektur:
+-----------+
AXI LITE| | AXI LITE
+-------+ PS +------+
| | | |
| +-----------+ |
| |
| |
v v
+----+------+ +-----+-----+ +------------+
| | MM2S | | MM2S | |
| DDR Mem +------------>+ AXI DMA +------------->+ FIFO |
| Controller| | Engine | | |
| | S2MM | | S2MM | |
| +<------------+ +<-------------+ |
+-----------+ +-----------+ +------------+
Hier kann ich nun die AXI DMA Engine dazu veranlassen, aus dem
DDR-Speicher Daten zu lesen und über MM2S in die FIFO zu schreiben. Dort
liegen die Daten dann.
Irgendwann später kann ich die AXI DMA Engine dazu veranlassen, über
S2MM die Daten aus der FIFO zu lesen und in den DDR-Speicher zu
schreiben.
Es sind sozusagen zwei unabhängige Vorgänge.
DAS PROBLEM:
Angenommen, wir lassen die FIFO wegfallen, also Loopback:
+-----------+
AXI LITE| | AXI LITE
+-------+ PS +------+
| | | |
| +-----------+ |
| |
| |
v v
+----+------+ +-----+-----+
| | MM2S | | MM2S
| DDR Mem +------------>+ AXI DMA +--------------|
| Controller| | Engine | |
| | S2MM | | S2MM |
| +<------------+ +<-------------|
+-----------+ +-----------+
1) Die FIFO ist weg. Wenn ich jetzt aus dem DDR-Speicher über MM2S einen
Sendevorgang veranlasse, wohin werden die Daten dann geschrieben? Es
gibt ohne FIFO keinen Zielbuffer.
2) Ist es eventuell so, dass in diesem Fall ein Sendevorgang OHNE
GLEICHZEITIGEN Empfangsvorgang über S2MM gar keinen Sinn macht, weil die
Daten sonst nirgends hingeschrieben werden können?
Der S2MM-Port der DMA Engine muss sozusagen über "TREADY" seine
Bereitschaft erklären, die Daten zu empfangen, ansonsten wird der
Sendevorgang sogar garnicht ausgelöst?
Verstehe ich das richtig?