Scorpion ZS 256 (проблемы с DRAM) (Проблемы с DRAM при сбросе на scorpion и других клонах)

Postby deathsoft » 11 May 2008, 21:18

В скорпионе реализована следующая "фича", память при сбросе не очищается, либо очищается частично (это используется для хранения настроек теневого монитора и быстрого сброса при подключенном smuc и т.п.).

Вот эта функция и стала источником проблем.

Принес ко мне плату Евгений Мучкин, со следующими симптомами, при резете на экране появлялся мусор, и каждый раз происходил полный сброс (в следствии порчи содержимого 8й страницы озу).

Проблема оказалась в следующем:
(по семе зеленого скорпиона)
Мультиплексоры DD15, DD16 управляют подключением процессора к памяти, мультиплексоры DD17, DD18 управляют подключением ВК(видеоконтроллера) к памяти. При этом в момент сброса шина адреса процессора переходит в Z состояние и на входе DD15, DD16 получаются неопределенные уровни, причем эти уровни могут меняться (когда процессор переходит в резет и когда он из него выходит). В этом нет ничего страшного - кроме одного случая - когда этот момент времени совпадает с приходом сигнала /RAS - при этом адреса должны быть стабильные.

Несоблюдение стабильности адресов при /RAS приводит к тому - что разрушается информация в произвольных ячейках памяти - сигнал /WE при этом не активен, на сколько сильно информация разрушается зависит от типа микросхем ОЗУ. Наименее подвержены помехам отечественные РУ7, наиболее LG GM71c256, средне сименс HYB41c256.

Также есть зависимость от типа процессора: на Z80H (NMOS) глюк менее заметен, на Z84C0010 глюк более заметен.

Глюк наиболее сильно проявляется в режиме TURBO, т.к. при этом при отрисовке бордюра ВК отключен от памяти.

Такая проблема присутствует во всех машинах - где процессор не отключается от доступа к памяти на момент сброса, но на большинство клонов - это никак не влияет - т.к. память чистится полностью процедурой из пзу при каждом сбросе.

Более того в скорпионе есть и вторая проблема - адресная шина памяти MAnn подключена на выходы 2х пар мультиплексоров управляемых противофазно, от сигнала H1M, при этом могут возникать моменты, когда обе пары мультиплексоров отключены от шины MAnn, и шина болтается в "воздухе". Правильнее было бы сделать переключение на мультиплексорах КП12 (как это делается с MA8).

Реализация сброса который сделан на плате - кривая, от кнопки формируется пачка импульсов - которая затем еще затягивается конденсатором. Мною был сделан одновибратор на 155АГ1 в штатном включении - при этом импульс сброса стал прямоугольной формы и он стал всего один, это существенно уменьшило проявление проблемы. А с памятью РУ7 и вообще от нее избавило. (При этом штатный электролит на плате ОТПАИВАЕТСЯ)

Возможные варианты лечения проблемы:
1. Горбатого - могила исправит (что есть - то есть, нет смысла что либо исправлять в кривой схеме) - это мой вариант.
2. Вариант от LVD - сделать подтяжку шины MA резисторами к 5В, и подключать процессор к шине MA только в те моменты - когда шина адреса стабильна.

В расследовании данного происшествия мне помогали: нолька и LVD, за что большое им спасибо.
Last edited by deathsoft on 11 May 2008, 22:00, edited 1 time in total.
User avatar
deathsoft
 
Posts: 4744
Joined: 07 Apr 2007, 00:58
Group: Registered users

Postby lvd » 11 May 2008, 22:09

deathsoft wrote:Несоблюдение стабильности адресов при /RAS приводит к тому - что разрушается информация в произвольных ячейках памяти - сигнал /WE при этом не активен, на сколько сильно информация разрушается зависит от типа микросхем ОЗУ. Наименее подвержены помехам отечественные РУ7, наиболее LG GM71c256, средне сименс HYB41c256.


