PDA

Просмотр полной версии : Проблема с Красногорском



Doktor
05.01.2011, 16:03
Для своего нового Спекки-ноутбука решил спаять (как всегда на макетке) «Красногорск», т.к.
- сделал их 5 шт. в 91г., имею сейчас функционирующий экземпляр (один из тех пяти)
- Conan прислал отсутствующую схему в приличном качестве
- схема простая, всего 42 корпуса, но главное – времянка запрограммирована в ПЗУ 573РФ2, что позволит проще получить сигналы, необходимые для подключения LCD.

Первое включение (без ROM) порадовало чистым правильным матрацем. С ПЗУ виснет или зацикливается при проверке ОЗУ (красные вертикальные линии на чёрном экране). Тест памяти после 10 мин. работы выдаёт «Неисправность буфера чтения данных». Замена регистра D35 (555ИР22=LS373, благо, что стоит в панельке) на заведомо исправные разных типов (S, F, HCT) ничего не дала. Сама память тоже 100% рабочая, проверена на другом компьютере.

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

1) настройка порта на вывод
2) заполнение всей памяти кодом 00, области атрибутов кодом 38 (paper=black, ink=white)
3) заполнение области экрана кодом FF (белый экран)
4) запись AA в ячейку 4000 (начало экрана)
5) чтение ячейки 4000 и вывод содержимого аккумулятора в порт
6) переход к пункту 5)

Стартую программу в автоматическом режиме и после зацикливания переключаю на пошаговый. Состояния шин адреса, данных и порта отображаются индикаторами. Программа работает правильно (останов происходит по переходу сигнала MREQ из 1 в 0), содержимое ячейки 4000 можно контролировать визуально на экране. При чтении из ячейки 4000 на ШД всегда правильный код АА, а вот в порт выводится что попало (87, 8F, FF, иногда и АА). Т.е. проблема заключается в неправильной загрузке аккумулятора с шины данных в цикле чтения.

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

Начал разбираться с прозрачным доступом к памяти. Кто знает, какому клону соответствуют времянки на «диаграмме» и какой сигнал используется для тактирования процессора?

Прикладываю также на всякий случай схему Красногорска.

fan
05.01.2011, 18:11
Кто знает, какому клону соответствуют времянки на «диаграмме»
Вероятно фениксу (покудо выкладывал Mick). А также прочему синхронному зверью вроде кая , ленинграда , скорпиона , ...

Mick
05.01.2011, 18:26
Вероятно фениксу (покудо выкладывал Mick). А также прочему синхронному зверью вроде кая , ленинграда , скорпиона , ...

Это скажем упрощенная схема тактирования памяти. Она приминительна к большинству клонам спекки имеющих синхронный доступ к памяти.
Я ее рисовал, когда разбирался как там все работает :)

---------- Post added at 18:22 ---------- Previous post was at 18:17 ----------


какой сигнал используется для тактирования процессора?


Если ты про диаграмму, то для тактирования процессора используется сигнал RAS/, вернее чуть задержанный одним логическим элементом.

---------- Post added at 18:26 ---------- Previous post was at 18:22 ----------


При чтении из ячейки 4000 на ШД всегда правильный код АА, а вот в порт выводится что попало (87, 8F, FF, иногда и АА). Т.е. проблема заключается в неправильной загрузке аккумулятора с шины данных в цикле чтения.


А причем тут чтение, если ты в порт пишешь не правильно.

Doktor
06.01.2011, 11:02
для тактирования процессора используется сигнал RAS/, вернее чуть задержанный одним логическим элементом.

Вот это я и хочу выяснить. RAS/ я так понимаю, идёт на 4-е ноги м/схем ОЗУ. Для тактирования процессора используется этот же сигнал, пусть чуть задержанный, но в фазе с RAS/, или инвертированный логическим элементом?

---------- Post added at 09:02 ---------- Previous post was at 08:40 ----------


причем тут чтение, если ты в порт пишешь не правильно
При останове по низкому уровню сигнала MREQ/ при выполнении команды ld A, (HL) на ШД выдаётся содержимое регистра чтения данных (правильное значение АА). При переходе к следующему шагу эта команда завершается загрузкой ШД в аккумулятор. Далее за 2 шага выполняется команда out (A0), A и в порте появляется содержимое аккумулятора, отличающееся от считанного значения.

Добавдю ещё, что команды ld A, nn; out (A0), A выподняются всегда правильно, процессон 100% рабочий.

sserg14
06.01.2011, 11:49
Doktor

Вопрос снимается.Разобрался.

Doktor
10.01.2011, 10:40
Уважаемый Mick,

прошу ответить на мой вопрос насчёт сигналов RAS/ и Clk процессора.

Mick
10.01.2011, 15:58
Вот это я и хочу выяснить. RAS/ я так понимаю, идёт на 4-е ноги м/схем ОЗУ. Для тактирования процессора используется этот же сигнал, пусть чуть задержанный, но в фазе с RAS/, или инвертированный логическим элементом?

В одной фазе с RAS/. Правда хочу заметить встречаются клоны у которых тактирующая совмещена с CAS/, но они считай редкость..

Doktor
12.01.2011, 12:53
После 3-х недель (!) поисков причина неправильного чтения из ОЗУ найдена и проблема решена. Весьма поучительный пример.
Задержка тактовых импульсов процессора относительно сигнала RAS/ ничего не дала, более того, как теперь понятно, лишь усугубляла проблему. При изучении времянок процессора обнаружил, что в цикле чтения данные защёлкиваются по отрицательному фронту Т3. А я считал, что по положительному, как и в цикле чтения команд. Как говорится, мат-часть надо знать. Нарисовав диаграмму понял, что этот фронт совпадает с передним фронтом строба записи данных из ОЗУ в регистр чтения данных (но уже из другой ячейки памяти) и это может быть критичным. Сигналы Clk=RAS/ и строб формируются из выходных сигналов синхронного счётчика D10, первый-инвертированием меандра 3,5 MHz элементом D5.5, а второй-логическим И сигналов 3,5 MHz и 1,75 MHz (элемент D14.2) и последующим инвертированием логическим элементом D14.3 . При использовании м/схем D5 и D14 одной серии передний фронт строба автоматически сдвинут на 5-10 нс относительно заднего фронта Clk и данные из регистра считываются правильно. Я же запаял D5=74LS04, а D14=74ALS00 (не было LS), которые раза в 2-3 быстрее. В результате поимел накладку фронтов и геморрой на 3 недели. Задержка строба двумя инверторами вылечила компьютер, работает стабильно при напряжении питания в диапазоне 4,2-5,8 В.
Вывод: не всегда можно заменять микросхемы более быстродействующими!

P.S. Прилагаю временную диаграмму цикла чтения/записи процессора, дополненную описанной проблемой.

SoftFelix
13.01.2011, 13:38
Doktor, а можно выложить в этой теме в графическом виде ту часть схемы, где добавлялась задержка? Очень интересно! Скоро тоже буду воевать с рабочей схемой и памятью, но глюкодромом при совместном использовании. (http://zx.pk.ru/showpost.php?p=339601&postcount=107)

p.s. Схему скачал, но не совсем понял, в разрыв какого сигнала поставлены два инвертора?

Doktor
13.01.2011, 15:57
Между выходом 11 элемента D14 и входом 11 регистра D35.