Author Topic: Open Source, DIY 512KB RAM Expansion  (Read 1295 times)

0 Members and 1 Guest are viewing this topic.

Online LambdaMikel

  • Supporter
  • 464 Plus
  • *
  • Posts: 373
  • Country: us
    • Homepage
  • Liked: 211
Re: Open Source, DIY 512KB RAM Expansion
« Reply #20 on: 23:20, 11 May 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)
« Last Edit: 23:28, 11 May 18 by LambdaMikel »

Online LambdaMikel

  • Supporter
  • 464 Plus
  • *
  • Posts: 373
  • Country: us
    • Homepage
  • Liked: 211
Re: Open Source, DIY 512KB RAM Expansion
« Reply #21 on: 17:49, 12 May 18 »
Btw, please put me on the list for a PCB too!
Thanks!  :)

Offline revaldinho

  • CPC464
  • **
  • Posts: 19
  • Country: gb
  • Liked: 24
Re: Open Source, DIY 512KB RAM Expansion
« Reply #22 on: 00:07, 18 May 18 »
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
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.




Offline Bryce

  • The Hardware Guy.
  • Supporter
  • 6128 Plus
  • *
  • Posts: 10.025
  • Country: wf
  • It's not broken, it just hasn't been fixed yet.
    • index.php?action=treasury
  • Liked: 3372
Re: Open Source, DIY 512KB RAM Expansion
« Reply #23 on: 09:52, 18 May 18 »
Very nice work. The PCB could be a lot smaller though.
Bryce.

Offline revaldinho

  • CPC464
  • **
  • Posts: 19
  • Country: gb
  • Liked: 24
Re: Open Source, DIY 512KB RAM Expansion
« Reply #24 on: 10:23, 18 May 18 »
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

Offline Sykobee (Briggsy)

  • 6128 Plus
  • ******
  • Posts: 644
  • Country: gb
  • Liked: 211
Re: Open Source, DIY 512KB RAM Expansion
« Reply #25 on: 13:43, 18 May 18 »
Very nice. Put me down for one (a kit would be great, but I'm sure I can manage a digikey order).


Would it be better to centralise the M4 connector at the bottom, for balance, or maybe that wouldn't work if someone has made an M4 case (are there M4 cases?).


Also I wonder how hard it would be to get to 1MB or 2MB, given you have board space?

Offline revaldinho

  • CPC464
  • **
  • Posts: 19
  • Country: gb
  • Liked: 24
Re: Open Source, DIY 512KB RAM Expansion
« Reply #26 on: 23:39, 18 May 18 »



Would the board route with the connector in the absolute centre ? Actually I think I started off with the connector in the centre and moved things around to where they are now to improve the routing. Here's a snap of the underside of the board (attached) where you can see that having the connector offset to be underneath the RAM IC has allowed the relatively large number of address and data signals to have short paths with few vias. Moving the connector back to the centre would probably work although there would be more horizontal routing and vias and I think a lower quality result although I'm not really a PCB design expert so I don't really know that it would matter at these speeds. Maybe I could avoid the extra routing anyway by splitting some of the 74 logic on either side of the RAM? That's certainly possible. Well, I don't know. I'm not planning to move the connector for the respin though. I would like to minimise the number of changes given I seem to have a solid working part now.


Just for future reference though, is there any well accepted board size or connector layout for expansion modules to aim for, to fit some easily available case ?


(I do quite fancy having a mini -rack mount type box for a motherboard and expansion cards. Has anyone built one of these ?)


And would a larger memory size be possible in the 'old school' style ?


I think probably not in the 100mm x 80 mm limit here. Although the board looks pretty comfortable for the 512K RAM, there is only the one large RAM IC. I can't find any SRAM parts larger that this 1Mbit (512Kx8)  in a DIL package on Mouser or Digi-Key. Everything bigger is in an SMD pack of some sort. So to stick with the all-through-hole style would mean multiple RAM ICs on the board which would use up space very quickly. There's also the additional decoding requirement which might be 2 or 3 or even more 74 series parts. All in all, I suspect it wouldn't fit. Again, I haven't tried it, but I suspect that's just too many components for this DIY kit approach and board size.


There are plenty of other RAM expansions about though including at least one 4MB one in development here. If you're not quite as intimidated by SMD soldering as I am, you might even be able to get one to build yourself  :D




R




Offline Duke

  • Supporter
  • 6128 Plus
  • *
  • Posts: 820
  • Country: dk
    • spinpoint.org
  • Liked: 776
Re: Open Source, DIY 512KB RAM Expansion
« Reply #27 on: 09:41, 19 May 18 »
Just for future reference though, is there any well accepted board size or connector layout for expansion modules to aim for, to fit some easily available case ?
MotherX4 (which many use) plugin boards are normally ~80x50 mm with right angle male IDC connector front and center mounted. See ie. Playcity, Xmem etc cards.
Not that it's very important, but it looks nice maybe :)

Online gerald

  • Supporter
  • 6128 Plus
  • *
  • Posts: 1.238
  • Liked: 891
Re: Open Source, DIY 512KB RAM Expansion
« Reply #28 on: 13:32, 19 May 18 »
Here's a snap of the underside of the board (attached) where you can see that having the connector offset to be underneath the RAM IC has allowed the relatively large number of address and data signals to have short paths with few vias.
Having the RAM parallel to the connector would be far better from a routing point of view since data and address are both grouped on the connector and the RAM. Note also that you don't need to match address and data bit on the RAM level, it does not matter. You can shuffle the bits to ease the layout  (ie putting A10 from CPC to A1 on the RAM).

Offline revaldinho

  • CPC464
  • **
  • Posts: 19
  • Country: gb
  • Liked: 24
Re: Open Source, DIY 512KB RAM Expansion
« Reply #29 on: Yesterday at 14:24 »
Yes, in fact if you look closely you can see that the address lines are out of order going from connector to SRAM, so that's at least one trick I didn't miss  :D


Have done a bit more testing today and yesterday.


I can run the DK'tronics RAM Expansion RSXes and it correctly identifies the 256K portion of the expansion. Typing in the screen swapping demos from the manual (|SAVES, |LOADS) all works fine.


Also this weekend I have assembled a ROM board so now I can try the Silicon Disk software. That works fine too both in AMSDOS and under CPM2.2 (I have a '464).


So that was all looking good.


My ROM board has the option to switch the lower ROM out too, so I used that to switch firmware and BASIC to v1.1 to turn my '464 into a 6128, nearly.  I thought that I would be able to boot into CPM Plus. I just get this message though "This program will not run in this environment. Press any key". Also I thought I should be able to run the original Amstrad CPC6128 bank manager software supplied on the 6128 system disk. I get a "Load failed" if I try that though.


Is it possible to be DK'tronics compatible but not fully supporting something in the way the 6128 handles its internal 64K expansion ? (And of course I have a Zaxon DDI-3 as my disk drive rather than a DDI-1 - is there any known issue with that in a 'fake' 6128?)


R