mcy316

Выпущена наша новая плата MCY316.

На плате MCY316 установлена ПЛИС EP3C16Q240C8, в ней содержатся 15408 логических элементов, 516098 бит встроенной памяти, четыре PLL и 112 умножиетелей. Так же, на плате стоят:

- Кварцевый генератор 100Мгц;
- Две пользовательские кнопки;
- Восемь пользовательских светодиодов и 7-ми сегментный индикатор;
- SDRAM IS42S32200B, 8 (или 16) Мбайт, 32 разряда шина данных (на обратной стороне платы);
- Двухканальная аудио АЦП PCM1801U,16 бит, 48 Кгц;
- Двухканальный аудио выход для Дельта Сигма ЦАП (8бит);
- Три разъема для установки плат расширения, квазисовместимые с Raspberry Pi;
- SPI Flash W25Q16, 2 Мбайта для автозагрузки ПЛИС:
- SPI Flash W25Q16, 2 Мбайта для пользовательских данных;
- Разъем для установки USB JTAG программатора, например MBFTDI или UsbBlaster

Плата отличается довольно ёмкой ПЛИС (почти 16 тысяч логических элементов) и довольно большим количеством доступных пользователю выводов GPIO.

Дальше более подробное описание платы и проектов для неё.

Расположение компонентов платы показано на этом фото:

mcy316 expl

Визуально и по функциям эта плата является практически близнецом платы MCY112. Ключевое отличие это конечно микросхема ПЛИС, вместо первого циклона стоит третий. У платы MCY316 точно такие же габариты, как и у MCY112 и такой же метод установки JTAG программатора MBFTDI.

mcy316 progr

Плата MCY316 получает питание от USB программатора. Программатор MBFTDI двухканальный, первый канал чипа FTDI JTAG, второй канал используется для последовательной передачи данных из компьютера в плату и назад из платы в компьютер. Таким образом, плата MCY316 плюс программатор MBFTDI составляют готовый стенд разработчика FPGA.

Все демонстрационные проекты нашей первой платы MCY112 были портированы на эту новую плату MCY316. Исходные тексты проектов, а так же схему платы можно посмотреть на гитхаб https://github.com/marsohod4you/MCY316

Язык программирования используемый в проектах - Verilog HDL.

Компилировать проекты можно в среде САПР Altera Quartus Web Edition v13.1
Скачать САПР можно по ссылке на яндекс диск: https://disk.yandex.ru/d/_EhuBxmR4mrrlA

Кратко расскажу о подготовленых демо.


1) Leds7Seg

Это очень простой FPGA проект. В проекте установлен PLL, который из входной тактовой частоты 100МГц синтезирует две тактовый частоты clk50 (50МГц) и clk100 (100МГц). Сигнал тактирования clk100 идет на 32х битный двоичный счетчик. Самый старший байт этого счетчика отображается на 8ми светодиодах платы. Так же этот байт будет отображаться и на 7ми сегментном индикаторе (две старшие тетрады) в шестнадцатеричном виде. Счетчик сбрасывается в ноль при нажатии на кнопку key[0] или счетчик ведет счет в обратном направлении при нажатой кнопке платы key[1].


В этом проекте так же установлен модуль приёмника serial для приема байтов из последовательного порта. Установленная скорость приема 115200. Принятый байт отображается на 2х младших тетрадах семисегментного индикатора.
Предполагается совместная работа платы MCY316 и программатора JTAG MBFTDI. На программаторе стоит двухканальная микросхема FTDI которая и обеспечивает JTAG+последовательную передачу данных из ПК в плату и обратно.
На плате используется 7ми сегментный индикатор с динамической индикацией. Для обслуживания этого индикатора написан Verilog модуль seg4x7. Ему для работы как раз требуется тактирование clk50.


2) GpioTest

Этот FPGA проект позволяет протестировать все имеющиеся выходы разъемов GPIO платы. Разъемы GPIO являются квазисовместимыми с разъемом знаменитого микрокомпьютера Raspberry. Это значит, что по крайней мере сигналы питания +5В, +3.3В и Земли совпадают. Платы для Raspberry можно пробовать устанавливать на разъемы GPIO нашей платы MCY316.

