Просмотр полной версии : Регенерация ОЗУ
CheburatoR
03.03.2005, 11:12
Я разрабатываю модификацыю "спектрума 128" и у меня появились вопросы:
1) об регенерации озу , как я понимаю регенерация произходит за счет видеоконтолера , типа он читает данные из всех "rows" или я не прав ? или там режим "RAS without CAS" ?
2) может кто знает (я не нашел) сколко время регенерации у руб5 или руб7 ?
3) можно ли заменить ру5 на DRAM 1024kбит (512 rows * 256 col * 8 бит) регенерацыя 512 rows in 4 ms ?
Я разрабатываю модификацыю "спектрума 128" и у меня появились вопросы:
1) об регенерации озу , как я понимаю регенерация произходит за счет видеоконтолера , типа он читает данные из всех "rows" или я не прав ? или там режим "RAS without CAS" ?
2) может кто знает (я не нашел) сколко время регенерации у руб5 или руб7 ?
3) можно ли заменить ру5 на DRAM 1024kбит (512 rows * 256 col * 8 бит) регенерацыя 512 rows in 4 ms ?
Рекомендую разобраться например в схеме КАЯ, там очень все показательно в этом отношении!
Я разрабатываю модификацыю "спектрума 128" и у меня появились вопросы:
1) об регенерации озу , как я понимаю регенерация произходит за счет видеоконтолера , типа он читает данные из всех "rows" или я не прав ? или там режим "RAS without CAS" ?
2) может кто знает (я не нашел) сколко время регенерации у руб5 или руб7 ?
3) можно ли заменить ру5 на DRAM 1024kбит (512 rows * 256 col * 8 бит) регенерацыя 512 rows in 4 ms ?
О каком «спектрум 128» идет речь? Это фирменная модель, клон или ваша собственная разработка?
1. В подавляющем большинстве отечественных клонов с совмещенными полями ОЗУ (то есть там, где нет торможения Z80 при обращении к определенным областям памяти), регенерация возложена на видеоконтроллер. Видеоконтроллер постоянно читает из ОЗУ (выводя содержимое экранной области) и при этом регенерирует его.
Никаких специальных режимов регенерации нигде не используется (за исключением ZX-Next).
Режим регенерации без выборки (RAS without CAS), применяется в клонах, где микросхемы ОЗУ объединены по входам и выходам (за исключением сигнала CAS). Так сделано, например, в «Пентагон 128». Разумеется, регенерацию там тоже осуществляет видеоконтроллер.
2. Максимальный период регенерации:
К565РУ5 (регенерация 7 бит) – 2 (буквы В, Г) миллисекунды.
К565РУ7 (регенерация 8 бит) – 8 (буквы Г, В) и 4 (буква Д) миллисекунды.
3. Стандартные видеоконтроллеры Speccy «перебирают» 7 младших бит (128 rows) за 4 миллисекунды.
По поводу DRAM 1024kбит (512 rows * 256 col * 8 бит) я не совсем понял: перемножьте эти значения, и посмотрите какой объем выйдет в итоге.
CheburatoR
03.03.2005, 12:54
О каком «спектрум 128» идет речь? Это фирменная модель, клон или ваша собственная разработка?
1. В подавляющем большинстве отечественных клонов с совмещенными полями ОЗУ (то есть там, где нет торможения Z80 при обращении к определенным областям памяти), регенерация возложена на видеоконтроллер. Видеоконтроллер постоянно читает из ОЗУ (выводя содержимое экранной области) и при этом регенерирует его.
Никаких специальных режимов регенерации нигде не используется (за исключением ZX-Next).
Режим регенерации без выборки (RAS without CAS), применяется в клонах, где микросхемы ОЗУ объединены по входам и выходам (за исключением сигнала CAS). Так сделано, например, в «Пентагон 128». Разумеется, регенерацию там тоже осуществляет видеоконтроллер.
2. Максимальный период регенерации:
К565РУ5 (регенерация 7 бит) – 2 (буквы В, Г) миллисекунды.
К565РУ7 (регенерация 8 бит) – 8 (буквы Г, В) и 4 (буква Д) миллисекунды.
3. Стандартные видеоконтроллеры Speccy «перебирают» 7 младших бит (128 rows) за 4 миллисекунды.
По поводу DRAM 1024kбит (512 rows * 256 col * 8 бит) я не совсем понял: перемножьте эти значения, и посмотрите какой объем выйдет в итоге.
Это будет клон (за основу будет "Ленинград 1" с дорабодками 128 КБ + AY + некоторые идеи)
Я хочу изпользовать для озу 1 микросхему 1024Кбит=128Кбайт (512 rows) про регенерацыю почти понял - предположым что видео находитсья в банке0 , получаетсья что банк1 не регенируетсья ? или там "хитрость" в схеме ? (я пока не изучал другие схемы кроме Ленинград, возможно вопрос отпадет сам после изучения других схем)
Это будет клон (за основу будет "Ленинград 1" с дорабодками 128 КБ + AY + некоторые идеи)
Я хочу изпользовать для озу 1 микросхему 1024Кбит=128Кбайт (512 rows) про регенерацыю почти понял - предположым что видео находитсья в банке0 , получаетсья что банк1 не регенируетсья ? или там "хитрость" в схеме ? (я пока не изучал другие схемы кроме Ленинград, возможно вопрос отпадет сам после изучения других схем)
1024Кбит=128Кбайт - чето я не понял что это за микросхема?
Или ты SRAM хочешь использовать, тогда вообще регенерация не нужна и видеоблок совсем другой нужен будет :wink: .
Судя по второму вопросу, тебе срочно надо изучать схемы. Ну как оно может не регенерироваться, как тогда вообще работает :smile:.
Это будет клон (за основу будет "Ленинград 1" с дорабодками 128 КБ + AY + некоторые идеи)
Я хочу изпользовать для озу 1 микросхему 1024Кбит=128Кбайт (512 rows) про регенерацыю почти понял - предположым что видео находитсья в банке0 , получаетсья что банк1 не регенируетсья ? или там "хитрость" в схеме ? (я пока не изучал другие схемы кроме Ленинград, возможно вопрос отпадет сам после изучения других схем)
«Банки» памяти, это логическое понятие. Регенерация это физический процесс, относящийся к микросхемам ОЗУ. Не смешивайте понятия.
В клонах Speccy, со 128К ОЗУ, чаще всего установлено 16 штук микросхем К565РУ5, объединенных попарно по всем входам и выходам (за исключением входов CAS). Поэтому регенерация происходит в двух этих группах одновременно (для нее CAS не нужен). При этом выборка данных (вывод содержимого экрана) производится только из одной группы микросхем (тут CAS нужен).
P.S. В «Ленинград 1» (судя по схеме, по плате уже не помню) были перепутаны адреса на микросхемах ОЗУ. Это не гут, потому что и в случае правильной адресации, период регенерации превышен в два раза по сравнению с паспортным.
CheburatoR
03.03.2005, 14:04
1024Кбит=128Кбайт - чето я не понял что это за микросхема?
Или ты SRAM хочешь использовать, тогда вообще регенерация не нужна и видеоблок совсем другой нужен будет :wink: .
Судя по второму вопросу, тебе срочно надо изучать схемы. Ну как оно может не регенерироваться, как тогда вообще работает :smile:.
вот эсть такая :smile: именно DRAM , SRAM у меня тоже валяются 4 штуки по 32 Kбайт но я хочу на DRAM делать)
Работает то работает, но чтобы чтото сделать по своему надо ведь понять как "Это" работает :D
«Банки» памяти, это логическое понятие. Регенерация это физический процесс, относящийся к микросхемам ОЗУ. Не смешивайте понятия.
В клонах Speccy, со 128К ОЗУ, чаще всего установлено 16 штук микросхем К565РУ5, объединенных попарно по всем входам и выходам (за исключением входов CAS). Поэтому регенерация происходит в двух этих группах одновременно (для нее CAS не нужен). При этом выборка данных (вывод содержимого экрана) производится только из одной группы микросхем (тут CAS нужен).
P.S. В «Ленинград 1» (судя по схеме, по плате уже не помню) были перепутаны адреса на микросхемах ОЗУ. Это не гут, потому что и в случае правильной адресации, период регенерации превышен в два раза по сравнению с паспортным.
Ну да спутал наверно, я имел ввиду те "банки" которые выбераютсья CASL и CASH (для каждой половины oзу по 64KБ)
Сейчас понятно - значит для регенерации достаточно RAS и адрес на шине (у ру5)
Как я понимаю эсли период регенерации превышен - это вполне нормально, процессор ведь тоже регенерирует озу обращаясь к неи
Я разрабатываю модификацыю "спектрума 128" и у меня появились вопросы:
1) об регенерации озу , как я понимаю регенерация произходит за счет видеоконтолера , типа он читает данные из всех "rows" или я не прав ? или там режим "RAS without CAS" ?
Оно читает из всех рядов. Любой спектрум. Некоторые самодельные расширения действительно использовали cas перед ras для старших банков
(где экрана нет) памяти. Физически разных (микросхемы разные) банков.
2) может кто знает (я не нашел) сколко время регенерации у руб5 или руб7 ?
15мс. Очень примерно, реально, я думаю, заметно больше.
3) можно ли заменить ру5 на DRAM 1024kбит (512 rows * 256 col * 8 бит) регенерацыя 512 rows in 4 ms ?
Нужно. РУ5 -- это даже не вчерашний век, позавчерашний.
P.S. В «Ленинград 1» (судя по схеме, по плате уже не помню) были перепутаны адреса на микросхемах ОЗУ. Это не гут, потому что и в случае правильной адресации, период регенерации превышен в два раза по сравнению с паспортным.
Что значит "перепутаны" ? Все "адреса", адресные сигналы, равнозначны.
Как я понимаю эсли период регенерации превышен - это вполне нормально, процессор ведь тоже регенерирует озу обращаясь к неи
Это абсолютно ненормально - регенерация по принципу «авось повезет». Процессор может подолгу стоять в HALT или ходить по одним и тем же адресам. Его никто его не обязывал что-то регенерировать, за исключением фирменных моделей и клонов с «медленными» полями памяти.
CheburatoR
03.03.2005, 14:28
Что значит "перепутаны" ? Все "адреса", адресные сигналы, равнозначны.
вот и не равнозначны - потомучто видео читает из некоторои области и эсть разница для регенерации изпользовать например A0..A6 или A2..A8 итд. (конкретно несмотрел что там перепутано)
Что значит "перепутаны" ? Все "адреса", адресные сигналы, равнозначны.
Это значит RTFM, уважаемый:
У К565РУ5 восемь (8) мультиплексируемых входов, а для их регенерации требуется только семь (7) бит.
CheburatoR
03.03.2005, 14:35
Это абсолютно ненормально - регенерация по принципу «авось повезет». Процессор может подолгу стоять в HALT или ходить по одним и тем же адресам. Его никто его не обязывал что-то регенерировать, за исключением фирменных моделей и клонов с «медленными» полями памяти.
Упс :) я подумал что там повышена частота, эсли период значит да - это плохо, может поэтому он (Ленинград) был такой не устойчивый к помехам - как что так сразу рестарт
вот эсть такая :smile: именно DRAM , SRAM у меня тоже валяются 4 штуки по 32 Kбайт но я хочу на DRAM делать)
Работает то работает, но чтобы чтото сделать по своему надо ведь понять как "Это" работает :D
Название в студию, я например знаю 512кх8 DRAM, но чтобы и 128КХ8 не видел.
Оно читает из всех рядов. Любой спектрум.
«Оно» это что? Видеоконтроллер? В ZX Spectrum и таких клонах как «Львовский вариант», «Москва», «старая Москва», «Краснодар», «Дельта-С» из К565РУ5 видеоконтроллер ничего не читает.
Некоторые самодельные расширения действительно использовали cas перед ras для старших банков
(где экрана нет) памяти. Физически разных (микросхемы разные) банков.А можно узнать, из каких адресов ОЗУ выбираются данные, если CAS был перед RAS?
15мс. Очень примерно, реально, я думаю, заметно больше.Компьютер будет "очень примерно работать", но думаю не всегда.
CheburatoR
03.03.2005, 15:41
Название в студию, я например знаю 512кх8 DRAM, но чтобы и 128КХ8 не видел.
Ошыбочка вышла :D эсли быть точным тогда 64Кбит x 16 (=128 КБайт) , верхние и нижние пловинки выбираютсья отделно CASL и CASH, адрес даташитов
http://www.esmt.com.tw/english/products_de.asp?Lw_Flag=2002/09/20/19/18/13
CheburatoR
04.03.2005, 02:43
между прочем эсть у меня и 128k x 8 bit (V53C8125H) 2 штуки :) но я думаю это будет сложнее подключить вместо РУ5 чем 64k x 16 у которой раздельно CASL и CASH
V53C8125H
http://www.alldatasheet.co.kr/datasheet-pdf/pdf_kor/MOSEL/V53C8125H.html
Ты специально русский язык корежишь? Типа молодой ультрапрогрессивный хакер? Я - инородец, по русски еле-еле говорю, и то стараюсь ошибок не допускать. Не стыдно перед Пушкиным и Гоголем? :)
CheburatoR
04.03.2005, 04:52
Ты специально русский язык корежишь? Типа молодой ультрапрогрессивный хакер? Я - инородец, по русски еле-еле говорю, и то стараюсь ошибок не допускать. Не стыдно перед Пушкиным и Гоголем? :)
нет ето не специально, говорю и читаю то нормально но граматика ... литературу толко техническую читал и читаю. :cool: А Пушкин и Гогол это те которые крутые демки программирует ? :D
Упс :) я подумал что там повышена частота, эсли период значит да - это плохо, может поэтому он (Ленинград) был такой не устойчивый к помехам - как что так сразу рестарт
И это еще не вся правда: на большинстве клонов с 312 строками в экране, период регенерации, для части ячеек ОЗУ (РУ5) превышен почти в 4 раза! Причина этого достаточно проста: цикл регенерации видеоконтроллером равен 64 строкам, а в 312-ти строках, таких циклов помещается только четыре. Пятый остается незаконченным.
Когда-то в 1991 году, все это и стало одной из причин создания видеопроцессора на Z80 в компьютере ZX-Next – там с регенерацией все в порядке. Честно говоря, я хотел рассказать про регенерацию на zxnext.narod.ru (драфт статьи валяется уже почти год). Но раз уж вопрос задали тут, то пусть народ знает.
Это значит RTFM, уважаемый:
У К565РУ5 восемь (8) мультиплексируемых входов, а для их регенерации требуется только семь (7) бит.
Регенерируются все 8. Никаких проблем. И к тому же не РУ5, а РУ7,
импортный аналог или вообще SIMM-модуль. Какой говоришь бит?
Это в общем случае неизвестно,поэтому никто и не закладывается на
такое.
факт, в классическом пентагоне регенерация 7 бит.
вопрос: где взять растактовку всех команд z80 (я имею ввиду сигналы на шине)? желательно в нете.
Регенерируются все 8. Никаких проблем. И к тому же не РУ5, а РУ7,
импортный аналог или вообще SIMM-модуль. Какой говоришь бит?
Это в общем случае неизвестно,поэтому никто и не закладывается на
такое.Не надо трепать языком попусту, если забыл перечитай свой же вопрос:
http://zx.pk.ru/showpost.php?p=5202&postcount=9
Ты видел в "Ленинград 1" много РУ7 или SIMM?
«Оно» это что? Видеоконтроллер? В ZX Spectrum и таких клонах как «Львовский вариант», «Москва», «старая Москва», «Краснодар», «Дельта-С» из К565РУ5 видеоконтроллер ничего не читает.
Ленинград, Пентагон, Скорпион, Кай...
А можно узнать, из каких адресов ОЗУ выбираются данные, если CAS был перед RAS?
Не из каких. В этом случае микросхемы DRAM самостоятельно вырабатывают адрес. Но с РУ5 это не должно работать, начиная с РУ7 и импортные аналоги её, а также SIMM-модули такую регенерацию понимают.
Компьютер будет "очень примерно работать", но думаю не всегда.
Проверено электроникой. Главное не экономить на блокировочных конденсаторах и питающие провода должны быть "с руку" толщиной -- это
обязательно.
Давно мучает вопрос!
А существовали ли живьем микросхемы 565ру9, вроде аналоги 1024Кх1 но живьем я никогда их не видел?
Ленинград, Пентагон, Скорпион, Кай...
Если для тебя перечисленное это «Любой Спектрум», как ты сказал вначале, то рекомендую почитать о других клонах Speccy, например в fido. Для общего образования в вопросе. Кстати в «Пентагон 128», видеоконтроллер не «читает из всех рядов».
Не из каких. В этом случае микросхемы DRAM самостоятельно вырабатывают адрес. Но с РУ5 это не должно работать, начиная с РУ7 и импортные аналоги её, а также SIMM-модули такую регенерацию понимают.
К565РУ7 после возникновения CAS не будут выдавать информации на выходе? А можно узнать, откуда эта информация? Хотя предвижу, что отвечать на конкретные вопросы ты не можешь.
Проверено электроникой. Главное не экономить на блокировочных конденсаторах и питающие провода должны быть "с руку" толщиной -- это
обязательно.Вот из-за таких «проверенных электроникой», многие самодельные Speccy и сбоили постоянно по поводу и без. И много народа свалило, по этому. РУ5/7 и так были не очень хорошего качества, а если их гонять в запредельных режимах…
вопрос: где взять растактовку всех команд z80 (я имею ввиду сигналы на шине)? желательно в нете.
У меня есть книженция, переводная, в ней отдельно расписаны-разрисованы потактно циклы обращения к памяти, к И/О, чтения опкода, етц. И отдельно расписано, из каких циклов состоит каждая команда. После выходных могу отфоткать - если надо, пиши в приват.
1. Кому-то лень найти справочные данные и он кидает ламерский вопрос.
2. Если из инфы на ОЗУ выжать воду, то будет в несколько раз меньше суммы ответов.
У меня есть книженция, переводная, в ней отдельно расписаны-разрисованы потактно циклы обращения к памяти, к И/О, чтения опкода, етц. И отдельно расписано, из каких циклов состоит каждая команда. После выходных могу отфоткать - если надо, пиши в приват.
если будет результат, ссылку тут оставьте. хотелось бы ознакомиться
AlexCrush
05.03.2005, 07:10
Расскажу-ка я свои мысли про регенерацию в Magic 5 и 6.
Регенерацией занимается видеоконтроллер. В ру5 надо регенерировать только нижние 7 бит (факт из советской книжки про м\с памяти). То есть для полной регенерации достаточно прочитать информацию из 128 ячеек, лишь бы они все были в разных рядах (или как там с терминологией, в общем чтобы адресные сигналы подаваемые во время RAS были разные). На экране 128 байт без учета аттрибутов - это 4 строки. Одна экранная строка - 64 мкс. 4*64=256 мкс,что значительно меньше чем паспортные 2 мс. Даже если предположить (правда это было опровергнуто опытами), что надо регенерировать все 8 бит адреса, то получим 512 мкс, что тоже весьма хорошо. Для того чтобы каждые 4 строки экрана были в разных рядах (RAS) надо всего лишь поменять хитрым образом адресные сигналы, идущие на мультиплексор адреса памяти.
порядок:
A0 A1 A2 A3 A4 A8 A9 (а дальше порядок не важен) A5 A6 A7 A10 A11 A12 A13 A14 A15
Примерно так и сделано в Magic5. Проблема с тем, что на бордюре такая регенерация обломается решены радикально - даже во время изображения бордюра видеоконтроллер продолжает читать информацию из памяти. Неважно откуда, главное что младшие 7 бит "перепутанного" адреса перебираются в любом случае за 4 экранных строки. ВСЕ!
Спасибо разработчикам Magic5 за столь простое и надежное решение.
Когда я заменял в своем Magic5 ру5 на ру7 пришлось порядок адресов измененять так, чтобы перебор был 256 разных адресов, получилось что то вроде A0 A1 A2 A3 A4 A8 A9 A10 ... то же не плохо, 512 мкс.
При последующем апгрейде до мегабайтного симма перепутывание чуть усложняется, но проблему регенерации решает именно оно.
Только не надо полагаться на то что предельный период регенерации у ру5 будет больше 2 мс - встречаются всякие экземпляры.
Расскажу-ка я свои мысли про регенерацию в Magic 5 и 6.
Регенерацией занимается видеоконтроллер. В ру5 надо регенерировать только нижние 7 бит (факт из советской книжки про м\с памяти). То есть для полной регенерации достаточно прочитать информацию из 128 ячеек, лишь бы они все были в разных рядах (или как там с терминологией, в общем чтобы адресные сигналы подаваемые во время RAS были разные). На экране 128 байт без учета аттрибутов - это 4 строки. Одна экранная строка - 64 мкс. 4*64=256 мкс,что значительно меньше чем паспортные 2 мс. Даже если предположить (правда это было опровергнуто опытами), что надо регенерировать все 8 бит адреса, то получим 512 мкс, что тоже весьма хорошо. Для того чтобы каждые 4 строки экрана были в разных рядах (RAS) надо всего лишь поменять хитрым образом адресные сигналы, идущие на мультиплексор адреса памяти.
порядок:
A0 A1 A2 A3 A4 A8 A9 (а дальше порядок не важен) A5 A6 A7 A10 A11 A12 A13 A14 A15
Примерно так и сделано в Magic5. Проблема с тем, что на бордюре такая регенерация обломается решены радикально - даже во время изображения бордюра видеоконтроллер продолжает читать информацию из памяти. Неважно откуда, главное что младшие 7 бит "перепутанного" адреса перебираются в любом случае за 4 экранных строки. ВСЕ!
Спасибо разработчикам Magic5 за столь простое и надежное решение.
Когда я заменял в своем Magic5 ру5 на ру7 пришлось порядок адресов измененять так, чтобы перебор был 256 разных адресов, получилось что то вроде A0 A1 A2 A3 A4 A8 A9 A10 ... то же не плохо, 512 мкс.
При последующем апгрейде до мегабайтного симма перепутывание чуть усложняется, но проблему регенерации решает именно оно.
Только не надо полагаться на то что предельный период регенерации у ру5 будет больше 2 мс - встречаются всякие экземпляры.
Браво! Снимаю шляпу перед разработчиками Magic5. О таком решении я тоже думал при разработке ZX-Next, но из-за желания сделать схему универсальной (для РУ5/7), пошел по другому пути - попросил напарника, кодирующего NEXT ROM VIDEO изменить порядок перебора адресов вне экрана (там их перебирал видеопроцессор на Z80). В результате достигли того же, вписав период регенерации в паспортные значения.
Остается только сожалеть, что другие разработчики не решали эту проблему. Причины, в общем-то, понятны: в фирменных моделях адресация ОЗУ, стандартная, а срисовывали оттуда. Только вот забыли что у 4164 паспортный период регенерации 4 миллисекунды, а не 2, как у 565РУ5.
если будет результат, ссылку тут оставьте. хотелось бы ознакомиться
Результат в виде фоток будет после праздников, а вот куды его в виде урля отправить - хз. С глюкотронной newmail связываться не хочу... В общем предложения рассматриваются =)
Регенерируются все 8. Никаких проблем. И к тому же не РУ5, а РУ7,
импортный аналог или вообще SIMM-модуль. Какой говоришь бит?
Это в общем случае неизвестно,поэтому никто и не закладывается на
такое.
Господин fk0 к сожалению не знаю как Вас зовут (вы зарегистрировались анонимно - что не очень хорошо для нашего форума).
Рекомендую аргументировано и логично подойти к дискусии. Вынужден Вас предупредить!
Есть на Вас жалобы...
Прошу учесть мои рекомендации. Спасибо!
Господин fk0 к сожалению не знаю как Вас зовут (вы зарегистрировались анонимно - что не очень хорошо для нашего форума)
Вообще-то это Kirill Frolov =) Можно было заметить, он свои емылы даёт с буковками fk0 в фиде $)
Опять же, гугло нашло вот:
http://vega56.narod.ru/tourism/tour_pnt1.htm
Господин fk0 к сожалению не знаю как Вас зовут (вы
Это любой дурк знает, о чём кстти написано на моём homepage, так чеото не ндо...
зарегистрировались анонимно - что не очень хорошо для нашего форума).
ш/яуотещ
И что? У нас тут КГБ или где? Я ж не подписываюсь вася пупкин, то-есть я так подписываюсь, но это явно не тот лучай.
[quote]
Рекомендую аргументировано и логично подойти к дискусии. Вынужден Вас предупредить!
Есть на Вас жалобы...
О чём я и говорил. Фуфло ваш форум ибо тут цензура.
Отсуствуе этого сообщения наглядно то подтверждает.
Я идейно против любой цензуры. Пошёл обратно в зхнет -- её (цензуры) там реално нет.
Это любой дурк знает, о чём кстти написано на моём homepage, так чеото не ндо...
Любым "дуркам" тут не место :smile: .
зарегистрировались анонимно - что не очень хорошо для нашего форума).
ш/яуотещ
И что? У нас тут КГБ или где? Я ж не подписываюсь вася пупкин, то-есть я так подписываюсь, но это явно не тот лучай.
О чём я и говорил. Фуфло ваш форум ибо тут цензура.
Отсуствуе этого сообщения наглядно то подтверждает.
Я идейно против любой цензуры. Пошёл обратно в зхнет -- её (цензуры) там реално нет.
Кирилл сколько раз с тобой общался натыкался токо на наезды. Причем обидно что ты чел достаточно уважаемый (и мной между прочим тоже). Но вот поведение твое всегда оставалось для меня загадкой. Очень жаль но видимо уважение к другим - это приходит только с возрастом. Кстати я тебе об этом много раз говорил и на фидо тоже!
А цензуры тут нет, и если ты почитаешь внимательно была просьба вести себя взаимо вежливо и аргументировано и корректно. Но если для Вас это невыполнимо, то что делать. :smile:
Кстати об именах идет дискусия в обсуждении работы форума.
doorsfan
30.11.2009, 15:16
Собираю реал Радугу (фотка платы, чуть более новой ревизии, чем моя, на 66й странице Unsorted + я ещё на варезник сканы кидал), вместо глючного полу-разобранного старого. Куда-то дел все свои бумаги-наработки, а мозги уже не те... Можно распаивая старые "навороты", срисовать, что было, но всё-же не уверен, что там было сделано правильно.
Итак, чтобы правильно регенерировать SIMM (у меня 4МБ, правда, раньше использовал 1 мег), нужно по раскидывать адреса так, чтобы во время рисования экрана перебрались все строки модуля.
Прошу комьюнити
1. помочь перебросить адреса/видеоадреса на мультиплексорах. Фрагмент схемы прилагаю:
2. Дать схему расширения пентагона-128 на SIMM модуле (когда-то с зхнета/фиды брал ASCII). Или лучше взять схему Феникса?
http://eximservice.com.ua/yura/kp12_raduga.png
И это еще не вся правда: на большинстве клонов с 312 строками в экране, период регенерации, для части ячеек ОЗУ (РУ5) превышен почти в 4 раза! Причина этого достаточно проста: цикл регенерации видеоконтроллером равен 64 строкам, а в 312-ти строках, таких циклов помещается только четыре. Пятый остается незаконченным.
Уточню, вдруг кому пригодится.
В связи с двухсекционной структурой микросхемы не обязательно производить регенерацию по всем строкам матрицы (две секции регенерируются одновременно), поэтому достаточно в цикле регенерации перебирать первые 128 строк матрицы. 128 строк матрицы перебираются за 32 телевизионных строки.
Первые 8 телевизионных строк регенерируют адреса 0-31.
С 9 по 16 телевизионные строки регенерируют адреса 32-63.
С 17 по 24 телевизионные строки регенерируют адреса 64-95.
С 25 по 32 телевизионные строки регенерируют адреса 96-127.
Номера телевизионных строк условны, главное их количество.
За 312 телевизионных строк происходит 9 полных циклов регенерации, что соответствует 2 мс . 10 цикл не полный проходит на 3 четверти полностью. 1 четверть адресов(8 экранных строк) не регенерируется, задержка между регенерацией 4 мс(период регенерации превышен в 2 раза). Помощь в регенерации процессором во время RFSH не существенна. Для 565ру5 период регенерации заявлен примерно 2 мс.
- - - Добавлено - - -
На экране 128 байт без учета аттрибутов - это 4 строки
Но адреса этих 4 строк регенерируют одни и те же адреса от 32 до 64 адресов(смотря какие это будут строки).
Одна экранная строка - 64 мкс. 4*64=256 мкс,что значительно меньше чем паспортные 2 мс.
Видеоконтроллер так не регенерирует. Расчёт неверен, как как принцип работы видеоконтроллера не понят верно.
даже во время изображения бордюра видеоконтроллер продолжает читать информацию из памяти. Неважно откуда, главное что младшие 7 бит "перепутанного" адреса перебираются в любом случае за 4 экранных строки.
Так видеоконтроллер не работает и регенерация тоже.
Для понимания работы видеоконтроллера и как он регенерирует память нужно представлять как распложено адресное пространство в памяти микросхемы(оно линейно), а видеоконтроллер производит регенерацию не линейно(8 раз подряд выставляет одни и те же 32 адреса, потом переходит к следующим 32 адресам и так далее до 128). Имею в виду адреса в младшем байте.
видеоконтроллер производит регенерацию не линейно
Это уже зависит от распиновки адресных сигналов. Выше расписывали, как можно реализовать беспроблемную регенерацию путем грамотного назначения адресов.
Собственно, так оно и должно быть сделано _везде_ , вот для примера древняя схема желтой платы Скорпиона:
https://i1.imageban.ru/out/2022/02/13/754799f72e396e0fcb05170064ec196d.png (https://imageban.ru)
На строки подается пять бит горизонтальной развертки H3-H7 и три бита вертикальной V3-V5 - итого полный реген обеспечивается за восемь строк знакомест.
Или 64 ТВ-строки. Что вполне допустимо (применяются м/с РУ7). А если делать, как писали выше - для РУ5 весь реген займет четыре ТВ-строки, для РУ7 - восемь.
Достаточно подавать другие сигналы на входы. Все равно каждую строку читаются разные пикселы, следовательно, 256 выборок это 32х8 разных строк.
P.S. Глянул, а это, оказывается, подняли умершую тему =))) ну да ладно, пусть инфа будет.
А если делать, как писали выше - для РУ5 весь реген займет четыре ТВ-строки
Вот здесь ошибка. Правильно будет четыре знакоместные строки, а не тв-строки. В тв-строках будет 4*8=32.
- - - Добавлено - - -
Достаточно подавать другие сигналы на входы. Все равно каждую строку читаются разные пикселы
Во время чтения видеоконтроллером ячеек памяти экрана не допустимо выставление каких либо других адресов, что аппаратно невозможно. И пикселы тут не причём.
- - - Добавлено - - -
Выше расписывали, как можно реализовать беспроблемную регенерацию путем грамотного назначения адресов
Беспроблемность зависит от количества строк в кадре. Если у скорпиона 312 строк то данная схема с пропуском цикла регенерации, а если 320 то нет.
время чтения видеоконтроллером ячеек памяти экрана не допустимо выставление каких либо других адресов, что аппаратно невозможно
В чем проблема напихать на входы мультиплексоров данные в нужном разводчику платы порядке? Самой микрухе без разницы, как идет выборка.
Ставим туда пять байт X-адресов строк экрана (знакомест) и добавляем младших три бита Y-координаты пиксельных строк, которые меняются 8 раз за знакоместо.
Что и даст необходимый диапазон для полного перебора строк РУ7. А на столбцы уже подавать оставшиеся сигналы.
В вышеприведенной схеме Скорпа - да, реген занимает 64 строки. Но переделкой схемы можно уложить регенерацию в восемь.
В чем проблема напихать на входы мультиплексоров данные в нужном разводчику платы порядке? Самой микрухе без разницы, как идет выборка.
Ставим туда пять байт X-адресов строк экрана (знакомест) и добавляем младших три бита Y-координаты пиксельных строк, которые меняются 8 раз за знакоместо.
Для этого нужно выборку куда то воткнуть. Между чем и чем вставить ещё одну выборку я не представляю. Если даже найти время, то схема мультиплексирования не оправдано усложняется. На самом деле всё отлично работает даже с 2 кратным временем регенерации.
У меня есть клон с перепутанными физически адресными входами на ру5. Разобравшись с регенерацией пришел к выводу, что нет разницы перепутаны или нет физические адреса А0- А7.
А ещё проще. Во время бордюра, в фазе памяти видеоконтроллера, просто блокировать прохождение сигнала cas
Для этого нужно выборку куда то воткнуть. Между чем и чем вставить ещё одну выборку я не представляю
Представлять и не нужно, видеоконтроллер делает это через такт с процессором, по очереди. Весь вопрос в разводке подаваемых сигналов.
Просто на приведенной схеме (для примера) вместо V3-V5 подаются V0-V2, вот и все. И полные 256 столбцов будут перебраны за 256 выборок.
Разобравшись с регенерацией пришел к выводу, что нет разницы перепутаны или нет физические адреса А0- А7.
Вот, именно про то и речь. Микросхеме памяти пофиг, последовательно регенятся столбцы или рандомно. Главное - перебрать все адреса.
И банальной перестановкой адресных сигналов на входах мультиплексора можно получить перебор столбцов за минимальное время. Никаких доп. выборок не нужно.
А ещё проще. Во время бордюра, в фазе памяти видеоконтроллера, просто блокировать прохождение сигнала cas
Как вариант - да. На тех микрухах, где такой способ работает. Но есть модификации расширения с выводом изображения вместо бордюра, там не прокатит =-)
Как вариант - да. На тех микрухах, где такой способ работает. Но есть модификации расширения с выводом изображения вместо бордюра, там не прокатит =-)
Почему не прокатит? Зона синхронизации в гашения достаточно увесистая.
А скрытая регенерация она есть везде, на драм одним способом, на сдрам другим
Зона синхронизации в гашения достаточно увесистая
Ну, если в основном режиме (отображение данных экрана) реген тоже будет идти - то да. На одном гашении выехать не получится.
И при использовании RGB-VGA кодера, по-моему, даже "зона гашения" отображается на мониторе, и технически изображение туда вывести можно.
нужно всего 128 или 256 циклов регенерации
даже если взять режим, который выводит 384 пикселя при 448 полных, то остается на строку - 64 пикселя ну или как минимум 8 циклов доступа к памяти которые отводятся видеосхеме,
т.е. 16-32 строки, но даже если 256 строк займет, то все равно ок
Просто на приведенной схеме (для примера) вместо V3-V5 подаются V0-V2, вот и все. И полные 256 столбцов будут перебраны за 256 выборок.
Перебор адресов будет быстрее, но на экране похоже будет каша. Строки не попадут в свои столбцы. Для правильного вывода строк на экран цикл адресов Н3-Н7 должен 8 раз отработать за цикл V3-V5, а цикл V0-V2 короче.
Во время бордюра, в фазе памяти видеоконтроллера, просто блокировать прохождение сигнала cas
Я не понял как блокировка cas повлияет на перебор адресов. На бордюре продолжается перебор адресов.
Я не понял как блокировка cas повлияет на перебор адресов.
последовательно
на экране похоже будет каша. Строки не попадут в свои столбцы
Все попадет по адресу. На строки (микросхемные имеются в виду) выставляем младший байт 16-разрядного адреса, на столбцы - оставшееся.
От перемены мест слагаемых сумма не меняется, как известно. Все равно что у ПЗУ перепутать адресные ноги, ему без разницы будет (если в прошивке тоже перепутано).
как блокировка cas повлияет на перебор адресов
Микрухи РУ5 и подобные имеют встроенный счетчик для автоматической регенерации в режиме RAS w/o CAS.
Спектрумы (клоны) его, как правило, не используют, т.к. регеном все равно занимается видеоконтроллер, если поле памяти общее.
Ниже кусочек советского талмуда по данному вопросу для снятия вопроса =)
https://i4.imageban.ru/out/2022/02/14/ef2b529189bc2a3844ed8fa672b9841e.jpg (https://imageban.ru)
Кай вон, регенерирует 4мб модуль. Где 1024 строки. На мультиплексорах замаятся перебирать
Микрухи РУ5 и подобные имеют встроенный счетчик для автоматической регенерации
Первый раз про встроенный счётчик слышу. Про cas ничего не понял кроме того, что он не активен. Но cas при регенерации и так не активен, зачем его блокировать?
https://zx-pk.ru/threads/13770-kay-1024-sl-4-turbo-v2010-nemofdc-nemoide.html?p=374597&viewfull=1#post374597
Микрухи РУ5 и подобные имеют встроенный счетчик для автоматической регенерации в режиме RAS w/o CAS.
В процитированном далее на картинке фрагменте говорится о достаточно обычном (применялся например в векторе для внешнего ОЗУ) режиме регенерации, когда адреса перебираются и стробируются только RASом без CAS. Тут не идет речи о "встроенном счетчике", которого нет у РУ6 и РУ5. Встроенный счетчик для регенерации есть у РУ7, используется в режиме CAS before RAS.
AlexCrush
15.02.2022, 09:07
принцип работы видеоконтроллера не понят верно.
Жаль, что вам что то непонятно в принципе работы видеоконтроллера и регенерации. Вы напишите что именно вам непонятно, я объясню.
Там всё довольно просто.
Так видеоконтроллер не работает и регенерация тоже.
И тут жаль, что у вас что-то не работает. У всех работает, у вас нет
Вы напишите что именно вам непонятно, я объясню.
Ну вот такой момент я вижу так. Цикл регенерации задаётся перебором адресов байтов в тв. строке Н3-Н7 от 0 до 31. Номер знакоместной строки задаются V3-V5 от 0 до 7. Во временном интервале пока V3 = 0 проходит 8 циклов Н3-Н7.(выводит на экран 8 строк, но регенерирует 32 одни и те же адреса 8 раз подряд из за V3 = 0) далее V3 = 1 проходит ещё 8 циклов (выводит на экран ещё 8 строк, регенерирует следующие 32 одни и те же адреса 8 раз подряд из за V3 = 1). И так ещё 2 раза пока V5 будет равен 0. Пока V5 равен 0 происходит перебор 128 адресов. В итоге цикл регенерации проходит за время вывода на экран 32 теле строк(4 знакоместные строки). При выводе на экран 312 строк регенерация произойдёт 9,75 раз. 32 строки множим на 9 полных циклов получаем 288 строк с полным циклом регенерации. Время регенерации в этих 9 циклах составит 32 строки умноженное на 64 микросекунды равно 2,048 миллисекунды. В не законченном цикле время удваивается для четверти адресов.
В каком месте видео контроллер может выбрать 4 теле строки подряд с перебором 128 адресов?
Ответ ни в каком, он так не работает.
Возьми к примеру 1 знакоместо в экранной области.
1 телестрока 1 знакоместо имеет адрес #4000 двоичный 01000000 00000000
2 телестрока 1 знакоместо имеет адрес #4100 двоичный 01000001 00000000
3 телестрока 1 знакоместо имеет адрес #4200 двоичный 01000010 00000000
4 телестрока 1 знакоместо имеет адрес #4300 двоичный 01000011 00000000
5 телестрока 1 знакоместо имеет адрес #4400 двоичный 01000100 00000000
6 телестрока 1 знакоместо имеет адрес #4500 двоичный 01000101 00000000
7 телестрока 1 знакоместо имеет адрес #4600 двоичный 01000110 00000000
8 телестрока 1 знакоместо имеет адрес #4700 двоичный 01000111 00000000
Заметь младший байт не меняется от строки к строке, а ведь он ответственен за регенерацию.
Думать, что всё довольно просто, не значит знать.
Вы напишите что именно вам непонятно, я объясню.
Биты адреса для памяти можно безвобранно перемешивать как душе угодно
младший байт не меняется от строки к строке
Повторюсь: что мешает переставить биты в адресе местами? Религия? Политика? Тут такие темы запрещены =)
Уже объяснял: вместо V3-V5 подаем V0-V2, и получаем реген за восемь ТВ-строк вместо 64-х. На списке строк с адресами (#4000-#4700) это отлично видно.
Отрезанные V3-V5 подаются вместо старых V0-V2, и на выходе получим те же данные из памяти. Чипу без разницы, в каком порядке идет выборка.
Главное - перебрать все столбцы в первой фазе задания адреса за допустимый период. С чем успешно справляется даже обычная схема перебора.
младший байт не меняется от строки к строке, а ведь он ответственен за регенерацию
В корне неправильное рассуждение. Часть адреса столбца формируется как раз из младшего байта, сигналы H3-H7. Вместе с V3-V5 они и дают адрес столбца.
Адрес строки (микросхемной) уже может быть любым, от него ничего не зависит. Туда подается каша из оставшихся сигналов, включая номер экрана.
AlexCrush
16.02.2022, 11:39
Думать, что всё довольно просто, не значит знать.
Для начала диалога я бы попросил вас воздежаться от необоснованных обвинений кого бы то ни было в незнании. Это, как минимум, некультурно.
Далее, что у нас есть.
1. Есть счетчики H0-H4 (32 знакоместа), и счетчики V0-V7 (192 строки).
2. Есть память, РУ5, сигналы адреса - MA0..MA7. Для корректной регенерации необходимо перебирать все комбинации MA0..MA6 (всего 128 комбинаций). Перебирать МА7 не нужно, в соответствии с документацией.
3. То есть, чтобы осуществить регенерацию, нужно за период < 2ms прочитать данные из 128 ячеек со всеми возможнными комбинациями MA0..MA6
4. соответствии с организацией экрана спектрума, имеется такое соответствие счетчиков экрана и адреса процессора (для пикселей)
A0..A4 = H0..H4
A5=V3
A6=V4
A7=V5
A8=V0
A9=V1
A10=V2
A11=V6
A12=V7
A13=0
A14=1
A15=0
Всё что выше - это просто факты, надеюсь, они споров не вызовут.
Далее интереснее.
Что такое MA0..MA7 ? Это мультиплексированная шина адреса памяти.
А как именно она мультиплексируется?
Рассмотрим самый очевидный вариант: MA0...MA7 = A0..A7 во время выбора строки (RAS), и MA0..MA7=A8..A15 во время выбора столбца (CAS).
В этом варианте, при работе видеоконтроллера происходит перебор MA0..MA6 = H0..H4, V3,V4.
Все комбинации тут перебираются за 32 экранных строки (из-за V4 - она меняется каждые 16 строк). Это 32 * 64мкс = 2048мкс = 2.08 миллисекунды.
Это выше паспортных 2мс.
Именно этот вариант выше вы совершенно верно описываете и просчитываете.
Но он не единственный.
Что будет, если поменять мультиплексирование?
Скажем, так:
MA0..MA7 = A0..A4, A8, A9, A10 во время выбора строки
MA0..MA7 = A5, A6, A7, A11, A12, A13, A14, A16 во время выбора столбца.
Что изменилось?
для процессора - ничего. Ему это перепутывание никак не заметить.
Для видеоконтроллера - да тоже без разницы.
А вот для регенерации разница прям важна.
Получаем, что MA0..MA6 = H0..H4, V0, V1. Значит видеоконтроллер перебирает все возможные комбинации MA0..MA6 за 4 экранных строки. Таким образом, вся память регенерируется за 4 * 64 = 256 микросекунд. Что существенно ниже требуемых значений, и это хорошо.
Этот же подход можно расширить на РУ7 (перебираем MA0..MA7 за 512мкс), и на SIMM30 (перебираем MA0..MA8 за 1024мкс).
Конечно, не каждый клон спектрума использует этот трюк, это лишь один из возможных способов уложить регенерацию в паспортные значения.
Задавайте вопросы.
Есть счетчики H0-H4 (32 знакоместа)
Если касается Спектрума, то правильнее счетчики знакомест обозначать как H3-H7, ибо H0,H1 и H2 позиционируются как системные, H0 - 3,5МГц, H1 - 1,75МГц, H2 -0,875МГц. Причем H0 - участвует в формировании RAS, CAS и клоков проца, H1 - это селектор доступа к памяти - либо видеоконтроллер, либо процессор, H2 - выбор видео/атрибуты
Lethargeek
16.02.2022, 13:41
Получаем, что MA0..MA6 = H0..H4, V0, V1. Значит видеоконтроллер перебирает все возможные комбинации MA0..MA6 за 4 экранных строки. Таким образом, вся память регенерируется за 4 * 64 = 256 микросекунд. Что существенно ниже требуемых значений, и это хорошо.
но так после растра будет (312-(192-4))=124 строки БЕЗ регенерации, то есть почти 8 миллисекунд, и это плохо же :v2_unsur:
- - - Добавлено - - -
ну, или паспортные 2 мс - взяты с очень, очень большим запасом
Serg6845
16.02.2022, 13:45
но так после растра будет (312-(192-4))=124 строки БЕЗ регенерации, то есть почти 8 миллисекунд, и это плохо же
почему без?
RAS никуда не девается, счетчики тоже продолжают считать. то что оно на экран не выводится - это совсем другая история.
Есть случай, который накладывает ограничение на перепутывание адресов процессора относительно адресов видеоконтроллера - когда видео читается с использованием страничного режима. В этом случае или придется смирится со сравнительно большим периодом обхода 128 адресов RAS или надо организовывать отдельную регенерацию "сбоку", вне активной области (на практике конечно смирялись, чтобы упростить/удешевить).
после растра будет (312-(192-4))=124 строки БЕЗ регенерации
Выборка данных из памяти продолжает идти и на бордюре, просто уходит "в молоко", отсекаясь на мультиплексорах.
Банально ткнув в рассыпуху отверткой (или отрезав нужную ногу), получаем на Скорпионе картинку на весь обозримый экран, включая бордюр.
счетчики тоже продолжают считать. то что оно на экран не выводится - это совсем другая история
Именно так. И некоторые хитроээумные граждане придумали схемы расширений экрана с помощью этой фичи. Что само по себе неплохо, но как стандарт, увы, не прижилось.
когда видео читается с использованием страничного режима
Ну это больше относится с компам с раздельным полем памяти, как понимаю.
Lethargeek
16.02.2022, 14:50
RAS никуда не девается, счетчики тоже продолжают считать. то что оно на экран не выводится - это совсем другая история.
Выборка данных из памяти продолжает идти и на бордюре, просто уходит "в молоко", отсекаясь на мультиплексорах.
на фирменных точно не идёт, а на всех клонах с раздельной памятью идёт? пруфы будут?
Ну это больше относится с компам с раздельным полем памяти
Не только, есть примеры "нераздельных" со страничным режимом чтения видео: Балтик и клоны на БМК.
AlexCrush
16.02.2022, 15:34
Если касается Спектрума, то правильнее счетчики знакомест обозначать как H3-H7, ибо H0,H1 и H2 позиционируются как системные, H0 - 3,5МГц, H1 - 1,75МГц, H2 -0,875МГц. Причем H0 - участвует в формировании RAS, CAS и клоков проца, H1 - это селектор доступа к памяти - либо видеоконтроллер, либо процессор, H2 - выбор видео/атрибуты
Ну, это вопрос соглашений в обозначениях, не более того. Я привык обозначать так, как написал.
но так после растра будет (312-(192-4))=124 строки БЕЗ регенерации, то есть почти 8 миллисекунд, и это плохо же
В тех клонах, которые для регенерации полагаются на видеоконтроллер , необходимо и во время бордюра читать из памяти. Обычно для этого не требуется какая-то сложная схемотехника, всё получается "само собой". По сути мы имеем неполные дубли основного экрана, прикрытые бордюром. Если бордюр отключить - можно их увидеть :crazy:
Есть случай, который накладывает ограничение на перепутывание адресов процессора относительно адресов видеоконтроллера - когда видео читается с использованием страничного режима.
А в каких клонах используется страничный режим доступа в РУ5/РУ7, и для чего?
Lethargeek
16.02.2022, 15:54
В тех клонах, которые для регенерации полагаются на видеоконтроллер , необходимо и во время бордюра читать из памяти.
почему "необходимо"? фирменный же как-то и без обходится, и часть клонов вроде по времянкам с ним совместима
- - - Добавлено - - -
собс-но, здесь же постили эксперименты с регенерацией, на +2 текла память только после очень долгого времени
А в каких клонах используется страничный режим доступа в РУ5/РУ7, и для чего?
С РУ5 ранее уже пару перечислил. С РУ6/РУ5 еще можно вспомнить Байт. В РУ7 страничного режима нет, а использующих слоговый клонов не знаю. А если не ограничиваться РУ5, то - оригинальные спектрумы. Для чего - чтобы сократить время занимаемое видеоконтроллером при использовании сравнительно медленных микросхем dram, тут особых неожиданностей нет.
- - - Добавлено - - -
Насчет "клонов без регенерации на бордюре". Если даже не привязываться к конкретным примерам, то для клонов с раздельными полями озу в принципе есть сравнительно простой вариант - на бордюре регенерировать линейку dram с видеоозу аналогично линейке dram без видеоозу, с использованием возможностей z80.
Lethargeek
16.02.2022, 16:37
Насчет "клонов без регенерации на бордюре". Если даже не привязываться к конкретным примерам, то для клонов с раздельными полями озу в принципе есть сравнительно простой вариант - на бордюре регенерировать линейку dram с видеоозу аналогично линейке dram без видеоозу, с использованием возможностей z80.
"чего только эти русские не придумают, лишь бы память приличную не делать" (~)
AlexCrush
16.02.2022, 17:42
почему "необходимо"? фирменный же как-то и без обходится
Для выполнения требований, указанных в документации к микросхемам памяти - необходимо регенерировать и во время бордюра.
Иначе в регенерации образуется пауза в 56 строк = 3.5мс.
Фактически работает и при значительном превышении периода регенерации, в разы.
часть клонов вроде по времянкам с ним совместима
Вполне можно осуществить совместимость по времянкам и поменяв схему регенерации.
на фирменных точно не идёт, а на всех клонах с раздельной памятью идёт? пруфы будут?
Ну, Пентагонщики ж считают, что их комп самый правильный, а остальные - *****. И ведомая масса пошла у них на поводу.
Поэтому проблемы компов с раздельной памятью, в том числе фирменных, меня не интересуют. Скорпион, Пентагон и пр. с общим полем - вот ориентир.
Логика примерно та же.
Lethargeek
16.02.2022, 19:44
Для выполнения требований, указанных в документации к микросхемам памяти - необходимо регенерировать и во время бордюра.
значит, их необязательно выполнять (по крайней мере, с оригинальной буржуйской памятью)
Иначе в регенерации образуется пауза в 56 строк = 3.5мс.
повторю: 124 строки (даже чуть больше, за счёт двух боковушек)
Вполне можно осуществить совместимость по времянкам и поменяв схему регенерации.
можно всё, но только какой ценой, а тогда старались проще и подешевле
- - - Добавлено - - -
Поэтому проблемы компов с раздельной памятью, в том числе фирменных, меня не интересуют. Скорпион, Пентагон и пр. с общим полем - вот ориентир.
только у одного всё общее поле быстрое, а у другого медленное, это затрудняет ориентирование)
значит, их необязательно выполнять (по крайней мере, с оригинальной буржуйской памятью)
В классике видео в 4116 (наш аналог 565РУ3), у них все достаточно стандартно, надо перебрать 128 адресов RAS за 2 мс, как и у РУ3 (и РУ5/РУ6).
Lethargeek
16.02.2022, 20:30
В классике видео в 4116 (наш аналог 565РУ3), у них все достаточно стандартно, надо перебрать 128 адресов RAS за 2 мс, как и у РУ3 (и РУ5/РУ6).
и? в спеке фирменном не выполняется же
и? в спеке фирменном не выполняется же
После небольшого ознакомления со схемой (http://www.breakintoprogram.co.uk/wp-content/uploads/2012/06/zx_spectrum_schematic_issue_2.png) у меня сложилось впечатление, что z80 там способен регенерировать видео dram вне активной области.
AlexCrush
16.02.2022, 21:27
значит, их необязательно выполнять (по крайней мере, с оригинальной буржуйской памятью)
Да и на красный свет дорогу можно переходить вполне успешно, кто ж спорит
повторю: 124 строки (даже чуть больше, за счёт двух боковушек)
Согласен, я неверно написал.
можно всё, но только какой ценой, а тогда старались проще и подешевле
Ну да,верно.
На времянки более-менее забивали, потому что работало в целом с почти любыми.
А вот на регенерацию забить было нельзя, выкручивались кто как мог.
Lethargeek
17.02.2022, 00:05
После небольшого ознакомления со схемой (http://www.breakintoprogram.co.uk/wp-content/uploads/2012/06/zx_spectrum_schematic_issue_2.png) у меня сложилось впечатление, что z80 там способен регенерировать видео dram вне активной области.
ну и что? ясно, что "способен" - если обратится к медленной памяти - что не гарантируется совсем, код может хоть часами в быстрой крутиться
ясно, что "способен" - если обратится к медленной памяти - что не гарантируется совсем, код может хоть часами в быстрой крутиться
Нет, я не про случайное обращение на чтение или запись в медленную память, а про регенерацию средствами z80. "Способен", а не "регенерирует" потому, что я не смог найти точной полной информации о формировании ras в ula и кроме того в issue 2 (и issue 1) смущал прилепленный rfsh. Но если посмотреть на issue3-6 (https://spectrumforeveryone.com/technical/zx-spectrum-pcb-schematics-layout/), то остается один вариант. С большой вероятностью ras для видеоdram при обращениях проца вне активной области формируется примерно как ras для невидеоdram, из mreq; адресные выводы, передающие регистр R в цикле регенерации, подключены аналогично. Это позволяет единообразно регенерировать и невидео и видео dram в неактивной области изображения. Повторюсь, что перейти возможности в уверенность мешает только отсутствие полной информации о формировании ras в ula, а схема позволяет.
смущал прилепленный rfsh
В 90-е активно ходила инфа про защиты программ с использованием регистра R именно как счетчика регенерации. Думаю, не на пустом месте эта идея родилась.
Тем более проц сам предоставляет такую возможность. В фирменной машине, скорее всего, это и сделано.
Кстати, проверить относитель легко, нужна лишь фирменная тачка и прога для ручного контроля регистра R. Принудительно фиксируем регистр, а потом проверяем память.
Хотя, если версия правдива, такая прога убьет саму себя, когда память поплывет, если расположить ее в "быстрой" памяти (которую видеоконтроллер не трогает).
Lethargeek
17.02.2022, 09:48
Кстати, проверить относитель легко, нужна лишь фирменная тачка и прога для ручного контроля регистра R. Принудительно фиксируем регистр, а потом проверяем память.
Хотя, если версия правдива, такая прога убьет саму себя, когда память поплывет, если расположить ее в "быстрой" памяти (которую видеоконтроллер не трогает).
так проверяли же по соседству в теме specemu - быстрая память утекает, но ооооочень медленно
и согласно сервисмануалу, медленную проц не рефрешит - и юла на бордюре не рефрешит, иначе тормозила бы проц
согласно сервисмануалу, медленную проц не рефрешит - и юла на бордюре не рефрешит
Ну, это логично (и первое, и второе): к медленной обращается Юла, но только во время экрана, заодно и регенит ее.
Отсюда вытекает следствие: торможение проца в "медленной" памяти неравномерное. Да и вообще там Wait, по идее, только в медленной должен случаться.
А вот что мне совсем непонятно - жуткое падение производительности, когда регистр I помещен в медленную. Прерывание раз в кадр, с чего тормоза-то?
Кстати, проверить относитель легко, нужна лишь фирменная тачка и прога для ручного контроля регистра R.
Если речь про невидео dram, то проверить сравнительно легко, а вот четко проверить отсутствие рефреша видеоdram процом в неактивной области фиксируя R вряд ли получится, тут нужен логический анализатор. Проблема (для проверки, а для работы это как раз здорово), что официальный период регенерации устанавливается по неудачным ячейкам, сейчас, к сожалению, забыл точную цитату из книжки, как они называются. Подавляющее большинство ячеек dram могут обходиться без регенерации сравнительно долго, но встречаются неудачные, которые утекают в разы и даже на порядки быстрее, и официально период регенерации ориентирован именно на них с некоторым запасом. Это приведет к тому, что даже если видеоdram не регенерируется на бордюре, то регенерации в активной области хватит, чтобы исключить гарантированное утекание, если в конкретном экземпляре dram не попались очень неудачные ячейки.
согласно сервисмануалу, медленную проц не рефрешит
Там есть пара упоминаний:
1) The CPU incorporates built-in dynamic RAM refresh circuitry. As part of the instruction OP code fetch cycle,
the CPU performs a memory request after first placing the refresh address on the lower eight bits of the
address bus. At the end of the cycle the address is incremented so that over 255 fetch cycles, each row of
the dynamic RAM is refreshed. This mechanism only applies to the optional 32k expansion RAM in the 48k
Spectrum. An alternative refresh method is adapted for the standard 16k RAM.
Эта цитата со странностями, почему 255, когда на самом деле 128 (и нужно для этих dram и период R). Вероятно это все же писал не разработчик, а отдельный человек, нанятый писать service manual.
2) Refresh for the standard 16k dynamic RAM is accomplished during normal read cycles, ie most rows are
refreshed each time the ULA accesses the memory mapped displayed area during picture compilation;
the remaining rows are refreshed as a result of other read cycles also known to occur at regular intervals
within the refresh period.
Тут основной вопрос - как конкретно формируется ras при обращениях проца к озу. Если формировать этот ras только на основании mreq (а A14/A15 учитывать при формировании cas), то это позволяет регенерировать на бордюре процом. Ну и после некоторого размышления я склонился к тому, что в issue1 и 2 прилепленный rfsh даст возможность регенерировать видеоdram при неактивности ras от ula, т.е. под вопросом рефреш в issue3-6.
Lethargeek
17.02.2022, 11:04
А вот что мне совсем непонятно - жуткое падение производительности, когда регистр I помещен в медленную. Прерывание раз в кадр, с чего тормоза-то?
слышал или сам наблюдал? например, тут (https://worldofspectrum.org/faq/reference/48kreference.htm) пишут, только снег от этого бывает, без тормозов:
Finally, there is an interesting bug in the ULA which also has to do with this split bus. After each instruction fetch cycle of the processor, the processor puts the I-R register "pair" (not the 8 bit internal Instruction Register, but the Interrupt and R registers) on the address bus. The lowest 7 bits, the R register, are used for memory refresh. However, the ULA gets confused if I is in the range 64-127, because it thinks the processor wants to read from lower 16K RAM very, very often. The ULA can't cope with this read-frequency, and regularly misses a screen byte. Instead of the actual byte, the byte previously read is used to build up the video signal. The screen seems to be filled with 'snow'; however, the Spectrum won't crash, and program will continue to run normally. One program which uses this to generate a nice effect is Vectron.
- - - Добавлено - - -
Тут основной вопрос - как конкретно формируется ras при обращениях проца к озу. Если формировать этот ras только на основании mreq (а A14/A15 учитывать при формировании cas), то это позволяет регенерировать на бордюре процом.
ну, то есть фактически выполнять чтение из двух линеек одновременно, а потом отбрасывать один результат?
крайне маловероятное усложнение, особенно с учётом скупердяйства дядюшки Клайва
слышал или сам наблюдал? например, тут пишут, только снег от этого бывает
Более употребимо слово "читал", но в данном контексте - да, лично сам не наблюдал. Так что исправляю недосказанность: "по версии некоторых источников, ..."
Да даже если речь про "снег" - откуда он берется? Что это, глюки проца или остального железа? В клонах в общим полем такого нет, вывод: проц ни при чем.
выполнять чтение из двух линеек одновременно, а потом отбрасывать один результат?
Читать или писать память не обязательно, в цикле регенерации mreq активируется (формируем ras и стробируем R на шине адреса), rd и wr не активируются (не формируем cas), не вижу препятствий (в неактивной области изображения) для одновременной регенерации обоих линеек.
Lethargeek
17.02.2022, 13:34
Да даже если речь про "снег" - откуда он берется? Что это, глюки проца или остального железа? В клонах в общим полем такого нет, вывод: проц ни при чем.
дык по ссылке так и сказано, что глюк юлы
кстати, на амстрадовских моделях его исправили
Читать или писать память не обязательно, в цикле регенерации mreq активируется (формируем ras и стробируем R на шине адреса), rd и wr не активируются (не формируем cas), не вижу препятствий (в неактивной области изображения) для одновременной регенерации обоих линеек.
ну всё равно как минимум нужно муксить mreq на выводе растра, мб и еще что-нибудь, за что жаба задушила бы крохобора
> кстати, на амстрадовских моделях его исправили
Только на чёрных. На серых снег в каждой второй русской программе.
Почитал про снег и похоже, что ras для видеоdram при обращениях проца формируется юлой не только по mreq, но и с учетом A14-A15, что печально. Вдвойне печальна причина снега, недоделан арбитраж между ula и процом. С учетом всего этого в issue3-6 почти наверняка на бордюре нет регенерации процом в цикле рефреша, только если он обратится на чтение или запись. Т.е. сделать рефреш на бордюре было можно, но скорее всего не сделали, или времени не хватило или ресурсов ula.
Насколько хорошо работал rfsh в issue1-2 тоже не совсем очевидно. Идея вроде понятна, если ras от ula неактивен, то стробируем адрес регенерации R по rfsh. Но тут тоже возникают вопросы. Рефреш входит в цикл выборки команды, т.е. перед этим было чтение, значит был активен ras. RAS формируется с задержкой из mreq, и надо смотреть анализатором наличие фронта ras (или там нечто иголкоподобное). Плюс к моменту начала активности сигнала rfsh на шине адреса еще не обязан быть полностью правильный R, он стабилизируется к моменту активизации mreq при активном rfsh.
4. соответствии с организацией экрана спектрума, имеется такое соответствие счетчиков экрана и адреса процессора (для пикселей)
A0..A4 = H0..H4
A5=V3
A6=V4
A7=V5
A8=V0
A9=V1
A10=V2
A11=V6
A12=V7
A13=0
A14=1
A15=0
Что будет, если поменять мультиплексирование?
Скажем, так:
MA0..MA7 = A0..A4, A8, A9, A10 во время выбора строки
MA0..MA7 = A5, A6, A7, A11, A12, A13, A14, A16 во время выбора столбца.
Если поменять биты как вы советуете в младшем байте так H3H4H5H6H7V0V1V2 в старшем так V3V4V5V6V7 смотрим какие адреса будут регенерировать видео контроллер.
первыми отработают H3H4H5H6H7 Это 32 байта первой строки
следующим перейдёт из 0 в 1 отработает V0 он задаст адрес первого байта второй теле строки, моделируем это число
A15 A16 V7 V6 V5 V4 V3 V2 V1 V0 H7 H6 H5 H4 H3
0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0
переводим в другие системы и получаем
16416 #4020 b01000000 00100000
о горе! это первый байт девятой теле строки, а должен быть
первый байт второй теле строки
16640 #4100 b01000001 00000000
Что изменилось?
На экране будут спутаны все строки, но регенерация то работает. Только кому она нужна без нормального расположения строк.
Для видеоконтроллера - да тоже без разницы.
Не думаю, что он согласится.
Что про снег читать - его надо видеть:) Хотя это так, баловство :) Но комуу-то - интересное.
https://www.youtube.com/channel/UCR5u5T09cMoeIC7_PEEg-XQ
Всего один-единственный эмуль, точно эмулит снег. Десяток других, увы, лишь приближенно. Пока другого не доказано.
Вот так снег выглядит : http://www.sanarin.ru/video/(210928-174955).avi
Повторюсь: что мешает переставить биты в адресе местами? Религия? Политика? Тут такие темы запрещены =)
Уже объяснял: вместо V3-V5 подаем V0-V2, и получаем реген за восемь ТВ-строк вместо 64-х. На списке строк с адресами (#4000-#4700) это отлично видно.
Отрезанные V3-V5 подаются вместо старых V0-V2, и на выходе получим те же данные из памяти. Чипу без разницы, в каком порядке идет выборка.
Пересчитай и выложи, я посмотрю как ты считаешь.
AlexCrush
17.02.2022, 22:49
Если поменять биты как вы советуете в младшем байте так H3H4H5H6H7V0V1V2 в старшем так V3V4V5V6V7 смотрим какие адреса будут регенерировать видео контроллер.
Еще раз, меняем только в мультиплексоре. Конечно же одинаково меняем - и для процессора и для видеоконтроллера.
Адрес, в терминах процессорных сигналов A0-A15, ни одной строки, ни единого экранного байта - не изменится. Как первая строка начиналась на #4000, а вторая на #4100 - так всё и останется. Никакого горя, не поменялись адреса.
Изменится адрес в терминах MA0-MA7. И это невозможно заметить ни видеоконтроллеру, ни процессору. Это заметит только микросхема памяти, для неё улучшится регенерация, и более ничего.
На экране будут спутаны все строки,
Давайте на спор, на 10000 руб.
Я запишу видео, где я перепутываю адресные линии на входе мультиплексора.
Если изображение испортится, перепутаются строки - я проиграл, я плАчу.
Если не испортится - платите вы.
Готовы?
И это невозможно заметить ни видеоконтроллеру, ни процессору
Выше уже писал про аналогичную ситуацию с перемешкой адресов на входах ПЗУ, но до товарища так и не дошло.
меняем только в мультиплексоре
А я где меняю? Я смоделировал работу видео контроллера согласно вашему же описанию. Теперь что не так. Объяснить толком не могём что и где меняем, а уже бабла срубить хотим? Нет объяснений - нет способа. Логично?
- - - Добавлено - - -
вариант 1
меняем только в мультиплексоре
вариант 2
Конечно же одинаково меняем - и для процессора и для видеоконтроллера.
вариант 3
я перепутываю адресные линии на входе мультиплексора.
определитесь уже , 1-где и 2-что меняем.
я не телепат.
Я вам и написал в начале, что так не работает, как вы объясняете. Но вы и после ничего толком прояснить не можете. А говорите спрашивай, тут всё просто. Вижу у вас не всё просто и не обижайтесь.
Выше уже писал про аналогичную ситуацию с перемешкой адресов на входах ПЗУ, но до товарища так и не дошло.
Объяснения типа у всех работает, и что то про религию и т.д. детский сад какой то. Опиши процесс если сможешь. Не можешь написать как работает, зачем пишешь ерунду? Набиваешь счётчик сообщений, где то скидку дают?
- - - Добавлено - - -
Изменится адрес в терминах MA0-MA7
Ну я могу себе представить ситуацию в которой линейная адресация памяти меняется местами с нелинейной адресацией видеоконтроллера. То есть видео контроллер перебирает адреса линейно, а адресация памяти не линейна и для процессора тоже. Вот в этой ситуации возможно будет всё работать. Но в ваших словах этот принцип не озвучивается никак. Только не говорите, что именно это вы имели в виду всё это время.
CodeMaster
18.02.2022, 03:09
Выше уже писал про аналогичную ситуацию с перемешкой адресов на входах ПЗУ, но до товарища так и не дошло.
Тут ещё интересный момент, что никто особо не знает как оно там у конкретного производителя на кристалле. А то, то по даташиту и пинам всё линейно, а на кристалле как было удобно так и развели. Биту ведь пофиг в каком порядке храниться, типа как в поговорке "хоть безобразно, но единообразно".
Статья из ZX-Ревю 96/6
© Рюмик С.М. г. Чернигов, 1996
НЕСТАНДАРТНОЕ ИСПОЛЬЗОВАНИЕ РЕГИСТРА R.
Как известно, микропроцессор Z80 имеет в своем составе регистр обслуживания динамической памяти, так называемый, регистр R.
Подобного регистра не было в предшественнике Z80 — микропроцессоре I8080 (отечественный аналог КР580БМ80А). Разработчики Z80 изначально ориентировались на применение в качестве ОЗУ микросхем динамической памяти, требующих периодической регенерации (восстановления) хранимой информации.
РЕГЕНЕРАЦИЯ ПАМЯТИ В КОМПЬЮТЕРЕ "ZX-SPECTRUM"
Рассмотрим общие принципы регенерации ОЗУ через регистр R.
Содержимое 8-и разрядного регистра R, в каждом машинном цикле M1 микропроцессора Z80 выдается на шину адреса. После выполнения очередной команды, содержимое регистра R увеличивается на единицу. В схеме компьютера "ZX-SPECTRUM" задействованы 7 младших разрядов регистра R, которые аппаратно через мультиплексор подаются на адресные входы восьми микросхем динамической памяти К565РУ5.
Микросхема К565РУ5 организована матрицей запоминающих элементов — 128 строк по 512 столбцов. Одновременно информация может быть регенерирована в одной из 128 строк ОЗУ при спаде сигнала выборки строки RAS и единичном уровне сигнала выборки столбца CAS.
7 младших разрядов регистра R однозначно определяют порядковый номер строки от #00 до #7F. Итого 128 строк.
В "ZX-SPECTRUM" процесс обращения к ОЗУ синхронизирован сигналом MREQ от Z80, который подается непосредственно на входы RAS микросхем К565РУ5. Вся информация в памяти гарантированно регенерируется через каждые 128 команд программы. Согласно справочным данным, время регенерации Tref для микросхем К565РУ5 должно быть не более 2 мс, иначе информация в ОЗУ "потечет". Это условие для компьютера "ZX-SPECTRUM" выполняется без особого труда, т.к. Tref при работе обычной программы составляет величину примерно от 150 мкс (для 4-тактных команд) до 900 мкс (для 23-тактных команд).
Под словом "обычная программа" подразумевается программа, не использующая установку регистра R. Из ассемблера к регистру R можно обратиться через команды LD A,R и LD R,A.
В свое время, применение регистра R для обслуживания динамической памяти значительно упростило схему компьютера "ZX-SPECTRUM", т.к. отпала необходимость в применении специальных мультиплексоров и счетчиков регенерации.
Следует отметить, что в фирменном "ZX-SPECTRUM-48" регенерация памяти на регистре R была осуществлена только для верхних 32 кБайт памяти по адресам #8000 — #FFFF. ВидеоОЗУ и часть памяти по адресам #4000 — #7FFF, были выполнены с постоянной принудительной регенерацией от синхросчетчиков компьютера. Такой тип архитектуры компьютера называется — "с раздельными полями памяти".
Существуют модели, где вся память регенерируется через регистр R или от синхросчетчиков. Подобный тип архитектуры компьютера называется — "с общим полем памяти".
ЧАСТИЧНАЯ РЕГЕНЕРАЦИЯ ОЗУ
Использование регистра R в программах для "ZX-SPECTRUM" является экзотикой. Как правило, программисты обращаются к регистру R в двух случаях: для получения псевдослучайной величины и для организации циклической защиты от просмотра программ методом "заксоривания".
Еще один нестандартный прием программирования пришлось применить, решая практическую задачу — измерение периода регенерации Tref микросхем К565РУ5. Для этого необходимо было организовать частичную регенерацию ОЗУ, т.е. в какой-то части памяти в течение определенного отрезка времени не должны были восстанавливаться данные.
"Сердцем" программы измереня Tref является кодовый блок "активной" задержки на регистре R, который предлагается к детальному рассмотрению.
Понимание работы программы невозможно без изучения временной диаграммы (рис. 1) цикла выборки команды микропроцессора Z80 (Дж. Коффрон. Технические средства микропроцессорных систем. — М.: Мир, 1983).
https://pic.maxiol.com/images2/1645166169.92893355.clipboard1.jpg
Циклом выборки начинается выполнение любой команды Z80, как однобайтной, так и многобайтной.
В начале такта T1 содержимое 16-разрядного счетчика команд РС подается на адресную шину A0-A15. Через половину периода следования тактовых импульсов CLK (Z80, вывод 6) происходит активизация сигнала MREQ (Z80, вывод 19). Так как MREQ в "ZX-SPECTRUM" подан непосредственно на входы RAS линейки микросхем К565РУ5, то в этот момент происходит первая регенерация информации в строке ОЗУ с адресом, определяемым младшими 7 разрядами счетчика адреса РС.
Такт T2 — подготовительный, микропроцессор анализирует внешние сигналы.
Такт T3 и T4 цикла выборки команды специально предназначены для регенерации динамической памяти.
В начале такта T3 процессор выставляет на адресную шину адрес регенерации, где младшие 8 разрядов определяются содержимым регистра R. Старшие 8 разрядов A8-A15 остаются неизменными. По спаду сигнала MREQ происходит вторая регенерация информации в ОЗУ.
Итого, за один цикл M1 восстановление данных в памяти происходит дважды. Если младшие 7 разрядов счетчика РС и регистра R совпадают, то будет регенерирована дважды одна и та же строка ОЗУ, а если не совпадают — то однократно две разные строки ОЗУ.
В листинге 1 приведен дизассемблированный блок кодов, выполняющий функцию задержки с "активной" паузой на регистре R. В таблице 1 расписаны состояния счетчика команд РС и регистра R в процессе работы программы.
ЛИСТИНГ 1
#75F8: 06 10 LD B,#10 ; Задержка на регистре В.
#75FA: 3E 02 LD A,#02 ; Начальная установка А.
#75FC: C3 80 76 JP L1 ; Начало цикла В.
#75FF: 1B L2 DEC DE ; Уменьшение счетчика.
#7600: ED 4F LD R,A ; Установка R.
#7602: 15 DEC D ; Проверка на
#7603: 14 INC D ; достижение D=0.
#7604: 20 F9 JR NZ,L2 ; Цикл DE.
#7606: 10 78 DJNZ L1 ; Цикл В.
... ... ... ... ... ...
#7680: ED 4F L1 LD R,A ; Установка R.
#7682: 11 00 21 LD DE,#2100; Задержка на регистре DE.
#7685: C3 FF 75 JP L2 ; Начало цикла DE.
https://pic.maxiol.com/images2/1645167135.92893355.clipboard2.jpg
Для увеличения длительности паузы, в программе применены два вложенных цикла задержки на регистах B и DE.
Собственно "активная" пауза начинается со строки #75FF. Далее, в процессе работы программы, счетчик адреса РС поочередно принимает значения #75FF — #7607 и #7680 — #7687. При этом 7 младших разрядов A0-A6 (PC) на шине адреса в режиме "Регенерация 1" (рис. 1) будут принимать 9 дискретных значений: #7F, #00-#07.
В то же время в регистр R в строке #7680 заносится начальное число #02, и при выполнении очередной команды значение R будет увеличиваться на единицу. В таблице 1 показаны изменения младших 7 разрядов счетчика команд РС и регистра R в двух циклах DE и B при точке отсчета #7600. Обратите внимание, что по команде LD R,A регистр R меняет свое значение дважды: в самом начале увеличивает свое значение на единицу, а в конце принимает значение аккумулятора A.
В итоге 7 младших разрядов A0-A6 (R) шины адреса в режиме "Регенерация 2" будут находиться в диапазоне #02-#07.
Таким образом, в цикле "активной" паузы регенерация информации происходит не во всех 128 строках ОЗУ, а лишь в 9 строках с порядковыми номерами #7F, #00-#07. Причем часть программы по адресам #7680-#7687 будет находиться под регенерационной защитой #75FF-#7607.
Меняя значения начальной установки регистра R, а также расширяя "тело" задержки, можно увеличить количество регенерируемых строк ОЗУ по своему усмотрению. При частичной регенерации появляется возможность разместить программу в ОЗУ "кусками" под защитой регенерируемых строк.
Измерение периода регенерации микросхем памяти является частной задачей, что, однако, не ограничивает применение самой идеи в других областях, например, для определения архитектуры компьютера, для организации защиты программ, для изощренного наказания за несанкционированное копирование и т.д.
я могу себе представить ситуацию в которой линейная адресация памяти меняется местами с нелинейной адресацией видеоконтроллера. То есть видео контроллер перебирает адреса линейно, а адресация памяти не линейна и для процессора тоже. Вот в этой ситуации возможно будет всё работать
Это уже вторую страницу мусолят, неужели начинает доходить?
Опиши процесс если сможешь. Не можешь написать как работает, зачем пишешь ерунду?
Уже "на пальцах" разжевал, то бишь расписал, какие сигналы нужно поменять. Повторяться не буду. Не можешь осилить схему - не пиши ерунду.
по даташиту и пинам всё линейно, а на кристалле как было удобно так и развели. Биту ведь пофиг в каком порядке храниться
Это да, но реализации в железе сделаны согласно даташитам, перебирая строки за допустимый интервал, и оно работает.
А какой там порядок подводки к кристаллу - никого не волнует, в общем и целом. Главное, что не перепутаны столбцы со строками, иначе бы реген не работал.
Примерно та же история с выборкой из ПЗУ: адресные ноги можно путать в любом порядке, на выборке это не скажется никак.
Главное - перепутать аналогичным образом либо адреса при программировании, либо саму прошивку перетасовать.
Отдельный лайк creator-у за тот самый материал из ZX-Ревю, бывшего основным источником инфы по Спектруму в те годы.
Думаю, оттуда и идут воспоминания о защите на регистре R, связанной с регеном памяти.
AlexCrush
18.02.2022, 13:57
я не телепат.
Я вам и написал в начале, что так не работает, как вы объясняете. Но вы и после ничего толком прояснить не можете.
Уж извините, старался объяснить как мог. До всех дошло, до вас - как-то туго. Ну наверное плохо объяснял, что уж тут поделать.
AlexCrush
18.02.2022, 16:08
вариант 1
Сообщение от AlexCrush
меняем только в мультиплексоре
вариант 2
Сообщение от AlexCrush
Конечно же одинаково меняем - и для процессора и для видеоконтроллера.
вариант 3
Сообщение от AlexCrush
я перепутываю адресные линии на входе мультиплексора.
Это всё одно и тоже, просто разными словами.
Меняется отображение адресов "логических" (А0-А15 и адресов видеоконтроллера) в "физические" MA0-MA7.
Меняется отображение адресов "логических" (А0-А15 и адресов видеоконтроллера) в "физические" MA0-MA7
Смоделировал адресацию ещё разок по вашему описанию. Действительно так работает. Беру свои слова назад.
Интересная информация, много узнал нового.
На сколько мне известно для регенерации с помощью регистра R нужен сигнал RFSH,
про него никто не написал, вот вставка из даташит:
RFSH Refresh - Регенерация
Выход. Активный уровень - низкий. Сигнал /RFSH указывает, что младшие 7
разрядов шины адреса содержат адрес регенерации для динамической памяти и текущий
сигнал /MREQ может использоваться для восстановления информации.
AlexCrush
08.04.2022, 12:08
На сколько мне известно для регенерации с помощью регистра R нужен сигнал RFSH,
Не, на RFSH можно не смотреть.
На шине всё выглядит как чтение из памяти из адреса IR - т.е. MREQ + RD + RFSH.
Поэтому регенерация выполняется как бы сама собой - R увеличивается, в итоге процессор перебирает 128 адресов,
Может быть Вы и правы, но даташит говорит о другом.
77208
даташит говорит о другом
По картинке, вроде, все правильно: RFSH и MREQ активны, на ША выставлен адрес регена.
RD неактивен, так и должно быть. Насколько помню, в куцых клонах по MREQ+RD (либо неактивному WR) определяется чтение из памяти.
Ну или наоборот, активный WR/неактивный RD говорит о записи в память. То бишь RFSH в них вообще не проверяется.
HardWareMan
11.04.2022, 18:39
Не, на RFSH можно не смотреть.
На шине всё выглядит как чтение из памяти из адреса IR - т.е. MREQ + RD + RFSH.
Поэтому регенерация выполняется как бы сама собой - R увеличивается, в итоге процессор перебирает 128 адресов,
Нет. Процессор не может выставлять RD потому как это приведёт к активации схемы буфера шины блока ОЗУ. RFSH используется для регенерации RAS-only а иногда для организации цикла CAS-before-RAS.
AlexCrush
14.04.2022, 08:03
Да, признаю ошибку, rd не выставляется
Powered by vBulletin® Version 4.2.5 Copyright © 2025 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot