Jump to content
IGNORED

Ultimate Cart (SD multicart) - Technical thread


electrotrains

Recommended Posts

This is intended as a discussion thread for the Ultimate Cart hardware - an SD-card based multicart for the Atari 8-bit, featuring an altera FPGA and 1 meg of SRAM.

 

If you want to ask me (or someone else) to build you one, you can ask in the pre-orders thread.

 

This is an open-source project and has its own github repository:

https://github.com/robinhedwards/UltimateCart

 

The fpga firmware source will follow in the next few days, but for now there are PCB files, programming files for the FPGA and a Bill Of Materials. Everything needed to assemble a board yourself should now be there.

 

If you want to build one yourself and need some help, ask here.

 

Since it features an FPGA, the hardware will allow lots more to be done with the cartridge. Co-processors, hard-disk functionality, other cartridge types (e.g. Corina) and stackable (e.g. SDX+other) carts should all be possible. The JTAG header makes it possible to reprogram the FPGA with a $10 USB blaster. I'm hoping people can get together to implement and discuss this some of this stuff here.

 

Robin

 

  • Like 7
Link to comment
Share on other sites

My $0.02:

  1. Firmware for direct access to the SD Card, possibly with a IDE emulation layer in between (i.e. directly compatible with SIDE or MyIDE)
  2. (Angled) pin header that exposes some IO pins to the outside world, which enables one to implement e.g. SPI, I2C or a full UART with a simple add-on cable

 

  • Like 2
Link to comment
Share on other sites

  • 3 weeks later...

Hi All,

 

The FPGA firmware (a Quartus II project) and Atari boot rom (a WUDSN/MADS project) are now on the GitHub repository.

I think that's now the complete set of project files available, so this is now 100% open sourced.

 

The production devices (i.e. not ES) are now showing as in stock on digikey and mouser. Although these are equivalent to the engineering sample chips available up to now, they will probably require new programming files. The production device isn't supported in Quartus 14.1, so I'm guessing I'll have to upgrade the project to Quartus 15.0 when I get hold of some. I'll put the new programming files up on github in due course.

 

Robin

  • Like 1
Link to comment
Share on other sites

  • 3 weeks later...

I've added some more detail to the assembly instructions on the github page for those wanting to build these themselves.

 

I also purchased one production fpga (10M08SAE144C8G) rather than the ES (Engineering samples), and programmed it from Quartus 14.1 with the same programming file as I'm using for the ES ones. The programmer didn't complain, and the finished cartridge seems to work fine, but I'll do a bit more testing.

 

I posted a query to the altera forum to ask if this was the correct thing to do, since there is no explicit entry for the production version in any released version of Quartus (up to 15.0 patch 2), but haven't had a meaningful reply. So for now, I'll assume it is, and will probably use the production versions in all future boards.

Link to comment
Share on other sites

  • 3 weeks later...

Hi all,

 

I had a PM last week from someone who had independently built their own copy of the ultimate cart using the instructions/files on the github page.

As far as I know, that's the first copy of the cart made by someone other than me, and it proves at least the instructions are adequate and complete. Which is good.

 

However, he did have some problems getting it to work with two of his SD cards (a Kingston and a Dane-Elec brand). He discovered that by adding some 50k pull up resistors to the SD card slot he could make these cards work. After a bit of discussion and research, we've narrowed it down to a 50k pullup being required on the SD card DO (pin 7). This is suggested as being required or "some SD cards will fail to initalize" on the petitfat fs page.

see e.g. http://elm-chan.org/docs/mmc/mmc_e.html

 

I haven't come across this myself (I tested with about 10 different branded SD cards including Kingston), and curiously, he posted me a problematic SD card and it works fine on my boards without the pullup. However, in retrospect, I should have added this pull up resistor to be safe.

 

Fortunately, this resistor is easily patched on to the board (see photo below). Anything in the range 10k-100k should meet the SD card specification, however 47k is easy to find and frequently used for this purpose. The resistor bridges pin 7 (DO) and 3v3 on the SD card connector.

post-41252-0-13853600-1445342513_thumb.jpg

 

Despite being unable to reproduce this problem, I think I've decided to add this resistor to any new boards I produce.

 

Robin

Edited by electrotrains
  • Like 3
Link to comment
Share on other sites

Hi all,

 

I had a PM last week from someone who had independently built their own copy of the ultimate cart using the instructions/files on the github page.

As far as I know, that's the first copy of the cart made by someone other than me, and it proves at least the instructions are adequate and complete. Which is good.

 