Это связано с тем, что чтение информации в ДРАМ (оно происходит сразу из всего ряда в момент опускания /RAS в 0) разрушающее, а восстановление (оно же рефреш) происходит в момент закрытия ряда, когда /RAS возвращается в 1.
Если не соблюдаются Tsu и Th для адресов ряда, то внутри чипа могут на короткое время выбираться (и соотв-но засираться) различные ряды.

deathsoft wrote:Более того в скорпионе есть и вторая проблема - адресная шина памяти MAnn подключена на выходы 2х пар мультиплексоров управляемых противофазно, от сигнала H1M, при этом могут возникать моменты, когда обе пары мультиплексоров отключены от шины MAnn, и шина болтается в "воздухе". Правильнее было бы сделать переключение на мультиплексорах КП12 (как это делается с MA8).


Это фигня - ибо промежуток болтания в воздухе короток (ну сколько - 10 нан?), за это время шина удерживает состояние за счёт ёмкостей. Также возможны конфликты, когда оба муха выдают разное, но если и то и другое происходит далеко от отрицательного фронта /RAS, то глубоко пох.

deathsoft wrote:2. Вариант от LVD - сделать подтяжку шины MA резисторами к 5В, и подключать процессор к шине MA только в те моменты - когда шина адреса стабильна.


Основная идея - чтобы в момент прихода /RAS шина MAx была в устойчивой 1 или 0.
Можно что сделать - довольно сильные пуллапы, чтобы успевали утягивать шину за время цикла, и отключать процессорные мухи, когда на процессоре ресет. Сам ресет сделать синхронным, чтобы от момента начала ресета (который не должен приходиться на момент спада /RAS) до момента спада /RAS проходило достаточное время для утягивания MAx в единички пуллапами.
F̞͖̭̿̔ͯu̐̅cͬ̑ͩk̨̤̳͇̮̭̪̠̽̿̓̆ͭͩ ̷̩̰͎̩͓̘̾̀ͬ̊ͭ͛ͅda̝̺͙̬͎̝̾͟ ̰̜̝̯͉̯̖̓̎́ͨ̽ͫ͟f̟͇̭̀ͬͨͭ̐̚u̹̼̹̗̞͑̔͂͐̚cͭ̅̊̆̒̆ǩ̝̩̯́ͥ̔̍̑ḭ͓͍̳̬ͦ̽͂n͍͎͈̈̅ͩͬ ̊ͫ̂̾̑̈́f̲͚͉͓͗̋́ͧͦ̅ȗ͇̲̻͈̲̅̎͗͒ͭ͡c̬̟̠̹̯̈́ͩ͘ͅk̫̠̻̋͜a̲͒̾̇!͙͕̺͉̗̩̲̂̏̄̀
User avatar
lvd
 
Posts: 7262
Joined: 07 Apr 2007, 21:28
Group: Registered users

Postby deathsoft » 11 May 2008, 22:31

lvd wrote:Сам ресет сделать синхронным, чтобы от момента начала ресета (который не должен приходиться на момент спада /RAS) до момента спада /RAS проходило достаточное время для утягивания MAx в единички пуллапами.

Сигнал /RAS - это по сути - клок процессора - генерируется постоянно с частотой 3.5МГц
User avatar
deathsoft
 
Posts: 4744
Joined: 07 Apr 2007, 00:58
Group: Registered users

Postby deathsoft » 11 May 2008, 22:33

То что проблема столько лет не давала о себе знать - говорит лишь о том - что при хорошо "настроеной" плате - проблема не проявляется (имеется в виду индивидуальный подбор процессора и памяти). Видимо этим в скорпионе постоянно и занимались.
User avatar
deathsoft
 
Posts: 4744
Joined: 07 Apr 2007, 00:58
Group: Registered users

Postby Black_Cat » 11 May 2008, 23:03

deathsoft wrote:проблема не проявляется (имеется в виду индивидуальный подбор процессора и памяти). Видимо этим в скорпионе постоянно и занимались.

smile ага, а кто-то говорил что КАЙ и Скорп одно и то-же smile
"Очень трудно найти чёрную кошку в тёмной комнате... особенно, если её там нет.", "Forever!".
zx.clan.su - Soviet Union ZX Spectrum Community - форум посвящённый развитию Спека.
User avatar
Black_Cat
Не умею ничего делать, потому учу
 
