nedoPC.org

Community of electronics hobbyists established in 2002

...
Atom Feed | View unanswered posts | View active topics It is currently 21 Oct 2018 10:23



Reply to topic  [ 18 posts ]  Go to page 1, 2  Next
[Z180] Теневое ОЗУ/ПЗУ 
Author Message
Doomed
User avatar

Joined: 11 Dec 2003 15:34
Posts: 420
Reply with quote
Привет всем!

Хотелось бы прояснить для себя такой hardware-вопрос:

Имеем карту памяти:
Code:
 +-------+   4Mb
 |       |
 |  ОЗУ  |
 |       |
 |       |
 +-------+
 |       |
 |  ПЗУ  |
 +-------+   0


К примеру, если ПЗУ занимает 16 страниц (по 16Kb) т.е. объем 256 кило, то можно ли как-нить обеспечить доступ к отдельным "затененным" страницам ОЗУ, когда включено ПЗУ и затененным страницам ПЗУ, когда включено ОЗУ ?.
Если мультиплексорами переключать разряды A14-A17 ПЗУ и разряды A14-A17 ОЗУ, т.е. переходить с ПЗУ на ОЗУ и наоборот, то переключаем сразу весь объем в 256Kb. Читал схему распределения памяти Спринтера - там миллион портов, по штуке на каждую страницу - слабо представляю себе схему его работы.

_________________
Vasil Ivanov
vasil-i@yandex.ru


12 Aug 2010 08:24
Profile
Doomed

Joined: 26 May 2003 07:57
Posts: 634
Reply with quote
Post 
Обычно для разделения выборки ОЗУ или ПЗУ используется какой-либо бит (например старший) номера выбранной страницы. Например номера 0,1,2...7Fh это ПЗУ, а 80h,81h,...0FFh - это ОЗУ. Если при включении во всех 4-х регистрах номера страницы (по 16Кб) будет ноль, то получим стартовую конфигурацию, где каждые 16Кб повторяется стартовое ПЗУ, а оно, в свою очередь, сразу же включает нужные страницы (например для стека).

_________________
Страничка эмулятора наших компьютеров
http://bashkiria-2m.narod.ru/


12 Aug 2010 11:19
Profile WWW
Banned
User avatar

Joined: 20 Mar 2005 14:41
Posts: 2150
Location: От туда
Reply with quote
Post 
b2m wrote:
Обычно для разделения выборки ОЗУ или ПЗУ используется какой-либо бит (например старший) номера выбранной страницы. Например номера 0,1,2...7Fh это ПЗУ, а 80h,81h,...0FFh - это ОЗУ. Если при включении во всех 4-х регистрах номера страницы (по 16Кб) будет ноль, то получим стартовую конфигурацию, где каждые 16Кб повторяется стартовое ПЗУ, а оно, в свою очередь, сразу же включает нужные страницы (например для стека).

Ты не понял. Человек хочет получать гибкую конфу, типо:
Page0 - ROM
Page1 - RAM
Page2 - RAM
Page3 - ROM
Page4 - ROM
Page5 - RAM
....
PageN - RAM
Т.е., все адресное разделено на страницы, куда может быть замаплена одна страница ПЗУ или ОЗУ. В простейшем варианте - это страница того же номера (т.е., в PAge0 всегда 0 страница, в 1 - первая и т.д.), в расширенном - любая, задаваемая программно. Делается это регистровым файлом (по сути двухпортовое ОЗУ), каждая ячейка которого хранит старшие адреса ОЗУ и ПЗУ для каждой из страниц пространства. Для установки номеров страниц нужно в области портов отразить все эти ячейки (например, если страниц 128, то это будет 128 байт, при 8битах номера страницы), а считыватель будет выбирать номер страницы из файла согласно номеру страницы адресного пространтсва и подставлять этот номер в старшие адреса ОЗУ или ПЗУ. Достаточно или нет?


12 Aug 2010 23:54
Profile
Admin
User avatar

