SpetSvga-2011 --> ТурбоСпец/MiniWhiz-2023

Обсуждение советского компьютера Фахiвець / Специалист и его развитие

Moderator: Lavr

User avatar
Shaos
Admin
Posts: 24080
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: SpetSvga-2011 --> MiniWhiz-2023

Post by Shaos »

Пытаюсь разобраться как в MX^2 тактируется Z80...

В схеме, что железочел тут оставил в 2011 году, всё было просто:
Screenshot from 2023-02-20 19-21-53.png
(N2M это инвертированные 2.5 МГц)

А вот в последней схеме MX^2, что недавно Fifan выложил, есть замысловатости:
MX2-clock.jpg
Или FSL это и есть та самая кнопка замедления, которая переключает из 2.5 МГц в 2 МГц?

Я тут части формирователя фаз для i8080 тоже вытащил на картинку т.к они там тоже замешаны, а в старой схеме F2 получался непосредственно из 2.5 МГц (которые там назывались 2M):
Screenshot from 2023-02-20 20-57-11.png
You do not have the required permissions to view the files attached to this post.
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 24080
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: SpetSvga-2011 --> MiniWhiz-2023

Post by Shaos »

Я правильно понимаю, что асинхронный счётчик DD6 считает до 10 т.к. сбрасывается на цифре 10 (1010)?
И выход Q находится в 1 в последних двух тактах, т.е. 0 0 0 0 0 0 0 0 1 1
QT это запомненное на триггере значение кнопки FSL - причём запоминание происходит по фронту сигнала Q
FSL' это !(QT & Q) и далее оно гейтует тактирование на оба проца.
Если QT=0, то FSL'=1 всегда и оба проца просто получают 2.5 МГц в качестве клока.
Если QT=1, то FSL' будет 1 только 4/5 времени - пропуская каждый пятый такт?
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
fifan
Devil
Posts: 912
Joined: 06 Oct 2006 03:17
Location: г.Лянтор,Сургутского р-на,ХМАО

Re: SpetSvga-2011 --> MiniWhiz-2023

Post by fifan »

Всё верно в рассуждениях.
User avatar
Shaos
Admin
Posts: 24080
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: SpetSvga-2011 --> MiniWhiz-2023

Post by Shaos »

fifan wrote:Всё верно в рассуждениях.
Я как-то всё равно не улавливаю в каком месте находится та самая хитрость, которая позволяет Z80 не конфликтовать с граф.контроллером?...

P.S. Кстати я у себя могу сделать аналогичное замедление 3.5 МГц, используя 3/5 вместо 4/5 (скажем по схеме 0 0 1 1 0 0 0 0 1 1 вместо 0 0 0 0 0 0 0 0 1 1), что даст эквивалент 2.1 МГц - почти что классические 2 :mrgreen:

P.P.S. О - а если программно разрешить переключать это наряду с кнопкой и турбами? ;)

Code: Select all

00 -> 2.0 МГц (прореживание тактов 3/5)
01 -> 3.5 МГц (без вейтов и прореживания)
10 -> 5…7 МГц (2x турбо с вейтами)
11 -> 10…14 МГц (4x турбо с вейтами)
т.е. тут сможет работать Z80 на 16 и на 20 МГц (хотя в данный момент у нас доставаемы только 20 МГц в DIP40)

P.P.P.S. Кстати такой момент - чтобы влезть в стандартные времянки SVGA 800x600@60 я выбрал неровное количество точек, которое не кратно восьми - 739. Получается, что в последнем неполном "знакоместе" будет 3 "бесхозных" пиксела, в течение которых проц лучше бы не тактировать и к началу следующей строки нужно будет обнулить этот счётчик тактов, чтобы он начал считать сначала строки с "правильной ноги" т.е. фактически частота "непрореженного" процессора будет не 3.5 МГц, а 3.486 МГц, что на 0.4% меньше ожидаемого, а "прореженного" по схеме 3/5 - 2.084 МГц т.к. в 92.375 знакомест каждой строки будет попадать ровно 55 рабочих тактов.

P.P.P.P.S. Можно на плате иметь кнопочку, переключающую режимы и 2 семисегментных индикатора, которые будут показывать текущую частоту :mrgreen:
indicator_2_0.png
indicator_3_5.png
indicator_7_0.png
indicator_14.png
You do not have the required permissions to view the files attached to this post.
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 24080
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: SpetSvga-2011 --> MiniWhiz-2023

