Устройство должно обеспечивать считывание данных из Compact Flash. В связи с чем в SOPC включено ядро Compact Flash Interface.
Для считывания 0 -го сектора написала следующее:

int main()
{

alt_avalon_ide_cf_init( void* base )

IOWR_ALTERA_AVALON_CF_IDE_COMMAND(CF_IDE_BASE, 0x20);
IOWR_ALTERA_AVALON_CF_IDE_DEVICE_HEAD(CF_IDE_BASE, 0xE0);
IOWR_ALTERA_AVALON_CF_IDE_CYLINDER_HIGH(CF_IDE_BASE, 0);
IOWR_ALTERA_AVALON_CF_IDE_CYLINDER_LOW(CF_IDE_BASE, 0);
IOWR_ALTERA_AVALON_CF_IDE_SECTOR_NUMBER(CF_IDE_BASE, 0);
IOWR_ALTERA_AVALON_CF_IDE_SECTOR_COUNT(CF_IDE_BASE, 1);

IORD_ALTERA_AVALON_CF_IDE_DATA(CF_IDE_BASE);

return 0;
}

Это правильно?
Важен ли порядок обращения к регистрам порта IDE?