У вас не правильная последовательность считывания.
Для считывания IDCODE я записываю в ICAP:
20000000 - NOOP
aa995566 - SYNC
20000000 - NOOP
20000000 - NOOP
28018001 - type1 read IDCODE
20000000 - NOOP
20000000 - NOOP
20000000 - NOOP
Чтение 1 clock
30008001 - type1 write cmd
0000000d - desync
20000000 - noop
20000000 - noop
Кроме того:
csib = 0 при работе с icap (чтении и записи)
RDWRB = 1 при чтении 0 - при записи
Данные появляются на 3 clock