PDA

Просмотр полной версии : Светлячок (Firefly) - очередной клон ZX Spectrum128



IanPo
10.07.2023, 10:15
Клон Спектрум-128 "Светлячок" (Firefly)

"Светлячок" представляет собой практическую проверку
некоторых идей по развитию аппаратной части:

1) аудиокодек Delta-Sigma как максимально дешевый ЦАП с приемлемым качеством звучания;
2) новый видеорежим 2 граф слоя + слой тайлов;
3) управляемый делитель частоты процессора 2.625..21 МГц на счетчике с загружаемым значением;
4) HDL-модель ВГ93 с реальным дисководом (работает и с эмулятором).

"Светлячок" представляет собой клон с логикой на ПЛИС Cyclone IV E EP4E6.
Основные дискретные элементы:
- процессор Z80 20 МГц в корпусе 44LQFP (разгон до 21 МГц);
- делитель частоты процессора на сериях 74F, 74AC;
- статическое ОЗУ 128К х 8 CY62128ELL 45 нс;
- ПЗУ 27С512R (однократно программируемое) 45 нс (TR-DOS 5.03);
- ПУ 74LVC164245;
- "читалка" на 74HC14 (триггер Шмитта);
- интерфейс дисковода на 74LVC14, 74LVC06;
- наушниковый усилитель на TDA1308.
Таким образом, дискретной "ВГ-шки" в клоне нет.

Скорость ПК может переключаться в любой момент записью значения в область ПЗУ: 0..14,
что дает следующие значения частоты на тактовом входе ЦПУ:
2_625 <= 0000;
2_800 <= 0001;
3_000 <= 0010;
3_231 <= 0011;
3_500 <= 0100; // ** стандарт
3_818 <= 0101;
4_200 <= 0110;
4_667 <= 0111;
5_250 <= 1000;
6_000 <= 1001;
7_000 <= 1010; // *
8_400 <= 1011;
10_50 <= 1100;
14_00 <= 1101; // *
21_00 <= 1110; // *
0_000 <= 1111; // запрещено аппаратно - тактовая останавливается !!!

Звуковой сопроцессор был найден где-то на Github, переделан из SystemVerilog в обычный Verilog
и адаптирован под мои тактовые частоты. Играет он не очень точно, на мой взгляд. Но похоже.

Клавиатура выполнена на механических переключателях Kailh без щелчка, усилие 35 г.
Схемно это классическая спектрумская клавиатура, висящая на адресной шине.
Корпус GAINTA G1183B типа "пульт", в нем собрано все, в т.ч., дисковод и клавиатура.

Видеорежимы:
- стандартный ZX128 (времянки Пентагон);
- расширенный Firefly;
В расширенном видеорежиме графика представляет из себя от 1 до 3 слоев - двух
графических монохромных (2 слоя * 2 цвета чернил и бумаги задаются отдельно) и
текстового режима с возможностью загрузки знакогенератора (по сути, тайловый
режим, как в MSX).
Слой 1 - это стандартный экран ZX 256*192 (screen5) #4000-#5800
Слой 2 - это стандартный экран ZX 256*192 (screen7) #С000-#D800
Атрибуты screen5 и 7 используются для текстового режима,
первые - 32*24=768 кодов символов,
вторые - 32*24=768 цветов символов (чернила и бумага по 4 бита без мигания).
Сам же знакогенератор после включения питания - 256 символов 8*8,
также меняется записью в область ПЗУ (2048 байт).
Записью в регистр управления можно менять взаимное положение слоев, при этом
для графических режимов прозрачным будет бумага НЕпоследнего слоя,
а для текстового (тайлового) - яркий черный (8). Также можно включать-выключать слои,
кроме любого одного (это такая "фича" - любой оставшийся слой не выключится).
Расширенный режим обладает высокой степенью совместимости с обычным ZX128.

В прилагаемом архиве (7 МБ) содержится вся информация по разработке, исходники 2-х дем,
проект Quartus (22.1 Prime Lite), расчеты, программа для создания тайлов "ПлиткоДел",
также оригинальные и поправленные разводки и схемы DipTrace.
https://disk.yandex.com/d/QmGNbyfs2nPyog

