Всем привет!!
Обращаюсь к тем, кто хоть как то сталкивался с JTAG. Вопрос такого плана: пишу софт, который запрашивает у FPGA/CPLD IDCODE. Речь идет о Lattice MachXO2-LCMXO2-256HC.
Родным FTDI программатором и софтом (Lattice Diamond 3.5) я без проблем считываю IDCODE. Но как только я пытаюсь отправить через свой "говнокод" и программатор (на базе com - порта (с сайта Марсоход) или же FTDI программатор), то я не могу считать корректный IDCODE (TDO)
Имеется инструкция:
Спойлер
Код:
HDR 0;
HIR 0;
TDR 0;
TIR 0;
ENDDR DRPAUSE;
ENDIR IRPAUSE;
FREQUENCY 1.00e+006 HZ;
STATE IDLE;
! Check the IDCODE
! Shift in IDCODE_PUB(0xE0) instruction
SIR 8 TDI (E0);
SDR 32 TDI (00000000) TDO (012B8043) MASK (FFFFFFFF);
В соответствии есть диаграмма TAP контроллера:
Вложение:
Вложение 1.png больше недоступно.
Под нее я написал "дрыгалку" TDI, TDO, TMS, TCK: диаграмму снял логическим анализатором:
Вложение:
Комментарий к файлу: То что получилось в итоге
2.png [54.53 KiB]
Скачиваний: 662
Ожидал ответа от CPLD на линии TDO 012B8043 - 0000 0001 0010 1011 1000 0000 0100 0011
А ответ по факту - 0000 0000 0011 0000 0000 0000 0000 0000
И чего я только не перепробовал, и reset убирал. И паузы IDLE длинные делал. И все равно один и тот же ответ.
Может кто скажет, что не так?
PS: Я почему то не могу 3 картинки нормально вставить, см. 3 вложения
PPS: Я снял дамп опроса IDCODE с родным софтом и программатором,
Вложение:
Комментарий к файлу: Дамп родного программатора
3.png [88.41 KiB]
Скачиваний: 406
но там все не похоже на TAP команды, очевидно программирование идет по принципу загрузки иснтрукции и потом ее выполнение, обратите внимание на "длинное" тактирование TCK после загрузки инструкта