Posts: 659
Joined: 17 Apr 2007, 13:19
Group: Removed

Postby lvd » 11 May 2008, 23:06

Black_Cat wrote: ага, а кто-то говорил что КАЙ и Скорп одно и то-же

В части цепи сброса и провисания адресов в момент сброса - конечно же одно и то же.
F̞͖̭̿̔ͯu̐̅cͬ̑ͩk̨̤̳͇̮̭̪̠̽̿̓̆ͭͩ ̷̩̰͎̩͓̘̾̀ͬ̊ͭ͛ͅda̝̺͙̬͎̝̾͟ ̰̜̝̯͉̯̖̓̎́ͨ̽ͫ͟f̟͇̭̀ͬͨͭ̐̚u̹̼̹̗̞͑̔͂͐̚cͭ̅̊̆̒̆ǩ̝̩̯́ͥ̔̍̑ḭ͓͍̳̬ͦ̽͂n͍͎͈̈̅ͩͬ ̊ͫ̂̾̑̈́f̲͚͉͓͗̋́ͧͦ̅ȗ͇̲̻͈̲̅̎͗͒ͭ͡c̬̟̠̹̯̈́ͩ͘ͅk̫̠̻̋͜a̲͒̾̇!͙͕̺͉̗̩̲̂̏̄̀
User avatar
lvd
 
Posts: 7262
Joined: 07 Apr 2007, 21:28
Group: Registered users

Postby KOE » 12 May 2008, 00:10

БУГАГА!!!
А в пентагоне такой проблемы вовсе нет, ибо по дефолту к памяти подключен ВК, а шина адреса процессора подключается к ней только во время циклов чтения из памяти и извлечения опкодов biggrin
Т.е. не происходит холостых чтений из памяти, когда процессору считанные данные не нужны, как в скорпионе.
Last edited by KOE on 12 May 2008, 08:01, edited 1 time in total.
Мы рождены, чтоб сказку сделать былью
"Кто не обломался, тем еще предстоит"
User avatar
KOE
 
Posts: 4682
Joined: 15 Apr 2007, 13:06
Group: Registered users

Postby Black_Cat » 12 May 2008, 00:17

ты хочешь сказать что в КАЕ есть такие-же "настройки" памяти? чёт не слышал о таком.. , а вот про Скорп - эт всем известно о его критичности к памяти
deathsoft wrote: При этом в момент сброса шина адреса процессора переходит в Z состояние и на входе DD15, DD16 получаются неопределенные уровни, причем эти уровни могут меняться (когда процессор переходит в резет и когда он из него выходит). В этом нет ничего страшного - кроме одного случая - когда этот момент времени совпадает с приходом сигнала /RAS - при этом адреса должны быть стабильные.

чесно говоря мне видится более простая и прозаическая причина - плохие шины питания и как следствие грязная шина адреса (данные утянуты в единицу и им всё равно), которая и гадит в ОЗУ, а процессор тут вааще не при делах..
deathsoft wrote:Реализация сброса который сделан на плате - кривая, от кнопки формируется пачка импульсов - которая затем еще затягивается конденсатором.

ну и что? при первом замыкании кондёр разряжается до нуля, и до следующего дребезжания не успевает зарядиться ни до какого уровня и опять разряжается в нуль. И так несколько раз. Проц при этом сидит в глухом ресете и понятия не имеет о каком-то дребезге. Дык что вешать под этим предлогом АГ3 на сброс - эт из области анекдотов. Если вам так уж мешает дребезг - влепите формирователь на паре ТЛ2, но результат от этого не изменится.

Соответственно и методы борьбы должны быть другими - пропаиваешь шину питания толстым проводом, или бросаешь лучи питания толстым изолированным проводом в критичные участки прям от разъёма питания и ко всему навешиваешь жирную керамику. Как только шина станет чистой - проблема отпадёт сама собой.
Last edited by Black_Cat on 12 May 2008, 02:26, edited 1 time in total.
"Очень трудно найти чёрную кошку в тёмной комнате... особенно, если её там нет.", "Forever!".
zx.clan.su - Soviet Union ZX Spectrum Community - форум посвящённый развитию Спека.
User avatar
Black_Cat
Не умею ничего делать, потому учу
 