Joined: 09 Jan 2003 00:22
Posts: 17022
Location: Colorado
Reply with quote
Post 
в ПК-01 Львов помнится под 16К ПЗУ в первой странице было спрятано ОЗУ (вроде как видеоозу) куда доступ был побайтовый через спец-программу или что-то типа - давно это было :roll:

_________________
:eugeek: https://twitter.com/Shaos1973


13 Aug 2010 06:41
Profile WWW
Doomed
User avatar

Joined: 11 Dec 2003 15:34
Posts: 420
Reply with quote
Post 
HardWareMan wrote:
Т.е., все адресное разделено на страницы, куда может быть замаплена одна страница ПЗУ или ОЗУ. В простейшем варианте - это страница того же номера (т.е., в PAge0 всегда 0 страница, в 1 - первая и т.д.), в расширенном - любая, задаваемая программно. Делается это регистровым файлом (по сути двухпортовое ОЗУ), каждая ячейка которого хранит старшие адреса ОЗУ и ПЗУ для каждой из страниц пространства. Для установки номеров страниц нужно в области портов отразить все эти ячейки (например, если страниц 128, то это будет 128 байт, при 8битах номера страницы), а считыватель будет выбирать номер страницы из файла согласно номеру страницы адресного пространтсва и подставлять этот номер в старшие адреса ОЗУ или ПЗУ. Достаточно или нет?


Имхо это похоже на то же, что и у меня. Ниже файловый регистр 8x4 (разряды / кол-во регистров).

Code:
    +---+----+---+
 ---|D0 |    | Q0|---  A14'
 ---|D1 |    | Q1|---
 ---|D2 |    | Q2|---
 ---|D3 |    | Q3|---
 ---|D4 |    | Q4|---
 ---|D5 |    | Q5|---
 ---|D6 |    | Q6|---
 ---|D7 |    | Q7|---  A21'
    +---+    |   |
 ---|A14|    |   |
 ---|A15|    |   |
    +---+    |   |
 ---|WRA|    |   |
 ---|WRB|    |   |
 ---|WR |    |   |
    +---+----+---+

D0..D7  - шина данных (номера страниц)
Q0..Q7  - выходы (к памяти 4Mb, разряды A14'..A21')
A14,A15 - к адресам A14,A15 z80 (чтение данных регистров 0-3)
WRA,WRB - выбор регистров (0-3)
WR  - запись в регистры (выбор по WRA..WRB)


При карте памяти:

Code:
 +--------+
 |        |
 |        |
 |  ОЗУ    |  ~3,7 Mb  (16-255 страницы)
 |        |
 |        |
 +--------+
 |        |
 |  ПЗУ    |  256 Kb  (0-15 страницы)
 +--------+


можно 16Kb страницы ПЗУ (0-15) и ОЗУ (начиная с 16-й) включать в любое окно z80. Но при этом теряются первые 16 страниц ОЗУ, вместо которых в карте памяти стоит ПЗУ. А если ПЗУ будет 1Mb, то на ОЗУ останется только 3 метра. Хотелось бы иметь доступ к ОЗУ на ВСЕ 4Mb и плюс к дополнительному ПЗУ (фактически вторая карта памяти). Прикручивать второй файловый регистр для ПЗУ ?. В непонятках, как их (два файловых регистра) согласовывать друг с другом, скажем при копировании из ПЗУ в ОЗУ.

_________________
Vasil Ivanov
vasil-i@yandex.ru


13 Aug 2010 12:31
Profile
Doomed
User avatar

Joined: 11 Dec 2003 15:34
Posts: 420
Reply with quote
Post 
Shaos wrote:
в ПК-01 Львов помнится под 16К ПЗУ в первой странице было спрятано ОЗУ (вроде как видеоозу) куда доступ был побайтовый через спец-программу или что-то типа - давно это было :roll:


