[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]

Re: gEDA-user: inverted pins?



Samuel A. Falvo II wrote:

On 2/21/06, DJ Delorie <dj@xxxxxxxxxxx> wrote:


inverter gate.  You need to name the nets differently *anyway*.

___
AEN AEN
-------|>o-------




     AEN        DEN  (data enable)
    -------|>o-------

     AEN        ADIS  (address disable)
    -------|>o-------




___
TXD
-------|>=======
TXD




              TXNEG
    -------|>=======
              TXPOS

              TXB (transmit balance)
    -------|>=======
              TXCB (transmit counter-balance)

              TXR (transmit ring)
    -------|>=======
              TXT (transmit tip)

The bar's significance stems from boolean algebra, and carries no
intrinsic meaning of intent. I think, as with self-documenting
software, self-documenting hardware designs are more important. Signals should describe what they do as much as possible. Case in
point: NRFD and NDAC from the GPIB bus. Every signal on GPIB is
active low, so they just don't bother with the overbar there. Instead, they use more descriptive names instead (Not Ready For Data
and No Data Accepted, respectively).


--
Samuel A. Falvo II



Cool examples, Sam - thanks. I agree completely with you. Name the nets descriptively, that's the ticket. I was trying to say, probably poorly, that it works out pretty well.

For me, this stuff started back in the ABEL days. For example(if I remember my abel):

pin   a;
pin   b;
pin   c;

c = a + b;

this is an "OR" gate, right?

OK, now change the pin descriptions with all active lows:
pin !a; pin !b;
pin !c;


c = a + b;

Still an "or" gate? Sort of. It's really a NAND gate - but I can read it as C is true when A is true or B is true. Who cares that it's active high or low. The only time I really care is at the actual IO of the chip. I could rename A,B and C more usefully as:

A = I_Have_Cash
B = I_Have_Credit
C = I_Can_Buy_You_All_A_Beer

so, I can buy beer if I have cash, or have credit or both (but the beer can't be bud, ok? I like Sam Adams). The active level doesn't really seem relevant here - but the logical sense is all that really matters.

This stuff works for verilog, vhdl, schematics - whatever.