Last month, I tried to communicate with an IDE hard drive by an AVR MCU. But it occupies too many PINs. Then I designed another circuit that allows an Arduino to operate hard drives by using the SPI interface.
Apart from the normal SPI pin, only two more pins are needed for the operation. One for chip selection, one for reading or writing strobe.
IDE uses 16bit data bus. so I use one 16bit io expander for the data bus. Another 16bit io expander for the controlling and reading status.
Also I2C io expander can be used to support I2C interface.
I can provide more information if someone is interested.