top left Image    Buses / Connectors

16 bit connections

16 bit connector
The Megaprocessor is a 16 bit processor so we have 16 bit data buses connecting registers, multiplexors, adders etc. There's quite a lot of 16 bit connections. Having 16 individual wires for each would have been very messy and confusing. Having to solder each of these each would have been horrendously tedious and error prone so the obvious answer was to go for ribbon cables and IDC (Insulation displacement connections) connectors. Add a few grounds and I decided to go for 20way cables and connectors.
This was sensible enough. It was certainly not a bad decision. It's just that it wasn't a brilliant solution either. I still don't know what the right answer is.


The only actual error is that I didn' t properly anticipate what the address bus would look like. The address itself is 16 bits wide, just like the data. The trouble is that there is also an associated direction (read/write) signal and an enable signal. To the extent that I thought about them at the start my vague thought was that they would be handled as essentially independent point to point wires.  That wasn't a bad guess but when it came to actually building the system I (too late) eventually realised that I didn't want individual signal wires going between modules and frames, just wide connectorised buses). I therefore had to define a second bus "standard" with 16 bit data and a couple of control signals and get a second family of interconnection boards made for handling address buses. It wasn't a disaster, I didn't have to redo anything. But it was more money and time that a few minutes thought at the start might have saved.

The next issue relates to clarity. The ribbon cables are relatively wide (one inch, 2.5 cm) and so take up quite a bit of real estate on the front of a module. In quite a few situations they obscure the schematic showing control signals which is a bit of a shame. I did spend a bit of time contemplating how I might take them through the board and route them round the back of the module. The trouble is that the hole would have to be big enough to take the connector and I couldn't think of a way of drilling/cutting such a hole in a neat fashion. Or at least not without it taking an infeasible length of time. Whilst I like the way the ribbons show data moving round, the clutter they introduce is one of the things I'm particularly disappointed by.

And then there is the expense. I've spent far more money on these than the other components (transistors, LEDs & resistors). I do wonder whether if I'd done things differently I could have taken advantage of some cheap standard cables. They would also have saved me the work of making up the cables (I've had to make up nearly 400).

My current thoughts as to what I should have done is standardised on an 8 bit interconnection using RJ45 connectors and ethernet cables. Ethernet cables have 4 twisted pairs which would give us 8 wires. The data bus would use two connections and the address bus would be done as three with one of the connections only carrying 2 signals.
  • It would have been cheaper.
  • Two ethernet cables have a smaller width than the 20way ribbon so would have obscured less of the board. Or alternatively as you don't need a huge hole to take an RG45 perhaps I could have taken the cable through the board and run it round the back like the single control signals. (Actually you probably would want to take the cables round the back as the cables would come in fixed standard lengths so there'll always be some slack you'd want tidied out of sight.)
  • As an extra bonus there are a few places where I have to split out/join together the LSB and MSB of a 16 bit bus, and with 8 bit buses you'd get that for free.
  • The only downside I can think of at the moment is that I think the footprint of two RJ45s is greater than that of the connector I did use, but there's not much in it.
  • Too late now.

1 bit connections

1 bit connectors
I'm not sure I went down the right route here either. Soldering directly to the board seemed like a  bad idea. I wanted something I could connect/disconnect to easily for testing and then fit into main system. So I went for these clippy things. I used the brass pins for input signals and the coloured ones for output signals and power. It worked out ok. But they are surprisingly expensive, and my soldering connections were sometimes a little messy.
I should probably have investigated some other options in more depth. In particular some crimp connections. But at the start when I was wondering what to put on my first board I didn't know what lay ahead and the thought of making up crimp terminals did not appeal. I'd only ever made them with pliers and it's not been a lot of fun. If I'd known just how big the project was going to get then I'd have invested in the right crimping tools and maybe made a different choice. Once I'd had the first few boards made it seemed to late to go back and start over with a different choice.

link to previous
link to next






© 2014-2016 James Newman.