Программируемая логика - это не так уж и сложно. Разберемся вместе.
Ответить

Протокол JTAG, TAP-контроллер и GETIDCODE

Ср авг 24, 2016 10:07:15

Всем привет!! :beer:

Обращаюсь к тем, кто хоть как то сталкивался с 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 после загрузки инструкта
Вложения
1.png
Диаграмма TAP контроллера с иструкцией
(14.9 KiB) Скачиваний: 605
Ответить