Forum Discussion
Altera_Forum
Honored Contributor
20 years agoThe following is an email I sent to the poster of this question to address the problem -- posting it here for the benefit of others.
--- Hello, Thanks for writing. The reason for the low data transfer rates is not nios clock speed (unless you were running very slowly), but because the controller is very simple, and is designed to work with all compact flash cards (even the slowest cards). In "True IDE" mode, which our controller uses, compact flash cards operate in several "PIO Modes". "PIO Mode 0" is the slowest, and the read/write/wait state timing parameters for our controller are adjusted to work with mode 0 (you can see these in the class.ptf file for the compact flash component). The PIO mode that a particular CF card supports can be read at runtime in certain registers on the card itself. A more advanced controller might read the status of the CF card when a card is inserted, and then adjust its read/write timing accordingly. Our controller is designed for simplicity, and does not support this feature. You can read more about the different PIO modes and associated speeds in the compact flash specification (available at www.compactflash.org) -- this specification was used when we created the timing parameters for our compact flash interface. One suggestion would be that if you are SURE that a certain PIO mode (or faster) will be used (for example, you know that all CF cards that are used in your design will be at least PIO mode 2), you could look at the timing supplied in the compact flash specification document, and then modify the timing values in our controller's class.ptf file. After this, remove the compact flash interface from your design in SOPC Builder, add it back again, and re-generate the system. The Avalon bus fabric generated will now operate more quickly. Note, however, that this could be dangerous if anyone accidentally uses a slower (older) compact flash card... the timing would not be met, and proper operation would not be guaranteed. Regards, Jesse