Важная информация

User Tag List

Страница 1 из 8 12345 ... ПоследняяПоследняя
Показано с 1 по 10 из 80

Тема: ZX Spectrum на частоте 20 (24) МГц без WAIT

  1. #1
    Member Аватар для Example626
    Регистрация
    07.08.2007
    Адрес
    Нижний Новгород
    Сообщений
    77
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию ZX Spectrum на частоте 20 (24) МГц без WAIT

    В общем, я тут уже отписывался в сторонних ветках. Хочу просто в одной теме выкладывать свои наработки.
    Немного вяловато разрабатываю платформу ZX Spectrum, работающую с любыми тактовыми частотами процессора от 0 до 20 МГц (зависит от частоты тактового генератора).
    В качестве задающего генератора можно использовать либо внешний источник сигнала (тогда частота процессора не привязана к частоте видео), либо один из сигналов, привязанный к частоте видео и кратный родному тактовому сигналу ZX Spectrum (3,5 Мгц). Основа - тактовый генератор с частотой 56 МГц (3,5x16).
    В том числе есть вариант "привязанной" частоты 18,66667 МГц (56 МГц умножается на 2, делится на 3 и ещё раз делится на 2).
    Схема не использует сигнал Wait и работает по принципу разделения и буферизации всех одновременных обращений к ОЗУ (принцип похож "Пентагоновский", но схема переработана кардинально).
    То есть при одновременном обращении схемы видео и процессора к ОЗУ процессор не тормозится и сохраняет полную производительность.
    Данный тип схемы подразумевает быструю работу схемы и микросхем ОЗУ. У меня используется SRAM с задержкой 10 нс.
    На данный момент схема собрана "на коленке". В её основе лежит ПЛИС Altera EPM3512AQC208-10 ("голова" от платы Igrosoft).
    В ПЛИС зашита схема графического генератора, управления памятью, интерфейс (матрица) клавиатуры для порта PS/2, Beta-интерфейс (но на самой плате пока не реализован), порт FE, порт 7FFD, порт AY (на плате имеется).
    Пока на плате только 48 кБ ОЗУ (не считая 16 кБ теневых) и обычная "Пентагоновская" ПЗУ-шка, порт магнитофона и RGB-выход без цветового кодирования (PAL, например), поэтому пока чёрно-белый на обычном телевизоре, подключенном по входу НЧ.
    Два кварцевых генератора - один на 56 МГц для видео, другой на 40 МГц - для процессора (делится на 2).
    Схемы буду выкладывать по мере их "причёсывания". Пока всё очень "лохмато" и требует перерисовки. Буду рад, если кто-нибудь поможет как-то упростить и оптимизировать схему, так как она довольно громоздкая.
    Я уже выкладывал один вариант, но оказалось, что для частоты 20 МГц он не годится - слишком долгие задержки сигналов процессора для работы с памятью.
    А сейчас могу поделиться видео, как я пытался поиграть в Elite на этой частоте.
    Смотрите, но сильно не ругайте - не играл очень давно, и с управлением на такой скорости беда:

    Последний раз редактировалось Example626; 06.12.2018 в 04:21.

  2. #1
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  3. #2
    Guru Аватар для CodeMaster
    Регистрация
    26.04.2009
    Адрес
    г. Воронеж
    Сообщений
    6,234
    Спасибо Благодарностей отдано 
    140
    Спасибо Благодарностей получено 
    211
    Поблагодарили
    182 сообщений
    Mentioned
    6 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Example626 Посмотреть сообщение
    и с управлением на такой скорости беда:
    А чём тогда смысл разгона до таких частот, чисто академический? Кстати, а частота будет меняться динамически? Типа в командере работаешь на полной, а при запуске софта можешь переключиться на 3.5 или 7.
    "Во времена всеобщей лжи говорить правду - это экстремизм" - афоризм.

  4. #3
    Member Аватар для Example626
    Регистрация
    07.08.2007
    Адрес
    Нижний Новгород
    Сообщений
    77
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    CodeMaster,
    1. Да, смысл, конечно, академический, но академические разработки зачастую ведут к прикладным воплощениям, если есть потребность.
    2. Смысл номер два в том, что а что это Z80 под частоту 20 МГц существует, а Спектрума на нём нету? Непорядок!
    3. Это в этой игре управление привязано к частоте процессора, а есть игры, где управление привязано к частоте INT, которая постоянна и равна частоте кадровой развёртки (50 Гц). В таких играх даже на больших частотах управление будет одинаковым.
    4. Есть идея сделать видеорежим 1024x576 (стандарт PAL 16:9 с квадратными пикселами, полный экран без бордюра). Такой экран раскачать даже на частоте 20 МГц сложновато. И это при стандартной спектрумовской реализации видеоотображения. А есть желание сделать этот режим 256 (или хотя бы 16) цветов для каждой точки (моя схема способна обработать такой режим видео с частотой процессора 20 МГц). Тогда и 20 МГц для него очень мало, если писать, например, какую-нибудь игру.
    Я ведь не только для себя делаю, поделюсь наработками здесь. А вдруг кто реализует в небольшой серии? Может, и я сам платы доразработаю и закажу несколько платок.
    Мало ли...

    По поводу динамического управления частотой:
    У меня в схеме пока предусмотрено ручное управление кнопкой (турбо 20 / обычный 3,5 МГц). Однако я хотел бы сделать управление программное и к тому же с плавной регулировкой производительности процессора. Для этого хочу применить ШИМ для сигнала BUSRQ. У меня данная схема во времена оные работала и регулировалась переменным резистором. Я хочу сделать управление программное, но вопрос в использовании портов - какие порты и как использовать? Это вопрос к стандартизации схем Спектрума. Я могу сделать отсебятину и забить под них произвольные порты, но если схема пойдёт в массы и будет конфликтовать с какими-то другими схемами, мне не известными, будет не очень хорошо. Поэтому здесь надо аккуратно подходить.
    Хочу пока вывести управление просто на клавиатуру (PC-шную) - клавиши PgUp и PgDn, например.
    Последний раз редактировалось Example626; 06.12.2018 в 09:44.

  5. #4
    Guru Аватар для CodeMaster
    Регистрация
    26.04.2009
    Адрес
    г. Воронеж
    Сообщений
    6,234
    Спасибо Благодарностей отдано 
    140
    Спасибо Благодарностей получено 
    211
    Поблагодарили
    182 сообщений
    Mentioned
    6 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Example626 Посмотреть сообщение
    если есть потребность.
    Мне вот и интересно, есть ли она.

    Цитата Сообщение от Example626 Посмотреть сообщение
    Z80 под частоту 20 МГц существует, а Спектрума на нём нету? Непорядок!
    Ну, да, Northwood свой Пентагон с 14 МГц забросил, но 20-ть действительно никто вроде не штурмовал (не считая софт-ядра у vlad'а, которые то ли на 24-х, то ли на 48-и работают).

    Цитата Сообщение от Example626 Посмотреть сообщение
    Z80 под частоту 20 МГц существует
    А что кстати не 21? Наверняка он взлетит и с делителями будет проще.

    Цитата Сообщение от Example626 Посмотреть сообщение
    а есть игры, где управление привязано к частоте INT
    Эт я знаю, но какой смысл для них в более быстром проце тогда?

    Цитата Сообщение от Example626 Посмотреть сообщение
    если писать, например, какую-нибудь игру
    Тогда действительно чисто академический ;-)

    Цитата Сообщение от Example626 Посмотреть сообщение
    Я ведь не только для себя делаю, поделюсь наработками здесь.
    Я ни в коем случае не против, ни для себя, ни для всех.

    Цитата Сообщение от Example626 Посмотреть сообщение
    А вдруг кто реализует в небольшой серии?
    Это сейчас вообще не проблема, только зачем, что бы стояло на полочке?

    Цитата Сообщение от Example626 Посмотреть сообщение
    Однако я хотел бы сделать управление программное и к тому же с плавной регулировкой производительности процессора.
    Это ИМХО лишнее. По большому счёту надо только 20/7/3.5 но с возможность менять на ходу. Типа запустил софт, но что-то не так и кнопочкой снижаешь частоту. И ещё там что-то надо делать с софтом который работает с дискетами, но у тебя подключения дисководов наверное не будет.
    "Во времена всеобщей лжи говорить правду - это экстремизм" - афоризм.

  6. #5
    Member Аватар для Example626
    Регистрация
    07.08.2007
    Адрес
    Нижний Новгород
    Сообщений
    77
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от CodeMaster Посмотреть сообщение
    А что кстати не 21?
    А как 56 МГц в 21 преобразовать? Или даже 112?
    На самом деле, частота роли не играет - кварц ставь любой, какой хочешь. Просто с частотами выше 20 МГц моя схема, я не думаю, что справится. Потому что у ПЛИС задержка 10 нс и у ОЗУ 10 нс. А на самом деле и такие задержки в реале больше. И 20 МГц - это некий физический предел. Для более быстрых частот нужны какие-то другие ПЛИС и ОЗУ. Но процессор на 20 МГц, и у меня задача стояла вывести схему именно на эту частоту.
    Я пробовал 24 МГц, но она не заработала. Правда, ещё на старой схеме. На доработанной не пробовал. Попробую.


    Цитата Сообщение от CodeMaster Посмотреть сообщение
    Это ИМХО лишнее. По большому счёту надо только 20/7/3.5 но с возможность менять на ходу.
    Может, и лишнее, но, например, при отладке программы мне очень пригождалось сильное замедление - 1-5 процентов производительности - чтобы видеть, например, прорисовку спрайта и т.п.
    Цитата Сообщение от CodeMaster Посмотреть сообщение
    Это сейчас вообще не проблема, только зачем, что бы стояло на полочке?
    Так а для чего вообще Спектрум нынче нужен? Это просто хобби. Для энтузиастов.

  7. #6
    Guru Аватар для CodeMaster
    Регистрация
    26.04.2009
    Адрес
    г. Воронеж
    Сообщений
    6,234
    Спасибо Благодарностей отдано 
    140
    Спасибо Благодарностей получено 
    211
    Поблагодарили
    182 сообщений
    Mentioned
    6 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Example626 Посмотреть сообщение
    А как 56 МГц в 21 преобразовать? Или даже 112?
    А зачем 56, можно же кварц на 42 взять.

    Цитата Сообщение от Example626 Посмотреть сообщение
    Потому что у ПЛИС задержка 10 нс и у ОЗУ 10 нс.
    В принципе допуск +5% должен пролезть. Но вопросы там и 20-ти ИМХО будут (если будет периферия).

    Цитата Сообщение от Example626 Посмотреть сообщение
    Может, и лишнее, но, например, при отладке программы мне очень пригождалось сильное замедление - 1-5 процентов производительности - чтобы видеть, например, прорисовку спрайта и т.п.
    Не вопрос, но для этого достаточно сделать одну фиксированную частоту 200-300 кГц.

    Цитата Сообщение от Example626 Посмотреть сообщение
    Так а для чего вообще Спектрум нынче нужен?
    Использовать имеющийся софт. Кто-то что-то пописывает (пописывали) по ньюСпектрумы (Sprinter, ZX Evo, Spec256) но это единичные случаи их не покупают из-за нового софта. Посмотрим, что будет с ZX Spectrum Next, но это немного другая тема (его ещё никто особо не видел, но его уже занесли в Основные модели на этом форуме).
    "Во времена всеобщей лжи говорить правду - это экстремизм" - афоризм.

  8. #7
    Guru Аватар для bigral
    Регистрация
    12.07.2006
    Адрес
    г. Киев, Украина
    Сообщений
    2,147
    Спасибо Благодарностей отдано 
    25
    Спасибо Благодарностей получено 
    95
    Поблагодарили
    82 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    1) смысл турбо спектрума очевиден - почти 80% игр спектрума или не синхронизированны с кадровой или тормозят; типичный пример boulder dash, игра написанна хорошо но не хватает скорости, возможно если переделать на 128к с его double buffer то можно достичь того же качества что на atari 8bit и с64, но пока никто не переделал; отчасти успех pentagon-а был именно в том что у него было немного больше тактов "на прерывание" а производители игрушек старались использовать производительность "на полную катушку" и подгоняли игру так что она уже немного подтормаживала но еще терпимо работала; опять же boulder dash хороший пример того как игра на pentagon работает немного лучше чем на оригинале, потому что успевает прорисовать больше за кадр.

    2) разные частоты ЗЛО! изза этого никто и не переделывает игры под "турбо-спектрум" потому что никто не знает на какое количество тактов ориентироваться... 7mhz? 14mhz? 20mhz? вполне можно предположить что если бы был какой-то один стандарт турбо то под него бы кто-то что-нибудь и переделал бы. Ну там про мультиколоры, которые как бы логично иметь при более высоких частотах я вообще молчу потому что всякие схемы турбирования с разной скоростью выполняют код по отношению к ходу луча (равно как и времянки клонов тоже разные очень). Как с этим всем жить? 1й вариант - жестко определить стандарт по типу вот как "ZX-48 оригинал" и все времянки как у него. Это вариант жесткий дает возможность писать мультиколоры. 2й вариант - стандартизировать только минимально необходимое количество тактов на 1 кадр. Например минимум 68888 тактов на кадр. (ну и иметь 4 таких стандартных профиля для 3.5, 7, 14 и 20mhz. А разработчик уже по мере возможности будет стараться влезть в "минимальный" профиль, думаю 99% существующих игр можно переделать на 7mhz профиль (128k с двумя экранами) и после этого они будут работать очень плавно и красиво как например "ghouls and ghosts").

    3) ну и да, чтобы это все имело смысл давайте оставаться в переделах спектрум retro платформы, 10ns это 100mhz... да еще и sram (не требует refresh-a) да еще и жирный cpld... это уже не спектрум, эта штука способна >14000 раз в секунду экран спектрума перерисовать, это платформа для экспериментов но уже не спектрум. Так что планируя что-либо надо подразумевать что конструкция должна быть реализуема на советских микросхемах (555,1533,559,... + советская память).
    Последний раз редактировалось bigral; 06.12.2018 в 18:25.

  9. #8
    Veteran Аватар для sergio78
    Регистрация
    27.10.2011
    Адрес
    Самара
    Сообщений
    1,139
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    28
    Поблагодарили
    24 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от CodeMaster Посмотреть сообщение
    Посмотрим, что будет с ZX Spectrum Next,
    а ничего с ним не будет. кто купит, положат на полку для клекции. а все остальные про него забудут немного погодя.

  10. #9
    Member Аватар для Example626
    Регистрация
    07.08.2007
    Адрес
    Нижний Новгород
    Сообщений
    77
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от CodeMaster Посмотреть сообщение
    А зачем 56, можно же кварц на 42 взять.
    Я просто подумал, что речь идёт о "зависимом" генераторе. Так как речь шла о делителях. А так-то да, можно и на 42 МГц взять.

    - - - Добавлено - - -

    Цитата Сообщение от bigral Посмотреть сообщение
    10ns это 100mhz
    Вы забываете, что надо не просто на этой частоте данные из ОЗУ прочитать. Нужно сигнал от процессора принять (задержка), сформировать управляющий импульс (задержка), считать данные из ОЗУ и записать в буфер (опять задержка), потом данные нужно считать из буфера.
    По факту я уже долгое время мучаю схему, и импульс чтения процессором из ОЗУ у меня равен (по симулятору - осциллографа на такую частоту у меня нет) 36 нс. Если я его уменьшаю, комп не работает - видимо, не успевает прочитаться. Если увеличиваю - тоже не работает (на высокой частоте), так как процессор "обгоняет" схему и на его входах не успевают сформироваться данные для чтения. Повторюсь - какой именно импульс, я точно не знаю, так как формируется он без привязки к тактам. Нужно смотреть осциллографом. Но у меня и 14 МГц уже еле-еле видно.
    Если бы речь шла просто о доступе к SRAM без всяких одновременных обращений графики и проца - таки да - читается, как из ПЗУ-шки. Там и на 70 нс микросхема подойдёт.

    По поводу разных частот не соглашусь: а ничего что на PC, например, все программы как-то работают на разных частотах и ничего. Просто программа предъявляет некие требования к компу, а пользователь понимает, потянет он её или нет. Для канонического Спектрума это тоже справедливо - есть игры только для 128 кБ, есть с музыкальным сопроцессором, а есть и без. Даже есть те, которым обязательно нужен Кемпстон-джойстик, иначе не поиграешь. И ничего. Если у тебя было только 48 кБ, ты просто не покупал игру для 128-го, а искал попроще и мечтал нарастить память.
    На примере PC - одно тянет другое. Увеличивается мощность компа - программисты пишут под него более тяжёлый софт, более тяжёлый софт провоцирует производителей железа увеличивать его мощность, и так по кругу.
    Потом, одна и та же игра может быть настраиваемой под производительность компа - на более медленном похуже графика, например. Спектрум и не получил дальнейшего развития отчасти и потому, что перестал эволюционировать. Как в плане процессора, так и в плане графики. Память и музыку как разовый апгрейд в расчёт не берём.
    Последний раз редактировалось Example626; 06.12.2018 в 19:51.

  11. #10
    Guru Аватар для CodeMaster
    Регистрация
    26.04.2009
    Адрес
    г. Воронеж
    Сообщений
    6,234
    Спасибо Благодарностей отдано 
    140
    Спасибо Благодарностей получено 
    211
    Поблагодарили
    182 сообщений
    Mentioned
    6 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Example626 Посмотреть сообщение
    а ничего что на PC, например, все программы как-то работают на разных частотах и ничего.
    На ПЦ тоже полно нестыковок и костылей, но что про это говорить ПЦ - живая платформа.

    Цитата Сообщение от bigral Посмотреть сообщение
    думаю 99% существующих игр можно переделать на 7mhz профиль (128k с двумя экранами) и после этого они будут работать очень плавно и красиво как например "ghouls and ghosts").
    И уже создана куча таких компов, но игры так что-то никто не переделывает.

    Цитата Сообщение от bigral Посмотреть сообщение
    разные частоты ЗЛО! изза этого никто и не переделывает игры под "турбо-спектрум" потому что никто не знает на какое количество тактов ориентироваться... 7mhz?
    Хотя бы на 7, у которого борода до пола.
    "Во времена всеобщей лжи говорить правду - это экстремизм" - афоризм.

Страница 1 из 8 12345 ... ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Ответов: 10
    Последнее: 28.02.2019, 17:39
  2. Полосы в ZX Spectrum без ПЗУ как образуются?
    от PATHNK в разделе Программирование
    Ответов: 13
    Последнее: 28.04.2013, 09:54
  3. О частоте огибающей.
    от Enigmatic в разделе Музыка
    Ответов: 2
    Последнее: 08.10.2010, 20:18
  4. Схемы WAIT для различных клонов ZX Spectrum
    от ARTi в разделе Несортированное железо
    Ответов: 0
    Последнее: 28.04.2008, 16:57
  5. Ленинград-1 без WAIT - косяк :(
    от skyther в разделе Ленинград
    Ответов: 20
    Последнее: 06.07.2006, 19:14

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •