
www.Usenet.com
| <-- __Chronological__ --> | <-- __Thread__ --> |
In the context of a research project, we are currently working on a IDE Hard drive interface targetting the Spartan-II/Virtex architecture.
On our prototype we simply used PIO mode, but we would like to extend our controller so that it can handle UDMA.
The problem is that we just realized that this protocol is somewhat tricky, more specifically we are concerned on how to implement "source synchronous" aspects of the protocol expecially for read operation (see below).
<------------>
5 ns _________________
DMARdy / \
_______________________/ \________
According to the IDE/ATA spec (or at least what I understood from it) the data should be sampled on a rising edge of DMA_Rdy.
To us, the most simple solution would be to use the DMARdy as a clock signal to sample the data in the IOB registers, then re-synchronize to the FPGA system clock with another register. However, we are not sure that this is a safe approach with respect to signal integrity.
Besides, we realized (too late, of course) that the DMARdy pin of the IDE drive is not connected to a GCK pin ...
| <-- __Chronological__ --> | <-- __Thread__ --> |