nedoPC.org

Electronics hobbyists community established in 2002
Atom Feed | View unanswered posts | View active topics It is currently 24 Apr 2024 01:13



Reply to topic  [ 63 posts ]  Go to page Previous  1, 2, 3, 4, 5  Next
SpetSvga-2011 --> ТурбоСпец/MiniWhiz-2023 
Author Message
Online
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22568
Location: Silicon Valley
Reply with quote
Пытаюсь разобраться как в MX^2 тактируется Z80...

В схеме, что железочел тут оставил в 2011 году, всё было просто:

Attachment:
Screenshot from 2023-02-20 19-21-53.png
Screenshot from 2023-02-20 19-21-53.png [ 9.34 KiB | Viewed 2812 times ]
(N2M это инвертированные 2.5 МГц)

А вот в последней схеме MX^2, что недавно Fifan выложил, есть замысловатости:

Attachment:
MX2-clock.jpg
MX2-clock.jpg [ 111.82 KiB | Viewed 2803 times ]


Или FSL это и есть та самая кнопка замедления, которая переключает из 2.5 МГц в 2 МГц?

Я тут части формирователя фаз для i8080 тоже вытащил на картинку т.к они там тоже замешаны, а в старой схеме F2 получался непосредственно из 2.5 МГц (которые там назывались 2M):

Attachment:
Screenshot from 2023-02-20 20-57-11.png
Screenshot from 2023-02-20 20-57-11.png [ 6.34 KiB | Viewed 2802 times ]

_________________
:dj: https://mastodon.social/@Shaos


20 Feb 2023 20:25
Profile WWW
Online
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22568
Location: Silicon Valley
Reply with quote
Я правильно понимаю, что асинхронный счётчик 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 времени - пропуская каждый пятый такт?

_________________
:dj: https://mastodon.social/@Shaos


20 Feb 2023 22:24
Profile WWW
Devil

Joined: 06 Oct 2006 03:17
Posts: 858
Location: г.Лянтор,Сургутского р-на,ХМАО
Reply with quote
Всё верно в рассуждениях.


20 Feb 2023 22:28
Profile
Online
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22568
Location: Silicon Valley
Reply with quote
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:
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:
Attachment:
indicator_2_0.png
indicator_2_0.png [ 6.85 KiB | Viewed 2755 times ]

Attachment:
indicator_3_5.png
indicator_3_5.png [ 6.7 KiB | Viewed 2755 times ]

Attachment:
indicator_7_0.png
indicator_7_0.png [ 6.8 KiB | Viewed 2755 times ]

Attachment:
indicator_14.png
indicator_14.png [ 6.63 KiB | Viewed 2755 times ]

_________________
:dj: https://mastodon.social/@Shaos


20 Feb 2023 22:32
Profile WWW
Online
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22568
Location: Silicon Valley
Reply with quote
По поводу вейтов - поглядим на режимы и нарезку памяти MX^2:
Code:
[Режим 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 МГц)...

_________________
:dj: https://mastodon.social/@Shaos


21 Feb 2023 00:53
Profile WWW
Devil

Joined: 06 Oct 2006 03:17
Posts: 858
Location: г.Лянтор,Сургутского р-на,ХМАО
Reply with quote
Мне идея с индикатором частоты понравилась.


Last edited by fifan on 23 Feb 2023 06:07, edited 1 time in total.



21 Feb 2023 04:13
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Shaos wrote:
Я правильно понимаю, ...

А ты это смоделируй, а то на словах слишком замысловато...

И у Железного Дровосека была фраза "мы воруем у процессора...", вот что воруем - уже забыл я. :wink:
А фраза почему-то запомнилась...

_________________
iLavr


21 Feb 2023 09:45
Profile
Online
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22568
Location: Silicon Valley
Reply with quote
Lavr wrote:
Shaos wrote:
Я правильно понимаю, ...

А ты это смоделируй, а то на словах слишком замысловато...

Ну я типа смоделировал - в голове :lol:

_________________
:dj: https://mastodon.social/@Shaos


21 Feb 2023 19:08
Profile WWW
Online
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22568
Location: Silicon Valley
Reply with quote
Возможно надо сделать чтение взад как минимум одного регистра - старших битов адреса.
Заодно можно туда примешать битики кадрового синхроимпульса и даже наврное строчного синхроимпульса :)
Это чтобы можно было без торможения читать их сосотяние - скажем по адресу #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 - так сказать для преемственности поколений : )

