Небольшая заметка об opensource-программаторе на распространённой FT2232H, который можно использовать для прошивки и отладки ПЛИС производства как Intel, так и Xilinx.

Примечание: да-да, плата с глупой ошибкой в направлении согласователей уровней, пришлось исправлять проволочками и забить на красоту. :/ В репозитории уже исправленный вариант.
Схемотехника
В целом, схема программатора кардинально не отличается от оригинальной Digilent JTAG-HS2, внесены небольшие изменения:
- добавлена защита USB-линий на USBLC6-2P6;
- возможность запаять USB-A или USB Type C разъём;
- применен другой тип EEPROM — 93LC56BT;
- применены другие согласователи уровней на всех линиях — SN74LVC2T45DCUR;
добавлена ошибка в подключении согласователей уровней(fixed);- применен малогабаритный LDO — TPS73701DRBR;
- добавлена возможность управления линией сброса (но, правда, для этого надо будет самостоятельно писать скрипт для управления ей, иначе эта возможность просто не используется);
- выведен UART второго (B) канала для использования в качестве COM порта.
Итоговая схема (кликабельно):
В PDF лежит на гите.
Разводка
Стилистически всё аналогично проекту J-Link OpenSource Hardware v9.x, но в плане размещения компонентов и разводки всё получилось проще:



Если не запаивать FFC-разъёмы, то монтаж вообще полностью односторонний получается.
3D-рендер:


Собранная плата
Особо тут ничего интересного, разве что сразу правим косяки:

И в сравнении с J-Link:



Прошивка
Ничего примечательного, всё основные пункты уже описаны на форуме в теме Digilent JTAG-HS2 , поэтому вкратце опишу последовательность:
Скачиваем FT_Prog, открываем темплейт из папки Flash в репозитории и прошиваем им программатор (в котором, помимо PID, VID и описания устройства, порт A настроен на 245 FIFO для прямого доступа и порт B настроен как UART):

Далее запускаем FTDI_User_Area_Writer.exe из папки Flash для прошивки User Area, без которой Vivado не признаёт программатор:

На этом этапе можно отключить и заново подключить программатор, он должен определиться корректно, и теперь можно пробовать работать с ПЛИС через него.
Пробуем на Xilinx Artix-7!
Подключаем к плате с Xilinx ПЛИСой, в моём случае это простая отладка на Artix-7:

Запускаем Vivado, переходим в Hardware Manager и пробуем обновить доступные подключения:

Программатор обнаружился, и он, в свою очередь, обнаружил подключенную к нему ПЛИС. Отлично! Можно поиграться с XADC или заливать beatstream:

Примечание: аналогично можно работать и с ПЛИС от Intel, с помощью библиотеки mbftdi, которая эмулирует работу USB ByteBlaster через FT2232H, но работает-таки медленнее даже клонов, а попытка залить прошивку NIOS у меня вообще завершалась неудачей, причину которой я так и не нашёл.
Ссылки
- FT2232H JTAG UART — репозиторий проекта;
- FT_Prog — утилита для конфигурации EEPROM по USB;
- mbftdi — плагин для Intel Quartus Prime, позволяющий использовать FT2232H в качестве программатора;
- Digilent JTAG-HS2 — тема на Electronix, посвящённая превращению платы с FT2232H в Digilent JTAG-HS2.