SpetSvga-2011 --> ТурбоСпец/MiniWhiz-2023
Moderator: Lavr
-
- Admin
- Posts: 24080
- Joined: 08 Jan 2003 23:22
- Location: Silicon Valley
Re: SpetSvga-2011 --> MiniWhiz-2023
Пытаюсь разобраться как в MX^2 тактируется Z80...
В схеме, что железочел тут оставил в 2011 году, всё было просто:
(N2M это инвертированные 2.5 МГц)
А вот в последней схеме MX^2, что недавно Fifan выложил, есть замысловатости:
Или FSL это и есть та самая кнопка замедления, которая переключает из 2.5 МГц в 2 МГц?
Я тут части формирователя фаз для i8080 тоже вытащил на картинку т.к они там тоже замешаны, а в старой схеме F2 получался непосредственно из 2.5 МГц (которые там назывались 2M):
В схеме, что железочел тут оставил в 2011 году, всё было просто:
(N2M это инвертированные 2.5 МГц)
А вот в последней схеме MX^2, что недавно Fifan выложил, есть замысловатости:
Или FSL это и есть та самая кнопка замедления, которая переключает из 2.5 МГц в 2 МГц?
Я тут части формирователя фаз для i8080 тоже вытащил на картинку т.к они там тоже замешаны, а в старой схеме F2 получался непосредственно из 2.5 МГц (которые там назывались 2M):
You do not have the required permissions to view the files attached to this post.
Я тут за главного - если что шлите мыло на me собака shaos точка net
-
- Admin
- Posts: 24080
- Joined: 08 Jan 2003 23:22
- Location: Silicon Valley
Re: SpetSvga-2011 --> MiniWhiz-2023
Я правильно понимаю, что асинхронный счётчик 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 времени - пропуская каждый пятый такт?
И выход 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
-
- Devil
- Posts: 912
- Joined: 06 Oct 2006 03:17
- Location: г.Лянтор,Сургутского р-на,ХМАО
Re: SpetSvga-2011 --> MiniWhiz-2023
Всё верно в рассуждениях.
-
- Admin
- Posts: 24080
- Joined: 08 Jan 2003 23:22
- Location: Silicon Valley
Re: SpetSvga-2011 --> MiniWhiz-2023
Я как-то всё равно не улавливаю в каком месте находится та самая хитрость, которая позволяет Z80 не конфликтовать с граф.контроллером?...fifan wrote:Всё верно в рассуждениях.
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

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

Code: Select all
00 -> 2.0 МГц (прореживание тактов 3/5)
01 -> 3.5 МГц (без вейтов и прореживания)
10 -> 5…7 МГц (2x турбо с вейтами)
11 -> 10…14 МГц (4x турбо с вейтами)
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 семисегментных индикатора, которые будут показывать текущую частоту

You do not have the required permissions to view the files attached to this post.
Я тут за главного - если что шлите мыло на me собака shaos точка net
-
- Admin
- Posts: 24080
- Joined: 08 Jan 2003 23:22
- Location: Silicon Valley
Re: SpetSvga-2011 --> MiniWhiz-2023
По поводу вейтов - поглядим на режимы и нарезку памяти MX^2:
На частотах 7 или 14 МГц в режиме 0 и 3 выставляем /WAIT по /MREQ или /IORQ если пробегается зона графики (это 21% кадра для 384x256, 53% для 480x256 и 56% для 512x256).
В режиме 1 делаем это только если обращение идёт к памяти выше #FFC0 (т.к. ниже идёт доп.память, которую вейтить ненадо т.к. она совсем сбоку).
В режиме 2 память наполовину заполнена медленным (скорее всего) ПЗУ, поэтому тут наверное турбу надо вообще сбрасывать.
Также надо сбрасывать турбу, если в режиме 3 подключено ПЗУ вместо ОЗУ (при сбросе турбы уже ничего вейтить ненадо).
P.S. Надо подумать может быть ещё нужно вейтить разогнанный проц при обращении в область портов ввода-вывода в независимости от графики - просто чтобы успело вычитать что-то из медленных ВВ55х (современные 82C55 умеют максимум 8 МГц)...
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 блокируется на ППА клавиатуры
В режиме 1 делаем это только если обращение идёт к памяти выше #FFC0 (т.к. ниже идёт доп.память, которую вейтить ненадо т.к. она совсем сбоку).
В режиме 2 память наполовину заполнена медленным (скорее всего) ПЗУ, поэтому тут наверное турбу надо вообще сбрасывать.
Также надо сбрасывать турбу, если в режиме 3 подключено ПЗУ вместо ОЗУ (при сбросе турбы уже ничего вейтить ненадо).
P.S. Надо подумать может быть ещё нужно вейтить разогнанный проц при обращении в область портов ввода-вывода в независимости от графики - просто чтобы успело вычитать что-то из медленных ВВ55х (современные 82C55 умеют максимум 8 МГц)...
Я тут за главного - если что шлите мыло на me собака shaos точка net
-
- Devil
- Posts: 912
- Joined: 06 Oct 2006 03:17
- Location: г.Лянтор,Сургутского р-на,ХМАО
Re: SpetSvga-2011 --> MiniWhiz-2023
Мне идея с индикатором частоты понравилась.
Last edited by fifan on 23 Feb 2023 06:07, edited 1 time in total.
-
- Supreme God
- Posts: 16689
- Joined: 21 Oct 2009 08:08
- Location: Россия
Re: SpetSvga-2011 --> MiniWhiz-2023
А ты это смоделируй, а то на словах слишком замысловато...Shaos wrote:Я правильно понимаю, ...
И у Железного Дровосека была фраза "мы воруем у процессора...", вот что воруем - уже забыл я.

