[InBand]Rx side design


#1

Hello,

Here is a diagram of the Rx side.
http://www.andrew.cmu.edu/user/thottelt/rx.png

I plan to use a fifo to cross clock domains because it’s simpler than a
delay cell. Samples and commands will be stored in dual port fifos (one
per channel) A reader will poll them: if there are samples or commands,
push one single packet then poll next fifo. This should give a fair
share of the USB bandwidth to all channels/commands. I think I will be
able to reuse most of the code in the current rx_buffer that deals with
the FX2 DMA engine and the samples format, so the only task left is
building the packet itself.

Any comments, concerns ?

Thanks,
Thibaud


#2

Something surprised me in the current rx_buffer code: It seems that if
samples are received from different rx_chains at the same time, they
will be mixed in the next USB packet toward the host. Has the host a way
to separate them? Shall I keep this behaviour or separate samples by
channel when USB packets are built?

Thanks,
Thibaud


#3

Thibaud H. wrote:

Something surprised me in the current rx_buffer code: It seems that if
samples are received from different rx_chains at the same time, they
will be mixed in the next USB packet toward the host. Has the host a way
to separate them? Shall I keep this behaviour or separate samples by
channel when USB packets are built?

The standard USRP code interleaves samples from the different streams.
The host side code does the separation, although it is not always
necessary. For the inband work we should keep them separate, at least
for now.

Matt


#4

On Mon, Jun 11, 2007 at 06:32:19PM -0400, Thibaud H. wrote:

Something surprised me in the current rx_buffer code: It seems that if
samples are received from different rx_chains at the same time, they
will be mixed in the next USB packet toward the host. Has the host a way
to separate them? Shall I keep this behaviour or separate samples by
channel when USB packets are built?

Thanks,
Thibaud

Separate by channels. We’ll eventually define a subchannel
abstraction that will interleave multiple DDC outputs into a single
channel.

Eric