However, he did have some problems getting it to work with two of his SD cards (a Kingston and a Dane-Elec brand). He discovered that by adding some 50k pull up resistors to the SD card slot he could make these cards work. After a bit of discussion and research, we've narrowed it down to a 50k pullup being required on the SD card DO (pin 7). This is suggested as being required or "some SD cards will fail to initalize" on the petitfat fs page.

see e.g. http://elm-chan.org/docs/mmc/mmc_e.html

 

I haven't come across this myself (I tested with about 10 different branded SD cards including Kingston), and curiously, he posted me a problematic SD card and it works fine on my boards without the pullup. However, in retrospect, I should have added this pull up resistor to be safe.

 

Fortunately, this resistor is easily patched on to the board (see photo below). Anything in the range 10k-100k should meet the SD card specification, however 47k is easy to find and frequently used for this purpose. The resistor bridges pin 7 (DO) and 3v3 on the SD card connector.

attachicon.gifP1140403.jpg

 

Despite being unable to reproduce this problem, I think I've decided to add this resistor to any new boards I produce.

 

Robin

Did you try the problematic SD card on a both an engineering sample FPGA and a production one?

Link to comment
Share on other sites

Joey,

 

I tested the problematic SD card on 3 carts with production FGPAs (and no resistors fitted), and an older ES cart (with the resistor fitted). It worked in all cases. I'm not sure which version was used by the original reporter of the problem.

 

Since I've been using production fpgas for the last few carts I've built, I was mostly concerned with seeing if I could reproduce the problem on them.

 

Robin

Link to comment
Share on other sites

Good question, I did wonder the same since some FPGAs offer this, but I couldn't find such an option in Quartus to try it out.

 

Note this is an input pin on the fpga. The problem with the SD card initialisation may be during power up - i.e. this pin would presumably still float during the milliseconds before the fpga has loaded its firmware from internal flash.

Edited by electrotrains
Link to comment
Share on other sites

Finished the menu to Robin's satisfaction, and he recommended I set up a github repository, which I've done:

 

https://github.com/flashjazzcat/sdcartmenu

 

Here's what it looks like:

 

post-21964-0-49784900-1445516289_thumb.jpg

 

Here's a ZIP file containing _boot.rom:

 

_boot.zip

 

If you just copy _boot.rom to your SD card, it replaces the ROM-based menu. We'll see about getting the new menu built into the firmware at some stage, I guess.

  • Like 8
Link to comment
Share on other sites

I've now had two reports (in the last 24 hours) of the built-in menu responding intermittently to keypresses. i.e. sometimes you need to press a key several times to page down or change directory.

 

This doesn't appear to be caused by a faulty cartridge, since it only seems to happen on some machines (one of the users experiencing it was fortunately able to try the cartridge on multiple machines).

 

I had been expecting to hear about problems like this much earlier on, since I've been shipping cartridges out to people for a couple of months now, and there are about 15 out in the wild. So at the moment, I'm not sure how common this problem is. I'm guessing some kind of phi2 issue.

 

But anyone planning to build a run of cartridges may want to hold off, until I (hopefully) get to the bottom of the problem, and update the firmware to fix it (which should presumably be possible).

 

Robin

Edited by electrotrains
Link to comment
Share on other sites

I've now had two reports (in the last 24 hours) of the built-in menu responding intermittently to keypresses. i.e. sometimes you need to press a key several times to page down or change directory.

 

This doesn't appear to be caused by a faulty cartridge, since it only seems to happen on some machines (one of the users experiencing it was fortunately able to try the cartridge on multiple machines).

 

I had been expecting to hear about problems like this much earlier on, since I've been shipping cartridges out to people for a couple of months now, and there are about 15 out in the wild. So at the moment, I'm not sure how common this problem is. I'm guessing some kind of phi2 issue.

 

But anyone planning to build a run of cartridges may want to hold off, until I (hopefully) get to the bottom of the problem, and update the firmware to fix it (which should presumably be possible).

 

Robin

 

I just started using the cartridge in my 1200XL and noticed this myself. It didn't do it at all in my 800XL, or Incognito'd 800....

Link to comment
Share on other sites

Hi all,

 

Just a quick update on the XL compatibility issue (note that XEs and 400/800s seem to be fine):

 

Some people are having problems with the menu ignoring keypresses on XLs.

However, on my 800XL, the menu seems fine, but I have noticed that XEGS cartridge dumps generally crash not long after starting them.

 

After some debugging and testing, I've now got a new version of the firmware that seems to fix these issues on my 800XL, and still works fine on my XE. Hias has also tested on his machines that were having problems with keypresses on the menu.

 