А фраза почему-то запомнилась...
iLavr
-
- Admin
- Posts: 24080
- Joined: 08 Jan 2003 23:22
- Location: Silicon Valley
Re: SpetSvga-2011 --> MiniWhiz-2023
Ну я типа смоделировал - в головеLavr wrote:А ты это смоделируй, а то на словах слишком замысловато...Shaos wrote:Я правильно понимаю, ...

Я тут за главного - если что шлите мыло на me собака shaos точка net
-
- Admin
- Posts: 24080
- Joined: 08 Jan 2003 23:22
- Location: Silicon Valley
Re: SpetSvga-2011 --> ТурбоСпец/MiniWhiz-2023
Возможно надо сделать чтение взад как минимум одного регистра - старших битов адреса.
Заодно можно туда примешать битики кадрового синхроимпульса и даже наврное строчного синхроимпульса
Это чтобы можно было без торможения читать их сосотяние - скажем по адресу #FFFF.
А чтение из порта COL можно замкнуть на чтение текущего байта цвета - в этом случае можно будет всякие хитрые штуки делать
Цена вопроса - два буфера плюс 2 гейта OR
Наверное для начала надо выкатить то, что я и планировал в 2011 году:
Пока для простоты можно в русскоязычной обстановке ссылаться на это поделие как "ТурбоСпец"
ТурбоСпец Rev.A не будет иметь аппаратного текстового режима и графического режима "цвет на точку" (там надо ещё думать), но будет иметь режим турбо
Работы с портами как с портами и ISA-слотов также пока не предвидится ( можно сделать пару разъёмов MX-BUS как в MX^2 - так сказать для преемственности поколений : )
Заодно можно туда примешать битики кадрового синхроимпульса и даже наврное строчного синхроимпульса

Это чтобы можно было без торможения читать их сосотяние - скажем по адресу #FFFF.
А чтение из порта COL можно замкнуть на чтение текущего байта цвета - в этом случае можно будет всякие хитрые штуки делать

Цена вопроса - два буфера плюс 2 гейта OR

Пока наверное mini-ITX/DTX c ISA-слотами делать рано - туда ведь ещё и контроллер USB-клавы (и мыши) на PIC24 городить придётся

Наверное для начала надо выкатить то, что я и планировал в 2011 году:
Можно бортовую клавку сразу QWERTY сделать и даже с кнопочками Cherry-MX - тогда будет оправдано название MX2023Shaos wrote:Из моих нововведений - стандартная клавиатура Специалиста предполагается быть смонтирована непосредственно на плате компьютера, имеется больше памяти (включая теневой экран) и интерфейс для 512Кбайтного картриджа, пятицвет и восьмицвет могут переключаться и программно, и вручную (кнопочками т.к. цветные игры не знают на чём они запущены и цветность надо будет пробовать экспериментально - ручками).

Пока для простоты можно в русскоязычной обстановке ссылаться на это поделие как "ТурбоСпец"

ТурбоСпец Rev.A не будет иметь аппаратного текстового режима и графического режима "цвет на точку" (там надо ещё думать), но будет иметь режим турбо

