(Originally comments on OpenEphys wiki)
I've gotten the Rhythm Interface largely working on XEM6310-LX150, while referencing the OpenEphys USB3 Rhythm verilog design.
One thing I'm noticing, and also pointed out by Intan Evaluation Software v1.5, is bytes-dropping in USB2 (and in my case, USB3) transfers. Intan's solution, in the updated rhd2000evalboard.cpp::readAdditionDataWords(), is to simply ignore the sample frame in which the byte drop happens, and then reads additional bytes (number of bytes per sample frame - the number of dropped bytes) to complete the frame.
This is hard to achieve with USB3 block-throttled transfer (since USB3 regular pipeouts are unreliable), since bytes transfered as to be multiples of at least 16 bytes. I can think of a few rather hacky ways, where I would stitch together data read out later with the previous ones, but I'm curious about whether you have encountered similar bytes-dropping in your USB3 development..judging from the plugin-GUI repo, I don't see any glitch-handling...
My Verilog code is here, the modified Intan Eval software is here .
(Originally comments on OpenEphys wiki)
I've gotten the Rhythm Interface largely working on XEM6310-LX150, while referencing the OpenEphys USB3 Rhythm verilog design.
One thing I'm noticing, and also pointed out by Intan Evaluation Software v1.5, is bytes-dropping in USB2 (and in my case, USB3) transfers. Intan's solution, in the updated rhd2000evalboard.cpp::readAdditionDataWords(), is to simply ignore the sample frame in which the byte drop happens, and then reads additional bytes (number of bytes per sample frame - the number of dropped bytes) to complete the frame.
This is hard to achieve with USB3 block-throttled transfer (since USB3 regular pipeouts are unreliable), since bytes transfered as to be multiples of at least 16 bytes. I can think of a few rather hacky ways, where I would stitch together data read out later with the previous ones, but I'm curious about whether you have encountered similar bytes-dropping in your USB3 development..judging from the plugin-GUI repo, I don't see any glitch-handling...
My Verilog code is here, the modified Intan Eval software is here .