From: -jg on 13 Mar 2010 15:34 On Mar 14, 4:29 am, "Andrew" <aj...(a)hotmail.com> wrote: > "D Yuniskis" <not.going.to...(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 onhttp://www.slideshare.net/ram_ari/logic-gatesstates 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.htmalso 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 This can get very confusing, and even more so if tools allow a At-Pin- inversion. Then, you need to make sure who is flipping where... As it is only a 'naming convention' thing, my approach is to firstly avoid the over-bar, as that does not always appear at all places. I also try to avoid hidden inversions, if possible - they can bite you later.... good tools should use available hardware inversion as needed, to reduce logic. So, applying these rules to your example: /CE = /RD + A15 would become CEN = !(!RDN + A15); Here, the trailing N replaces the over-bar, and all logic is coded positive logic, using ! (or /) to flip. Another good convention, is to look at the report generators of your tool flow, and not diverge, or fight what they do too much. Sometimes you might see !CEN = (!RDN + A15); rather than CEN = !(!RDN + A15); if the report wants to signal to you, it has used a polarity option to optimize the term.
From: D Yuniskis on 13 Mar 2010 18:30 Andrew wrote: > "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) Right. So, this implies: CE = (RD * /A15) which you would "read" (aloud) as "Chip enable happens when RD happens and A15 'doesn't happen' " or CE happens when Read and (A15 is low) The fact that "Read" is signalled ELECTRICALLY by a LOW on the /RD signal doesn't influence this reading. > However, my doubt still remains as to whether either of these is correct > when > dealing with active low signals. Separate what the signal *means* from the way it is implemented. E.g., the above example tells you what the circuit is "functionally" doing. If you want to know the *details* of this particular implementation, then you look at the *actual* signal names on the wires. I.e., /RD is LOW when READing. /CE is LOW when CHIP_ENABLE-ing > 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 Don't overthink it. :>
First
|
Prev
|
Pages: 1 2 Prev: ARM Development Kit Suggestions [ LPC2148 boards, buglabs...] Next: Looking for PIC programmer |