Post by Shaos »

По поводу вейтов - поглядим на режимы и нарезку памяти MX^2:

Code: Select all

[Режим 0: MX RAM (запись в FFFCH)]
0000H - FFDFH = Основное ОЗУ.
FFE0H - FFFFH = Порты ввода-вывода

[Режим 1: MX EXT RAM (запись в FFFDH)]
0000H - FFBFH = Дополнительное ОЗУ
FFC0H - FFDFH = Основное ОЗУ (шлюз)
FFE0H - FFFFH = Порты ввода-вывода

[Режим 2: MX ROM (запись в FFFEH)]
0000H - 7FFFH = ПЗУ МХа, включая систему в первых 16КБ
8000H - FFDFH = Основное ОЗУ
FFE0H - FFFFH = Порты ввода-вывода

[Режим 3: STD (запись в FFFFH или по сбросу)]
0000H - 7FFFH = ПЗУ (секция STD) или основное ОЗУ, управление: FFFAH
8000H - EFFFH = Основное ОЗУ
F000H - FFFFH = Порты ввода-вывода, причем в области F800H-FFFFH блокируется на ППА клавиатуры 
На частотах 7 или 14 МГц в режиме 0 и 3 выставляем /WAIT по /MREQ или /IORQ если пробегается зона графики (это 21% кадра для 384x256, 53% для 480x256 и 56% для 512x256).
В режиме 1 делаем это только если обращение идёт к памяти выше #FFC0 (т.к. ниже идёт доп.память, которую вейтить ненадо т.к. она совсем сбоку).
В режиме 2 память наполовину заполнена медленным (скорее всего) ПЗУ, поэтому тут наверное турбу надо вообще сбрасывать.
Также надо сбрасывать турбу, если в режиме 3 подключено ПЗУ вместо ОЗУ (при сбросе турбы уже ничего вейтить ненадо).

P.S. Надо подумать может быть ещё нужно вейтить разогнанный проц при обращении в область портов ввода-вывода в независимости от графики - просто чтобы успело вычитать что-то из медленных ВВ55х (современные 82C55 умеют максимум 8 МГц)...
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
fifan
Devil
Posts: 912
Joined: 06 Oct 2006 03:17
Location: г.Лянтор,Сургутского р-на,ХМАО

Re: SpetSvga-2011 --> MiniWhiz-2023

Post by fifan »

Мне идея с индикатором частоты понравилась.
Last edited by fifan on 23 Feb 2023 06:07, edited 1 time in total.
User avatar
Lavr
Supreme God
Posts: 16689
Joined: 21 Oct 2009 08:08
Location: Россия

Re: SpetSvga-2011 --> MiniWhiz-2023

Post by Lavr »

Shaos wrote:Я правильно понимаю, ...
А ты это смоделируй, а то на словах слишком замысловато...

И у Железного Дровосека была фраза "мы воруем у процессора...", вот что воруем - уже забыл я. :wink:
А фраза почему-то запомнилась...
iLavr
User avatar
Shaos
Admin
Posts: 24080
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: SpetSvga-2011 --> MiniWhiz-2023

Post by Shaos »

Lavr wrote:
Shaos wrote:Я правильно понимаю, ...
А ты это смоделируй, а то на словах слишком замысловато...
Ну я типа смоделировал - в голове :lol:
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 24080
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: SpetSvga-2011 --> ТурбоСпец/MiniWhiz-2023

Post by Shaos »

Возможно надо сделать чтение взад как минимум одного регистра - старших битов адреса.
Заодно можно туда примешать битики кадрового синхроимпульса и даже наврное строчного синхроимпульса :)
Это чтобы можно было без торможения читать их сосотяние - скажем по адресу #FFFF.
А чтение из порта COL можно замкнуть на чтение текущего байта цвета - в этом случае можно будет всякие хитрые штуки делать ;)
Цена вопроса - два буфера плюс 2 гейта OR :dj:
Shaos wrote:Посмотрел какие есть синонимы в английском языке слову "Specialist":



Может быть имеет смысл назвать эту реинкарнацию скажем MiniWhiz-MX2023? :roll:

Или просто MiniWhiz-2023 (MW2023)

("mini" т.к. предполагается плата в формате mini-ITX либо в будущем mini-DTX)
Пока наверное mini-ITX/DTX c ISA-слотами делать рано - туда ведь ещё и контроллер USB-клавы (и мыши) на PIC24 городить придётся :roll:
Наверное для начала надо выкатить то, что я и планировал в 2011 году:
Shaos wrote:Из моих нововведений - стандартная клавиатура Специалиста предполагается быть смонтирована непосредственно на плате компьютера, имеется больше памяти (включая теневой экран) и интерфейс для 512Кбайтного картриджа, пятицвет и восьмицвет могут переключаться и программно, и вручную (кнопочками т.к. цветные игры не знают на чём они запущены и цветность надо будет пробовать экспериментально - ручками).
Можно бортовую клавку сразу QWERTY сделать и даже с кнопочками Cherry-MX - тогда будет оправдано название MX2023 :lol:
Пока для простоты можно в русскоязычной обстановке ссылаться на это поделие как "ТурбоСпец" :mrgreen:
ТурбоСпец Rev.A не будет иметь аппаратного текстового режима и графического режима "цвет на точку" (там надо ещё думать), но будет иметь режим турбо :)
Работы с портами как с портами и ISA-слотов также пока не предвидится ( можно сделать пару разъёмов MX-BUS как в MX^2 - так сказать для преемственности поколений : )
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 24080
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

SpetSvga-2011 --> ТурбоСпец/MiniWhiz-2023

Post by Shaos »

Shaos wrote: В формировании логики графического контроллера принимает участие сигнал ALD, который в схеме от Fifan-а просто идёт с выхода переполнения первого счётчика, а в моей схеме как-то хитро замешан 2M & !5M & 10M & 20M - видимо это из-за того, что далее на счётчики идёт инверсный 2M, поэтому будем придерживаться схемы (в том числе нумерации микросхем), которую нарисовал Fifan т.е. ALD = 2M5 & 5M & 10M & 20M и далее на счётчики идёт прямой 2M5.
Ввиду того, что на цепочку счётчиков знакомест в качестве тактирования идёт прямой сигнал 2M5, а не инверсный, то это значит, что ALD приходится на середину знакоместа?
Надо просмотреть внимательно как стробируется сдвигатель пикселов...
По старой схеме STB = 2M & !5M & 10M
Ещё есть сигнал S/C = 2M & !5M, который выбирает какие адресные биты подключаются к адресам основной памяти и памяти цвета
В новой схеме STB = 2M5 & 5M & 10M и S/C = 2M5 & 5M (т.е. похоже на старую схему, но только 5M не инвертированный)
т.е. из этих сигналов S/C самый широкий, к его концу примыкает STB, к концу которого примыкает ALD:

Code: Select all

PIX  0   1   2   3   4   5   6   7   8   9  10  11  12  13  14  15 
      _   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _
20M _| |_| |_| |_| |_| |_| |_| |_| |_| |_| |_| |_| |_| |_| |_| |_| |
        ___     ___     ___     ___     ___     ___     ___     ___
10M ___|   |___|   |___|   |___|   |___|   |___|   |___|   |___|   |
            _______         _______         _______         _______
5M  _______|       |_______|       |_______|       |_______|       |
                    _______________                 _______________
2M  _______________|               |_______________|               |
    _______         _______         _______         _______
!5M        |_______|       |_______|       |_______|       |_______|
    _______________                 _______________
!2M                |_______________|               |_______________|
                          _                               _
OlddALD _________________| |_____________________________| |________
                        ___                             ___
OldSTB ________________|   |___________________________|   |________
                    _______                         _______
OldS/C ____________|       |_______________________|       |________
    _______________                 _______________
OldCLK             |_______________|               |_______________|
                                    _______________________________
OldX0 _____________________________|                               |
                                  _                               _
NewALD __________________________| |_____________________________| |
                                ___                             ___
NewSTB ________________________|   |___________________________|   |
                            _______                          ______
NewS/C ____________________|       |________________________|      |
             ______________                  _______________
NewCLK _____|              |________________|               |_______
                     _______________________________
NewX0 ______________|                               |_______________
Либо тут не важно в каком месте начинается X0 (нулевой бит номера знакоместа), а в каком заканчивается - главное, чтобы во время этих стробов адресный сигнал был стабильный?
И похоже стробы с клоком, что на проц идёт, вполне единообразно выводятся - что в старой схеме, что в новой (хотя в новой X0 уже в 1 при первом стробе).
И это видимо как-то соотносится с реалиями Z80:
You do not have the required permissions to view the files attached to this post.
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 24080
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: SpetSvga-2011 --> ТурбоСпец/MiniWhiz-2023