Работы с портами как с портами и ISA-слотов также пока не предвидится ( можно сделать пару разъёмов MX-BUS как в MX^2 - так сказать для преемственности поколений : )
Я тут за главного - если что шлите мыло на me собака shaos точка net
-
- Admin
- Posts: 24080
- Joined: 08 Jan 2003 23:22
- Location: Silicon Valley
SpetSvga-2011 --> ТурбоСпец/MiniWhiz-2023
Ввиду того, что на цепочку счётчиков знакомест в качестве тактирования идёт прямой сигнал 2M5, а не инверсный, то это значит, что ALD приходится на середину знакоместа?Shaos wrote: В формировании логики графического контроллера принимает участие сигнал ALD, который в схеме от Fifan-а просто идёт с выхода переполнения первого счётчика, а в моей схеме как-то хитро замешан 2M & !5M & 10M & 20M - видимо это из-за того, что далее на счётчики идёт инверсный 2M, поэтому будем придерживаться схемы (в том числе нумерации микросхем), которую нарисовал Fifan т.е. ALD = 2M5 & 5M & 10M & 20M и далее на счётчики идёт прямой 2M5.
Надо просмотреть внимательно как стробируется сдвигатель пикселов...
По старой схеме 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 уже в 1 при первом стробе).
И это видимо как-то соотносится с реалиями Z80:
You do not have the required permissions to view the files attached to this post.
Я тут за главного - если что шлите мыло на me собака shaos точка net
-
- Admin
- Posts: 24080
- Joined: 08 Jan 2003 23:22
- Location: Silicon Valley
Re: SpetSvga-2011 --> ТурбоСпец/MiniWhiz-2023
Я понял - в MX^2 видимая часть экрана начинается только на 16-м знакоместе, поэтому ничего страшного нету в том, что нулевое знакоместо "потерялось", но в моём варианте его терять нельзя т.к. у меня видимая часть экрана начинается прям сразу же (хотя в начале строки у меня тоже не графика будет, а бордюр) - можно попробовать остаться в парадигме более ранней схемы хардыча, но сделать сквозной синхронный счёт:Shaos wrote:Либо тут не важно в каком месте начинается X0 (нулевой бит номера знакоместа), а в каком заканчивается - главное, чтобы во время этих стробов адресный сигнал был стабильный?
И похоже стробы с клоком, что на проц идёт, вполне единообразно выводятся - что в старой схеме, что в новой (хотя в новой X0 уже в 1 при первом стробе)...
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 _______________________________| |
P.S. Также я там пририсовал циклы ожидания для турбо-режимов - выходит, что на фоне графики теряться будут половина циклов (в худшем случае).
Наверное 7 МГц можно и без вейтов нагородить, если применить пентагоновский трюк с регистром, но мне пока неохота на эту тему голову ломать...
Я тут за главного - если что шлите мыло на me собака shaos точка net
-
- Admin
- Posts: 24080
- Joined: 08 Jan 2003 23:22
- Location: Silicon Valley
Re: SpetSvga-2011 --> ТурбоСпец/MiniWhiz-2023
Либо можно попробовать сделать некое гибридное решение - сквозной счёт, но формирование управляющих сигналов, как в более новой схеме MX^2:
В этом случае графика будет сдвинута на 8 пикселов (т.е. ровно одно знакоместо) - это надо будет учесть при вычислении номеров для начала и конца бордюра и рабочей графики...
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 _______________________________| |
Я тут за главного - если что шлите мыло на me собака shaos точка net
-
- Admin
- Posts: 24080
- Joined: 08 Jan 2003 23:22
- Location: Silicon Valley
Re: SpetSvga-2011 --> ТурбоСпец/MiniWhiz-2023
А можно ведь и синхронную тормозилку сделать - без дополнительного счётчика - прямо на основных счётчиках - пускать такты на проц каждые 9 из 16 - это будет эквивалентно 3.5/16*9=1.96875 МГц, а с учётом неровности строк оно будет случаться 52 раза из 92.375 возможных т.е. 1.97 МГц, но можно исхитриться и сделать 53 раза - тогда оно уже будет совсем близко - 2.008 МГц. Кстати надо померять на сколько в среднем Z80 по тактам быстрее, чем i8080, например воспользовавшись статистикой, набранной мною в эмуляторе Ориона где-то в нулевых и озвученной тут на форуме в 2011 году.Shaos wrote:Я как-то всё равно не улавливаю в каком месте находится та самая хитрость, которая позволяет Z80 не конфликтовать с граф.контроллером?...fifan wrote:Всё верно в рассуждениях.
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
P.P.S. О - а если программно разрешить переключать это наряду с кнопкой и турбами?
т.е. тут сможет работать Z80 на 16 и на 20 МГц (хотя в данный момент у нас доставаемы только 20 МГц в DIP40)Code: Select all
00 -> 2.0 МГц (прореживание тактов 3/5) 01 -> 3.5 МГц (без вейтов и прореживания) 10 -> 5…7 МГц (2x турбо с вейтами) 11 -> 10…14 МГц (4x турбо с вейтами)
Я тут за главного - если что шлите мыло на me собака shaos точка net
-
- Admin
- Posts: 24080
- Joined: 08 Jan 2003 23:22
- Location: Silicon Valley
Re: SpetSvga-2011 --> ТурбоСпец/MiniWhiz-2023
Вобщем вот что получилось - взял Top60 опкодов, которые покрывают 95% всех команд выполняемых в моём эмуляторе Ориона, и посчитал общее покрытие для 8080, 8085 и Z80 (там где давались 2 цифры - типа успешная/неуспешная проверка - я просто ставил среднее арифметическое, предположив, что вероятности пойти по тому или иному пути равносильны):
P.S. На следующий вечер перезалил табличку т.к. некоторые цифры были не верные для 8085 - сейчас вроде всё норм ( 8085 на 8080-м подмножестве инструкций даже быстрее z80 оказался ; )
Получается, что 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
-
- Admin
- Posts: 24080
- Joined: 08 Jan 2003 23:22
- Location: Silicon Valley
Re: SpetSvga-2011 --> ТурбоСпец/MiniWhiz-2023
Вот пришли парочка мелких с DigiKey и парочка крупных с eBay - можно начинать экспериментироватьShaos wrote:Чото 56-мегагерцовый осциллятор не так то просто найти.
Кварц чтоли взять и нагородить генератор на инверторах?
P.S. Хотя нашёл чото на ебее - поглядим...

You do not have the required permissions to view the files attached to this post.
Я тут за главного - если что шлите мыло на me собака shaos точка net