Администрирование Железо Программатор FPGA Lattice на FT2232H Fri, March 29 2024  

Поделиться

Нашли опечатку?

Пожалуйста, сообщите об этом - просто выделите ошибочное слово или фразу и нажмите Shift Enter.

Программатор FPGA Lattice на FT2232H Печать
Добавил(а) Сергей Беляков   

[Существующие загрузочные кабели Lattice]

В настоящее время фирма Lattice Semiconductor для конфигурирования своих устройств предлагает два вида загрузочных кабелей [1]:

Наименование PC интерфейс Цена в Digikey Цена в России
HW-USBN-2A USB 2.0 162$ [2] 9000 .. 22000р.
HW-DLN-3C LPT 71$ [3] 3500 .. 7500р.

При этом LPT кабель неудобен, загрузка по нему медленная, он не поддерживается последними версиями MICO32 System, и разъём к нему обычно отсутствует на новых компьютерах. В силу малой распространённости китайцы не особо спешат клонировать кабели для FPGA Lattice.

Основу схемы HW-USBN-2A [2] составляют чип FT2232H, отвечающий за USB соединение, и трансляторы уровней, которые обеспечивают работу при уровнях напряжения питания JTAG в диапазоне 1.2V .. 5V. Простота схемы и отсутствие специальной защиты позволяют клонировать HW-USBN-2A на основе готовых плат типа FT2232H Board [4] или FT2232H Mini Module, просто присоединив JTAG разъём к соответствующим ножкам FT2232H.

FT2232H-IMG_1455.JPG FT2232H-Mini-Module

Такое решение имеет следующие преимущества:

  • Очень низкая стоимость и легкодоступность.
  • Возможность полноценно работать тем же устройством и с FPGA Xilinx.
  • Меньшее время задержки сигнала за счёт отсутствия трансляторов уровня в загрузочном кабеле, что позволяет достичь большей скорости передачи данных (до 30 мегабит), если использовать кабель в качестве отладочного интерфейса.

Есть и недостатки:

  • Напряжение питания JTAG может быть только 3.3V.
  • Невозможно штатными средствами переводить выходы загрузочного кабеля в состояние высокого импеданса (отключать, проще говоря).

[Изготовление самодельного загрузочного кабеля]

В инструкции к загрузочным кабелям Lattice [5] описываются несколько вариантов цоколевки JTAG. Я использую стандартную цоколевку с разъёмом 5x2. Этот разъём следует присоединить к FT2232H Board следующим образом:

Таблица 1. Цоколевка JTAG и подключение к плате FT2232H Board.
JTAG FT2232H Board
Сигнал JTAG Контакт коннектора Контакт на плате
TCK 1 ADBUS0
GND 2 GND
TMS 3 ADBUS3
GND 4 GND
TDI 5 ADBUS1
VCC 6 не подключать
TDO 7 ADBUS2
GND 8 GND
TRST 9 ADBUS7
ISPEN 10 ADBUS4

Данная схема обладает следующим недостатком: напряжение 3.3 вольта на выходных ножках FT2232H будет появляться при работающем USB сразу после запуска программатора, независимо от наличия питания на программируемой плате. Для некоторых микросхем такой режим недопустим и может привести к постоянному току короткого замыкания через выходной драйвер FT2232H и защитный диод на входе, и даже к тиристорному защёлкиванию. Хотя я и не знаком с FPGA или логическими буферами, таящими подобную опасность(а вот SPI ADC, например, такие встречаются), но всё же предпочёл развести питание так, чтобы исключить эту ситуацию. Потребовалось перерезать две дорожки на FT2232H Board и подавать 3.3V не с USB, а с контакта VCC на разъёме JTAG. На схеме красным показана модификация цепей питания платы FT2232H Board. На фото красным показано, где перерезаны дорожки. Помимо питания, отрезаны от ACBUS5-ACBUS6 боковые выводы разъёма, чтобы не коротили. В питании выводы IC3.VOUT и JP3.2 отрезаны от шины 3.3V, и объединены в VCCINT, вместе с C2. JTAG контакт VCC подключается к отрезанной шине 3.3V.

FT2232H Lattice_modif FT2232H Lattice_cutting_top FT2232H Lattice_cutting_bottom

Чтобы получить возможность легко подключать к FT2232H Board кабели с разной цоколевкой, я установил на боковом поле с отверстиями угловой разъём 2x5, который проводками подпаял к соответствующим боковым выводам на плате. В этот разъём вставляется плоский десятижильный кабель с двумя одинаковыми разъёмами 2x5 на концах, с другой стороны кабель вставляется в разъём на программируемой плате, соответствующий стандартной цоколевке, описанной выше в таблице 1.

