6502.org Forum  Projects  Code  Documents  Tools  Forum
It is currently Thu Apr 25, 2024 6:44 am

All times are UTC




Post new topic Reply to topic  [ 15 posts ] 
Author Message
PostPosted: Fri Aug 29, 2014 10:31 pm 
Offline
User avatar

Joined: Fri Dec 12, 2008 10:40 pm
Posts: 999
Location: Canada
Any interest in doing this?

_________________
Bill


Top
 Profile  
Reply with quote  
PostPosted: Fri Aug 29, 2014 11:21 pm 
Offline
User avatar

Joined: Fri Aug 30, 2002 1:09 am
Posts: 8427
Location: Southern California
Present some ideas and see what responses you get. I imagine it will be pretty difficult to come up with something that meets everyone's needs, but we might all learn something from even an unsuccessful try.

One of the attractions to the 6502 is its simple bus structure; and since it's pretty straight forward to do on a board, I imagine you're probably thinking of some kind of connector for a backplane and plug-in boards, something which as speeds increase and things get smaller, is no longer the good approach that it was 25 years ago. I give more of an explanation at http://wilsonminesco.com/6502primer/ExpBusIntrfc.html. It works out better then to put the stuff that has to be the fastest all on one board (treating my memory module somewhat like an IC), and run other things out on synchronous-serial interfaces like SPI (and our 6502.org 65SIB which is a serial interface bus that's primarily SPI but which can accommodate other similar interfaces too, simultaneously, and is more flexible is several ways) and I²C (including our 6502.org I2C-6 connector standard). I have now sold enough memory modules to have paid for the initial investment, so I can justify developing another module or two or three when time allows. These will probably be interfaced by 65SIB or I2C-6, and again aim to make it easier to build small computers at home, having these modules ready-made. I have ideas, but I'm open to suggestions too.

_________________
http://WilsonMinesCo.com/ lots of 6502 resources
The "second front page" is http://wilsonminesco.com/links.html .
What's an additional VIA among friends, anyhow?


Top
 Profile  
Reply with quote  
PostPosted: Sat Aug 30, 2014 4:27 am 
Offline
User avatar

Joined: Thu May 28, 2009 9:46 pm
Posts: 8142
Location: Midwestern USA
BillO wrote:
Any interest in doing this?

For some reason, I'm getting some deja vu on this. I'm sure there have been discussions in the past around here on that topic.

Garth mentions SPI and 65SIB as possibilities. My interests are more along the line of a parallel I/O bus that could accept plug-in cards a la ISA, but hopefully without ISA's problems. Obviously, the bus would have to be buffered and clocked independently of the MPU so different types of cards could work together. Issues such as I/O addresses and interrupt sharing would have to be resolved and in an ideal world, cards could have ROMs to provide boot-time driver support.

Every so often I have thoughts about it but nothing of substance has materialized for me.

_________________
x86?  We ain't got no x86.  We don't NEED no stinking x86!


Top
 Profile  
Reply with quote  
PostPosted: Sat Aug 30, 2014 10:53 am 
Offline
User avatar

Joined: Thu Dec 11, 2008 1:28 pm
Posts: 10793
Location: England
Here's a previous discussion which also mentions the venerable(?) S50 standard:
viewtopic.php?t=666


Top
 Profile  
Reply with quote  
PostPosted: Sat Aug 30, 2014 11:18 am 
Offline
User avatar

Joined: Sun Dec 29, 2002 8:56 pm
Posts: 449
Location: Canada
Quote:
Any interest in doing this?


If you are talking backplane, I had some interest in this but it was a long time ago. I think backplane style busses are more a thing of the past. Everything's integrated onto the same board these days, with different boards connected via high-speed networks (hi-speed serial). With programmable logic it's possible to put a whole system on a chip, so what's left for the backplane ?
For a board to board serial interconnection I've thought of using DVI connections.

For internal-to-the-chip programmable logic busses a common free one is the WISHBONE bus. I use the WISHBONE bus for my FPGA cores.

_________________
http://www.finitron.ca


Top
 Profile  
Reply with quote  
PostPosted: Sat Aug 30, 2014 3:11 pm 
Offline
User avatar

Joined: Fri Dec 12, 2008 10:40 pm
Posts: 999
Location: Canada
Actually, I was thinking of something fairly simple. Something that would promote quick hardware development and keep the programming to as simple a level as possible.

Here is the dilemma I have that I am trying to solve. I am constantly building up computers for specific tasks. A lot of them are quite temporary and are used for some experiment or amusement, then set aside. I must have 15 of them lying around. Most I'll never use again, and a lot of them have parts scavenged off them. I was thinking that a simple parallel back-plane would make this a far more efficient process. That way I could build butt-simple re-usable modules and configure the machine for whatever purpose I need.

Incredible speed was not my goal, besides there are other available means to skin that cat. If it could have a bandwidth of 2-4mHz, that would be fine. So, to allow for simple hardware and software just electrically buffer the CPU signals, add a few power lines, a few clock lines a couple of derived signals and a byte or two of uncommitted auxiliary lines that could be used for more advanced stuff like interrupt registers, 65SIB or whatever the user wanted. Maybe 60 lines in total. We could even dedicate 2 lines for I2C. However, in most cases I just want to cobble together something as quickly as possible, so sending out 8 bits of data using a simple STA instruction is far more attractive than writing a more complex driver subroutine or include a previously written one which may require considerable additional coding to use. I know such routines are not avoidable in all circumstances, but it would be nice to only go there when you have to and be able to abstain when you can.

The idea of approaching the forum is that if we can hash out something a lot of us can use, then we'd be able to share hardware and software designs and maintain a sort of library, thus increasing efficiency further.

_________________
Bill


Top
 Profile  
Reply with quote  
PostPosted: Sat Aug 30, 2014 9:17 pm 
Offline
User avatar

Joined: Fri Aug 30, 2002 1:09 am
Posts: 8427
Location: Southern California
It makes sense. And Ed, thanks for finding Samuel Falvo's topic. It brings up some good considerations, even if it didn't get very far. Reusable modules are great. Goals for a home-made computer tend to quickly become too lofty to carry them out in your lifetime—or change faster than you can build. It helps to have various sections ready-made (hence my memory modules, and other tiny ones I hope to offer). For my own use, I have a lot of reusable tiny analog modules so I don't have to keep re-building them for every experiment. This is about one-third of them:
Attachment:
5-pin_modulesB.jpg
5-pin_modulesB.jpg [ 81.75 KiB | Viewed 1962 times ]


Most of the following is only about the mechanical aspect, with an interest in construction supplies that are both available and practical to the hobbyist, not requiring custom PCBs.

If you're really only interested in 2-4MHz, STD bus might be a good way to go. It was a good industrial workhorse for something like 25 years, and I imagine you can still get accessory boards (but probably not 6502 CPUs) from companies like ProLog, WinSystems, and Ziatech. STD is what I used in the automated test equipment shown at http://6502.org/users/garth/projects.php?project=6, which had a 6502 CPU board, Cubit model 7540. I remember there were over 100 manufacturers of STD-bus equipment around 1990. Its name, "STD," came from "simple to design," which is appropriate here. Connectors and breadboards are still available, like this one from Vector:

Image

(although Vector tends to be pretty expensive compared to Twin Industries which Fry's carries and other manufacturers of this kind of thing). This Vector backplane might be the same one I used:

Attachment:
8-slotSTDbackplane.jpg
8-slotSTDbackplane.jpg [ 36.73 KiB | Viewed 769 times ]


What I'm not crazy about is its speed limitation (partly because of the lack of grounds between the ends of the 56-contact board-edge connector), the now-large board size of 4.5x6.5" (although I suppose you could go shorter—you do have to maintain the width though), and the fact that connectors' pin spacing is not .100", meaning you can't mount them on standard perfboard like you can the 96-pin DIN connectors used on VME bus.

VME bus is more complex electrically, but the mechanical form factor is quite attractive (although not much smaller for 3U Eurocards at 100x160mm.) Wire-wrap connectors are available:
Attachment:
96DINmaleWW.jpg
96DINmaleWW.jpg [ 84.75 KiB | Viewed 1962 times ]

(I also have the female WW ones that go in the backplane, but they're rather inaccessible at the moment to get a picture of one.)

For a connector, if you don't need 96 pins in three rows, two rows is simple, using standard dual-row pin headers and sockets which are available in various lengths and can be put end to end for more pins or cut down to the desired length for fewer. Here's a right-angle pin header:

Attachment:
RtAnglePinHeader.jpg
RtAnglePinHeader.jpg [ 31.96 KiB | Viewed 769 times ]

These are available in WW also. You can get shrouded ones to protect the pins, but then you're stuck with the lengths offered. I have WW sockets (which in my case, I got for the memory module).

Whatever you go with, the mechanical aspect of being able insert both the plug and the socket in a breadboard is important. (Another thing I had considered years ago was DB-25, DB-37, DB-50, etc., but scrapped it because of that limitation.)

Radio Shack's 4.5x6.125" Archer 276-192 perfboard has a board-edge connector with 72 contacts on .100" centers which you can get WW mating sockets for which fit into standard perfboard also. This is what my workbench computer is built on, although I don't bring the computer's own buses out to the board-edge connector.

Attachment:
BotWithFrPanSmall.jpg
BotWithFrPanSmall.jpg [ 141.58 KiB | Viewed 1962 times ]


The ones for the C64 are cute, being a small 44-pin on .100" centers; but off-the-shelf breadboards are probably next to impossible to get today, and the board size is probably only suitable for accessory boards, not the CPU.
Image


For signal integrity at more than low thump-thump speeds, here's a repeat of three paragraphs of an earlier post for when you assign the pins:
Quote:
If you really must run the processor's own buses off the board, Tony's recommendation to make every other pin (ie, a whole row) a ground pin really is the best way to get signal integrity, and in fact is how it's done with ribbon cables that have to perform at high speeds too. One of the enemies of high-speed digital performance is inductance; and having the return right next to a signal line will minimize that. It also minimizes the antenna effect, for both transmitting and receiving unwanted noise.

To go a little less extreme, you can have every signal line be next to a ground or virtual ground (like Vcc that's bypassed to ground right at the connector), instead of having ground on both sides of each signal line. That way 2/3 of the lines can be signal lines, instead of only half. We have this on the select lines of our 65SIB (6502.org Serial Interface Bus) specification.

Next down would be to have no signal line more than say .2" from a ground or virtual ground. You'll find this on my small 32Mb 4Mx8 5V 10ns SRAM module (which I can provide). I could get away with it there because signals don't have to go very far.

Signals beyond the basics (which might include ones for wait states, bus arbitration, memory banking, etc.) could be accommodated, but it should be in a way that it's not mandatory that they be used. Many potential users will shy away from it if you require it. There are concessions like that built into 65SIB, allowing a device to be as simple as a dumb shift register, even though the protocol allows for intelligence with autoconfiguration and for the controller to ask an intelligent device about its attributes, status, capabilities, etc.. The intelligence is accommodated while still making it super simple for someone who doesn't want to bother with that. If the controller asks a dumb shift register, the design is such that a dumb device won't even hear it, let alone answer. There's no obligation for either end to be able to implement the intelligence—but the possibility is there if you want to.

_________________
http://WilsonMinesCo.com/ lots of 6502 resources
The "second front page" is http://wilsonminesco.com/links.html .
What's an additional VIA among friends, anyhow?


Top
 Profile  
Reply with quote  
PostPosted: Sun Aug 31, 2014 1:48 pm 
Offline
User avatar

Joined: Fri Dec 12, 2008 10:40 pm
Posts: 999
Location: Canada
Quote:
Signals beyond the basics (which might include ones for wait states, bus arbitration, memory banking, etc.) could be accommodated, but it should be in a way that it's not mandatory that they be used.

I agree.

Here is a first cut of this for discussion's sake. I gave no thought to the actual pin-function assignment at this point, it may or may not be of importance - another discussion item. The first order of business would be, do I have the right signals?

The AUX signals are all user defined, but I'd like to preempt (for lack of a better word) 6 of them for serial I/O. In other words, use up AUX0-AUX9 for user defined needs before considering using AUX10-AUX15.

I left out the mode select lines for the 65C816 as I assume they would be taken care of on the CPU card.

OCA is a signal for Off CPU Address for those cases where the user wants to put addressable devices on the CPU card. It would control the enable of the data-bus buffer.

Code:

     5V   1   2  GND
     5V   3   4  GND
     5V   5   6  GND
     A0   7   8  VPA
     A1   9  10  VDA
     A2  11  12  IRQ
     A3  13  14  NMI
     A4  15  16  BE
     A5  17  18  RDY
     A6  19  20  R/W
     A7  21  22  PHI-2
     A8  23  24  PHI-1
     A9  25  26  CLKB  (user defined clock)
    A10  27  28  CLKA (user defined clock)
    A11  29  30  SO
    A12  31  32  SYNC
    A13  33  34  ABORT
    A14  35  36  MLB
    A15  37  38  VPB
    A16  39  40  RESET
    A17  41  42  D7
    A18  43  44  D6
    A19  45  46  D5
    A20  47  48  D4
    A21  49  50  D3
    A22  51  52  D2
    A23  53  54  D1
    OCA  55  56  D0
   AUX0  57  58  AUX15 (SDA)
   AUX1  59  60  AUX14 (SCL)
   AUX2  61  62  AUX13 (SCLK)
   AUX3  63  64  AUX12 (MOSI)
   AUX4  65  66  AUX11 (MIS0)
   AUX5  67  68  AUX10 (SS0)
   AUX6  69  70  AUX9
   AUX7  71  72  AUX8

_________________
Bill


Top
 Profile  
Reply with quote  
PostPosted: Sun Aug 31, 2014 8:36 pm 
Offline
User avatar

Joined: Thu May 28, 2009 9:46 pm
Posts: 8142
Location: Midwestern USA
As I earlier posted, I really haven't given this much thought. However, I am of the opinion that an expansion bus should be fully isolated and buffered from the MPU's buses and that the isolation/buffer hardware should mediate all transfers. Incidentally, bringing signals such as /IRQ, RDY, VDA, etc., out to the bus is still effectively taking the MPU's buses off-board. The expansion bus' "slots" shouldn't know about signals like that, and should be driving an interrupt encoder rather than directly accessing /IRQ or /NMI. Signals such as BE, RDY and VDA are MPU bus management signals, and should be confined to the mainboard circuitry only.

Look at the PCI bus for answers. It doesn't have to be as complicated as PCI, but should try to adopt some PCI features. This may be a good application for some 65C22s to act as bus drivers.

_________________
x86?  We ain't got no x86.  We don't NEED no stinking x86!


Top
 Profile  
Reply with quote  
PostPosted: Sun Aug 31, 2014 8:40 pm 
Offline
User avatar

Joined: Thu May 28, 2009 9:46 pm
Posts: 8142
Location: Midwestern USA
BTW, shouldn't this topic be in the hardware section of the forum?

_________________
x86?  We ain't got no x86.  We don't NEED no stinking x86!


Top
 Profile  
Reply with quote  
PostPosted: Mon Sep 01, 2014 12:34 pm 
Offline
User avatar

Joined: Fri Dec 12, 2008 10:40 pm
Posts: 999
Location: Canada
BigDumbDinosaur wrote:
As I earlier posted, I really haven't given this much thought. However, I am of the opinion that an expansion bus should be fully isolated and buffered from the MPU's buses and that the isolation/buffer hardware should mediate all transfers. Incidentally, bringing signals such as /IRQ, RDY, VDA, etc., out to the bus is still effectively taking the MPU's buses off-board. The expansion bus' "slots" shouldn't know about signals like that, and should be driving an interrupt encoder rather than directly accessing /IRQ or /NMI. Signals such as BE, RDY and VDA are MPU bus management signals, and should be confined to the mainboard circuitry only.

Look at the PCI bus for answers. It doesn't have to be as complicated as PCI, but should try to adopt some PCI features. This may be a good application for some 65C22s to act as bus drivers.


Hi BDD,

This goes a bit against what I'm after. Such a bus would need a lot of additional programming to use and that kind of beats the primary intent - to define something that makes it real simple to make cards for and to keep the programming as light as possible.

As far as interrupt control, that's something the auxiliary lines could be used for. A user that requires more sophistication for an interrupt driven system can use those lines so that the interrupting device can place a code into an interrupt register on the CPU card when it asserts /IRQ or /NMI. The first part of the interrupt routine would be to check that register. This would allow 'smart' devices the opportunity to define multiple interrupts. Or they could be used to facilitate 'slot' based interrupts or something even more sophisticated.

All that said, I can see the attraction of an arbitrated asynchronous bus for peripherals. Especially in systems where it is desirable for the CPU to run as fast as possible. So maybe there is room here for two bus structures. One that is simple, flexible and a bit unsophisticated, another more performance oriented that separates the CPU and memory on a faster, synchronous bus supporting maximum processor speed and multiple concurrent processes while keeping the peripherals on an arbitrated asynchronous bus that is more rigorously defined.

_________________
Bill


Top
 Profile  
Reply with quote  
PostPosted: Sat Sep 06, 2014 4:01 am 
Offline
User avatar

Joined: Fri Dec 12, 2008 10:40 pm
Posts: 999
Location: Canada
I guess the overwhelming apathy speaks volumes here.

Oh, well.

Personally, I have decided on a 44-pin bus and have put it into action. Since I don't use the 65C816 for anything, I was able to cut back a wee bit.

Not intending to beat the crap out of the PC market or anything, I've come to grips with simple and effective solution.

So, as you were.

Thanks for all the input folks...!

_________________
Bill


Top
 Profile  
Reply with quote  
PostPosted: Sat Sep 06, 2014 4:01 am 
Offline
User avatar

Joined: Fri Dec 12, 2008 10:40 pm
Posts: 999
Location: Canada
BigDumbDinosaur wrote:
BTW, shouldn't this topic be in the hardware section of the forum?


Sounds good to me...

_________________
Bill


Top
 Profile  
Reply with quote  
PostPosted: Sat Sep 06, 2014 8:25 am 
Offline
User avatar

Joined: Sun Oct 13, 2013 2:58 pm
Posts: 485
Location: Switzerland
Just my 5cents. I use a minimal IO Bus with only 32 signals

Code:
A0...A11
D0..D7
RW
/RD
/WR
PHI2
/IO1
/IO2
/IO3
/IO4
VCC
GND
/IRQ
/RES

I use single Row DIN41612 connectors. I never used other signals for my "perihperals". Everthing more complex is on the main-board. Currently the bus runs with 4MHz and the CPU clock is the same, but I'm investigating to have the CPU clocked with at least 8MHz and have the IO Bus run at half the speed.

Cheers

Peter


Top
 Profile  
Reply with quote  
PostPosted: Sat Sep 06, 2014 1:46 pm 
Offline
User avatar

Joined: Fri Dec 12, 2008 10:40 pm
Posts: 999
Location: Canada
cbscpe wrote:
Just my 5cents. I use a minimal IO Bus with only 32 signals


Well, 5 cents is 3 cents more than most! I see your a fan of the venerable PDP-11.

My minimal bus is similar to yours. I have 8 block select lines instead of 4, one more address, 4 spares (for future consideration or SPI/I2C) and a couple of extra power lines. I also brought out the SYNC and RDY signals in just in case. I use the 2x22 .156" card edge connector.

Here is the pin out I'm using:

Code:

     5V   1   2  5V
    GND   3   4  GND
     A0   5   6  A7
     A1   7   8  A8
     A2   9  10  A9
     A3  11  12  A10
     A4  13  14  A11
     A5  15  16  A12
     A6  17  18  SP0
     D0  19  20  D1
     D2  21  22  D3
     D4  23  24  D5
     D6  25  25  D7
    RDY  27  28  SYNC
   /IRQ  29  30  SP1
    R/W  31  32  RSET 
   PHI2  33  34  SP2
    SP3  35  36  /NMI
   /BS0  37  38  /BS1
   /BS2  39  40  /BS3
   /BS4  41  42  /BS5
   /BS6  43  44  /BS7


_________________
Bill


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

All times are UTC


Who is online

Users browsing this forum: No registered users and 1 guest


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: