Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/andrejchoo/cpldctrum
ZX Spectrum clone on CPLD
https://github.com/andrejchoo/cpldctrum
cpld divmmc verilog zx-spectrum
Last synced: 12 days ago
JSON representation
ZX Spectrum clone on CPLD
- Host: GitHub
- URL: https://github.com/andrejchoo/cpldctrum
- Owner: AndrejChoo
- License: gpl-2.0
- Created: 2024-08-06T19:27:15.000Z (5 months ago)
- Default Branch: main
- Last Pushed: 2024-10-24T08:17:14.000Z (about 2 months ago)
- Last Synced: 2024-10-25T04:42:03.408Z (about 2 months ago)
- Topics: cpld, divmmc, verilog, zx-spectrum
- Homepage:
- Size: 12 MB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# CPLDCtrum
Клон ZX Spectrum на CPLD EPM1570T144, вместо кучи микросхем мелкой логики.![screenshot](https://github.com/AndrejChoo/CPLDCtrum/blob/main/hardware/img/Board_With_Connectors.jpg)
Особенности клона:
-Процессор Z80 в корпусе PLCC44 работает на стандартной частоте 3,5MHz
-Экран стандартный для 128K, видеовыход композитный (разъём RCA), есть перемычка чёрно-белое/цветное изображение. PAL-кодер CXA1645/2075 распаян на плате, можно не устанавливать и запаять перемычку на вывод чёрно-белого изображения. Также можно взять с платы сигналы RGB (схема видеовыхода взята от Ленинграда).
-ОЗУ - быстрая SRAM на 512Кб, в данный момент в прошивке реализовано использование только 128Кб. Есть возможность установить SRAM как 5 вольтовую, так 3.3 вольтовую, для этого на плате предусмотрены перемычки.
-ПЗУ - EPROM/EEPROM типа M27C256,M27C512,W27C512 и т.д. В данный момент в прошивке реализовано использование только нижних 32Кб - стандартная прошивка 128K.
-Звук - биппер + AY-3-8910. Последний подключен к усилителю на PAM8403.
-Клавиатура - PS/2 реализована внутри CPLD. Также на дополнительных цифрах клавиатуры сразу реализован Kempston джойстик (порт #1F).
-Вход магнитофона - реализован по схеме читалки на К561ЛН2.
-DivMMC - реализован внутри CPLD, отдельное ОЗУ 512Кб, отдельное ПЗУ для EsxDOS на 8Кб.
Проект написан в среде Quartus II 12 на verilog. На данный момент проект занимает около половины свободных ячеек EPM1570.
На данный момент реализовано только самое необходимое для удобного использования клона. Реализация клавиатуры частично моя (матрица клавиш), частично заимствованная из чужого проекта (PS/2 протокол).
DivMMC переписан мною с VHDL (проект Mario Prato) на Verilog (переписал ради интереса и чтобы все модули были на одном HDL, хотя и оригинальный модуль работал отлично). Частоту тактирования DivMMC повысил до 14MHz, флешки читаются заметно бодрее.
Работа с ОЗУ реализована в виде менеджера SRAM памяти (конечный автомат), благодаря этому можно изменять частоту процессора, не изменяя конфигурацию видеопроцессора. Пробовал запускать процессор на частоте 7MHz, но пока работает только Basic 48 и DivMMC, игры и программы с флешки и Basic 128 почему-то не запускаются. Буду думать, в чём может быть причина.Сигнал INT - соответствует фирменному (28 циклов). Хотя легко может быть изменён в конфигурации CPLD.
В перспективе хочу: увеличить ОЗУ до 512Кб, правда, пока не знаю по какому стандарту и надо ли это вообще; реализовать нестандартные аппаратные видеорежимы (Gigascreen и т.д., пока не нашёл нормального описания их работы); горячее переключение таймингов инта, банков ROM с помощью какого-нибудь свободного порта.
Если у кого-то есть дельные советы по улучшению и реализации перспективных функций - буду рад выслушать.