Hi Jason, 

I agree you could be fooled if, by chance, the ibob counters happen to be
synced.  But, I think the likelihood of such an occurrence is low enough
that it probably wouldn't fool you very often or for very long.  If the 1
pps sync *didn't* work, the values in the snap blocks would almost certainly
be misaligned by many more than 1 or 2 counts.

But, I think this depends on how your sync generator is setup (whether the
counter feeding the snaps will free run upon programming, prior to setting a
sync pulse period).  In this case, the counter will only be regularly reset
upon applying a period, and is thus a somewhat random function of the time
you enter a value into a sw register - thus making the likelihood of synced
counters w/out a 1pps sync unlikely.

Triggering on the 1pps is indeed a more robust and specific test.

- Andrew






On 8/28/09 2:58 AM, "Jason Manley" <[email protected]> wrote:

> Yeah, but what you're wanting to test here is if they are indeed
> aligned. Agreed that the test using internal syncs would work if they
> did trigger on a 1PPS, but then there's not much point in checking. So
> you want to check if they did properly trigger on a 1PPS and if the
> ibobs are correctly sync'd.
> 
> The problem with internal sync triggering
> =========================================
> So let's imagine that they don't properly sync on a 1PPS. Then their
> onboard counters were not reset at the same time and are now running
> in sync, but are misaligned.
> Now let's say you are triggering your snap blocks off an internal
> sync, generated from a local counter. You might trigger the snap
> blocks on all the IBOBs and have themy wait for their next sync pulses
> (which is still aligned on each ibob with their respective counter
> values) before capturing a bunch of data (presumably a counter),
> Depending on your internal sync period (let's imagine a sync period of
> 1second ~2^27), each snap block could contain the same counter values,
> making it look like they're in sync, though in fact they might be out
> by as much as a second, because the triggers could occur any time
> within a second of the software arm. I have seen this happen with low
> amplitude 1PPS inputs.
> 
> Debugging IBOB sync
> ===================
> If you trigger off the external 1PPS, then you are assured of absolute
> timing, rather than the internal sync, which may or may not be aligned
> (it is precisely this that you need to test). Bearing in mind that the
> exact trigger point of the 1PPS on each IBOB may jitter by up to 1
> clock period (hence your snap's counter values might be misaligned by
> up to 2 values). I have seen this with low amplitude or slewed (poor
> distribution network) 1PPS pulses.
> 
> Visual check good
> =================
> Also, if you output the sync pulse of each ibob to an LED, you can
> usually see pretty quickly if they are reasonably closely sync'd or
> not. While not conclusive, it provides a nice sanity check.
> 
> A deployable check for sync
> ===========================
> A nice way of building-in a check for sync in the deployed system is
> to have the external 1PPS enable a register of your sync generator's
> current counter. With a reasonably slow sync (I like 2^27 ~ 1 second),
> you read the registered values from all the IBOBs at the same time.
> Then you compare them in software. They should all be within 2 counts
> of each other.
> 
> Jason
> 
> 
> On 28 Aug 2009, at 11:35, Andrew Siemion wrote:
> 
>> Hi Jason,
>> 
>> If the ibobs are clocked synchronously (as in Richard's setup), how
>> could
>> the internal syncs be out of alignment (after proper triggering on a
>> 1pps?).
>> 
>> As I understand it, once you trigger on the 1pps the two ibob
>> internal syncs
>> should be perfectly aligned, both in cycle number and time (subject
>> to some
>> possible glitch)?
>> 
>> - Andrew
>> 
>> 
>> 
>> 
>> On 8/28/09 2:23 AM, "Jason Manley" <[email protected]> wrote:
>> 
>>> Placing snap blocks on separate ibobs will not be a definitive test,
>>> but would certainly be helpful. You would have to trigger them from
>>> the external 1PPS, which is not guaranteed to be perfectly aligned
>>> across boards after the first arm-trigger-sync operation (you may
>>> jitter by one or two clocks).  Bear this in mind when interpreting
>>> the
>>> two captures... that the values could be out by up to 2 counts.
>>> 
>>> Triggering the snap blocks off the internally-generated sync pulses
>>> would defeat the purpose entirely, since the syncs would force the
>>> local counters to trigger the snap blocks at the same values even if
>>> they don't occur at the same time.
>>> 
>>> Jason
>>> 
>>> On 28 Aug 2009, at 11:10, Andrew Siemion wrote:
>>> 
>>>> Hi Richard,
>>>> 
>>>> Did you add snap blocks to the counters prior to the xaui links,
>>>> triggered on a sync, to ensure that the ibobs are indeed
>>>> synchronized?
>>>> 
>>>> - Andrew
>>>> 
>>>> 
>>>> On 8/28/09 2:02 AM, "Richard Armstrong"
>>>> <[email protected]> wrote:
>>>> 
>>>>> Dear CASPERites,
>>>>> 
>>>>> I've been trying for some time to synchronise two XAUI streams from
>>>>> two separate IBOB boards in a BEE2 board. I've not met with much
>>>>> success. I'd be really grateful any ideas or help from anyone who
>>>>> may have experience with this, or perhaps a better general
>>>>> understanding of the issues I'm encountering.
>>>>> 
>>>>> The test system I've got is as follows: I'm clocking my IBOBs
>>>>> synchronously and aligning them with a 1PPS input. Each IBOB has a
>>>>> 31-bit counter which is reset off a 'sync' pulse. The sync pulse is
>>>>> generated by a circuit that is aligned with the 1PPS signal. I'm
>>>>> sending the counter value multiplexed with the sync in a demux-by-2
>>>>> XAUI block to the BEE2. At the BEE2, I'm testing the alignment of
>>>>> the counters.
>>>>> 
>>>>> In my mind, as long as the ibob data rate is low enough, the XAUI
>>>>> interface should provide complete clock-domain isolation. That is,
>>>>> the bee2 should be able to be clocked at any rate, including a
>>>>> lower rate than the ibob (provided, again that the data transfer
>>>>> rate is low enough).
>>>>> 
>>>>> Worryingly, and unexpectedly, I find the counter values way out of
>>>>> alignment, and perhaps worse than this, there seems to be jitter on
>>>>> the difference between the counter values from cycle to cycle.
>>>>> Andrew and Peter helped me out for a couple of days on their way to
>>>>> Paris. We corrected some of the design errors (namely, selecting
>>>>> demux-by-2 for 32-bit data), made sure the ibob clock was running
>>>>> slower than the bee2 clock, and changed the length of the sync
>>>>> pulse. However, we were unable to resolve the fundamental issues.
>>>>> 
>>>>> This week I've been trying to clock the BEE2 off an IBOB-generated
>>>>> clock with an LVTTL-to-LVPECL clock driver. I changed the BEE2
>>>>> design and changed a jumper to select user-clock on the BEE2 board.
>>>>> Unfortunately, this doesn't seem to help much (although, I could be
>>>>> doing it wrong) and I'm finding with this scheme that the BEE2 has
>>>>> the tendancy to kill the running process after a few seconds to
>>>>> minutes.
>>>>> 
>>>>> I know many of the more experienced CASPERites advise asynchronous
>>>>> designs for this reason. However, I'm pretty sure someone else must
>>>>> have disregarded this advice (or perhaps discovered this advice) by
>>>>> pursuing XAUI synchronisation. Were these same issues seen? What's
>>>>> the best clocking scheme in practice (fully synchronous or
>>>>> downstream boards clcoked faster)? Does anyone have any ideas on
>>>>> jitter?
>>>>> 
>>>>> Thanks,
>>>>> 
>>>>> Richard
>>> 
>> 
>> 
> 



Reply via email to