Видео работы дем выложено на YouTube. Сразу извиняюсь за качество.
https://youtu.be/DcYXKXqHW9M
https://youtu.be/RnWsctUVwgw

HDL-модель создавалась на основе справочного листа Western Digital WDC179x.
Выделитель сигнала "цифровая ФАПЧ" взят из приложения к справочному листу (Appnote).
Дисковод 3.5" ноутбучного формата Сitizen X1DE-OOR с 26-проводным интерфейсом (плоский шлейф).
Дисковод и эмулятор проверены в работе: форматирование, запись файлов из BASIC,
чтение, DCU 8.07, ADS 3.0, TESTPROG от "Солон".

Возможности тестирования у меня небольшие, так что проект можете повторять на свой страх и риск.

IanPo
10.07.2023, 12:45
79155791567915779158791597916079161

Smalovsky
10.07.2023, 16:02
IanPo, я понял из второй демы Диззи без клешинга можно?

IanPo
10.07.2023, 17:12
IanPo, я понял из второй демы Диззи без клешинга можно?
Это не Диззи, я просто нашел примеры спрайтов в Сети.
Но клешинга в таком режиме нет.

ZX_NOVOSIB
10.07.2023, 21:33
Схему переходника FDD26 to FDD34 в студию!

А шо без муз чипа? На али их полно!

IanPo
11.07.2023, 13:13
Схему переходника FDD26 to FDD34 в студию!
А шо без муз чипа? На али их полно!
Переходника там нет, там 26-пиновый интерфейс. См. схему.
Мне нужно было проверить, как работате сигма-дельта кодек, поэтому AY в ПЛИС.

solegstar
20.01.2024, 00:29
IanPo, очень интересный проект! Спасибо за него. Ссылка на проект в первом сообщении уже не работает… :(

IanPo
20.01.2024, 10:51
Скачивания прекратились, я файлы и удалил.

solegstar
29.01.2024, 15:32
Скачивания прекратились, я файлы и удалил.
понятно. ну, если будут какие-то обновления, напиши, ок? проект интересный!

IanPo
30.01.2024, 13:24
Из планируемых обновлений только UART и 16-цветный режим (без палитры), но это будет летом, не раньше.

IanPo
05.09.2024, 09:27
Для lisica выкладываю исходники(+ проект для чипа ВГ)
81209

Также ссылка на всю документацию, что у меня есть (69 МБ) https://disk.yandex.ru/d/oVwXbOK3ROe-Gw

IanPo
01.10.2024, 15:40
Я добавил в документацию схему соединения модулей.
Первоначальная идея подключения была - вынимаем чип из Феникса с читалкой - ставим эмулятор.
Остается схема дешифратора адреса ВГ с сигналом TRDOS и внешние буферы-инверторы.
Из TOP приходит два сигнала, которые нужны для сброса DRQ и INTRQ при обращении к регистрам статуса и данных (см.справ.лист на ВГ для уточнения).
Надеюсь, вышеприведенное поможет адаптировать эмулятор к другим проектам
81339

Kalantaj
06.08.2025, 17:31
Я так понял проект всё? Оч хотелось бы довести до 100% эмуляцию ВГ93. Вот вроде всё работает, но , например в том же PowerUp "видео" не воспроизводит. Оч жаль. Несколько проектов используют эмуляцию ВГ93 и у всех, соответственно, одинаково не работает как хотелось бы с дисководом. Ещё "косяк" один заметил. Беру SoftCopy. В дисковод А вставляю реальную дискету, в дисковод B - образ примонтировал. Форматирую штатно дискету в А и копировщиком начинаю копировать данные без форматирования с B на A. Считался первый кусок с B и нормально записался на A, Затем считался с B второй кусок и при записи на A выкатывает ошибку в секторе 1. Нажимаю повтор и всё запитсывается нормально. И так до конца дискеты при записи каждого последующего куска данных вываливает ошибку в секторе 1, а после Retry - пишет нормально.
Автор написал что у него ограниченный ресурс для тестирования. Я готов по мере сил помочь с тестами - могу заказать и собрать компьютер и в дальнейшем проводить тесты. есть несколько разных дисководов. как 3.5 так и 5.25