МАРСОХОД

Open Source Hardware Project

FPGA & Verilog БлогFPGA chips

САПР Altera Quartus II / Intel Quartus Prime, язык Verilog HDL и кое-что про VHDL, FPGA Cyclone III, Cyclone IV, MAX II, MAX10. Платы разработчика серии Марсоход, Марсоход2, Марсоход3.


Управление Marble Machine v2

Я уже как-то писал про свой хобби проект Marble Machine - это такая штука, напечатанная на 3D принтере. Машина перемещает металлические шары, поднимает их вверх на подъемниках и потом они скатываются по желобам вниз. Недавно сделал вторую версию этой электро-маханической машины. Теперь здесь два подъемника, а значит используются два шаговых двигателя. Кроме того, теперь здесь есть электро-магнитный кран. Катушка взята из первого попавшегося под руки автомобильного рэле. Катушка подключается через драйвер двигателя, такой же, какой используется для шаговых двигателей.

На видео выше демонстрация этой машины. Завораживающее зрелище получается. Ниже расскажу, как я делал проект FPGA для платы управления Марсоход3bis.

Проект FPGA для платы Марсоход2bis и платы расширения с 7-ми сегментным индикатором

shield 3x7seg onboard FPGA

Сделали новую плату расширения для наших плат. Шилд дает новые возможности отображения информации для плат Марсоход2 / Марсоход2bis и плат Марсоход3 / Марсоход3bis. Он позволяет отображать 4 символа на семисегментном индикаторе с динамическим управлением. Так же добавляются четыре пользовательских кнопочки.

Дальше есть небольшое описание FPGA проекта, который демонстрирует работу этой платы расширения.

О переносе FPGA проектов с одной платы на другую

port fpga project
Представим себе, что мы увидели какой-то интересный FPGA проект и захотели запустить его на своей плате, но, проблема - плата у нас другая и микросхема FPGA у нас другая. Как перенести тот проект на нашу плату? Возможен ли такой перенос/портирование и трудно ли его выполнить?

В общем случае портирование FPGA проектов - это не очень простая задача. Зависит от многих факторов. Иногда это возможно, иногда нет. Самое главное: ресурсы платы (установленные компоненты, разъемы, интерфейсы) и ресурсы FPGA чипа (количество доступных логических элементов, объем встроенной памяти, PLL, умножители). К примеру, если исходный проект использует SDR память платы, а на нашей плате этой памяти нет или меньше, чем нужно, то что тут можно сделать? В таком случае полный перенос проекта не возможен. Или, к примеру, для проекта требуется минимум 12 тысяч логических элементов FPGA, а на нашей плате их всего 10, тоже не очень хорошо. В общем, по ресурсам имеющейся платы и FPGA нужно смотреть можно ли реализовать в ней проект или нет. Если же платы хотя бы примерно похожи и емкости чипа хватает, то можно пробовать делать перенос проекта.

У нас на сайте уже накопилось довольно много разных проектов для разных плат серии Марсоход. В этой статье я хочу рассказать, как производить портирование проекта с платы Марсоход2 c FPGA Cyclone III на плату Марсоход2bis, Cyclone IV. Я буду портировать проект "Простой текстовый терминал".

В этом проекте реализован текстовый видеоадаптер 56 строк по 180 символов, формируется видеосигнал 1440x900, 60Гц и картинка отображается на VGA дисплее. Плата принимает символы из последовательного порта и печатает их в экран. При этом, если приходит символ 0x0D, это "Enter"/"перевод каретки", то производится скроллирование экрана. Кроме того, терминал понимает символ табуляции 0x09.

Марсоход2 и Марсоход2bis визуально почти ничем не отличаются, но и на самом деле они производятся на одной и той же печатной плате. Главное отличие этих плат обусловлено установленными чипами.

Плата Марсоход2, FPGA Cyclone III, чип EP3C10E144C8, 10 тысяч логических элементов, 414Кбит встроенной памяти, 2 PLL, 23 (18x18) или 46 (9x9) встроенных умножителей.

Плата Марсоход2bis, FPGA Cyclone IV E, чип EP4CE6E22C8, 6 тысяч логических элементов, 270Кбит встроенной памяти, 2 PLL, 15 (18x18) или 30 (9x9) умножителей.

Плата Марсоход2bis немного дешевле, она в базовой комплектации имеет менее емкий чип. К тому же у Cyclone IV меньше I/O выводов, из-за этого на этой плате три светодиода и одна кнопка, у платы Марсоход2 есть 4 светодиода и две кнопки. Но зато Cyclone IV поддерживается современным программным обеспечением Intel Quartus Prime Lite 18.1 Edition, а для Cyclone III последняя версия квартуса - это Quartus II v13.1.

Посмотрим, смогу ли я перенести проект "Простой текстовый терминал" на плату Марсоход2bis?

Подборка проектов для платы Марсоход2bis

title

В этой статье я расскажу про несколько совсем простых проектов платы Марсоход2bis. С готовыми проектами обычно легче начинать свой собственный, так как в исходном готовом проекте уже сделаны все важные настройки, задан тип микросхемы FPGA, сделаны назначения контактов ввода/вывода микросхемы, есть модуль верхнего уровня в котором описаны входные и выходные сигналы ПЛИС.

Исходные тексты приведенных ниже проектов можно получить на нашей странице github: https://github.com/marsohod4you/marsohod2bis

Внутри этого репозитория для каждого отдельного FPGA проекта создана отдельная папка, например, counter_verilog - это папка проекта для счетчика, vga_colors - папка проекта генерации VGA сигналов. Здесь есть еще проект сдвигового регистра, hello-world, serial-port эхо, а так же проект генератора сигналов и оцифровки сигнала с помощью АЦП платы. Проекты созданы в среде Intel Quartus Prime 18.1 Lite Edition, должны работать и более поздних версиях квартуса.

Далее есть краткое описание каждого из проектов.

Создание toolchain с помощью crosstool-NG

compiler creation with crosstool-ng

Наверное каждый, кто занимается программированием FPGA однажды задумывался о создании своего собственного процессора. Дело это несомненно интересное. Найти и использовать готовые реализации процессоров уже сейчас довольно просто. Сама компания Intel предлагает использовать в проектах софт процессор Nios. Компания Wave Computing дает исходные тексты процессора MIPS. Есть opensource процессор ARM v2a, у нас в блоге целый раздел ему посвящен. Есть OpenRisc и другие.

Я и сам постоянно думаю о создании своего собственного процессора (нетрадиционной архитектуры, с динамически переконфигурируемым ядром).

Однако, эта статья не о процессорах, а о компиляторе. Каждый создатель процессора должен не в последнюю очередь думать о компиляторе. Создать процессор - это только пол дела, а вот как на нем запустить свою программу? Как текстовая программа будет преобразована в машинный код? Как запустить операционную систему на новой системе с новым процессором. Тут нужен не просто компилятор, но toolchain.


ВКонтакте  facebook  GitHub  YouTube  Twitter
Вы здесь: Начало