Пополнение среди ультрабюджетных девбордов: FPGA — «отладка» за 201 р

от автора

Самая дешёвая «оценочная плата» с ПЛИС Xilinx Spartan-6 на AliExpress обойдётся в ровно 3000р.

жалкие 9152 логические ячейки

жалкие 9152 логические ячейки

У неё есть один плюс — все выводы разведены на «гребёнки», имеется единственная кнопка и три светодиода. К сожалению, USB используется только для питания.

Благодаря устойчивому развитию технического прогресса очередному колебанию курса BTC на свалку отправились очередные партии Асик-Майнеров, теперь это «Авалоны» 800й серии фирмы Canaan. Платы от них (Авалон 841) можно раздобыть за 200-400 р. Вот о них и пойдёт речь в статье.

По сравнению с «отладкой» за 3000, есть один недостаток — на плате разведено на гребёнки меньшее количество выводов микросхемы. И ещё кнопка не припаяна. На этом список недостатков «всё».

Хватит разглагольствовать! К делу! По DIY традиции давайте помигаем светодиодом!

Здесь уже 24 051 логических ячеек

АВИТО

Для начала надо приобрести плату , а также обзавестись JTAG программатором

У меня вот такой

У меня вот такой программатор
Так выглядит плата с SPARTAN-6 XC6SLX25

Так выглядит плата с SPARTAN-6 XC6SLX25
ПЛИС

ПЛИС. Здесь уже 24 051 логических ячеек

ПЛИС, он же FPGA

Чтобы припаять эти штырьки, придётся зачистить медь

Чтобы припаять эти штырьки, придётся зачистить медь

Нужно припаять 6 контактную «гребёнку» для JTAG и 2-х контактную для питания платы (5-14В)

Подать питание и убедиться, что огоньки загорелись (там их три маленьких — led 2,3,4 и один большой трёхцветный LED1), а не пошёл дым.

Теперь надо установить софт!

Его можно загрузить «прямо с сайта Xilinx» 🙂 .

Этот подойдёт

Этот подойдёт

Работает на виндовс 10, надо только следовать рекомендациям

Когда ПО будет установлено, запустим PlanAhead

-8

-8

И создадим новый проект

Некст

Next >
Назовём migalka

Назовём migalka, Next >
RTL Project

Выбираем «RTL Project» , Next >
создадим новый файл Верилог , Next

Надо создать новый файл Верилог , Next >
Next>

Этот пункт пропускаем, Next>

Next>

Создаём пустой файл констрейн - в нём будет распиновка

Создаём пустой файл констрейн — в нём будет «распиновка»
.ucf добавится автоматически

.ucf добавится автоматически

Надо выбрать наш «камень»

xc6slx25ftg256-2

xc6slx25ftg256-2

Spartan-6 , 24 051 логических ячеек, 256 выводов

Finish!

Finish!

Приступим к оформлению кода

Редактируем верилог файл, сначала всё стираем

Редактируем верилог файл, сначала всё стираем

Редактируем верилог файл, сначала всё стираем

И добавляем код:

`timescale 1ns / 1ps ////////////////////////////////////////////////////////////////////////////////// // Company:  // Engineer:  //  // Create Date: 22.05.2022 01:51:54 // Design Name:  // Module Name: pl_blink // Project Name:  // Target Devices:  // Tool Versions:  // Description:  //  // Dependencies:  //  // Revision: // Revision 0.01 - File Created // Additional Comments: //  //////////////////////////////////////////////////////////////////////////////////   // Директива компилятора, которая определяет единицу времени и точность для моделирования Verilog. // В целом, не очень интересный пункт для нас.  //`timescale 1ns / 1ps         // Определяем стандартный блок-модуль (как класс в С++) module pl_blink(input CLK100, output d6_led);      // Задаем регистр для хранения записи о текущем состоянии светодиода reg r_led;   // Задаем регистр для хранения значения счётчика, использующегося в задержке reg [31:0] counter;  // Тут мы задаем действия которые должны быть выполнены при старте программы initial begin     counter <= 32'b0;  //  Обнуляем счётчик       r_led <= 1'b0;    //  Делаем запись о состоянии светодиода end  // Тут описываем поведенческий блок, который будет реагировать на положительный фронт тактовой частоты always@(posedge CLK100) begin     counter <= counter + 1'b1;  // Увеличиваем счетчик          if(counter > 12000000)    // Если счетчик больше некоторого условного значения     begin         r_led <= !r_led;    // Инвертируем запись о значении состоянии светодиода         counter <= 32'b0;    // Сбрасываем счетчик     end         end  assign d6_led = r_led;          // Присваиваем текущее состояние ножке (условно)             endmodule 
И сохраняем

И сохраняем
Run Synthesis (1) а когда закончится синтез, открываем и смотрим, что получилось (2)

Запустим Run Synthesis (1) а когда закончится синтез, открываем и смотрим, что получилось (2)

когда закончится синтез, открываем Synthesized Design и смотрим, что получилось

Переключимся в I/O Planning и приступим к распиновке, меняем 2.5 на 3.3 Вольт

Переключимся в I/O Planning и видим карту пинов

Переключимся в I/O Planning и приступим к распиновке, меняем 2.5 на 3.3 Вольт

Открываем схему платы и ищем, куда подключен кварцевый генератор

Нога J6

Ножка J6

Вывод микросхемы имеет координаты J6

Заносим это значение в план

J6

J6

Мигать будем красным светодиодом, найдём на схеме, к какой «ноге» он припаян

Т9

ножка Т9

Искомый вывод микросхемы имеет координаты Т9

Заносим это в таблицу и видим отображение на карте выводов БИС

-25

Белые прямоугольнички — места назначения

И сохраняем в констрейн файл

pinout.ucf - тот пустой файл, который создали в самом начале

pinout.ucf — тот пустой файл, который создали в самом начале

Посмотрим, что туда записалось

Порядок!

Порядок!

Запускаем Implementation , затем Bitstream

3. Elaborated Design

3. Elaborated Design

Откроем Elaborated Design

Любуемся на своё творение

Красивое

Красивое

Красивое

Launch Impact

-30

Запустим Импакт, чтобы записать битстрим в ПЛИС
Мой программатор почему то недоступен Импакту, поэтому подключаюсь через предварительно запущеный hw_server

Мой USB программатор почему то недоступен Импакту, поэтому подключаюсь к нему же через предварительно запущенный hw_server.bat
OK

OK

Указываем наш Битстрим-файл

он лежит в этом месте

обычно он лежит в этом месте

Осталось залить Битстрим в Плисину и должно замигать!

Вот главная кнопка

Вот главная кнопка

Program

Ура! замигало!

Ура! замигало!

Ура! замигало!

Где найти схему, документацию и софт?

Где купить это чудо?

Где ведётся обсуждение по этой теме?

Этой (и не только) плате посвящёна группа в Телеграм https://t.me/+R_oA68EGEtM4NmM6 и форум https://astra.org.ru

Вообще то эта Микросхема считается очень старой — 2011г. Малолетние «разработчики» считают её динозавром. На самом деле Спартан 6 весьма неплох! Единственный реальный минус — его сняли с производства и при этом остатки складских запасов не спешат распродавать по дешевке.


ссылка на оригинал статьи https://habr.com/ru/articles/899282/


Комментарии

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *