[sci.electronics] cheap address decode ideas?

steve@nuchat.UUCP (Steve Nuchia) (09/29/90)

Given a desire to have N (=5 in this case) I/O port groups
decoded at arbitrary addresses without using a whole boatload
of parts?

My current best, decoding 6 bits (sufficient) is a pair of 74ls138
3->8 demux chips and a jumper field.  This would be ok, except that
the jumper field would take 160 pins to permit truly arbitrary
addressing using regular shorting blocks.

As things stand I've got the jumper field laid out with about 50
pins in such a way that the default configuration can be jumper
selected and so can a few variations of it, but anything very
different would need wire-wrap or soldered jumpers.

I could clearly use a fuse-programmable part to do the job,
but I don't want to make users buy new parts to reconfigure.
Or own an eraser.  Heck, most people don't even own wire-wrap
tools any more.

Any brilliant ideas?  My current best is a small ram or some
kind of content addressible ram, and load it from software
at driver initialization time.  Anybody know of a good chip
for the job?  How about a PAL with a few dozen internal
register bits?

How much effort and what kind of expenses are involved in doing
this sort of thing in an ASIC?  Who would I talk to to get into it?

Thanks.
-- 
Steve Nuchia	      South Coast Computing Services      (713) 964-2462
"To learn which questions are unanswerable, and _not_to_answer_them;
this skill is most needful in times of stress and darkness."
		Ursula LeGuin, _The_Left_Hand_of_Darkness_

emmo@moncam.co.uk (Dave Emmerson) (10/01/90)

In article <28711@nuchat.UUCP>, steve@nuchat.UUCP (Steve Nuchia) writes:
> Given a desire to have N (=5 in this case) I/O port groups
> decoded at arbitrary addresses without using a whole boatload
> of parts?
> [...]
> for the job?  How about a PAL with a few dozen internal
> register bits?
> 

It should be quite feasible, have you thought about using DIL switches
to set the required port addresses, rather than programming them in?
Registers aren't particularly necessary, but you need at least 36 input
pins and 5 outputs this way. Hardwired, it'll go easily into a 16R6/16L8,
a 20 pin device, and you could have 8 configurations programmed into a 
single device costing just a few dollars.

Or you might be able to use an E2PROM, these are quick and simple to
reprogram, but have long access times, typically 120..150nS, so may not
suit your application.

Dave E.

dennisg@felix.UUCP (Dennis Griesser) (10/06/90)

In article <28711@nuchat.UUCP> steve@nuchat.UUCP (Steve Nuchia) writes:
>Given a desire to have N (=5 in this case) I/O port groups
>decoded at arbitrary addresses without using a whole boatload
>of parts?
>
>My current best, decoding 6 bits (sufficient) is a pair of 74ls138
>3->8 demux chips and a jumper field.  This would be ok, except that
>the jumper field would take 160 pins to permit truly arbitrary
>addressing using regular shorting blocks.

How about an exclusive-OR gave for every address bit to be compared.  Feed
one input from the address and the other from a DIP-switch.  The XOR output
goes low when the address matches the DIP-switch.  OR together the XOR
outputs.  If it's high, one of the address bits didn't match.  Depending on
whether the rest of the circuit needs active-high or active-low enable, you
can invert the output (or use a NOR).

This might use more chips than you want...

The address-recognition RAM sounds like more trouble than it's worth.  You
will need some way to initialize it, and that probably means some form of
dual-porting, with some well-known location (so you can find the address to
tell the port its address...).

If you really want the demux/field/select like you mentioned, it might be a
better idea to replace the jumper field with a matrix switch - prettier and
uses less space.