GAL16V8 and wincupl: replicate an output - Page 1
Forum section: electronics / general

author: JBourke
author_rank: Contributor
timestamp: November 28, 2020, 09:31:40 pm
content: Hi all,Just started to get my head around programmable logic so please be gentle :-) I have designed an Arduino shield that uses a GAL16V8 for address decoding logic. It all works fine but I need to add an additional output that mimics an existing one, as in out2 = out1. I can get it to work by applying the same set of out1 equations to out2 but that seems quite a waste (or am I saying something really dumb here :-) ). Any pointers are much appreciated.John

author: james_s
author_rank: Super Contributor
timestamp: November 28, 2020, 10:19:44 pm
content: A waste of what? Isn't each output pin of a GAL hardwired to a block of logic?Is there a particular reason you're using such an obsolete device rather than a modern CPLD?

author: JBourke
author_rank: Contributor
timestamp: November 29, 2020, 03:43:51 am
content: Good point tx, I suspected the waste argument wouldn't fly.Yes there is a reason; the device in question is a peripheral to a vintage computer system, I want the various parts at least look like they are from that particular era. I couldn't find a suitable CPLD in the right form factor. If they still were available I would have used a PROM ;-)

author: james_s
author_rank: Super Contributor
timestamp: November 29, 2020, 04:26:26 am
content: Fair enough. Well if you've got it working then you're done. There's no reason to try to optimize it further, but if my recollection of GALs is correct you wouldn't be able to optimize it anyway since each physical output pin is hardwired to a logic block.

author: gcewing
author_rank: Regular Contributor
timestamp: November 30, 2020, 05:42:42 am
content: Quote from: JBourke on November 28, 2020, 09:31:40 pmIf out2 = out1 always, why does it need to be a separate output?

author: james_s
author_rank: Super Contributor
timestamp: November 30, 2020, 06:28:16 am
content: Quote from: gcewing on November 30, 2020, 05:42:42 amI was wondering that too, but maybe it just makes the PCB layout easier? Or maybe it's a matter of drive strength?

author: Moshly
author_rank: Regular Contributor
timestamp: November 30, 2020, 07:26:15 am
content: IF the pin is an unused output then its not wasting anything.Just make the equation the same as the other pin.OUTOLD = A15 & A14 & A13;OUTNEW = A15 & A14 & A13;If you make OUTNEW = OUTOLD then you will add 1 gate delay to the output.

author: TomS_
author_rank: Frequent Contributor
timestamp: December 10, 2020, 08:45:25 am
content: Quote from: JBourke on November 28, 2020, 09:31:40 pmIts not a waste because each pin has its own dedicated product terms. You would be using one of those product terms to replicate the value of pin1 to pin2 anyway. So maybe it is more of a waste not to use as many product terms as you can.The difference is in the two attachments.In one of them, you fold back the output of pin1 to the matrix and then route it out via pin 2, and in the other you simply duplicate the product term for both pins.(edit: oops, the foldback term should have technically gone all the way back to the left side to the big circle, but you get the idea...)