Мы разработали новую FPGA плату MCY112 с чипом ПЛИС Altera Cyclone I EP1C12Q240C8. Мы понимаем, что ПЛИС Cyclone I не самый новый чип на сегодняшний день, но его достоинство - он есть в наличии и он более-менее доступен по цене. И главное - на этой плате очень много пользовательских выводов! Можно много чего подключить!
Плата MCY112 простая, но вполне подходит для изучения возможностей ПЛИС. На этой плате мы и светодиодами поморгать сможем и систему на кристалле с процессором RISC-V запустим.
Рассмотрим плату подробнее. В ПЛИС EP1C12Q240C8 содержатся 12060 логических элементов, 239616 бит встроенной памяти, два PLL. На плате установлены:
-
Кварцевый генератор 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
- Разъем Active Serial для прошивки флэш памяти автозагрузки ПЛИС тем же самым программатором MBFTDI или UsbBlaster.
Вот план расположения компонентов на плате:
Программировать эту плату придется в среде Altera Quartus II Web Edition v9.1sp2. Скачать эту версию квартуса можно здесь на яндекс диске: https://disk.yandex.ru/d/KS4rCSB-MixEIw
Там же в папке есть еще один файл jtag_hw_mbftdi_blaster32.zip. Если плата будет использоваться совместно с нашим программатором MBFDI, то этот файл понадобится - это драйвер программатора к квартусу. Девятый квартус является 32х битной программой, но работает в Windows 10 64бит без проблем. Если квартус установлен например в папку D:\altera\91sp2, то распакуйте jtag_hw_mbftdi_blaster32.zip в папку D:\altera\91sp2\quartus\bin. Тогда программатор MBFTDI будет работать в САПР Quartus II Web Edition 9.1
Плата MCY112 разработана таким образом, чтобы при необходимости JTAG программатор MBFTDI мог быть просто установлен сверху на разъемы, вот так:
Сам программатор MBFTDI требует небольшой доработки - добавлен провод +5В от USB на разъем. Так плата будет получаь питание. Вероятно следующии версии программатора уже будут разведены соответствующим образом.
В таком виде плата, как единый макет: MCY112 с установленным программатором, может использоваться, например, студентами на лабораторных работах. Студенты будут разрабатывать свои проекты и загружать их в ПЛИС через USB кабель через программатор MBFTDI и его JTAG . Если же плата будет использоваться в составе какого-то оборудования, то тогда программатор нужен только чтобы загрузить прошивку в микросхему Flash памяти автозагрузки ПЛИС. Для этого программатор можно сместить и установить на разъем Active Serial, зашить флэшку и снять программатор. После подачи питания на плату она автоматически стартует и без программатора.
Выше я написал, что разъемы GPIO являются квазисовместимыми с платой микрокомпьютера Raspberry Pi. Это значит, что по крайней мере земля и питание разведены соответствующим распбери пи образом. Платы для распбери вероятно можно использовать совместно с нашей FPGA платой MCY112. Например, я планирую поключать к нашей плате MCY112 плату адаптера VGA для Raspberry Pi4:
И это будет работать! Адаптер VGA можно ставить и на разъем GPIO_A и на разъем GPIO_B. Выводов ПЛИС хватит.
К сожалению не все сигналы распбери будут доступны на всех разъемах GPIO. Точнее можно сказать так. На разъеме GPIO_A все выводы как на распберри есть в наличии. Есть 28 входов-выходов, доступных для FPGA проектов: inout wire [27:0]gpio_a.
На разъеме GPIO четыре вывода из 28 недоступны. Они зарезервированы в качестве сигналов JTAG для загрузки проектов в ПЛИС при подключении платы к микрокомпьютеру расперри. Про это надеюсь будет отдельная статья. В целом же всё задумано так же, как было раньше с нашей платой M2RPI
Зарезервированы под программатор:
//inout wire gpio0, //JTAG TMS
//inout wire gpio1, //JTAG TDO
//inout wire gpio7, //JTAG TCK
//inout wire gpio11, //JTAG TDI
На разъем GPIO_B свободных выводов ПЛИС немного не хватило. Поэтому здесь будет только 23 сигнала на ввод-вывод и три сигнала только на ввод:
inout wire [22:0]gpio_b,
input wire [2:0]RESERVE
Более подробно понять назначение сигналов FPGA и разъемов GPIO можно из схемы платы. Вот схема: https://github.com/marsohod4you/MCY112/blob/main/docs/MCY112-schema-v2.pdf
Для этой платы я уже подготовил несколько проектов, их можно посмотреть на странице github: https://github.com/marsohod4you/MCY112
Первый проект будет традиционно про светодиоды. Второй проект я планирую сделать фреймбуфер в памяти SDRAM и отображать его на VGA монитор. Ну и дальше будут проекты с оцифровкой звука и RISC-V. Посмотрим, что из этого у нас получится.
Подробнее...