• Please review our updated Terms and Rules here

RetroChallenge Jan 2016: Not Quite According To Plan, But Progress Anyway.


Veteran Member
Dec 28, 2011
Hey, it's been two weeks w/o a post! Need to make sure I don't do that again.

Real life's been busy; lately I've been reading Phase-Locked Loop literature (This book by Floyd Gardner is especially informative if you've had control theory), and figuring out how to convert the analog PLL on my IBM PC Floppy Disk Controller card to the digital domain (see last page of PDF). I've spent part of today hooking up my 5.25" floppy drive today to an FPGA logic analyzer that I synthesized... only to have to take it apart in the past 30 minutes.

The FPGA dev board I'm using has level shifters to clamp down to Low-Voltage TTL (3.3V), which will still be accepted as valid logic-high by any TTL-compatible circuit. Kinda like Postel's Law for digital logic. What I didn't take into account was the drive strength required to pull down floppy control signals low. When I initially had my circuit set up, FPGA outputting high would give me 5.15 V, and an output low was 2.75 V. This is above the threshold for a TTL logic high (2.4 V), so the FPGA was driving the floppy high no matter the FPGA pin's current logic state! Changing the drive current to the max of 24mA only helped a bit- 2.69 V- so the FPGA alone just couldn't do the job :(.

I'll get to this in another post, but the entire floppy interface is pretty much active low. Multiple drives can share the same cable and there exists a termination resistor on the end of the line, presumably to prevent transmission-line effects from corrupting signals sent down the cable. In addition, I suspect (and do not have time to check) that the terminating resistor is also a pullup, as input pins on the floppy read 5V even when nothing's connected. On old floppy drives, this termination resistor is 150 Ohms; a chip needs to be able to send possibly up to 34mA of current down the line in order to drive the line low; modern chips, even 74ACT series (which I assumed were the overall best type of 7400-series chips out there) cannot drive this much current. If more current is required, the low voltage will be pulled back up to deliver the required current (regardless of whether the termination resistor is a pullup or not).

So right now, I'm looking for TTL parts capable of sourcing the required current; I was recommended the 7438, 7406, or 7407. I've currently been having luck with a 74F125 (F-series I believe a modern high-power TTL class); I can at least blink the drive LED now :p. Incidentally, the IBM PC floppy controller uses 7438s, plus parts of an MC3487 differential line driver to deliver the required current.

Hopefully, I'll be back on track by tomorrow night so I can grab some actual floppy waveforms :).

I would like to thank Eric Smith aka brouhaha for taking some time to discuss this with me. You should give him a follow if you like vintage stuff :D.