# Compatibility of devices with different voltage thresholds/noise margins/static disciplines

tl;dr included at the bottom.

Suppose we have two logical buffers from different logic families, where buffer A drives buffer B. Buffer A has the following voltage thresholds: $$\V_{OH}=8\ V\$$, $$\V_{IH}=6\ V\$$, $$\V_{IL}=4\ V\$$, $$\V_{OL}=2\ V\$$; thus buffer A interprets all received voltages up to 4 V as a logical 0 and all received voltages above 6 B as a logical 1.

Suppose that the thresholds for buffer B are the same as that of A with the exception that B's $$\V_{IL}=4.5\ V\$$. This means that for all received voltages which A would interpret as valid logical 0, B also interprets as logical 0. According to my textbook (Foundations of Analog and Digital Circuits by Agarwal and Lang) this means that devices from B's logic family can be used with devices from A's logic family, since B guarantees that whenever A sends a valid signal, B will send a valid output; and that B will interpret as valid all the signals which A would interpret as valid.

So then there is this range of voltages $$\ 4 < V_{received} < 4.5 \$$ which is interpreted as valid logical 0 by B but would be considered invalid by A. I can see that since B's noise margin for logical 0s is bigger than A's, that B is in this respect an improvement over A, since if A sends a 0 which is received as 4.25 volts, B will still be able to interpret it as 0 whereas an A receiver would consider it invalid.

But it also seems that B's higher $$\V_{IL}\$$ means it could make more mistakes of the kind where A sends a logical 1 which through (a lot of) noise is received as 4.25 volts. An A receiver would consider this invalid but B will consider it a valid logical 0, when really it was a valid logical 1, so B propagates an incorrect bit.

So the bottom line is, do we just have to accept that fact that some types of errors will be more common when mixing logic families as long as valid signals will be handled correctly, or am I misinterpreting something?

tl; dr: you design for the worst-case noise margin as a composite of all your logic types, so that all the receivers will interpret logic low and high correctly.

To arrive at a set of levels that will work system-wide, you take your highest Vi(h) and lowest Vi(l), add some margin on top of each, and that defines your levels your driver must support.

Example: 5V HCMOS vs. 5V LSTTL:

• HCMOS Vi(h)/Vi(l): 3.5 / 1.0V (0.7 / 0.2 VCC)
• LSTTL Vi(h)/Vi(l): 2.0 / 0.8V

So taking the min Vi(l) and max Vi(h), we have:

• composite system Vi(h)/Vi(l) = 3.5 / 0.8V