[ntp:questions] PPS on Linux status?

David Woolley david at djwhome.demon.co.uk
Sat May 19 09:51:46 UTC 2007

In article <38doh4-vi2.ln1 at gateway.py.meinberg.de>,
Martin Burnicki <martin.burnicki at meinberg.de> wrote:

> The reason for this is mostly historical. On-board logic levels used to be
> close to 0V for logical "low" and close to +5V for logical "high" signals.

Whilst it certainly is historical, I have doubts about this interpretation.

In particular, it doesn't explain why control signals use positive logic.

> Those on-board signals were converted to RS232 levels using inverting
> driver chips, 

That's definitely wrong, as the standard pre-dates that level of logic
integration.  When it was developed, logic would have been ECL or DTL.
ECL uses very low voltage differentials and DTL doesn't naturally produce
the TTL 5 volts power supplies.  At the low level (probably zero,
at that time) of integration for DTL logic, the distinction between
positive and negative logic would really depend on whether you wanted
a NOR or a NAND function.

>               so you have negative voltages for a logical RS232 "high"
> level on the wire.

The 12 volts bipolar probably comes from using polarised relays with a 12
volt (13.8V) standard coil voltage (12, 24 and 48 volts are standard lead
acid battery configurations, with 48 still used for telephone systems).
I suspect that the use of negative logic, for the data (but not the
control signals), came about as a result of not wanting teletype motors
to run when the connection is broken.  With current loop teletypes,
the idle state is with current flow and is the marking state.  When 7
bit an 8 bit teletype codes were developed, they arbitrarily chose mark
to be binary one.

The start of a current loop character is signalled by breaking the loop, 
which means that a disconnected cable produces a continuous start signal
and the teletype motor keeps running, wearing out the machine.  I suspect
it was decided that the default state for RS232 should be that the control
signals should be false and the teletype be stopped.  That requires a logic
low on the control signals correspond to a marking state on the data, and
therefore requires the opposite polarity to that which produces a one in
the character codes.

> Normally a PC's serial port expects RS232 levels as inputs, so the PPS pulse
> which if normally fed to the Carrier Detect (DCD) pin should also be RS232
> level.

Note that, as a control signal, DCD uses positive logic.

> However, in practice the RS23 chips built into standard PCs accept also
> voltage levels in the range of 0..+5V as input levels.

This is actually a very old characteristic of RS232.  It ensures that
disconnected (0 volts) is treated as negative, so a false control signal
and a marking data signal, which is the correct fail safe configuration.

More information about the questions mailing list