I'm currently working with an old imaging device whose only output is a floppy drive which only allows transferring 6 images at a time (due to floppy disk size constraint). I had the idea of implementing an FDC (floppy drive controller) on an fpga then connecting the drive cable to the fpga and using the fpga to stream the images through a serial port thus bypassing the disk size constraint. Can anybody comment on the feasibility of this project and perhaps point me to some existing VHDL code? Otherwise, does anyone have any other feasible ideas? Thanks.
Floppy to FPGA?
Started by ●June 16, 2006
Reply by ●June 16, 20062006-06-16
fslearner <junkaccount616@gmail.com> wrote:>I'm currently working with an old imaging device whose only output is a >floppy drive which only allows transferring 6 images at a time (due to >floppy disk size constraint). I had the idea of implementing an FDC >(floppy drive controller) on an fpga then connecting the drive cable to >the fpga and using the fpga to stream the images through a serial port >thus bypassing the disk size constraint. Can anybody comment on the >feasibility of this project and perhaps point me to some existing VHDL >code? Otherwise, does anyone have any other feasible ideas?Implementing an fdc controller in fpga should be a piece of cake. The signal is 1 Mbps at tops asfaik. It's proberbly MFM encoded signal, otherwise it's likely GCR or FM. 1.44M/1.2M discs are 500 kbps. 720k/360k = 250 kbps. The signal consists of a pulse for every magnetic flux asfair. If you use an oscillator to count the number of clocks between these pulses. You can derive data from there. On a higher level you have to pay attention so that your host only read disc data when it has been completed, and fat is consistent. Should you erase or in other way alter "floppy" your scanner device better be aware of this. Through the signal 'discchange' wire or simply instruct it on console. Your fpga can also imitate two floppys btw, by useing the select signals. A quick approach is to add one those usb-fpga kits. And tie floppy i/o to it. Don't forgett that floppy idc36 is 5V.. ;)
Reply by ●June 16, 20062006-06-16
fslearner schrieb:> I'm currently working with an old imaging device whose only output is a > floppy drive which only allows transferring 6 images at a time (due to > floppy disk size constraint). I had the idea of implementing an FDC > (floppy drive controller) on an fpga then connecting the drive cable to > the fpga and using the fpga to stream the images through a serial port > thus bypassing the disk size constraint. Can anybody comment on the > feasibility of this project and perhaps point me to some existing VHDL > code? Otherwise, does anyone have any other feasible ideas? > > Thanks.should be doable. there is one guy who has floppy disk host interface done by 100% software with some small microcontroller. So with FPGA you defenetly can do it. but I bet you need todo it all from scratch. Antti
Reply by ●June 16, 20062006-06-16
"Antti" <Antti.Lukats@xilant.com> wrote:>fslearner schrieb: > >> I'm currently working with an old imaging device whose only output is a >> floppy drive which only allows transferring 6 images at a time (due to >> floppy disk size constraint). I had the idea of implementing an FDC >> (floppy drive controller) on an fpga then connecting the drive cable to >> the fpga and using the fpga to stream the images through a serial port >> thus bypassing the disk size constraint. Can anybody comment on the >> feasibility of this project and perhaps point me to some existing VHDL >> code? Otherwise, does anyone have any other feasible ideas? >> >> Thanks. > >should be doable. there is one guy who has floppy disk host interface >done by 100% software with some small microcontroller. So with FPGA >you defenetly can do it. but I bet you need todo it all from scratch. > >AnttiDoable, no doubt, but you need more information than just the specs of the interface between floppy and controller. With an FPGA you can recover the raw data sent to the floppy as well as the head positioning and motor on/off commands. You will need details about the file system structure in the floppy to allow you to interpret these data and commands to recover the files you want to send out. As an aside, I worked for a company that made a system that simulated a magnetic tape drive, for similar purposes. Instead of filling a tape reel and then remove it and physically transport it to a different location to process the data, "fake" the drive, collect the data from the tape interface and stream it over the Internet for processing.
Reply by ●June 16, 20062006-06-16
fslearner wrote:> I'm currently working with an old imaging device whose only output is a > floppy drive which only allows transferring 6 images at a time (due to > floppy disk size constraint). I had the idea of implementing an FDC > (floppy drive controller) on an fpga then connecting the drive cable to > the fpga and using the fpga to stream the images through a serial port > thus bypassing the disk size constraint. Can anybody comment on the > feasibility of this project and perhaps point me to some existing VHDL > code? Otherwise, does anyone have any other feasible ideas? > > Thanks.Steve Wozniak designed the Apple II floppy disk interface, many years ago, using a few TTL chips, IIRC. Leon
Reply by ●June 16, 20062006-06-16
fslearner wrote:> I'm currently working with an old imaging device whose only output is a > floppy drive which only allows transferring 6 images at a time (due to > floppy disk size constraint). I had the idea of implementing an FDC > (floppy drive controller) on an fpga then connecting the drive cable to > the fpga and using the fpga to stream the images through a serial port > thus bypassing the disk size constraint. Can anybody comment on the > feasibility of this project and perhaps point me to some existing VHDL > code? Otherwise, does anyone have any other feasible ideas? >My understanding is that you want to create a replacement device for the floppy drive so that you can stop having to shuffle data back and forth. This would mean that the FPGA device would have to fully emulate drive and the disk itself and to be completely transparent to the test equipment that you are using. That's not a trivial project. Why not just use something like the Delkin Flashpath SmartMedia Floppy Adapter http://www.amazon.com/gp/product/B00000JI3H/002-8914784-7568866?v=glance&n=172282 it looks like you might need to add a driver to the system, but your test equipment is likely running Windows under the hood anyway so this might be possible. If your test equipment has a spare IDE location then you could also just use a straight IDE to CompactFlash like this one. http://www.acscontrol.com/Index_ACS.asp?Page=/Pages/Products/CompactFlash/IDE_To_CF_Adapter.htm Ed McGettigan -- Xilinx Inc.
Reply by ●June 16, 20062006-06-16
"Leon" <leon.heller@bulldoghome.com> writes:> Steve Wozniak designed the Apple II floppy disk interface, many years > ago, using a few TTL chips, IIRC.Five TTL chips, one 555 timer, and a 256x8 PROM for a state machine. There is a second 256*8 PROM to store boot code, but that is logically independent of the disk controller functionality. However, the reason this worked is that it didn't have to be compatible with anything else in the world. The trick to making a good FDC is having a robust data separator. Simple techniques don't work well with marginal cases. Even a single DPLL doesn't solve the problem, because you need to deal with pulse shifting from the magnetic media independently of tracking frequency variations due to motor speed. A second-order DPLL works pretty well though. There was a lot of work done in this area in the 1980s. WD and SMC had US patents (which should have expired by now) on some clever second-order DPLL designs.
Reply by ●June 17, 20062006-06-17
Odds are, this equipment is way too old to have a 3.5" floppy -or- an IDE port. Most likely, it's a 5.25" inch drive, mayby FAT12 360K, mayby not. It's still very doable. I've done something almost the same to the MFM interface on an old hard disk drive. Snag the -entire- data stream, sector/track headers and all into memory. A 360K floppy will fit into 1/2 meg of memory. Use a micro to sift through the image to find the data fields of the sectors. Then find the file system in those. If the micro has a usb port, you can emulate a flash key. Or write out to a SD/MMC card. Or whatever. It was a fun project; remember that the device will be reading as well as writing, if there's a file system on the "disk".
Reply by ●June 17, 20062006-06-17
I remember seeing someone already did it, but with a microcontroller rather than an FPGA. Google for "semi-virtual disk". It is using an Atmel AVR uC to simulate a floppy. Works for both FM and MFM formats. -Alex.
Reply by ●June 17, 20062006-06-17
Alex Freed <alexf@mirrow.com> wrote:>I remember seeing someone already did it, but with a microcontroller >rather than an FPGA. Google for "semi-virtual disk". It is using an >Atmel AVR uC to simulate a floppy. Works for both FM and MFM formats.http://www.thesvd.com/ Seems to be a PIC 16C65b @ 20MHz + 256kByte sram in essence. Schematic+PCB: http://www.thesvd.com/SVD/Downloads/SVD-Instructions.pdf





