Xilinx дорого-богато? Или ищем бюджетные варианты

Свое изучение ПЛИС я начал с FPGA Altera Cyclone IV, с которой в комплекте шел копеечный USB ByteBlaster. В сторону Xilinx посматривал с опаской, если борода была не сильно дороже, то программатор начинался уже от 2 т.р. за копию на Алике, что от 10 раз дороже Альтеровского Бластера. Я прошел свой путь от относительно дорогих (не фирменные) до дешевых моделей и хочу с Вами поделиться изысканиями. Возможно, если бы я обладал этой информацией, то начал изучать Xilinx пораньше.

Про плату управления майнером EBAZ4205 не писал только ленивый, ее я и заказал первой на опыты с SOC XC7Z010. Поморгав диодами, заказал со второго раза специфичные разъемы для самодельной платы расширения (пришли только несколько дней назад), начал искать на просторах Али вариант поинтересней и главное, подешевле («а восемь шапок сможешь ?»). И вот, довольно быстро, ко мне пришла китайская слива, то бишь, встречаем Lichee Tang Hex.


2rgyktbx6vi9bj1o8x6-cjlqcyq.jpeg

Размеры, конечно поражали, такой минитиарюзации я не ожидал. Однозначно советовать вам ее не могу, но плюсы и минусы (с моим видением) расскажу. Ну, а выбор, конечно, за Вами.

Во, первых, документация, из всех ссылок, что дал продавец (и то после пинка), рабочими и по этой плате были всего две. Привожу основную сайт SiPEED там вы найдете схему, примеры и Petalinux.

Кратко пробежимся по схеме, на плате стоят две DDR3 MT41J128M16JT 256Kx16 каждая, что дает целый Гигабайт 32bit ОЗУ. Возможно из-за этого IO-pin катастрофически мало:


image-loader.svg

Из 26 контактов — четыре с напряжениями от 1.8V до Vin, пять земляных, два задумывались под PL_I2C, два под PS_UART, еще два под FAN SPEED и PWM. Осталось с гулькин нос: два PL_33_IO и 9 непонятных HASH_IO. Можно ли будет на этом собрать полноценный HDMI, покажет время. Снизу видим Flash MT29F2G16ABAEA на 2GB 8bit и 4bit MicroSD подключенную к PS части.


v6qujrkzfv1jrtth_uynygmz_3a.jpeg

Сетевая часть выполнена на LAN9514 — это USB host на 4 порта объедененный с Usb-LAN мостом так что скорость ограничена 100Mbit. Неоднозначное удешевление, возникает вопрос «Оно того стоило ?». Источником выступает быстродействующий USB2.0 трансивер с ULPI интерфейсом на мс USB3320. Кварц на 33MHz тактирует только PS часть, так что без инициализации PS, логику PL вы не запустите. На EBAZ4205 есть хотя бы место под кварц. Светодиоды подключены к выводам AB1 GREEN и AB4 RED, единственная кнопка PL_SW подключена к W5.

А UART к MIO48 — MIO49:

Чтобы помигать светодиодиком, необходимо подключить программатор, благо выводы подписаны, но не распаяны и даже в комплекте гребенки не нашел. Из бюджетных, существует относительно дорогой вариант DL10 на Lattice с Cypress, этот работает из коробки без бубна :

Если денег не так много, можно заказать плату FT232H на Ali, цена около 500 руб с быстрой пересылкой :


w9emu1ayarq0qpsfxz5yeyccp-u.jpeg

С этой придется повозиться. Скачайте с сайта FTDI Chip программу FT PROG, установите и запустите ее, просканируйте подключенные устройства, скорее всего память будет девственно чистой :


image-loader.svg

Во вкладке USB_Config_Description в поле Max Bus Power следует поставить значение 500mA.
Во вкладке USB_String_Description необходимо записать в полях:


  • Manufacturer — Digilent;
  • Product Description — Digilent USB Device;
  • Serial Number — 210249854606.

Во вкладке Hardware_Specific → Port_A → Hardware нужно установить галочку напротив 245 FIFO, а в 
Hardware_Specific → Port_A → Driver — отметку напротив D2XX


image-loader.svg

После этого записываем в EEPROM изменения, но для работы в качестве программатора Xilinx этого мало, необходимо прошить UserMemory, необходимо воспользоваться функцией FT_EE_UAWrite из библиотеки D2XX API (пример использования этой функции приведен в AN_121_FTDI_Device) либо программой FTDI_User_Area_Writer, уважаемого Дмитрия aka ADA007 с github. Далее вынимаем и опять вставляем платку, смотрим диспетчер устройств: COM должен пропасть, а в Контроллерах USB остаться USB Serial Converter. Контакты для подключения к программатору приведены ниже, не забываем GND :


  • ADBUS0 — TCK;
  • ADBUS1 — TDI;
  • ADBUS2 — TDO;
  • ADBUS3 — TMS.


n_msj1gkmz4hzrvaekt3nysd1zs.jpeg

Питается плата от 12V DC5,5. Теперь, если запустить Vivado 2018 и старше, в Device Manager увидим программатор и нашу плату :

Также в качестве программатора можно использовать плату на FT2232H бонусом получаете еще COM, процесс описан в журнале Компоненты и технологии №3 2014 г., а подробно почитать как автор статьи прошел тернистый путь к результату на форуме Electronix.

Если нужен урок как помигать светодиодами — примеров в сети много от мануала по EBAZ4205 для «баранов» на fpga-systems.ru до вполне приличных статей, например 1 и 2, на habr.ru.

Конечно, я не претендую на истину в последней инстанции и могу, конечно, заблуждаться. Пишите — поправим.

© Habrahabr.ru