So hopefully (after a bit more testing), I should be able to post the new version of the code and firmware to github within a couple of days.

 

Robin

  • Like 2
Link to comment
Share on other sites

Hi all,

 

I've attached a revised version of the firmware which can be flashed to the cartridge using a USB Blaster & Quartus II. You'll see "v1.1" in the top right corner of the built-in menu when you've successfully programmed the new firmware to the cartridge. This will be the new firmware for any new cartridges I assemble. If you've already got a cartridge but don't have the means to reprogram it yourself, then please send me a PM.

 

The new firmware fixes the problems on stock XLs, and maintains support for the XE/400/800. The VHDL is unchanged, there are just some changes to pin configuration on the FPGA.

 

I'm very grateful to Hias for thoroughly investigating the problem with his oscilloscope and suggesting a fix for the issue.

 

The fixes to the project will also be uploaded to the github repository if you want to look at the diffs.

 

Robin

 

firmware_v1_1.zip

  • Like 3
Link to comment
Share on other sites

Hi all,

 

I've now made 20 cartridges, most of which have been posted off to new homes. I'll maybe make another 3 before xmas, and will then probably do a board revision to incorporate the pull-up on the SD card DO line pictured in post #6.

 

I've now got a bunch of spare PCBs (& a stencil) that I will probably not ever use, so I thought I'd offer them here at cost (or less) in case there are interested members. Please note these are bare PCBs only - not complete carts! BOM and assembly guide are on the github page.

 

post-41252-0-32218600-1446652974_thumb.jpg

 

1 x OSH Park pcb (purple, ENIG, revised PCB version) £5. (left pic)

It is slightly scuffed on the bottom left corner, hence not used for a paid board. Perfectly ok though.

 

5 x Dirty pcbs (green, HASL, original PCB version) £2 each. (middle pic)

 

4 x Dirty pcbs (black, ENIG, revised PCB version) £4 each. (right pic)

Unlike the green ones, there is no soldermask between the fpga or quickswitch pins. This didn't present a problem when using the stencil/oven however. I'm going to use the rest of these boards for the next batch of cartridges I make.

 

1 x Solder paste stencil for the FPGA side of the board. £6.

Spare second copy, identical to the one I've been using to produce boards. Can be used with either the original or revised PCB.

 

P&P (to most places) on these items will probably be about £2.

 

Send me a PM if interested.

 

Robin

Edited by electrotrains
  • Like 1
Link to comment
Share on other sites

Very interested Robin - looks an ideal solution for my current circumstances! I have sent you a PM.

 

Can you get all the bits from Farnell do you know? I am not a very big fan of 'Mouser' at all - they charged me £12 for P&P on a single flash IC once... On the other hand DigiKey accused me of being a terrorist, so... There is a silver lining!

Link to comment
Share on other sites

Very interested Robin - looks an ideal solution for my current circumstances! I have sent you a PM.

 

Can you get all the bits from Farnell do you know? I am not a very big fan of 'Mouser' at all - they charged me £12 for P&P on a single flash IC once... On the other hand DigiKey accused me of being a terrorist, so... There is a silver lining!

 

Replied to your PM, but for the benefit of anyone else in the UK/Europe reading:

 

I haven't found anywhere other than Mouser/Digikey (in the US) that stock the fpga. Unless you want to pay heaps for P&P, that means a minimum order of £50+VAT, which results in free express shipping, and customs fees paid by the supplier.

 

All the other parts are available from farnell or RS.

Link to comment
Share on other sites

 

Replied to your PM, but for the benefit of anyone else in the UK/Europe reading:

 

I haven't found anywhere other than Mouser/Digikey (in the US) that stock the fpga. Unless you want to pay heaps for P&P, that means a minimum order of £50+VAT, which results in free express shipping, and customs fees paid by the supplier.

 

All the other parts are available from farnell or RS.

I have put in an email to Farnell support just in case they are soon stocking the Alterra chip or can suggest a 100% compatible alternative. If so I will post that info here.

Link to comment
Share on other sites

Nope, there is nothing 100% compatible that Farnell stock. They suggest a couple of Xilinx contenders, but a brief look at their data sheet tells me they are not half as capable as this amazing little Alterra chip. One is even a BGA package, which is not something I want to encounter in a dark alley!!!

 

Hopefully however I have added another voice to the 'want' tray and when there is enough of us they will start stocking the thing locally. It really is a fascinating IC with an amazing amount of potential. Even to a complete novice in regards reprogrammable logic like myself it is clear using something similar could simplify many other mod devices currently available. Just the onboard flash is hugely useful all by itself.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...