К сожалению, микросхема Cyclone III имеет ограниченное число двунаправленных выводов, поэтому не все сигналы могут быть использованы. Некоторые выводы могут быть использованы только как вход.

Этот тест позволяет индивидуально на каждый доступный вывод GPIO подавать сигнал логического нуля или единицы.
Откомпилируйте проект в среде Altera Quartus и загрузите прошивку в ПЛИС. Затем зайдите в папку GpioTest/python и запустите скрипт питона

>python gpio-test

Этот скрипт покажет на экране вашего копьютера вот такое окно:

gpiotest

Кликая мышкой по кружочкам изображающим пины можно подавать или снимать сигнал с выходов GPIO платы.

Питоновская программа посылает двухбайтные управляющие пакеты в последовательный порт, чтобы установить или сбросить любой из доступных сигнал GPIO.

Управлять можно только bidir сигналами.
Сигналы на ввод тоже можно проверить этим проектом, но отображаться статус входных сигналов будет на светодиодах платы.

Сигналы JTAG на разёме GPIO зарезервированы для загрузки ПЛИС из распбери, если плата будет подключена к распбери микрокомпьютеру.


3) Проект SpiFlash

На плате MCY316 установлена микросхема последовательной флэш памяти W25Q16. Этот проект позволяет записывать данные в эту флэш память и читать данные из этой флэш памяти.

Откомпилируйте проект в среде Quartus и загрузите ПЛИС. Потом перейдите в папку python. Здесь есть два питоновских скрипта. Скрипт write_flash.py позволяет писать файл во флэш по указанному адресу, второй позволяет читать из флэш по заданному адресу и нужной длины и записывает считанные данные в указанный файл. Например:

>python write_flash.py COM14 cat0.jpg 1000
>python read_flash.py COM14 cat0_read.jpg 1000 23015

Подробное описание этого же проекта для предыдущей платы MCY112 вот здесь https://marsohod.org/projects/mcy112-prj/427-mcy112-spi-flash

Этот проект полезен как вспомогательный для следующего проекта - микроконтроллер picorv32. Этот микроконтроллер может исполнять программы читая код прямо из последовательной флэш памяти.


4) picorv32
Микропроцессор RISCV портированный на нашу плату MCY316. Оригинал проекта вот здесь: https://github.com/YosysHQ/picorv32

В оригинальном проекте очень хорошее описание на английском языке.
Дополнительно можно почитать, как этот же проект работал на предыдущей нашей плате MCY112 


5) SerialFlashLoader

Это вспомогательный проект.

Используйте этот проект, чтобы прошить FLASH чип автозагрузки ПЛИС при включении питания платы.
Подробное описание метода прошивки описано здесь:
https://marsohod.org/11-blog/261-sfl
или в документе Альтеры
https://marsohod.org/downloads/category/19?download=143

На плате MCY316 стоит флэш Windbond 25Q16 (аналог Altera EPCS16).
FPGA Cyclone III EP3C16Q240C8


6) SdramVgaFb
На плату MCY316 может устанавливается платка VGA от Raspberry Pi.
Вот так:

mcy316 vga

К VGA разъему платы подключается монитор.

Этот FPGA проект реализует видео фреймбуффер из SDRAM платы MCY316.
Откомпилируйте проект в среде Altera Quartus Web Edition 13.1 и загрузите в ПЛИС платы.

На экране монитора появится изображение случайных пикселей памяти SDRAM, матрасик.
Теперь с помощью скрипта на питоне можно через последовательный порт платы загрузить изображение во фреймбуффер:

>python img2serial COM22 cat5.jpg 100 200

На экране монитора будет картинка:

fbcats

Этот проект портирован из проекта предыдущей платы MCY112.


Дополнительно скажу, что эту плату, как и предыдущую MCY112 можно подключить к микрокомпьютеру Raspberry Pi3 или Pi4 через разъем GPIO. В этом случае загрузку ПЛИС можно осуществлять из распбери. Мы такое делали уже, правда для другой платы, например вот здесь

 

Плату MCY316 можно приобрести в нашем интернет магазине.

buy button

 


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