_________________
:dj: https://mastodon.social/@Shaos


21 Feb 2023 19:44
Profile WWW
Online
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22568
Location: Silicon Valley
Reply with quote
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:
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:


Attachments:
Screenshot from 2023-02-21 21-42-15.png
Screenshot from 2023-02-21 21-42-15.png [ 49.84 KiB | Viewed 2621 times ]

_________________
:dj: https://mastodon.social/@Shaos
21 Feb 2023 22:28
Profile WWW
Online
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22568
Location: Silicon Valley
Reply with quote
Shaos wrote:
Либо тут не важно в каком месте начинается X0 (нулевой бит номера знакоместа), а в каком заканчивается - главное, чтобы во время этих стробов адресный сигнал был стабильный?
И похоже стробы с клоком, что на проц идёт, вполне единообразно выводятся - что в старой схеме, что в новой (хотя в новой X0 уже в 1 при первом стробе)...
Я понял - в MX^2 видимая часть экрана начинается только на 16-м знакоместе, поэтому ничего страшного нету в том, что нулевое знакоместо "потерялось", но в моём варианте его терять нельзя т.к. у меня видимая часть экрана начинается прям сразу же (хотя в начале строки у меня тоже не графика будет, а бордюр) - можно попробовать остаться в парадигме более ранней схемы хардыча, но сделать сквозной синхронный счёт:
Code:

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 МГц можно и без вейтов нагородить, если применить пентагоновский трюк с регистром, но мне пока неохота на эту тему голову ломать...

_________________
:dj: https://mastodon.social/@Shaos


23 Feb 2023 00:21
Profile WWW
Online
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22568
Location: Silicon Valley
Reply with quote
Либо можно попробовать сделать некое гибридное решение - сквозной счёт, но формирование управляющих сигналов, как в более новой схеме MX^2:
Code:
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 пикселов (т.е. ровно одно знакоместо) - это надо будет учесть при вычислении номеров для начала и конца бордюра и рабочей графики...

_________________
:dj: https://mastodon.social/@Shaos


23 Feb 2023 02:27
Profile WWW
Online
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22568
Location: Silicon Valley
Reply with quote
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:
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 году.

_________________
:dj: https://mastodon.social/@Shaos


24 Feb 2023 05:08
Profile WWW
Online
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22568
Location: Silicon Valley
Reply with quote
Вобщем вот что получилось - взял Top60 опкодов, которые покрывают 95% всех команд выполняемых в моём эмуляторе Ориона, и посчитал общее покрытие для 8080, 8085 и Z80 (там где давались 2 цифры - типа успешная/неуспешная проверка - я просто ставил среднее арифметическое, предположив, что вероятности пойти по тому или иному пути равносильны):
Attachment:
OrionStat.png
OrionStat.png [ 123.01 KiB | Viewed 2539 times ]
Получается, что 2.0 МГц 8080 примерно соответствует 1.9336 МГц 8085 или 1.9689 МГц z80 (т.е. z80 в среднем на 1.58% быстрее, чем 8080 при такой же тактовой частоте) - выходит получившиеся выше 1.97 МГц будут ок.

P.S. На следующий вечер перезалил табличку т.к. некоторые цифры были не верные для 8085 - сейчас вроде всё норм ( 8085 на 8080-м подмножестве инструкций даже быстрее z80 оказался ; )


Attachments:
OrionStat.xls [34.5 KiB]
Downloaded 103 times

_________________
:dj: https://mastodon.social/@Shaos
24 Feb 2023 06:25
Profile WWW
Online
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22568
Location: Silicon Valley
Reply with quote
Shaos wrote:
Чото 56-мегагерцовый осциллятор не так то просто найти.
Кварц чтоли взять и нагородить генератор на инверторах?
P.S. Хотя нашёл чото на ебее - поглядим...

Вот пришли парочка мелких с DigiKey и парочка крупных с eBay - можно начинать экспериментировать ;)


Attachments:
56MHz.jpg
56MHz.jpg [ 88.57 KiB | Viewed 2453 times ]

_________________
:dj: https://mastodon.social/@Shaos
25 Feb 2023 20:55
Profile WWW
Display posts from previous:  Sort by  
Reply to topic   [ 63 posts ]  Go to page Previous  1, 2, 3, 4, 5  Next

Who is online

Users browsing this forum: No registered users and 15 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Group
Designed by ST Software.