Non-Volatile Data Storage

The first step is to look at the interfaces for storage devices.

PCMCIA cards are credit-card sized but expensive, since they are mainly used with laptops.
Roughly speaking it puts the all the ISA bus signals plus a few extra onto the card's 68 pins.

ATA (IDE) devices are commonly used by hard drives. They are I/O mapped, and thus require much fewer address lines than PCMCIA. Only 40-pins are used. Originally, all drives were (and mostly still are) 5.25" or 3.25" and thus the connector pitch of 0.1" was no problem. This is convenient for hobbyists. In the 2.5" drives developed for laptops, the pin pitch is 2mm and four extra pins are added to dispense with a separate power connector. The data bus is 16-bits wide.

Compact Flash (CF) was designed to be like PCMCIA but smaller and not restricted to PCs. Consumer goods like digital cameras, MP3 players and PDAs may contain 8-bit micros, so CF can be accessed either 8 or 16 bits at a time. CF also adds the flexibility of being accessed as a memory-mapped, I/O mapped or IDE device. There are 50 pins, on a 0.05" pitch connector.

You can buy a 32 MByte CF card for about £20/$30. BurchEd have recently produced a CF adapter board, and this comes with a 32 MByte card.

Memory card Interface

Consumer goods have intense pressure to be smaller and cheaper, so other formats were developed. These use contact pads instead of pins, and fewer of them. They are only for memory chips and so could be made much smaller. However there are so many formats to choose from:

Smartmedia has been used in cameras. They are small and thin, though I feel they are big and thin enough to be broken if accidentally sat on. Despite the name, it is not 'smart' as it does not have a memory controller in it. SmartMedia is at the end of the line - there is no roadmap for sizes > 128MB.

xD is the replacement for SmartMedia. It has 18 pins. Even though it's name and physical format more closely resemble SD, the main support for xD is from digital camera manufacturers who used to support SmartMedia. Also, xD is like SmartMedia in that neither of them integrate the flash controller  (ECC, bad block management, wear leveling, etc) while MMC, SD and Compact Flash all take care of that. xD is actually inferior technology to even MMC, much less SD (which is the most advanced format currently available).

Sony Memory Stick is proprietary to Sony and hence they can dictate the price. Sony are known for not being cheap. So I prefer to avoid using it altogether.

Multimedia Card (MMC) is commonly used in PDAs. Presumably this has security features to protect sensitive data? Very thin and barely larger than a thumbnail. At this point I think they are so small they become fiddly to handle and easy to loose! Has 7 pins. You can register at Sandisk and get specs for MMC. http://www.sandisk.com/tech/lit.asp

Secure Digital (SD) is essentially an MMC with 9 pins, seven of which are the same as the seven pins MultiMediaCards. So an MMC can be read in an SD slot, but not vice versa. It also has digital security features for the Secure Digital Music Initiative, but this was cracked soon after launch so no longer relevant. See http://www.sycard.com/sd300.html for some techy details.

Cost considerations

I went browsing around town to check out the memory card market. I found PDAs largely using "Secure Digital" (SD) format cards. Surprisingly for latest formats, I found I could buy a 32 MByte SD card for about £20.

Given the variety of formats available, I'm not in a hurry to implement them. Though it does seem that the less PC and more consumer-goods oriented it is, the more fickle the formats. So I feel the Compact Flash might be a reasonable option.

There seems to be more hobbyist information for CF. There is a Circuit Cellar project interfacing the PIC to a CF card.

Final choice

CF seems to be the most flexible format for hobby projects. If you design a CF interface, you pretty much have an IDE interface as a subset. You can also read a CF card in a laptop's PCMCIA slot, through a cheap passive adapter. I have not heard of desktop or laptop PCs that accept other types of card - such cards are accessed through active USB devices.

A final compelling argument for CF is that BurchEd have recently made a CF adapter available, and they don't have adapters for any other cards. So I have ordered one.

Hard Disk Interface

The memory card interface should provide plenty of storage space for 6502-sized software. Even a small 32MByte card is bigger than the first 5.25" hard disk I bought (20MByte). It is robust and silent.

However, other target systems may have more software and thus need more storage than a CF card. IDE is the de facto standard. IDE uses 16-bit data transfer, so this is an obstacle for 8-bit processors.
BurchEd also make an IDE adaptor, and I have ordered one.

Relevant projects on the web

I had a look at existing works to avoid duplication. There are several 6502-IDE projects on the web, notably for:

Lee Davidson's homebrew computer uses GAL16V8 and TTL. Enhanced BASIC demo, no OS yet.

Chris Ward's homebrew computer uses TTL only.

The projects below are more advanced because their host computers already have disk operating systems for adapting to the ATA IDE drives.

Atari 800 cartridge port IDE uses 74LS245, 74LS32, 74LS04.

Apple II slot IDE by Stephane Guillard uses TTL and a GAL
Apple II slot IDE and CF uses CPLD, two LS373, two LS245 and an EPROM

The item above is the most interesting because it has the most developed software, and has a CF interface too.

A common feature is the use of paired 8-bit buffers and latched to join the 8 and 16-bit data buses. These could be integrated into the FPGA, and it appears the Burched IDE adaptor expects this since it hase no active logic. However I have noticed that some IDE interface board for the PC have TTL buffers too, even though the logic could have been put in the ASIC chip. I presume this is because the TTL buffers are better suited to driving the IDE cables.

Multi Interface

Having looked at the specs for CF, PCMCIA PC Card, and IDE, there seems to be quite a lot in common. They generally contain a subset of the PC's address and data bus, some decoded select lines, and some DMA lines. It should be possible to make an adapter able to connect to multiple interfaces. Adding PCMCIA to the Apple-based project above would open access to the more exotic cards used by laptops (modems, ethernet, bluetooth?!).

 

The BurchEd IDE adapter has no active buffers to drive the signals, so it may be wise to keep IDE cabling as short as possible. There are plenty of resistors to damp signal reflections, and to pull to appropriate signal levels.

The BurchEd CF adapter has no buffers or damping resistors and few pull-ups, which is perfectly okay because signals only have to travel to the CF connector and not a long ribbon cable.

The BurchEd IDE and CF adapters are not 'stackable' to share common signals.