Post by Shaos »

Shaos wrote:Либо тут не важно в каком месте начинается X0 (нулевой бит номера знакоместа), а в каком заканчивается - главное, чтобы во время этих стробов адресный сигнал был стабильный?
И похоже стробы с клоком, что на проц идёт, вполне единообразно выводятся - что в старой схеме, что в новой (хотя в новой X0 уже в 1 при первом стробе)...
Я понял - в MX^2 видимая часть экрана начинается только на 16-м знакоместе, поэтому ничего страшного нету в том, что нулевое знакоместо "потерялось", но в моём варианте его терять нельзя т.к. у меня видимая часть экрана начинается прям сразу же (хотя в начале строки у меня тоже не графика будет, а бордюр) - можно попробовать остаться в парадигме более ранней схемы хардыча, но сделать сквозной синхронный счёт:

Code: Select all


PIX  0   1   2   3   4   5   6   7   8   9  10  11  12  13  14  15 
      _   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _
28M _| |_| |_| |_| |_| |_| |_| |_| |_| |_| |_| |_| |_| |_| |_| |_| |
        ___     ___     ___     ___     ___     ___     ___     ___
14M ___|   |___|   |___|   |___|   |___|   |___|   |___|   |___|   |
            _______         _______         _______         _______
7M  _______|       |_______|       |_______|       |_______|       |
                    _______________                 _______________
3M5 _______________|               |_______________|               |
    _______         _______         _______         _______
!7M        |_______|       |_______|       |_______|       |_______|

PIXBITS                    | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |...
                          _                               _
ALD _____________________| |_____________________________| |________ 3M5 & !7M & 14M & 28M
                        ___                             ___
STB ___________________|   |___________________________|   |________ 3M5 & !7M & 14M
                    _______                         _______
S/C _______________|       |_______________________|       |________ 3M5 & !7M
    _______________                 _______________
CLK|               |_______________|               |_______________| !3M5
            _______         _______         _______         _______
CLK2_______|       |_______|       |_______|       |_______|       | 7M
                 WAIT-WAIT-WAIT                  WAIT-WAIT-WAIT
        ___     ___     ___     ___     ___     ___     ___     ___
CLK4___|   |___|   |___|   |___|   |___|   |___|   |___|   |___|   | 14M
                 WAIT-WAIT-WAIT                  WAIT-WAIT-WAIT
                                    _______________________________
X0  _______________________________|                               |
тут видно, что графика как бы сдвинута на 6 пикселов вправо - наверное это надо учитывать при выборе моментов, в которые надо начинать и заканчивать рисовать бордюр (хотя бордюр тоже кратный знакоместам будет и его будут выводить те же самые сдвиговые регистры).

P.S. Также я там пририсовал циклы ожидания для турбо-режимов - выходит, что на фоне графики теряться будут половина циклов (в худшем случае).
Наверное 7 МГц можно и без вейтов нагородить, если применить пентагоновский трюк с регистром, но мне пока неохота на эту тему голову ломать...
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 24080
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: SpetSvga-2011 --> ТурбоСпец/MiniWhiz-2023

Post by Shaos »

Либо можно попробовать сделать некое гибридное решение - сквозной счёт, но формирование управляющих сигналов, как в более новой схеме MX^2:

Code: Select all

PIX  0   1   2   3   4   5   6   7   8   9  10  11  12  13  14  15 
      _   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _
28M _| |_| |_| |_| |_| |_| |_| |_| |_| |_| |_| |_| |_| |_| |_| |_| |
        ___     ___     ___     ___     ___     ___     ___     ___
14M ___|   |___|   |___|   |___|   |___|   |___|   |___|   |___|   |
            _______         _______         _______         _______
7M  _______|       |_______|       |_______|       |_______|       |
                    _______________                 _______________
3M5 _______________|               |_______________|               |

PIXBITS                            | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |...
                                  _                               _
ALD _____________________________| |_____________________________| | 3M5 & 7M & 14M & 28M
                                ___                             ___
STB ___________________________|   |___________________________|   | 3M5 & 7M & 14M
                            _______                         _______
