- -T 0 specifies infinite timeout (read will block indefinitely until data is available following a write)
- -s 2000 specifies to read 2000 samples. The input data file in this example contains 2000 32-bit samples.
- > /mnt/output.bin will write the output data to binary file output.bin on the SD card
- & will run iio_readdev in the background, freeing up the shell to run iio_writedev
Use iio_readdev with mwipcore
39 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Luis
am 17 Dez. 2019
Beantwortet: Tom Mealey
am 13 Mär. 2023
Hi,
I am working with the AXI4-Stream interface provided with the HDL Coder, starting from this example. Since the AXI4-Stream interface uses iio drivers, it is possible to see the ip cores in the zynq board using iio_info (as stated here).
I wish to test the streaming interface using directly iio drivers in the zynq board: is it possible to use iio_readdev and iio_writedev commands in the zynq command line to test mwipcore?
zynqmp> iio_readdev mwipcore0:s2mm0
Unable to refill buffer: Connection timed out
0 Kommentare
Akzeptierte Antwort
Tom Mealey
am 13 Mär. 2023
Yes, it is possible to test the IIO stream drivers using iio_readdev and iio_writedev.
In the AXI4-Stream example you linked, the FIR Filter IP core gets its input from the MM2S DMA and writes the output to S2MM DMA. So, you must write data before you can read it.
First generate a binary file containing your input data. E.g.
t = 0:0.001:1.999;
inputData = cos(2.*pi.*t.*(1+t.*75)).';
inputDataFi = fi(inputData, 1,16,10); % match the input data type in hdlcoder_sfir_fixed_stream
inputDataU16 = typecast(storedInteger(inputDataFi),'uint16'); % get raw uint16 from fi data
inputDataU32 = uint32(inputDataU16); % pad to 32 bits because DMA stream width is 32
writer = dsp.BinaryFileWriter(Filename='input.bin');
step(writer,inputDataU32);
release(writer);
Upload this file to some location on the board's Linux filesystem, e.g. the mounted SD card directory:
hw=xilinxsoc;
hw.putFile('input.bin','/mnt')
Then from the board's Linux shell, queue up iio_readdev:
zynqmp> iio_readdev -T 0 -s 2000 mwipcore0:s2mm0 > /mnt/output.bin &
Write input data with iio_writedev:
zynqmp> cat /mnt/input.bin | iio_writedev -s 2000 mwipcore0:mm2s0
Finally, download the output file and check the contents.
hw.getFile('/mnt/output.bin');
reader = dsp.BinaryFileReader(Filename='output.bin',SamplesPerFrame=2000,DataType='uint32');
release(reader);
outputDataU32 = step(reader);
outputDataFi = reinterpretcast(cast_to_fi(outputDataU32), numerictype(1,32,20));
outputData = double(outputDataFi);
plot(outputData);
0 Kommentare
Weitere Antworten (0)
Siehe auch
Produkte
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!