[hpsdr] Ozy/Mercury Protocol
John Melton
John.Melton at Sun.COM
Tue Aug 18 03:47:32 PDT 2009
This sounds familiar ;-)
It is exactly the problem I see with interfacing HPSDR with Jack on Linux.
-- John g0orx/n6lyt
On 08/18/09 11:35, Alberto I2PHD wrote:
> ***** High Performance Software Defined Radio Discussion List *****
>
>
>
> ------------------------------------------------------------------------
>
> Phil Harman wrote:
>> Dave is quite correct, given the bursty nature of PC processing we have
>> implemented large FIFOs in the FPGA code to account for this.
>>
> Hi Phil and Dave,
>
> thanks for the answers. But there is still something that puzzles me.
> I am quite familiar with FIFO and Ring buffers, I use them extensively
> both in Winrad
> and in the new code to interface the HPSDR HW.
>
> But you need a timing to start a new signal processing cycle on the
> PC... when data are coming
> from a sound card, that timing is given by the card interrupts, that
> happen at a regular
> rate, given by the sampling frequency.
>
> In the case of HPSDR, the only timing available is given by the arrival
> of a new USB buffer,
> FIFO and Ring buffers can compensate for delays in obtaining CPU cycles
> from the
> Windows scheduler, but cannot correct the timing.
>
> And the inherent timing of the HPSDR HW is that of providing 63 samples.
> Suppose you want
> to start a processing cycle that process a 512-sample buffer. How can
> you obtain the right
> trigger to start it from the HPSDR timing ? 63 has no powers of two in
> its prime decomposition,
> being it 3 * 3 * 7. So to have a timing without jitter you would need to
> fill a buffer of 63 * 512 samples,
> and only when it is full you could start a processing cycle being
> certain of having no jitter.
>
> But that size is way too large, it would introduce unacceptable latency.
> If you do a close inspection at the process, you see that initially, to
> fill a 512 sample buffer, you need
> 9 buffers of 63 samples, and you remain with (63 - 8) = 55 samples as
> 'reservoir'.
> So for the second 512 sample buffer you need now only 8 buffers of 63
> samples, using 8 samples
> taken from the 'reservoir'. And so on for some cycles. But then, when
> the 'reservoir' is empty,
> you need again 9 buffers of 63 samples....
>
> So the rate of preparation of the 512 sample buffers, which ultimately
> is the rate that determines
> the timing of the signal processing cycle on the PC, is slightly uneven,
> with some jitter. It alternates
> between 9 and 8 USB-interrupts (not the right word, but you understand
> what I mean).
> And frankly I cannot understand how this jitter can be eliminated with
> the use of FIFO and/or Ring buffers...
>
> As said in my previous message, there are absolutely no consequences on
> voice/music or CW
> signals. My fear is that those few data modes that require phase
> coherence can be affected...
>
> Sorry if I make you spending some time reading this...
>
> 73 Alberto I2PHD
>
>
>
>
>
> ------------------------------------------------------------------------
>
> _______________________________________________
> HPSDR Discussion List
> To post msg: hpsdr at openhpsdr.org
> Subscription help: http://lists.openhpsdr.org/listinfo.cgi/hpsdr-openhpsdr.org
> HPSDR web page: http://openhpsdr.org
> Archives: http://lists.openhpsdr.org/pipermail/hpsdr-openhpsdr.org/
1250592452.0
More information about the Hpsdr
mailing list