У меня уже была статья о том, как адаптировать существующие FPGA проекты к имеющейся у вас плате. Если повторить кратко, то нужно в свойствах проекта нужно:
- назначить новый тип микросхемы FPGA, указать именно ту микросхему, которая стоит на имеющейся плате;
- выполнить назначения сигналов проекта к выводам FPGA чипа на вашей плате, все платы разные, но как правило многие имеют общие черты: некоторое число кнопок, светодиодов, или есть линии последовательного порта. На этом этапе, конечно, возможно не все сигналы получится вывести, тогда придется ограничиться имеющимеся ресурсами;
- установить неиспользуемые выводы FPGA в состояние input tristate;
- возможно, придется некоторые компоненты созданные визардом квартуса: PLL, блоки памяти, FIFO и прочее, сгенерировать заново. Это не всегда требуется, но иногда нужно.
После всех этих манипуляций можно пробовать компилировать проект в среде Intel Quartus Prime и загружать в FPGA платы.
Сегодня я адаптировал два моих проекта платы Марсоход3bis для работы в плате M02mini. Далее расскажу об этом подробнее.
Первый проект: PM-радио. Статья об этом проекте в плате Марсоход3bis на нашем сайте вот здесь. Теперь проект работает и в M02mini.
Что тут делается:
в чипе FPGA есть PLL, это генератор, причем им можно на лету управлять, например, сдвигать фазу выдаваемоей частоты. В проекте установлен приемник последовательного порта. Через последовательный порт в плату из программы TeraTerm передается аудио файл с параметрами Mono, 8bit, 22050Hz. Файл передается на скорости 230400бод. Это чуть больше чем нужно, но примерно в темпе аудио. PLL в нормальном состоянии выдает 100МГц. Каждый принятый байт из последовательного порта перестраивает фазу PLL внутри FPGA. А перестройка фазы частоты чем-то эквивалентна мгновенному изменению выходной частоты PLL.
Выход PLL идет прямо на вывод из FPGA и еще этот же сигнал только инвертированный - на второй вывод FPGA. На плате я припаял два проводка по 75 сантиметров - это импровизированная антенна, полуволновый вибратор. Передаю аудио файл, а любой радиоприемник FM на частоте 100МГц слышит его. Конечно недалеко, метров 10-15, но все равно интересно получается.
В качестве радиоприемника я использую FM радио своего смартфона. Вот видео демонстрация этого проекта:
Посмотреть исходники проекта PM-radio можно на GITHUB: https://github.com/marsohod4you/M02mini/tree/master/pm_radio
Второй портированный проект это Linear Feedback Shift Register, LFSR, генератор псевдослучайный чисел. Оригинальный проект вот здесь.
А адаптированный для платы M02mini на гитхаб: https://github.com/marsohod4you/M02mini/tree/master/max10_lfsr
На плате M02mini стоит жвухпортовая микросхема FTDI. Один порт используется как JTAG программатор, а второй порт используется для последовательной передачи данных в плату и из платы.
После загрузки проекта в ПЛИС плата начинает посылать в компьютер байты, псевдослучайные числа. Алгоритм генерации псевдослучайного числа - сдвиговый регистр с обратной связью:
В репозитории проекта есть программа для Visual Studio. Она позволяет читать байты из последовательного порта и отображать их в окошке:
Так же, можно блок полученных данных записать в файл. В проекте еще есть питоновский файл, который нарисует спектр сигнала от блока данных.
Так, можно визуально оценить насколько случайные числа действительно имеют равномерное распределение:
Вот такой несложный проект из платы Марсоход3 я адаптировал в плату M02mini.
Конечно, первый проект PM-радио и второй проект с генератором псевдослучайных чисел очень разные по сложности. Однако, цель этой работы показать, что даже в таком крошечном чипе Intel MAX10 с 2К логических элементов можно делать весьма интересные проекты.
Подробнее...