Page 1 of 5

БАГФИКС GS - ДУБЛЬ 4

PostPosted: 25 Feb 2008, 17:29
by KOE
Ситуация начала уже принимать комический характер, но не думайте, что я пытаюсь изобразить из себя клоуна... Предлагаю 4-й вариант багфикса ГС.

----

Предыстория.

Обнаружились в очередной раз глюки с ГС... На этот раз с контроллером IDE по схеме Nemo. При записи на HDD c дискеты [при вставленной ГС в 1-й слот] пишется чушь, и очень долго, с повисаниями на 20-30 с. При чтении назад читается, но при запуске программ - улет. Если вынуть ГС - все о.к. Что использовать -контроллер Nemo или Z-Controller - без разницы, симптомы везде одинаковые.

----

Багфикс.

1. Собрать багфикс по дублю 3 (можно даже 2 - не имеет особого значения)
2. Уменьшить номинал R3 (в гс!!!) до 1к.

----

В чем был глюк: разработчики ГСа пожидились поставить лишнюю логику, сделали дешифратор портов частично на диодах. И повесили их много. Как следствие, емкости кучи p-n переходов (барьерные, когда они находится в запертом состоянии и диффузионные, когда они открыты) вкупе с корпусными емкостями и вместе с подтягивающим резистором сделали RC-цепочку, постоянная времени которой оказалась настолько большой, что ГС неправильно формировала сигнал IORQCE. Похоже, ГС не успевала снять сигнал IORQCE и порты IDE то были, то блокировались. Этим объяснются и повисания при записи, видимо, прога долго не дожидалась ответа.
Уменьшив номинал резистора, удалось снизить постоянную времени паразитной RC-цепи и работоспособность IDE восстановилась.

Re: БАГФИКС GS - ДУБЛЬ 4

PostPosted: 25 Feb 2008, 17:46
by lvd
Вообще странно как-то. Когда порт дешифрован, все диоды закрыты (на всех сигналах единички) и резюк как раз ёмкости эти заряжает и тянет сигнал в единичку. А вот когда уже адреса другие, то один из сигналов через диод тянет к нулю, и резюк роли в перезарядке ёмкостей тут не играет никакой. А его уменьшение только повышает уровень "лог 0", который и так больше, чем требуемые 0.4в. К тому же, адреса выставляются задолго (за 3 полутакта) до стробов, и всё должно успеть перезарядиться.

PS: могу точно сказать, что будет ненулевое время выпадения VT2 из состояния насыщения. Сам такое как-то наглядно видел на осциллогляде. Но как это влюёт на - хз.

Re: БАГФИКС GS - ДУБЛЬ 4

PostPosted: 25 Feb 2008, 17:57
by KOE
Да, возможно, здесь другое, но общий смысл тот же. Если лог.0 на 6 ногу DD6 придет с большой задержкой (по дефолту там 1 притянуто резистором), то дешифратор сможет хз что дешифровать и нагадить в порты IDE. Уменьшение R3 уменьшит эту самую задержку.

Re: БАГФИКС GS - ДУБЛЬ 4

PostPosted: 25 Feb 2008, 18:20
by lvd
Вот я и говорю - как уменьшение р3 помогает сократить задержку опускания в ноль? Он же пуллап, а речь про опускание в ноль.

Re: БАГФИКС GS - ДУБЛЬ 4

PostPosted: 25 Feb 2008, 18:40
by fk0
Возможно не опускания задержка, а задержка поднятия из нуля

Re: БАГФИКС GS - ДУБЛЬ 4

PostPosted: 25 Feb 2008, 18:49
by KOE
lvd wrote:Вот я и говорю - как уменьшение р3 помогает сократить задержку опускания в ноль? Он же пуллап, а речь про опускание в ноль.

fk0 wrote:Возможно не опускания задержка, а задержка поднятия из нуля


Не вижу принципиальной разницы. Задержка зависит от постоянной времени, а это R*C. А куда задержка из 0 в 1 или наоборот - не пофиг ли? Понимаю, конечно, что для разных переключений у ТТЛ пороговые уровни разные, но если С - большое, то все равно ждать придется, пока не перезарядится.

Re: БАГФИКС GS - ДУБЛЬ 4

PostPosted: 25 Feb 2008, 20:15
by lvd
А я вижу. Сопротивление ног, тянущих в ноль, ом 30, а если их несколько, то и меньше. Тут уже 7к или 2к пулапа рояля не играют никакого.
А вот при пулапе вверх резистором - рояль есть, и на осциллогляде его видно.

Может, в этом и дело?

Re: БАГФИКС GS - ДУБЛЬ 4

PostPosted: 25 Feb 2008, 20:52
by KOE
lvd wrote:А я вижу.


Да, действительно, чёто стормозил.

Re: БАГФИКС GS - ДУБЛЬ 4

PostPosted: 25 Feb 2008, 20:58
by lvd
А кто у тебя в цепочке иоркогеев первый при этом - гс или немоиде/зконтролёр?

Re: БАГФИКС GS - ДУБЛЬ 4

PostPosted: 25 Feb 2008, 21:43
by KOE
ГС, в том-то и дело. Если их местами поменять, то c IDE проблем не наблюдалось (чего не скажешь о гс). Это явный признак того, что гс либо гадит в порты, либо их блокирует, либо и то и другое.

Вообще, поведение гс я в последнее время не понимаю совсем. И по здравому смыслу его объяснить не удается. Вот, например, работает только в 1-м слоте (во 2м и 3м не работает, даже если кроме гс в в сотах ничего нет). Объем распознаваемой памяти загадочным образом коррелирован с погодой на Марсе. Не понимаю я всего этого. Это так только в моём экземпляре, или у всех?

Вот грамотно сделанная периферия (та, что сделана Немой и мной) работает из любого слота при любой погоде на Марсе. Почему у всего остального, что было сделано под ZX-BUS, не так - надо только догадываться.

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