Через спец-программу.... Не кузяво это как-то, не наша метода :)
Если ничего путного не получится, то можно типа прикрутить такой вариант - подключать сразу все 0-15 страниц ОЗУ на место ПЗУ-шных (коммутацией A14..A17 разрядов, что идут к памяти) и сделать типа эти ОЗУ-шные 0-15 страницы, когда они подключены в 0-е окно z80, с защитой от записи. Т.е. скажем 1-я страница ОЗУ включена в 0-е окно z80 - Read Only, она же включенная в 1-е окно камня - запись в нее разрешена. Не плохая фитча, скажем для тестирования кода предназначенного для ПЗУ.

_________________
Vasil Ivanov
vasil-i@yandex.ru


13 Aug 2010 12:51
Profile
Admin
User avatar

Joined: 09 Jan 2003 00:22
Posts: 17022
Location: Colorado
Reply with quote
Post 
По идее никто не мешает завести ещё один регистр - в который можно писать 8 битов, управляющих первыми 8 страничками адресного пространства и говорящими о том что (ПЗУ или ОЗУ) подключать в соответствующую страничку (если у тебя ПЗУ занимает 16 страничек, то можно завести второй регистр либо управлять одним битом сразу двумя страницами).

P.S. Вариант без дополнительных регистров - место подключения может определять что подключается - например в нулевое окно если цеплять нулевую страницу - выбирается ПЗУ, а если в какое-то другое - ОЗУ.

_________________
:eugeek: https://twitter.com/Shaos1973


13 Aug 2010 18:09
Profile WWW
Doomed

Joined: 26 May 2003 07:57
Posts: 634
Reply with quote
Post 
Shaos wrote:
По идее никто не мешает завести ещё один регистр - в который можно писать 8 битов, управляющих первыми 8 страничками адресного пространства

Достаточно 4-х бит для 4-х окон по 16Кб адресного пространства процессора. Какая разница, где хранить эти биты для всего ПЗУ (в отдельном ОЗУ или общем). Да, немного сложнее программно устанавливать, ОЗУ или ПЗУ, переключение будет занимать больше тактов, но зато намного проще (а значит надёжнее) аппаратная часть.

_________________
Страничка эмулятора наших компьютеров
http://bashkiria-2m.narod.ru/


14 Aug 2010 04:40
Profile WWW
Admin
User avatar

Joined: 09 Jan 2003 00:22
Posts: 17022
Location: Colorado
Reply with quote
Post 
погоди ка - если ты юзаешь Z180, то у него уже есть MMU, преобразующий логические адреса в физические!

_________________
:eugeek: https://twitter.com/Shaos1973


12 Sep 2010 19:42
Profile WWW
Doomed
User avatar

Joined: 11 Dec 2003 15:34
Posts: 420
Reply with quote
Post 
Shaos wrote:
погоди ка - если ты юзаешь Z180, то у него уже есть MMU, преобразующий логические адреса в физические!


Да, но только на 1 метр. А хочется на 4 ;)

_________________
Vasil Ivanov
vasil-i@yandex.ru


18 Sep 2010 06:09
Profile
Admin
User avatar

Joined: 09 Jan 2003 00:22
Posts: 17022
Location: Colorado
Reply with quote
Post 
Vasil Ivanov wrote:
Shaos wrote:
погоди ка - если ты юзаешь Z180, то у него уже есть MMU, преобразующий логические адреса в физические!


Да, но только на 1 метр. А хочется на 4 ;)


Для восьмибитки 1 метра должно хватить за глаза :)

_________________
:eugeek: https://twitter.com/Shaos1973


18 Sep 2010 07:58
Profile WWW
Doomed
User avatar

Joined: 11 Dec 2003 15:34
Posts: 420
Reply with quote
Post 
Shaos wrote:
Vasil Ivanov wrote:
Shaos wrote:
погоди ка - если ты юзаешь Z180, то у него уже есть MMU, преобразующий логические адреса в физические!


Да, но только на 1 метр. А хочется на 4 ;)


