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.