FT2232H-Lattice-IMG 1354 FT2232H-Lattice-IMG 1348 FT2232H-Lattice-IMG 1347 FT2232H-Lattice-IMG 1353

UPD1405117. Для согласования уровней сигналов можно также применить защитные токоограничивающие резисторы. Последовательно в каждый сигнал JTAG ставятся резисторы 50..100 ом. Тогда напряжение питания программируемой схемы может быть любым, а напряжение портов FT2232H можно сделать 3.3V. Тогда переделывать схему питания на плате FT2232H Board не потребуется, и не придется резать дорожки.

Тут ещё интереснее получилось: я вначале порезал питание, а потом внимательно просмотрел даташиты и выяснилось, что питание можно и не резать, а просто не подключать JTAG VCC. Для всех микросхем, которые мы используем через JTAG, 3.3 вольта по входу - это допустимое номинальное напряжение. Даже резисторы не нужны. Сейчас я бы не стал переделывать питание. Проблема в том, что на фотках у меня вариант с порезанным:). Хотя с порезанным всё-таки безопаснее.

И ещё, что касается резисторов, в отличие от некоторых, FT2232 - это цивилизованная микросхема и имеет программную регулировку тока выходных драйверов, по умолчанию ток настроен на 4 мА, сопротивление выходов при этом порядка 50 Ом, что обеспечивает хорошую Signal Integrity и без резисторов.

[Установка программного обеспечения]

Установка драйвера и использование самодельного загрузочного кабеля ничем не отличается от родного фирменного. Драйвер установится вместе с IDE Lattice Diamond [5], либо с Lattice Diamond Programmer [7], если при установке не снимать установленную по умолчанию галочку "Programmer Drivers".

FT2232H-Lattice-driver-install

После подключения устройства к USB драйверы инициализируются автоматически. При помощи утилиты FT_Prog можно изменить название устройства, которое будет высвечиваться в программаторе, и серийный номер, однако всё может работать и с чистой конфигурацией по-умолчанию.

[Пример программирования FPGA]

Здесь показан пример загрузки прошивки FPGA LFE2M50E с помощью Lattice Standalone Programmer через кабель на FT2232 Board.

FT2232H-Lattice-IMG 1356

После запуска Diamond Programmer появится диалоговое окно с предложением выбрать или продетектировать загрузочный кабель:

FT2232H-Lattice-diamond-start0

После нажатия на кнопку "Detect Cable", выберите первое устройство из выпадающего списка:

FT2232H-Lattice-diamond-start1

Далее нажмите "OK".

FT2232H-Lattice-diamond-start2

После пары секунд сканирования откроется главное окно со списком устройств (оно у меня одно) в цепочке JTAG. Теперь теперь нужно уточнить тип программируемого устройства FPGA (выделено желтым) на LFE2M50E, и выбрать операцию Fast Program и файл с прошивкой.

FT2232H-Lattice-diamond-chain-scanned

Окно выбора операции, режима программирования и файла прошивки:

FT2232H-Lattice-device-properties

Файл прошивки и операция выбраны:

FT2232H-Lattice-diamond-file-selected

Нажмите на кнопку "Program", после этого начнется заливка прошивки в конфигурационное ОЗУ FPGA.

Примечание: в FPGA (за исключением некоторых моделей Actel) конфигурация всегда хранилась в ОЗУ, и должна загружаться из ПЗУ после сброса. ПЗУ иногда бывает в том же кристалле, но обычно внешнее. Также можно загрузить ОЗУ прямо через JTAG.

Примерно через 4 секунды операция завершится:

FT2232H-Lattice-after-programming

[Debug Mode]

Отладочный режим активируется нажатием на кнопку "Debug mode..." (справа под панелью IO settings). В этом режиме можно вручную управлять уровнями всех сигналов JTAG, что полезно для проверки правильности сборки. Для управления уровнями необходимо галочками(в колонках Hold High или Hold Low) выставить уровни всех сигналов и нажать на кнопку "Test". Примерно через 2 секунды после нажатия на Test новые уровни будут установлены на всех выходах. При этом на линии TRST постоянный низкий уровень не установить, он опускается вниз лишь на долю секунды, что, однако, заметно даже на цифровом мультиметре.

FT2232H-Lattice-debug-mode

[Ссылки]

1. Lattice Programming Cables for PC site:latticesemi.com.
2. HW-USBN-2A site:digikey.com.
3. HW-DLN-3C site:digikey.com.
4. FT2232H Board - макетная плата на высокоскоростном чипе моста USB фирмы FTDI.
5. ispDOWNLOAD Cables user guide site:latticesemi.com.
6. Lattice Diamond Software site:latticesemi.com.
7. Programmer and Deployment Tool - Lattice Diamond Programmer site:latticesemi.com.

 

Добавить комментарий


Защитный код
Обновить

Top of Page