S/C _______________________|       |_______________________|       | 3M5 & 7M
            _______________                 _______________
CLK________|               |_______________|               |________ !7M/2
    _______         _______         _______         _______
CLK2       |_______|       |_______|       |_______|       |_______| !7M
                         WAIT-WAIT-WAIT                  WAIT-WAIT-WAIT
        ___     ___     ___     ___     ___     ___     ___     ___
CLK4___|   |___|   |___|   |___|   |___|   |___|   |___|   |___|   | 14M
                         WAIT-WAIT-WAIT                  WAIT-WAIT-WAIT
                                    _______________________________
X0  _______________________________|                               |
В этом случае графика будет сдвинута на 8 пикселов (т.е. ровно одно знакоместо) - это надо будет учесть при вычислении номеров для начала и конца бордюра и рабочей графики...
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 24080
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: SpetSvga-2011 --> ТурбоСпец/MiniWhiz-2023

Post by Shaos »

Shaos wrote:
fifan wrote:Всё верно в рассуждениях.
Я как-то всё равно не улавливаю в каком месте находится та самая хитрость, которая позволяет Z80 не конфликтовать с граф.контроллером?...

P.S. Кстати я у себя могу сделать аналогичное замедление 3.5 МГц, используя 3/5 вместо 4/5 (скажем по схеме 0 0 1 1 0 0 0 0 1 1 вместо 0 0 0 0 0 0 0 0 1 1), что даст эквивалент 2.1 МГц - почти что классические 2 :mrgreen:

P.P.S. О - а если программно разрешить переключать это наряду с кнопкой и турбами? ;)

Code: Select all

00 -> 2.0 МГц (прореживание тактов 3/5)
01 -> 3.5 МГц (без вейтов и прореживания)
10 -> 5…7 МГц (2x турбо с вейтами)
11 -> 10…14 МГц (4x турбо с вейтами)
т.е. тут сможет работать Z80 на 16 и на 20 МГц (хотя в данный момент у нас доставаемы только 20 МГц в DIP40)
А можно ведь и синхронную тормозилку сделать - без дополнительного счётчика - прямо на основных счётчиках - пускать такты на проц каждые 9 из 16 - это будет эквивалентно 3.5/16*9=1.96875 МГц, а с учётом неровности строк оно будет случаться 52 раза из 92.375 возможных т.е. 1.97 МГц, но можно исхитриться и сделать 53 раза - тогда оно уже будет совсем близко - 2.008 МГц. Кстати надо померять на сколько в среднем Z80 по тактам быстрее, чем i8080, например воспользовавшись статистикой, набранной мною в эмуляторе Ориона где-то в нулевых и озвученной тут на форуме в 2011 году.
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 24080
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: SpetSvga-2011 --> ТурбоСпец/MiniWhiz-2023

Post by Shaos »

Вобщем вот что получилось - взял Top60 опкодов, которые покрывают 95% всех команд выполняемых в моём эмуляторе Ориона, и посчитал общее покрытие для 8080, 8085 и Z80 (там где давались 2 цифры - типа успешная/неуспешная проверка - я просто ставил среднее арифметическое, предположив, что вероятности пойти по тому или иному пути равносильны):
OrionStat.png
Получается, что 2.0 МГц 8080 примерно соответствует 1.9336 МГц 8085 или 1.9689 МГц z80 (т.е. z80 в среднем на 1.58% быстрее, чем 8080 при такой же тактовой частоте) - выходит получившиеся выше 1.97 МГц будут ок.

P.S. На следующий вечер перезалил табличку т.к. некоторые цифры были не верные для 8085 - сейчас вроде всё норм ( 8085 на 8080-м подмножестве инструкций даже быстрее z80 оказался ; )
You do not have the required permissions to view the files attached to this post.
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 24080
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: SpetSvga-2011 --> ТурбоСпец/MiniWhiz-2023

Post by Shaos »

Shaos wrote:Чото 56-мегагерцовый осциллятор не так то просто найти.
Кварц чтоли взять и нагородить генератор на инверторах?
P.S. Хотя нашёл чото на ебее - поглядим...
Вот пришли парочка мелких с DigiKey и парочка крупных с eBay - можно начинать экспериментировать ;)
You do not have the required permissions to view the files attached to this post.
Я тут за главного - если что шлите мыло на me собака shaos точка net