From: Andrew on
I have a query concerning the correct way to represent a boolean expression involving active low logic signals.

The expression in question is for a simple address decoder for an 8-bit processor with a 16-bit address bus interfaced to a 32K byte ROM decoded between locations 0000-7FFF. The ROM has an active low chip enable input, /CE. For the purposes of this discussion I assume that an active low read signal /RD from the processor must be included in the decoding (I appreciate that most ROMs have a separate /OE and that /RD could be connected to /OE).

The logic circuit is (I think!) obvious; we need a logic zero on /CE when both A15 and /RD have a logic zero on them, so a 2-input OR gate is required with A15 and /RD as inputs and the output connected to the ROM's chip enable /CE input.



ASCII art diagram, mono-spaced font such as courier required

__ ___ __
RD ---\ \___ CE
A15 ---/__/

My query is the correct way of showing this as a boolean expression. One interpretation is that the actual names of the signals should be considered to be /RD and /OE leading to the equation:

/CE = /RD + A15

An alternative interpretation would suggest that the negation in the above expression would mean that the RD input and the CE output are inverted. That is, the circuit represented by this equation is actually as follows (i.e. a NOR gate with an inverter on one input) which is obviously not what is required.

ASCII art diagram, mono-spaced font such as courier required

__ ___ __
RD --|>o--\ \o___ CE
A15 -------/__/


Can anyone suggest the correct way of representing the required logic as a boolean expression please?
From: Wil Taphoorn on
On 13-3-2010 13:51, Andrew wrote:

> ASCII art diagram, mono-spaced font such as courier required
>
> __ ___ __
> RD ---\ \___ CE
> A15 ---/__/
>
> Can anyone suggest the correct way of representing the required
> logic as a boolean expression please?

Maybe this?

__ _
RD ------o| | __
|&|o--- CE
A15 ------o|_|

/CE = /RD . /A15

--
Wil
From: D Yuniskis on
Hi Andrew,

Andrew wrote:
> I have a query concerning the correct way to represent a boolean
> expression involving active low logic signals.

[could you please use an NNTP client that wraps words at something
less than 200 characters per line?? :< ]

> ASCII art diagram, mono-spaced font such as courier required
>
> __ ___ __
> RD ---\ \___ CE
> A15 ---/__/

A better way of showing this would be:

+---\
/RD ---o| \
| )o----- /CE
A15 ---o| /
+---/

(forgive my crappy rendering :< )

I.e., instead of "positive OR" show the function for
what it really is: an AND taking two active low
inputs and producing an active low output

> /CE = /RD + A15

Or, /CE = /(RD * /A15)

(DeMorgan)

> ASCII art diagram, mono-spaced font such as courier required
>
> __ ___ __
> RD --|>o--\ \o___ CE
> A15 -------/__/

This is a different function. Assuming you want the signal leaving
the circuit (call it whatever you like) to be low when both inputs
are low (call *them* whatever you like as well!), then the first
drawing was correct.
From: D Yuniskis on
Hi Wil,

Wil Taphoorn wrote:
> On 13-3-2010 13:51, Andrew wrote:
>
>> ASCII art diagram, mono-spaced font such as courier required
>>
>> __ ___ __
>> RD ---\ \___ CE
>> A15 ---/__/
>>
>> Can anyone suggest the correct way of representing the required
>> logic as a boolean expression please?
>
> Maybe this?
>
> __ _
> RD ------o| | __
> |&|o--- CE
> A15 ------o|_|
>
> /CE = /RD . /A15

Wanna try that again, Wil? ;-)

From: Andrew on
"D Yuniskis" <not.going.to.be(a)seen.com> wrote in message
news:hng6km$jl0$1(a)speranza.aioe.org...
> Hi Andrew,
>
> Andrew wrote:
>> I have a query concerning the correct way to represent a boolean
>> expression involving active low logic signals.
>
> [could you please use an NNTP client that wraps words at something
> less than 200 characters per line?? :< ]
>
>> ASCII art diagram, mono-spaced font such as courier required
>>
>> __ ___ __
>> RD ---\ \___ CE
>> A15 ---/__/
>
> A better way of showing this would be:
>
> +---\
> /RD ---o| \
> | )o----- /CE
> A15 ---o| /
> +---/
>
> (forgive my crappy rendering :< )
>
> I.e., instead of "positive OR" show the function for
> what it really is: an AND taking two active low
> inputs and producing an active low output
>
>> /CE = /RD + A15
>
> Or, /CE = /(RD * /A15)
>
> (DeMorgan)
>
>> ASCII art diagram, mono-spaced font such as courier required
>>
>> __ ___ __
>> RD --|>o--\ \o___ CE
>> A15 -------/__/
>
> This is a different function. Assuming you want the signal leaving
> the circuit (call it whatever you like) to be low when both inputs
> are low (call *them* whatever you like as well!), then the first
> drawing was correct.

Thanks for the interest. I know the first circuit is right and the second
is wrong.
My purpose in showing the second circuit is that it is a possible
interpretation
of my boolean equation, if I have misunderstood the correct way of showing
it.

I can see that De Morgan leads to an equivalence between:
/CE = /RD + A15
and
/CE = /(RD * /A15)

However, my doubt still remains as to whether either of these is correct
when
dealing with active low signals.

Slide 25 on http://www.slideshare.net/ram_ari/logic-gates states that
"The name of active low signals is always written in non-compliment (sic)
form".
This suggests that I should consider the signals to be called CE and RD
which
presumably means my equation becomes:
CE = RD + A15
At least I think that is what it is telling me.

http://archive.chipcenter.com/circuitcellar/august99/c89cd1.htm also has
some interesting things to say.
On the second page of the article is the statement
"Another common practice is the use of a bar above a signal name to indicate
active low.
This is a bad way to designate active low because the bar above a signal
means
"perform the NOT operation on this signal." This is a Boolean operation, not
a physical interpretation."

This I think is the root cause of my confusion. The examples on the third
page look as though they
ought to answer my question but they only confuse me more at the moment!
http://archive.chipcenter.com/circuitcellar/august99/c89cd3.htm