Для восьмибитки 1 метра должно хватить за глаза :)


Ты должен понимать, что после Спринтера (с его 4-мя метрами) все, что ниже, уже как-то не актуально воспринимается ;). Второй момент - электронный диск (логический). И 4-х метров может не хватить ;).
Из области мечтаний - я бы вообще не против иметь м/с DRAM памяти, метров так на 128-256, дополнительную к основной (SRAM). Но это потребует розыска несложного контроллера dram-а. Опять же и здесь потребуется работа с wait-ами. Так что без них никуда.

P.S. Огорчил один момент - z8s180xx имеет пару каналов DMA, но 8-ми битных, а винты общаются при DMA-режиме только словами (16-бит). А так было бы очень заманчиво заюзать винты в этом режиме. Как пишут у zilog-а в мануале пропускная способность dma-режима 1 байт на клок, т.е. при 6 МГц тактовой имеем 6 Мб/сек.

Ух, скока накатал ;)

_________________
Vasil Ivanov
vasil-i@yandex.ru


18 Sep 2010 11:27
Profile
Admin
User avatar

Joined: 09 Jan 2003 00:22
Posts: 17022
Location: Colorado
Reply with quote
Post 
Vasil Ivanov wrote:
Shaos wrote:
Vasil Ivanov wrote:
Shaos wrote:
погоди ка - если ты юзаешь Z180, то у него уже есть MMU, преобразующий логические адреса в физические!


Да, но только на 1 метр. А хочется на 4 ;)


Для восьмибитки 1 метра должно хватить за глаза :)


Ты должен понимать, что после Спринтера (с его 4-мя метрами) все, что ниже, уже как-то не актуально воспринимается ;). Второй момент - электронный диск (логический). И 4-х метров может не хватить ;).


И много программ использовали эти 4 метра? ;)
А электронный диск можно иначе сделать - не в пределах непосредственно адресуемой памяти, а скажем через порты - так там хоть гигабайты подключай ;)

_________________
:eugeek: https://twitter.com/Shaos1973


19 Sep 2010 11:43
Profile WWW
Banned
User avatar

Joined: 20 Mar 2005 14:41
Posts: 2150
Location: От туда
Reply with quote
Post 
Shaos wrote:
И много программ использовали эти 4 метра? ;)
А электронный диск можно иначе сделать - не в пределах непосредственно адресуемой памяти, а скажем через порты - так там хоть гигабайты подключай ;)

Берешь NANDу и цепляешь к портам (всего 2 ячейки). Зато хоть 16Гб. :3
Vasil Ivanov wrote:
P.S. Огорчил один момент - z8s180xx имеет пару каналов DMA, но 8-ми битных, а винты общаются при DMA-режиме только словами (16-бит). А так было бы очень заманчиво заюзать винты в этом режиме. Как пишут у zilog-а в мануале пропускная способность dma-режима 1 байт на клок, т.е. при 6 МГц тактовой имеем 6 Мб/сек.

В курсе, что ИБМовсцы применили аппаратный "трюк" для тех же винтов (для переноса данных)? Ты можешь поступить так же, лол.


19 Sep 2010 21:10
Profile
Admin
User avatar

Joined: 09 Jan 2003 00:22
Posts: 17022
Location: Colorado
Reply with quote
Post 
HardWareMan wrote:
Shaos wrote:
А электронный диск можно иначе сделать - не в пределах непосредственно адресуемой памяти, а скажем через порты - так там хоть гигабайты подключай ;)

Берешь NANDу и цепляешь к портам (всего 2 ячейки). Зато хоть 16Гб. :3


Я собственно о том же :)

_________________
:eugeek: https://twitter.com/Shaos1973


19 Sep 2010 21:33
Profile WWW
Display posts from previous:  Sort by  
Reply to topic   [ 18 posts ]  Go to page 1, 2  Next

Who is online

Users browsing this forum: No registered users and 2 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.