Для ПЛИС фирмы Xilinx дешевый USB-программатор найти не так просто. В данной статье я предлагаю вашему вниманию программатор основанный на проекте FPGALink, созданным британцем Крисом МакКлелландом. Он разработал прошивку под контроллеры Cypress FX2LP и Atmel AVR8 с поддержкой USB а также библиотеку для работы с этой прошивкой и утилиты командной строки на её основе. Я накидал простенькую платку программатора c чипом  AT90USB162. Особенностью этой AVR-ки является то, что её можно прошить без внешнего программатора - с помощью USB DFU Bootloader-а (Device Firmware Upgrade). 

Данный программатор теоретически поддерживает любые модели Xilinx FPGA, поскольку он просто выполняет .xsvf-файлы по стандартному 4-х проводному интерфейсу JTAG. Файлы .xsvf можно генерировать с помощью утилиты Impact, входящей в состав IDE Xilinx ISE. Скорость прошивки вполне удовлетворительна - для примера чип xc6slx9 прошивается за несколько секунд.

Скачать: Архив с платой, прошивкой и управляющим софтом

Схема:

fpgalinksch.jpg

Плата однослойная с 4мя перемычками:

fpgalinkbrd(1).jpg

Распиновка разьема:

Как-то так выглядит в запаянном виде:

IMG_20140523_152822.jpg  IMG_20140523_152757.jpg

Скачать: Архив с платой, прошивкой и управляющим софтом

Прошивка программатора

Я буду прошивать в linux. Подключаем устройство. Чистая, не прошитая AVR-ка по-умолчанию должна перейти в режим dfu бутлоадера автоматически, и в lsusb должно появится устройство: 

Bus 001 Device 005: ID 03eb:2ffa Atmel Corp. at90usb162 DFU bootloader

Если ваша at90usb162 уже была прошивка, то нужно перейти в режим бутлоадера принудительно. Для этого:

  1. Зажмите кнопку RESET
  2. зажмите кнопку BOOT
  3. отпустите RESET
  4. отпустите BOOT 
  5. Проверьте lsusb, в нем должна быть вышеприведенная строка (с 03eb:2ffa)

Для прошивки нам понадобится утилита dfu-programmer. В Arch Linux эта утилита есть в AUR, в пакете dfu-programmer. В убунте этот пакет вроде есть в основном репозитарии.

Переходим в каталог firmware скачанного и распакованного архива и выполняем в нем:

sudo ./program.sh

Сразу после прошивки в lsusb должно появляется устройство: 

Bus 001 Device 007: ID 1d50:602b OpenMoko, Inc. FPGALink

Прошивка и софт в архиве имеют версию 20140330. Они были собраны по подобию этой инструкции.

Управляющий софт

Для работы с программатором нужны программы flcli и gordon. Установить их вы можете двумя способами: или взять уже скомпилированные мной, или скомпилировать самому. Второй способ мы рассмотрим в отдельной статье, а тут я предложу первый способ. В linux необходимо перейти в каталог soft/linux/ и выполнить в нем: 

sudo ./install.sh

В Windows необходимые exe-шники и dll-ки лежат в каталоге soft/windows/. Для работы вам понадобится скопировать их все в одно место и прописать к ним путь в переменной среды Path. Также в Windows придется установить драйвер libUSB для конкретно этого устройства. Как это сделать я рассказывал на примере программатора versaloon тут в разделе "Установка libusb в Windows".

После этого можно вызывать утилиты flcli и gordon из любого места. Как пользоваться программаторам я расскажу в статье про демоплату Spartan-6 lx9.

Cсылки про FPGALink: Сайт проектаггуглогруппаРепозитарий на GitHub