Here is a summary of all hardware parts, modules, and even complete working systems I have designed and developed for the DiskFreezerX project.
1. Prototype (Late 2010…Feb 2011)
My first hardware setup was a prototype that allowed me to check out the principal features involved in disk data sampling. The goal is to create a small hardware platform that can perform a disk freeze operation standalone by the press of a single button. The storage media used here is a simple SD card.
Here is a snapshot of the completely set up and wired prototype:
The ingredients of this design are:
- A OLIMEX SAM7-P256 REV F. evaluation board with a SAM7 ARM processor
- This board already provides two buttons for user input, two LEDs and access to almost all 32 I/O pins of the SAM7 and a SD card slot
- A floppy adapter module: This one adapts the floppy I/O levels to 3.3v and uses bus drivers to enhance signal quality
- A 256 KiB SPI memory module: This memory is used for track storage. Capturing track data is done directly into the RAM and later on transferred to SD card. This is necessary as SD cards do not guarantee a steady transfer rate and during track capture this is a strict requirement. I opted for 8 x 32 KiB SPI RAM 23A256 from Microchip as this only requires a 3-to-8 chip select multiplexer and the 4 SPI lines…
I wired the full prototype quite tradionally with all flying wires – it’s a mess but it works:
Sitting on the eval board in the middle is a dispatcher board that solely reroutes the 32 I/O signals from the SAM7 to the two boards: floppy connector and ram board.
On the following picture I removed the boards so you can have a look at the details and you can see the 8 SPI RAMs surrounded by the 3-to-8 ChipSelect decoder sitting in the middle on the RAMboard:
Now the other sides: On the floppy board you can see the bus drivers for the floppy I/O signals:
All in all the prototype proved that the initial idea of one-button-sampling works really well. With the help of the track ram buffer capturing is done with all time constraints met and the final IO operation to store/load the track data can take the time it needs.
With the prototype working its time to get take the next step: a first revision board design!
2. Board Design Rev A (March 2011 … June 2011)
The goal in this stage is to create the dfx-sampler as a modular board design with PCBs. I liked the modular approach as it allows me to replace or exchange parts of the system to tryout new ideas/approaches without creating everything from scratch. Furthermore, I wanted to create all the PCBs myself for the first time with the direct toner method and then bricking a single board will not break all parts of the system…
For the CPU board I opted for prefactured SAM 7 module from OLIMEX: SAM7-H256. This module provides all I/O lines of the SAM7 on regular size pin header… Ideally for homebrew stuff! Aditionally it has a ARM JTAG connector that allows me to download the software for testing.
2.1 dfx-main: The mainboard
The first board I designed is called the dfx-main mainboard. This board gets sockets for the CPU and then routes the I/O lines to connectors for the other boards: The floppy connector, the memory board and the I/O board with the SD card. Additionally, the mainboard has a connector for the debug serial connector. This port provides 5V serial TX/TX levels to access the serial console of the firmware. The mainboard also has a connector for external power supply (+5V, +3.3V) and for the two buttons and two LEDs.
- CPU Board connector
- dfx-mem connector
- dfx-floppy connector
- dfx-io connector
- LED and button connector
- Power connector, Jumpers for power selection
Here is the schematic and the board design (All schematic and board designs are done in Eagle and available in my project source code repository: sample hw files).
Here is the final PCB: in the middle you can see the two pin headers for the CPU module. On the left, center, and right there are the connectors for the dfx-mem, dfx-io, and dfx-floppy board. On the bottom left the 3 pin header is serial and on top left the two LEDs and buttons can be seen:
2.2 dfx-floppy: The floppy disk adapter board
The next board connects to the floppy disk drive. This board mainly contains the line drivers for the I/O lines to/from the floppy. The design was heavily inspired by the Kryflox project. So big kudos here for designing their fine piece of hardware and finally releasing their HW schematics!
This was my first board I designed in Eagle and therefore I did some beginner’s mistakes… In the end I had a PCB, but none of the ground layers were connected. I had to fix this by adding wires between all GND pads… Phew, no redone of the board required – and lesson learned 😉 So be warned here, that the actual board presented here may require fixing…
Here you can see all boards and the dfx-floppy is the one on the bottom right:
With this board attached to dfx-main and the CPU board in place, you can already hook up a floppy drive, attach its power and do some first tests with the firmware. You can already play around with all the track commands, seek, motor on/off and read in data to check its size and the quality of capturing. See the software page for more details.
2.3 dfx-mem: The 256 KiB Memory Board
The next board provides the track memory for capturing. The board holds the 8 x 32 KiB SPI RAM Chips 23A256 by Microchip. I added a 74HCT138 3-to-8 decoder chip for the chip select decoding. All in all you need the 6 following control lines from you MCU to access the 256 KiB RAM:
- +2: A0..A2Â 3 lines to select the chips 0 … 7
- +1: CS the global chip select enable the currently adressed chip (by A0..A2)
- +3: SPI lines: MISO, MOSI, SCK
You can see the dfx-mem board in the last picture on the bottom left.
2.4 dfx-io: Add an SD-Card Slot and much more…
The final board in the current setup is the dfx-io board. It adds an SD Card connector and addional ports for future extension: First there is a port for an SPI RealTime Clock Module SD3242 (SparkFun SF10160). This helps to get the current time and write files with correct time stamp to the SD Card. Furthermore, a WizNet port allows me to play around with those famous W5100 Ethernet modules… Finally, an extra SPI port is here for another SPI capable device… Think of display 😉
The dfx-io board is on the last picture right in the middle.
Here are all boards again, now from the lower side:
2.5 Putting it all together: The dfx-sampler sandwich
Now with all boards in place, its time to build the whole system:
After hours of manufacturing those PCBs, debugging short circuits and assembling lots of tiny SMD parts, this is the result: My first revision of the SAM7 based dfx-sampler board for the DiskFreezerX.
I hope you enjoyed the little hardware walkthrough and stay tuned for further extensions!