6502.org Forum  Projects  Code  Documents  Tools  Forum
It is currently Sun Nov 24, 2024 6:12 am

All times are UTC




Post new topic Reply to topic  [ 11 posts ] 
Author Message
PostPosted: Sun Apr 25, 2021 11:05 am 
Offline
User avatar

Joined: Tue Aug 11, 2020 3:45 am
Posts: 311
Location: A magnetic field
Don't implement this circuitry. It is a thought experiment to demonstrate that it is always possible to expand a system and that a formal edge connector is not required. It is inspired by BigDumbDinosaur's RTC to SCSI adaptor board. Initially, I thought this was a bodge but after working through the details, I find that it is best practice and certainly the most productive technique.

Many people want to design a computer system with maximum flexibility. In an attempt to avoid any obvious omissions, people may design an infinitely scalable system. This may involve a vast number of processors but more often involves a vast number of peripheral expansion slots. Systems from the 1970s often had 4-8 parallel slots and there is a widespread but incorrect assumption that similar designs may run 30 times faster using contemporary parts. (This is correct for burst mode, sequential transfers but not random access.)

Knowledgeable experts make assurances that zero or one expansion cards are sufficient. This is often ignored and may contribute to projects being unnecessarily de-railed. They either do not advance beyond design or they encounter electro-magnetic problems. Raspberry Pi and Arduino are cited as examples where devices rarely, if ever, have more than one expansion. However, this is not a convincing argument; especially when such devices are used in multiples or twinned to combine their relative strengths. An analogous argument can be made about 6502. It does not have multiply hardware and is rarely used to perform intensive multiplication. That does not imply that intensive multiplication is superfluous. It only implies that 6502 does not fit this niche. Likewise, citing systems with limited expansion does not explain the existence of contrary systems.

BigDumbDinosaur successfully retro-fitted a clock socket as an I/O port for SCSI and subsequently obtained an informal world record for system uptime. Based upon this success, I have advocated that a system with zero expansion slots may be expanded out from a ROM or RAM socket. The implication is that a system with no obvious expansion remains expandable - at least to the extent common among Raspberry Pi or Arduino. As a thought experiment, I have considered what is required to make an expansion connector suitable for 6502 (and possibly other processor architectures). The answer is: not very much. I began with a 28 pin, 15 bit address 27256/28256/62256 socket on the basis it is directly compatible with GARTHWILSON's minimal address decoding but also because devices of dubious provenance may be obtained for USD1 each.

I hoped to present the omitted signal lines in a DIP socket with a fixed offset from the 28 pin DIP socket. The first problem is the proximity of each socket to mechanical fixings. The second problem is the set of omitted signals. Most obviously is the omission of A15 from the 28 pin socket. Further address signals may be provided directly by 65816 or indirectly via 6502 and a strobe. (Indeed, BigDumbDinosaur regards 65816 $01xxxx viable for I/O.) It may also be desirable to provide RESET, raw clock, alt clock, slow decode and one or more interrupt signals. In all possible permutations, this never more than eight signals. Indeed, in typical applications, it is unlikely that more than three signal lines would be required. Therefore, it may be preferable to not group them into a socket but instead provide test points in the most convenient locations and then provide fly leads to anything sitting in the 28 pin socket.

Really? Really?? That's it?

Perhaps you are not convinced. I will investigate more formal options and demonstrate that they offer decreasingly poor value. I assume that you are designing an 100mm * 100mm board with 90mm * 90mm fixing holes. Placement of the 28 pin DIP socket and the 8 pin DIP socket is now tied to the board size in an effort to obtain mechanical compatibility. This doesn't waste too much board area until we consider I/O address decode. The base board probably has some I/O and unused strobes may be available via the 8 pin socket. Alternatively, redundant I/O decode (possibly with clashing addresses) may occur on the expansion board. If we want a super-duper design with 24 address lines, stackable cards and fully decoded address segments (which are rotated around, like 65SIB and other standards), I found that it is possible to place a 40 pin DIP socket and a 24 pin DIP socket between the fixing holes. This acts as a cheap keyed connector. In the trivial case, it also allows one end of the 40 pin DIP socket to be populated with 27256/28256/62256. The remainder of the 40 pin DIP provides redundant power/ground, RESET and A15-A23. Subsets of the 24 pin DIP provide further redundant power/ground, clock and address decode. If strictly required, a buffer card may be designed such that a bus is partitioned into segments and additional wait states are applied as signals traverse increasingly distance segments. It is also possible to use the 64 pin interface with 4MB SRAM modules and no additional logic or buffering.

