[time-nuts] Re: Network interface cards that support timestamping
Ed Marciniak
ed at nb0m.org
Tue Jan 31 17:20:28 UTC 2023
I have no idea on implementation details, but I know the wired Ethernet interface on the Intel Galileo single board computer mentioned IEEE-1588 hardware support.
Iâve often thought about the idea for an amateur radio microwave station that it would be nice to distribute a clock via an Ethernet switch to drive local oscillators. Unfortunately, nanosecond level jitter on timing often doesnât mean great phase noise performance.
Get Outlook for iOS<https://aka.ms/o0ukef>
________________________________
From: Hal Murray via time-nuts <time-nuts at lists.febo.com>
Sent: Monday, January 30, 2023 11:56:34 PM
To: Discussion of precise time and frequency measurement <time-nuts at lists.febo.com>
Cc: Hal Murray <halmurray at sonic.net>
Subject: [time-nuts] Re: Network interface cards that support timestamping
John Miller said:
> I imagine most of us here use traditional RS232 serial ports to get this
> signal into an x86 computer, usually using the DCD pin. I've found some
> implementations of RS232 on PCs don't implement all of the additional
> signaling pins, so sometimes DCD is flat out missing. In other cases -
> especially with smaller embedded-type boards only UARTs with Rx/Tx are
> available to the user. (I'm fiddling with using GPIO pins on a few such
> systems, but it's quite a struggle.) So, there is a need for getting PPS
> signals into systems.
There is PPS support on GPIO pins on Raspberry Pi.
There are a couple of HOWTOs with details for use with NTP.
Quick start NTP on the Raspberry Pi
https://www.satsignal.eu/ntp/Raspberry-Pi-quickstart.html
The Raspberry Pi as a Stratum-1 NTP Server
https://www.satsignal.eu/ntp/Raspberry-Pi-NTP.html
Stratum-1-Microserver HOWTO
https://www.ntpsec.org/white-papers/stratum-1-microserver-howto/
On linux, you can get at the PPS time stamps with
$ cat /sys/devices/virtual/pps/pps0/assert
1675144263.000009495#1771119
$
The stuff before the # is the time stamp, seconds and nanoseconds. After the
# is a counter.
Use clear rather than assert for the falling edge.
ntpd turns off the edge it isn't using.
---------
I haven't worked with PTP. Fiddling bits in packets while they are in flight
breaks security.
One problem with doing timing in the NIC is that it gets you the time in the
NIC. If you are interested in NTP, you probably want the time on the main CPU.
I've daydreamed about an FPGA with a clock input from your best house clock.
The idea is that you program it to keep POSIX time: seconds and nanoseconds
and set things up so that users can map it into memory read-only. All you
have to do to get the time is read a 64 bit register from a device. Extra
credit if you have PPS inputs that capture a time stamp etc.
Anybody know how long it takes to read a device register?
Modern read-the-clock on Linux doesn't do a system call. The kernel keeps info in shared memory (man vdso) so user code can get the time from the TSC. This PC is 3.6GHz. Here is a histogram of reading the clock a million times in a loop, warm cache and such:
Histogram: CLOCK_REALTIME, 1 ns per bucket, 1000000 samples.
ns hits
10 6012
11 152279
12 459189
13 212678
14 137852
15 29083
16 401
17 538
18 714
19 441
813 samples were bigger than 19.
Slowest was 69632 ns
--
These are my opinions. I hate spam.
_______________________________________________
time-nuts mailing list -- time-nuts at lists.febo.com
To unsubscribe send an email to time-nuts-leave at lists.febo.com
More information about the Time-nuts_lists.febo.com
mailing list