As a firmware developer, I've been given an old schematic that seems to have an inconsistency between pin naming conventions. Some of the signal lines from the microcontroller are labeled with an overbar e.g. \$\text{ENCABULATOR}\,\overline{\text{POWER}}\$ while others are labelled with an asterisk like \$\text{Warp Core On*}\$.

In both cases, inspecting the circuit downstream, it is often apparent that the "sense" of the pin is inverted whenever either notation is used. That is, I would need to drive both the "Encabulator" and the "Warp Core" pin low to turn the respective device on.

My suspicion is that this schematic was edited by multiple people, and some of them knew how to add overbars to labels in whatever app they were using, while others simply typed in an asterisk instead — perhaps alluding to the pin plus inverter symbol "dot" convention?

Regardless, is it most likely that this is a simple inconsistency within the schematic? Or might there be a more subtle meaning, like declaring different intents regarding pull-ups or drive levels or other pin sourcing/sinking behaviors?

Of course only the original team could answer for sure but before I pester them about it I'm curious if there's any convention here that would already be recognizable to someone less on the software and more on the hardware side.

  • 1
    \$\begingroup\$ Wow, you have an encabulator? Is it for sale? \$\endgroup\$ Feb 24 '21 at 0:36
  • 1
    \$\begingroup\$ Unfortunately in these examples, the client has provided only a warp core simulator and the more common non-turbo version of the encabulator to me for purposes of testing this firmware :-P \$\endgroup\$
    – natevw
    Feb 24 '21 at 0:40
  • 1
    \$\begingroup\$ Have you ever witnessed the client attempt to talk into his mouse ... ? \$\endgroup\$
    – brhans
    Feb 24 '21 at 0:47

No, it’s just people using different low-true conventions based on what they’re used to. I’ll show examples below.

Overbars in schematics are problematic these days as they aren’t normal ASCII characters that one can deal with using a text editor. With the popularity of text-based hardware description languages like Verilog and VHDL, this becomes a major issue.

Noting this, a few text-based approaches have emerged to indicate low-true signals:

  • backslash after each letter (e.g., R\A\S\) - used in OrCAD, which translates this to overbar. While this works, it’s a royal pain to use. Regardless, you’d rightly also add a bubble to such a pin to indicate low-true.
  • asterisk at the end (e.g., DTACK*) - 68000 and NuBus. Also gets a bubble.
  • pound sign at the end (e.g., RESET#) - Intel. Yep, bubble again.
  • ‘n’ preceding (nRESET) - ARM. Bubble, too.
  • ‘n’ at the end (RESETn) - AXI / AMBA, also from ARM. Bubble here as well.

There are some others, but the trailing-n convention seems to be the most used now. This applies even for names that indicate both polarities, for example:

  • RD/WRn or RD_WRn, for high = read and low = write.

Diff pairs use a few conventions:

  • DP/DM: USB2
  • HSOp/HSOn: PCIe
  • A+/A-: SATA

There was an attempt some time ago to introduce a standard symbology for this and other issues in schematics: IEEE-STD-315. It wasn’t widely adopted, and in retrospect, seems downright silly when working with large ICs and hardware description languages. More about that standard here: https://resources.pcb.cadence.com/blog/2020-working-with-standardized-ieee-315-1975-e-cad-symbols.

Instead, pin attributes on CAD symbols and hardware description languages made this graphic standard largely irrelevant.

  • 1
    \$\begingroup\$ There's also /ACTIVE_LOW and HIGH_OPTION/LOW_OPTION. \$\endgroup\$ Feb 24 '21 at 8:41
  • 1
    \$\begingroup\$ Or SIGNAL_N. I know a few large companies that use this convention. \$\endgroup\$
    – Mattman944
    Feb 24 '21 at 17:49

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.