However, in the trivial case, it wastes about 3/16 of the board area. It is rarely, if ever, worthwhile to implement the scheme partially or in full. After working through this exercise and several variants, I strongly advise against implementation of the 64 pin interface in any form. This is particularly true given that it is yet another incompatible bus connector. Therefore, if you must implement a parallel bus connector, use a design which is already in widespread use. Examples include S-100, Commodore 64 edge connector and Planck Bus. However, the most affordable and most compact design omits any formal expansion interface. Should you require any expansion, follow BigDumbDinosaur's experience re-purposing an existing socket with no prior consideration for mechanical fixings.


Attachments:
expansion-connector1-0-2.pdf [148.34 KiB]
Downloaded 69 times
expansion-connector1-0-1.odg [10.06 KiB]
Downloaded 56 times

_________________
Modules | Processors | Boards | Boxes | Beep, Beep! I'm a sheep!
Top
 Profile  
Reply with quote  
PostPosted: Sun Apr 25, 2021 11:32 am 
Offline
User avatar

Joined: Thu Dec 11, 2008 1:28 pm
Posts: 10986
Location: England
(You mention BDD's in-socket expansion several times - perhaps you could provide a link or two? (Or perhaps you have, and I've missed it...))


Top
 Profile  
Reply with quote  
PostPosted: Sun Apr 25, 2021 11:45 am 
Offline
User avatar

Joined: Tue Aug 11, 2020 3:45 am
Posts: 311
Location: A magnetic field
I think it is about 200 posts into POC Computer Version One. Maybe.

_________________
Modules | Processors | Boards | Boxes | Beep, Beep! I'm a sheep!


Top
 Profile  
Reply with quote  
PostPosted: Sun Apr 25, 2021 11:46 am 
Offline
User avatar

Joined: Thu Dec 11, 2008 1:28 pm
Posts: 10986
Location: England
Ah, yes, that's certainly an approximate link!


Top
 Profile  
Reply with quote  
PostPosted: Sun Apr 25, 2021 11:51 am 
Offline
User avatar

Joined: Thu Dec 11, 2008 1:28 pm
Posts: 10986
Location: England
Just maybe hereabouts:
viewtopic.php?p=19429#p19429


Top
 Profile  
Reply with quote  
PostPosted: Sun Apr 25, 2021 11:58 am 
Offline
User avatar

Joined: Tue Mar 05, 2013 4:31 am
Posts: 1385
Or you could try this link... which has links to his website for the schematic, PCB layout, etc.

viewtopic.php?f=4&t=1457&start=150#p15384

For my own C02 Pocket SBC, I implemented an expansion socket with 30-pins... standard IDC connector (0.100 spacing).

Attachment:
IO-Expansion.png
IO-Expansion.png [ 97.14 KiB | Viewed 1419 times ]

_________________
Regards, KM
https://github.com/floobydust


Top
 Profile  
Reply with quote  
PostPosted: Sun Apr 25, 2021 12:01 pm 
Offline
User avatar

Joined: Thu Dec 11, 2008 1:28 pm
Posts: 10986
Location: England
(Thanks!)


Top
 Profile  
Reply with quote  
PostPosted: Sun May 16, 2021 3:01 pm 
Offline
User avatar

Joined: Tue Aug 11, 2020 3:45 am
Posts: 311
Location: A magnetic field
The cool kids are putting multiple video displays in 32 pin DIP RAM sockets. RAM in the same socket is optional but each VGA interface allows transparent debug of zero page, stack or other 4KB memory region.

