Why does active low even exist?

In historical digital designs, active low signals would be used whenever their use would allow reducing the number of gates in a design, and thus reduce the cost of the circuit. I can imagine it was even more common in IC designs than in discrete logic, because all logic was essentially built from inverting (NAND) gates, but I'm not personally experienced in that area.

That level of optimization is rarely needed today, or at least it's done automatically by synthesis tools so that it's transparent to the designer. Like you noticed, there's only a few cases where active low signals are still very commonly seen.

One advantage of an active low signal for functions like reset and interrupts, is it's very easy to create "wired OR" logic for an active low signal simply by using open collector outputs.

That is, if there's several different circuits that need to be able cause a reset or an interrupt, each of them can simply have an open-collector output tied to the ~RESET or ~INT wire. Then, any one of them can pull the line low and cause the appropriate response without the need for any additional logic to combine the signals.


In logic families like TTL a open terminal is interpreted as High, since it depends on current sinking logic to detect a logic zero input.

Designing a pin active low ensures that it is functional if and only if an intentional logic state is applied, ie. to avoid ambiguous floating input condition.

Additionally special case of RESET has been answered in this question.


Active low signals are more tolerant of noise in some logic families, especially the old TTL.

A high TTL signal must be at least 2.8V out and can be as low as 2.0V in. That leaves 0.8V margin for voltage drop and noise. And a pullup resistor to the 5V supply can be added for additional margin.

A low TTL signal must be no more than 0.4V out and can be as high as 0.8V in. That leaves only 0.4V of margin for voltage drop and noise.

You can use either level to represent either logic state. But it makes sense to choose the most noise-tolerant level for the state that the signal will spend the most time in.

Many signals spend almost all of their time inactive. Therefore it's wise to use the noise-prone low-level to represent the infrequently-occurring active state, and the more noise-immune high-level to represent the frequently-occurring inactive state.