Posts: 659
Joined: 17 Apr 2007, 13:19
Group: Removed

Postby KOE » 12 May 2008, 07:49

Black_Cat wrote:ты хочешь сказать что в КАЕ есть такие-же "настройки" памяти?


Она также работает. Там производятся 'холостые' операции чтения из памяти, и если нажать reset, то они будут производится с висящей в воздухе шиной адреса.

Black_Cat wrote:плохие шины питания и как следствие грязная шина адреса (данные утянуты в единицу и им всё равно), которая и гадит в ОЗУ, а процессор тут вааще не при делах..


Во-первых, шины питания здесь ни при чем (механизм засирания описал лвд). При регенерации памяти при чтении и записи ряда должен быть один и тот же адрес. А если шина адреса процессора при сбросе висит в воздухе - там может быть все что угодно.
Во-вторых, шины питания в скорпионе сделаны вполне грамотно, не хуже, чем в KAY (может даже и лучше).

А теперь о том, как вылечить скорпион. Если я еще не основательно подзабыл его схему, то сигнал H1M, который переключает мультиплексоры между памятью и ВК, формируется в ПЛИС. Не надо никаких подтяжек, не надо резетов на АГxx (ваще бред и типичное говностроительство, типа у нас сарай разваливается, а мы ему подпорочку присобачим, до первого урагана (читай изменения фазы луны) протянет), просто делаем прошивку ПЛИС таким образом, чтобы ША процессора подключалась к памяти только в циклах чтения из памяти, примерно как в Пентагоне. Здесь есть один критичный момент: H1M, идущий из ПЛИС, используется еще для формирования строчного синхроимпульса. Поэтому от 2-й ноги DD31 надо оторвать H1M- и подать туда проинвертированный H1, который также можно сформировать в ПЛИС.
Last edited by KOE on 12 May 2008, 07:58, edited 1 time in total.
Мы рождены, чтоб сказку сделать былью
"Кто не обломался, тем еще предстоит"
User avatar
KOE
 
Posts: 4682
Joined: 15 Apr 2007, 13:06
Group: Registered users

Postby Black_Cat » 12 May 2008, 08:45

KOE wrote:Она также работает.

то, что она устроена подобно - эт никто и не спорит - эт очевидно, но вот чтоб приходилось в КАЕ шаманить подбирая память - такого я не слышал, а значит есть нюансы
KOE wrote:Во-первых, шины питания здесь ни при чем (механизм засирания описал лвд). При регенерации памяти при чтении и записи ряда должен быть один и тот же адрес. А если шина адреса процессора при сбросе висит в воздухе - там может быть все что угодно.

ЛВД считает что на шину гадит проц при дребезге ресета, но ресет даже при такой убогой схеме - дребезжать не должен, а вот зашумлённая адресная шина вполне может приводить к такому эффекту, пока проц в ресете. К тому же после ресета на адресе должны быть все нули, т.е. даже если дребезг есть, то исключены любые комбинации кроме всех единиц в z-cостоянии и всех нулей сразу после ресета, т.е. куда попало гадить оно не может в этом случае. А вот с зашумлённой шиной гадить оно может куда попало. Да и шум на шине будет зависеть от типа памяти, т.е. от её потребления что может объяснять разное поведение с разной памятью
Last edited by Black_Cat on 12 May 2008, 09:01, edited 1 time in total.
"Очень трудно найти чёрную кошку в тёмной комнате... особенно, если её там нет.", "Forever!".
zx.clan.su - Soviet Union ZX Spectrum Community - форум посвящённый развитию Спека.
User avatar
Black_Cat
Не умею ничего делать, потому учу
 
Posts: 659
Joined: 17 Apr 2007, 13:19
Group: Removed

Next

Return to Hardware

Who is online

Users browsing this forum: No registered users and 35 guests

cron