Re: Triton DMA

Gabriel Paubert (paubert@iram.es)
Mon, 1 Dec 1997 11:50:24 +0100 (MET)


On Sun, 30 Nov 1997, Rogier Wolff wrote:

> If you have a cable, and hoist one end of it from 0V to 5V in a few
> ns, the other end will take a while before it notices that you did
> that (speed of light at least). Worst case the other end will have a
> completely different wave form, and you will have trouble deducing what
> the other end did to generate this. However with a small trick, you
> can make the wave form travel intact along the wire (the "transmission
> line effect"): you have to make the conductor be surrounded by a
> cylindrical grounded plane. Coax. This effect is reasonably strong: A
> grounded wire on both sides of the conductor in a flat cable is already
> a reasonable approximation of the coax leading to the transmission
> line effect.
>
> The trouble starts when such a conductor abruptly ends. At that point,
> the travelling wave form simply bounces back and starts propagating
> back to where it came from. However with current performance
> requirements, the source will be wanting to send the next bit along
> the wire by then. This will lead to data corruption. To prevent this
> the transmission line will have to be lead to believe that there is no
> abrupt ending to the cable. This turns out to be relatively easy: a
> simple resistor to a DC level will do. With SCSI termination, they
> have one more trick: The DC level has been chosen such that without
> any drivers the signal level will be somewhere around the switch point
> of the then-common TTL chips. This requires someone to actively pull
> it down to get a reliable "0", or to actively pull it up to make a
> reliable "1". This distributes the burden of transmitting data over
> both the pull-down and the pull-up output transistor, instead of only
> requiring just one. (You also get faster circuits if you use both of
> them.)

This is slightly wrong, TTL thresholds are defined as:
(I don't use 0 or 1 since SCSI uses inverted signals, inactive (logical 0)
is actually the high level and active (logical 1) is low).
- any voltage between -0.5 and 0.8 V is a low level
- any voltage between 2.0 and 5.5 V is a high level
- any other voltage is undefined or illegal. Voltages well below ground or
well above 5 V may kill internal protection diodes or "zener" the input
transistors which permanently degrades their gain.

The level of an undriven SCSI bus is actually close to 3 V
(active terminators often regulate it at 2.85 V). So it is a _high_ level.
And SCSI bus drivers need to be able to sink a significant current
to drive the bus down to below 0.5V, but do not need to source much to
drive the high level. The SCSI specification is IMHO a consequence of the
assymetry of TTL output circuitry (and CMOS chips are also similar: for the
same geometry, an N-channel will conduct more current than a P-channel).

OTOH, I doubt that IDE Ultra-DMA is terminated in the sense that the cable
has at both ends a resistor equal to its characteristic impedance.
Because of the following reasons:
- bus drivers would need to be able to sink and/or source reliably much
larger current. Old devices would probably stop working.
- the cable length is limited to 50 cm, which is about 5 nS round-trip,
with a 60 ns cycle time, you don't need to be so strict with cable length
if there are no or few reflections on the cable.
- terminations consume power, and considerations of mobile computer battery
life weigh in quite a lot these days.
- many other problems, like how a device decides it needs to be terminated
when one is an Ultra and the other an old device.

So the IDE pull-ups are probably like PCI, only to prevent the bus from
floating, which is very bad for CMOS input gates.

Gabriel.