_________________
Modules | Processors | Boards | Boxes | Beep, Beep! I'm a sheep!


Top
 Profile  
Reply with quote  
PostPosted: Mon Nov 21, 2022 11:54 am 
Offline
User avatar

Joined: Tue Aug 11, 2020 3:45 am
Posts: 311
Location: A magnetic field
I found that the 50 pin Apple II connector can be adapted into a connector which is safe when accidentally reversed. This loses some functionality (12V, internal ROM inhibit, DMA, 16 byte address range) but increases reliability by providing power and ground on both sides of the data bus and address bus. A subset of existing cards are already compatible and it is easy to design cards which are downward compatible without using jumpers. In addition to moderate Apple compatibility, the scheme is moderately compatible with Acorn, Commander X16 and W65C265 software. Unfortunately, it is incompatible with Project Snail.

I also found that the 20 pin 65SIB connector (with optional key) can be compacted into a 16 pin connector which is safe when accidentally reversed. I am moderately surprised that this is not the default configuration. Unfortunately, the compacted arrangement requires rectification for ±12V and this leads to a chain of dangerous thinking. If a peripheral can be power from 12VDC, it may be preferable to also support 12VAC. If it can handle 12VAC then 30VAC is trivial. Actually, why not attain the exposed wiring limit of 50VAC? With double headroom or so, 110VAC is possible. For European compatibility, 220VAC is desirable. Or maybe those 380VAC or 440VAC standards. Actually, most single core wire can handle 1000V and the efficiency would be brilliant because the voltage drop would be insignificant.

30-50V is desirable but the remainder may be lethal.

_________________
Modules | Processors | Boards | Boxes | Beep, Beep! I'm a sheep!


Top
 Profile  
Reply with quote  
PostPosted: Thu Nov 24, 2022 9:45 am 
Offline
User avatar

Joined: Tue Oct 25, 2016 8:56 pm
Posts: 362
Going in the opposite direction, if you wanted to offer a minimal expansion bus to give you options but without excessively burdening your PCB with large connectors etc, I have often been inspired by the interface used by ubiquitous simple LCD modules, which can give you a basic expansion port on as little as 13 pins:

  1. D0
  2. D1
  3. D2
  4. D3
  5. D4
  6. D5
  7. D6
  8. D7
  9. EN (in the context of a 6502 system, this would be equivalent to a combination of CE and CLK)
  10. R/W
  11. RS (in the context of a 6502 system, most likely A0)
  12. VCC
  13. GND

Happily this would all fit comfortably within a DB-15 connector with 2 pins spare for e.g. RST and IRQ: you could use this for if you wanted an 'external' main bus expansion port.

The only gotcha here is that, unless your target device happens to only have two registers - which is rare, but not unheard of - you'd need a bit of extra logic on the target, so that the target's local address is latched from one write (e.g. RS=1) and then you do the actual data access on a subsequent read or write (e.g. RS=0) using that latched address.

If you're feeling super brave, you can shed some of those data lines if you add a second RS line so that you do accesses in nybbles instead of bytes.

_________________
Want to design a PCB for your project? I strongly recommend KiCad. Its free, its multiplatform, and its easy to learn!
Also, I maintain KiCad libraries of Retro Computing and Arduino components you might find useful.


Top
 Profile  
Reply with quote  
PostPosted: Sun Nov 27, 2022 3:23 pm 
Offline
User avatar

Joined: Fri Dec 12, 2008 10:40 pm
Posts: 1007
Location: Canada
On some of the I/O boards I've built for my bus systems I add a little connector that I can use for ad-hoc connections in the form of a 7x2 0.1" header.

It has D0-D7, A0, A1, a Phi2 qualified select line, R/W and power.

_________________
Bill


Top
 Profile  
Reply with quote  
Display posts from previous:  Sort by  
Post new topic Reply to topic  [ 11 posts ] 

All times are UTC


Who is online

Users browsing this forum: Google [Bot] and 42 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to: