News:

Printed Amstrad Addict magazine announced, check it out here!

Main Menu

Open Source, DIY 512KB RAM Expansion

Started by revaldinho, 22:10, 24 April 18

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

revaldinho





I just wanted to let you all know that I'm working on a DIY 512KByte DK'Tronics compatible RAM expansion.


In fact I have a working version already, but I'm only about half way through the project, more or less.


Now obviously there are a number of RAM cards about, and some much larger than 512KBytes. If you're after a ready made card then this one is probably not for you. What's different about this one is that the logic implementation will be done entirely from standard 74 Series logic chips: no FPGA, no PALs, no CPLDs.  All components will be through-hole types - no surface mount at all. This is very much intended as a DIY project that anyone with the most basic of soldering skills can assemble themselves once they have the PCB.


Now although the goal is to make a 74 Series board, I have cheated a bit and prototyped the card first using a Xilinx XC9572 CPLD. I just wanted to make sure that I had all the logic right to begin with and reprogramming one of these parts is a lot easier and more reliable than breadboarding everything first.


I got my first PCBs back last week and have pretty much finished testing them now using my CPC464. I've run some memory test programs of my own and have been able to load and run the DK'Tronics original RAM expansion software and RSXes. The card works fine running off the CPC supply or with an external PSU, and with the latter I've been able to run all tests between 4.35V and 5.5V and measure about 43mA of current at a nominal 5V. Logic looks good and timing robust, at least for the CPLD version.


So, CPLD version up and running and I have created a netlist and a trial PCB layout for the 74-series version already, mainly to check that it would be doable in the free version of Eagle. And it is. I haven't tried to shrink the layout yet. I need to do a bit of simulation first to check the gates logically vs the CPLD code and get a rough idea of what the new timing will look like. There may be bugs in the 74 series version and some logic may need refactoring if timing looks to be an issue. And I'm sure that there are some improvements to make to the PCB aside from any squeezing and shrinking to reduce the costs. I would guess I'm a few weeks away from ordering any more boards given the amount of time I have to spend on this.


Just one other thing about this project then: as it says in the subject field, it's all open source. All the CPLD and PCB source is available on GitHub under the GPL3 License. The Eagle PCB file for the original prototype (with the CPLD) is also available at OSHPark, so you are free to download that or even order boards from there should you wish. I will put the final 74 series layout up on OSHPark too (assuming I can make a robust implementation), but if more than a few people are interested we could run off a small series of boards much cheaper elsewhere.


So now you know. Hopefully a DIY board will appeal to few people and we can get a small batch of boards made. If not, well, I have a couple of other similar DIY projects in slightly earlier stages of development. More about those some other time perhaps.


R.

LambdaMikel

Cool stuff!
Can you try getting a assembly quote from seedstudio ?
They are surprisingly inexpensive. I am currently considering their service for one of my projects.





Bryce

Hi revaldinho,
       very nice project and I like the fact that you are doing it in "old school" 74 Series. One comment: looking at the layout, it looks like you have the 50way connector in the opposite orientation to most CPC expansions, whic means that users that have an MX4 board or standard centronics/edge connectors won't be able to use your expansion without an adapter. Maybe you should consider flipping the connector for the final version?

The uneven numbered pins (1,3,5,7...) should be nearest the edge of the PCB with pin 1 on the left when looking at the PCB from the component side. this would make it compatible with all current expansion connectors and adapters.

Bryce.

revaldinho

Thanks for the comments.

Let me deal with those back to front, which is indeed what I managed to do with the connector on the prototype.

Yes, on the connector I will be swapping things around to be MX4/ribbon cable compatible and I'll make sure all the layouts and photos are updated shortly. 

On my prototype the pins are physically in the 'right' order running from left to right; my blunder was to get the upper and lower rows swapped over. Fortunately I was able to get around this fairly painlessly by just mounting the box connector on the back of the board instead of the front and connecting my ribbon cable/edge connector upside down. It works, but new boards will have the edge connector on the front and follow the usual convention.

I have ordered an MX4 board from TotO but don't have it yet. In the meantime, at the same time as getting my boards done I ordered a couple of LamdaMikel's adapters (thanks for making those so easily available via OSHpark) thinking I could have the RAM card plugged into the box socket and my Zaxon DDI-3 card on the extension edge connector. Unfortunately that doesn't work - the LCD display on the DDI-3 sticks out too much and is too close to the RAM card for them both to fit. I came up with a solution for that last night though. I cut the adapter down to size and soldered it directly on the back of the DDI-3 via the edge connector holes - the DDI-3 pins protrude just far enough to solder on another board behind - leaving the IDC socket holes free to take another box connector. So, now I have a ribbon cable (from an old internal SCSI disk installation) plugged into the back of the DDI-3. And that means I have access to USB disk and the RAM card.  Before that I was using the tape player to get my first BASIC tests up and running - a truly retrotastic experience !

I'll get quotes from a couple of PCB suppliers including seeed for the final boards. Just as an indication though, the OSHPark price would be $1 per sq inch in multiples of 10 boards, so that's likely to be about $12 a board.  Seeed looks like it'd be more like $5 a board, but I'd have to generate a trial Gerber file for them and upload it to get a more accurate quote.

Still, I'm getting a bit ahead of myself here. I haven't finished the 74XX board yet. The current netlist and layout are still work in progress and I have a bit of verification work to do before I'm really sure of the final configuration and size.

R

Querubin

Excellent project!,
One question. Why not to make the pcb like the original one? With both edge conectors male and female. It will be great to plug the memory expansion and behind it the DDI-1 on a 464 or the M4 board without MX4 needed.
Step by step

revaldinho

Thanks Querubin


I haven't gone for the pass through edge connector idea because I thought it would make the build a lot more fiddly - looks like you end up with 2 PCBs at right-angles to each other from the photos in the DK'Tronics RAM card gallery. Also the MX4/Ribbon connector seems well established and works with all CPCs regardless of whether they have edge connectors or Centronics plugs.


LambdaMikel's adapter would let you use one MX4 board and give you a pass-through for the DDI-1 which is pretty close.


Those DK'Tronics boxes were quite stylish though, especially the original '464 style ones. So if someone were to be able to 3D print a reproduction case then yes, might be nice to try and make a board in the right form factor and with the pass-through edge connector.


R


Bryce

Adding a DKTronics type pass through introduces so many problems that you don't want to have:

- Multiple PCBs that need to be placed in a jig to solder reliably.
- Expensive parts (long pin 50way edge connectors) that are very difficult to source.
- Multiple layouts required because the edge connector version won't work on Centronics CPCs.
- Potential failure point, because you are trying to provide mechanical functionality with solder joints.

Bryce.

Querubin

Thanks both. The problem is not MX4 boards available.
I will be interested on one classic pcb.
Step by step

GUNHED

http://futureos.de --> Get the revolutionary FutureOS (Update: 2023.11.30)
http://futureos.cpc-live.com/files/LambdaSpeak_RSX_by_TFM.zip --> Get the RSX-ROM for LambdaSpeak :-) (Updated: 2021.12.26)

Mikes

Interesting ;)

Enviado desde mi MI MAX mediante Tapatalk


revaldinho

Just a quick update on this one.


I finished the 74 series design at the weekend with just enough simulation to be confident it'll match the working CPLD.


I sent the PCB order to Seeedstudio and had an email to say that the PCBs went into fab today.


Seeedstudio is very, very cheap - I had to order a 'protopack' of 10 boards, but the entire cost including postage was only about £12.50. Postage isn't quick though, so it'll be the best part of 3 weeks before I get hold of the boards and have a chance to build and test them.


Let's assume the boards are good, or at least I can find and fix any gremlins there may be with a quick spin. I'd like to just quickly gauge how much interest there would be from people actually wanting to build their own RAM boards.


I could probably put together a complete kit including a single board and all components for under £25 including postage to the EU.


Alternatively (and easier for me) I could mail out boards at a flat rate of, say, £5 including P&P and you could source your own components. I've attached an example BOM from digikey to give an idea of what this might cost.


If you would be interested in building one of these for yourself, could you post to this thread please and say whether you would prefer a complete kit or just a bare board.


Thanks.


R


PS. Also just to be clear, the board will have an MX4/ribbon cable compatible IDC header so if you're wanting to plug it directly into the CPC edge connector then you would also need an adapter like [size=78%]LambdaMikel's.[/size]




















Audronic


@revaldinho


I would be interested in 1 (one) Bare Board posted to Australia.
Thanks     Ray
Procrastinators Unite,
If it Ain't Broke PLEASE Don't Fix it.
I keep telling you I am Not Pedantic.
As I Live " Down Under " I Take my Gravity Tablets and Wear my Magnetic Boots to Keep me from Falling off.

Bryce


asertus

Sorry, me too, if still available

Kris


Mikes

It is possible to have a board yet? I'm interested in one, please ;)

Enviado desde mi MI MAX mediante Tapatalk


revaldinho

Quote from: Mikes on 12:59, 04 May 18
It is possible to have a board yet? I'm interested in one, please ;)




I will have at least 7, maybe 8, spare in the initial batch after I've assembled a couple for testing. Hopefully all will be well with the first batch but I don't rule out having made some blunder which would mean a fix... :D


So, 5 interested in bare boards should be no problem, but still at least a couple of weeks away from me seeing the boards yet. Easy to get more boards if others are interested.


R.


ungatonipon

#18
[edit] interest withdrawn

Chinnery

Can you put my name down for a bare board too pls.  ;D

LambdaMikel

#20
Quote from: GUNHED on 13:35, 26 April 18
Contact Tot0 for MX4 boards.  :)


Unfortunately, DDI-3 does not work with MX4 mother board on the 464.
My solution to this is to use 2 of my 464 expansions port connectors.
The first one plugs into the 464 and has the memory expansion, then
there is a edge connector to IDE cable to the next 464 expansion port
connector, which is used in reverse (i.e., input = IDC Box Header,
output = edge connector). Then I plug the DDI-3 onto the edge connector
output of the second adapter. That works very well, unlike the MX4 motherboard. Something electrically weird is going on with the MX4 motherboard.

Of course, that's only required if the board is either to heavy, or would be too close to the M4X board in the first adapter (otherwise, it could be plugged directly onto the pass through of first adapter, of course)

LambdaMikel

Btw, please put me on the list for a PCB too!
Thanks!  :)

revaldinho

Right, time for a brief update on this project because ... the boards have arrived!


I have built one (see the snap attached) and generally it's good news, very good news really. There is one glitch but I'll come to that later.


As far as getting the boards done is concerned, I used Seedstudio for the first time, sending them a set of files generated by the free version of Eagle and picking the standard prototype service with cheap 10-18 day post. I made the order on the 29th April, had an email to say they were in the fab on May 3rd and the boards arrived this week on May 15th. They look pretty good and that timescale is very reasonable considering the price. I will definitely use them again, and indeed I have an opportunity to do so immediately ! :D


So does the board work ? Yes, it does. How well ? Very well, thank you very much and I mean well in the sense that the board works with a voltage supply well under 4V, much lower than the CPLD based prototype, and appears to draw very little current at all. I even have the IDC connector on the right side of the board this time. I have tested on my CPC464 with just the RAM board connected either to a ribbon cable from the edge connector or using one of LambdaMikel's adapters. Tonight I made up another ribbon cable and have tried again with the RAM card connected on the back on my Zaxon DDI-3 board. All fine.


It's all working then, so what's the glitch ?


Well, now there's the thing. Actually to my great disappointment it didn't work first time and I had a bit of debug to do. Obviously I have done the debug to get things working, so that didn't take very long, but I now need to make a couple of changes to the board layout before making boards available for anyone else. I will ship an updated board design to Seeed this weekend, and then based on their turnaround this time I could expect to have boards ready to post out in about 3 weeks time.


If you're interested I can tell you what the issues were.


When the boards didn't work I was a bit stumped. After all, I was confident in the actual logic design since I had prototyped it in the CPLD card and had then simulated the 74 series version to check my mapping. I had even done some basic simulation with timing to be confident that I wouldn't have a timing issue and even if that was a bit imperfect there just seemed to be loads of slack available so a ropey timing issue seemed unlikely too.


If not the logic then most likely the problem was in the layout. How could it happen that the layout would not actually match the original netlist ? This is a bit of a long story, but the gist of it is that I'm using my own Jython/Java code to go directly from a Verilog-like netlist to an Eagle PCB board script in one fell swoop. This works pretty well, for example the CPLD card was right first time, but it does mean that I have to prepare my own component libraries to map from the Eagle libs to a python-based lib format for my own tool. Guess what. I had made an error in the mapping the pin out of 2 of the ICs from Eagle to the python lib: a 7432 quad OR and a 7475 dual latch pair. So, yes I had done the usual checks like write out a netlist from the board design and checked that it matched exactly the original source ... but that doesn't check the internals of the library elements. I should have checked those a little more carefully.


The 7475 error was pretty easy to fix on the board - the enables for the latch pairs were swapped over - and to be fair the 7475 has a pretty weird pin-out for a 74 device anyway. So that was easily corrected and indeed I could fix the remaining boards for that one. Unfortunately the 7432 (mis-)mapping was a bit more complicated. I've resolved that temporarily by just bringing all the socket connections off the RAM board and into a breadboard where I can correct them. I can't see an easy way of fixing this on the board manually. So, a new rev it is then to make a proper job it it, and at these prices it's not exactly a disaster but it will be a little more delay.


I have fixed the library elements and updated my netlister project already. I don't need to change any of the RAM board netlist or component placements so making a new board design is a matter of just rerunning the scripts and then tidying up some of the power trunks and routing manually as I did before. As I say I will probably do that at the weekend and just do a bit more testing of the board in the meantime.


R.




Bryce

Very nice work. The PCB could be a lot smaller though.
Bryce.

revaldinho

Thanks.


Yes, the board could be smaller. There is a lot more vertical signal routing on the back side in fact but I didn't really squeeze the layout at all.


The thing is, ordering from Seeed there isn't much motivation to make it smaller. The board cost (ex. postage) is just $5 for ten 100x100mm boards. There is no discount for going below that size, well not in the kind of quantities I'm looking at anyway.


My other limit is the free Eagle PCB tool which restricts you to 100x80mm and I think that's pretty much what we have here.


So, with that in mind I fixed the size and chose to use trace widths and spacing much larger than the minimum permitted, hoping to eliminate any manufacturing defects and make the circuit more robust. You can see the vdd tracks from space!  :D
R

Powered by SMFPacks Menu Editor Mod