I ve been working on a signal acquisition project. It samples 262.144 points (each point = 2 bytes), taking 524.288 bytes in the external RAM. This was done using the fifo idea, filling the fifo with 512 ponits at 10Mhz and loading the external RAM at 100Mhz (I’m using the “ramtester example” RAM controller, which is very helpful for this situation).
After a single acquisition, The data is read from a PC through the usb port, running a C++ application. However, I experienced some delays (a long busy state) when I call thr following function:
okUsbFrontPanel_ReadFromPipeOut(obj, 0xa0, 524288, buf);
My data is loaded in buf variable, ‘obj’ is the handler object, ‘0xa0’ is the address inside the fpga of okPipeOut module and ‘524288’ is the block size argument (which i couldnt understand very well). Is this ‘524288’ value correct? Why my application freezes for a consider while when I read this block from fpga+external RAM? Do you recommend I use some polling technique in my C++ code?
Thanks a lot,