Наконец-то закончена разводка релиза платы Aeon Lite.
Файлики уже улетели к производителю...
Ниже я в кратце опишу, что же собой представляет сей девайс:
И так...
Aeon Lite - это "младший" вариант переконфигурируемой платформы на основе FPGA и предназначен в первую очередь для "реплик" 8-битных компьютеров и игровых приставок. Упор в данной версии платы делался на минимализацию затрат, поэтому плата получилась достаточно компактная (90x120мм) с минимумом используемых компонентов.
"Сердцем" платформы является FPGA "Spartan 6" от фирмы Xilinx. Я использовал камень XC6SLX9 в корпусе TQFP144. Сам чип чрезвычайно быстрый, если сравнивать его с предшественником (имееится в виду Spartan 3), а стоит немного меньше. К сожалению сам чип содержит множество ошибок, но поставленной цели они почти не помешают. FPGA тактируется от кварцевого генератора с частотой 50МГц. Порт JTAG выведен на внешний разъём что позволяет подключать внешний программатор, который может понадобиться лишь только в случае использования внутрисхемного "логического анализатора" ChipScope.
В качестве оперативной памяти использованы 2 чипа 16-битной статической памяти объёмом 512Кб или 1Мб каждая. Выбор в пользу SRAM был сделан в связи с простотой их использования.
"Управляет" платформой микроконтроллер Microchip PIC24F. Он выполняет несколько важных функций:
Во-первых, микроконтроллер "заливает" прошивки в FPGA. Прошивки могут находится во встроенной флэш-памяти или на SD-карте (SD-карта и SPI-флэш подключены к микроконтроллеру и FPGA через мультиплексор). Так же можно в любой момент загрузить прошивку в FPGA с компьютера через USB.
Во-вторых, микроконтроллер может "эмулировать" дисковод и другую периферию.
Так же PIC24F выполняет функции коммуникации платы с компьютером разработчика и позволят управлять каждым компонентом платы. Это чрезвычайно удобно при разработке новых прошивок. Помимо основного протокола "Custom USB Device" с использованием библиотеки libusb в контроллере реализован виртуальный COM-порт.
На шине I2C находятся EEPROM и часы реального времени. EEPROM пока не используется, но планировался как "хранилище" настроек платформы.
Все неиспользуемые выводы микроконтроллера и FPGA выведены на 2 разъёма что позволяет расширять функционал платформы установкой "вторым этажем" платы расширения.
На плату выведен разъём внутрисхемного программирования ICSP. В принципе у него только одна функция: один раз прошить "bootloader" в микроконтроллер. В дальнейшем обновление прошивок микроконтроллера выполняется через USB без использования внешнего программатора.
Вывод видео осуществляется на VGA-монитор с использованием трёх резисторных четырёхбитных ЦАП-ов, что позволяет отображать до 4096 цветов и оттенков.
Стереозвук поступает через фильтры на 3.5мм разъём. Для этого я в своих проектах использую Дельта-Сигма-ЦАП.
В качестве устройств ввода предусмотрена возможность подключения PS/2 клавиатуры и PS/2 мышки. Для одновременного их использования понадобится так называемый Y-адаптер. На передней панели находятся ещё 2 PS/2 разъёма. Они служат для поключения джойстиков от игровых консолей NES или SNES. Такие нестандартные для джойстиков раъёмы я использовал в связи с их малым размером.
Питается плата от внешнего источника с напряжением 6.5-9В или через USB-порт.
Скачать схему, плату и файлы для производства финального варианта платы можно тут.
Все исходники доступны на гитхабе по ссылке:
https://github.com/ILoveSpeccy/Aeon-Lite
Пара фотографий рабочего прототипа:
Aeon (в разработке)
Собрав воедино всё наработанное и проверенное появляется на свет законченная версия платформы. Мне хотелось сделать не какую-то новую Devboard, а именно законченное устройство для "оживления" 8- и 16-битных ретро-компьютеров.
Перебрав все "за" и "против" получилась следующая спецификация:
- Altera Cyclone III EP3C16Q240/EP3C25Q240
- 2MB High Speed SRAM (2 x 512Kbit x 16bit) 10ns
- 32MB SDRAM (16MB x 16bit) 133MHz
- 12 bit VGA Output
- PS/2 Keyboard & Mouse
- 10/100Mbit Ethernet Controller ENC424J600 (SPI)
- AC'97 Audio Codec (ALC655)
- 2 x USB Host (FTDI VNC2)
- PIC32MX695F512H Microcontroller (+USB Device)
- 256Mbit SPI Flash
- SD-Card Connector
- 2 x NES/SNES Joystick
- RTC
- 512Kbit I2C EEPROM
- 50MHz Clock Generator (+ reserve)
Всё это будет упаковано на двухслойной плате размером 182x130мм в корпусе Hammond RM2055S.
Я посторался учесть все, на мой взгляд, ньюансы для портирования готовых проектов и написания новых. Например, доступ к часам и обеим EEPROM, которые висят на шине I2C, возможен напрямуи и со стороны FPGA и со стороны микроконтроллера. Тоже касается SD-карты и SPI-Flash.
Документация для производства готова и в самое ближайшее время отправиться по назначению. Для начала я соберу один прототип и всё отлажу.
Проект является полностью открытым. Вся документация на платы, схема, все исходники прошивок и т.д. будут доступны всем без исключения.
Последние фото собранного прототипа: