я на данном этапе по чб композиту подключаю, но бордюр там одного цвета. щя сниму видео)))) увидим как там всё происходит, но я думаю что пора уже искать косяк))
Вид для печати
я на данном этапе по чб композиту подключаю, но бордюр там одного цвета. щя сниму видео)))) увидим как там всё происходит, но я думаю что пора уже искать косяк))
Тест ПЗУ у тебя какое?
Которое сначала бордюр переключает, а потом медленно по линиям закрашивает весь экран?
http://youtu.be/_A3NZgjibJc
вот видос с тест-ПЗУ
Ну процессор что-то пытается делать. Даже в память пишет. То ли он не то читает, то ли ни оттуда.
---------- Post added at 12:50 ---------- Previous post was at 12:48 ----------
Проверь активность на всех линиях данных и адреса.
тест пзу = 48fultst.rom
описание теста во вложении.
на процессоре активность впорядке! и на пзу тоже.
единственное что на ПЗУ при нажатии на сброс. все сигналы в лог.1 выставляются.
по настройке ленинграда. шина адреса должна в лог.0 вроде бы уходить ?!
Я про этот тест говорил.
Посмотрел описание твоего теста. Это тот же самый тест.
ну вобщем всё ясно))) нужно проверять всё подряд) неудобно тут.. всё запаяно. в своём спектре у меня всё в панельках было) проще было проверять, когда например чипа нет а на выходе какие-то данные идут откуда то)))...
ладно как что накопаю, отпишусь.
Для начала нужно добиться матраса.
Немного теории, как получается матрас.
1. Процессор читает код операции, без ПЗУ он должен быть всегда FF (RST 38h)
2. Процессор выполняет RST 38h
2.1. Процессор кидает на стек адрес следующей команды #0039
2.2. Переходим по адресу #0038
и дальше по кругу
В итоге вся память у нас заполняется данными #0039. Это и есть матрас.
Один столбец пиксели и атрибуты = #00, это черный столбец.
Второй столбец атрибуты 00 111 001 (синий INK, и белый PAPER), и пиксели 00111001.
---------- Post added at 13:11 ---------- Previous post was at 13:10 ----------
Если есть осциллограф с двумя лучами, то все это можно наглядно проверить.
не, такого осциллографа нет.
я когда сброс нажимаю у меня столбцы меняются местами (неправильного матраса)
шина адреса как я понимаю по плате, с цпу идет на к155лп10 а дальше уже на пзу и тд..
---------- Post added at 13:47 ---------- Previous post was at 13:19 ----------
все сигналы вроде бы впорядке, IORQ всегда лог.1 и когда сброс нажимаю тоже лог.1Цитата:
основные сигналы шины управления (RD, WR, MREQ, IORQ, M1)
смотрел их на цпу.
---------- Post added at 13:51 ---------- Previous post was at 13:47 ----------
а это сигнал INT на ноге цпу
http://savepic.net/5849652.jpg
Ну дыкть прозвонить все дороги данных и адреса относительно друг друга на предмет КЗ. Дальше менять то, что стоит на пути межу ПЗУ и процом. Имхо.
сигнал CAS на 15 ногах РУ5, чередуется участками без импульсов вниз.
http://savepic.net/5887543.jpg
на некоторых РУ5 при лог.1 на вход Din (2 нога) при сбросе. на выходе вот такая ерунда.
http://savepic.net/5878327.jpg
---------- Post added at 15:23 ---------- Previous post was at 14:04 ----------
вобщем, все выходы РУ5 идут на микруху 555ир22 (74ls373)
на входах в микруху данные с РУ5 на выходах какая то ерундень))..
разве данные не должны совпадать ?..
Нет не должны. Память читает не только Z80, а еще и видеоконтроллер. У ир22 есть вход записи, когда запись активна данные со входа копируются в регистр (на выход). Когда запись не активна на выходе данные из регистра независимо от входа.
---------- Post added at 23:19 ---------- Previous post was at 23:14 ----------
Кроме того есть еще сигнал разрешения выхода, когда он неактивен выходы переводятся в высокоимпедансное состояние.
притащил плату на работу.
есть осциллограф с двумя каналами.
это сообщение я понял:
http://zx-pk.ru/showpost.php?p=721062&postcount=51
но как проверить это визуально ?.
и ещё вопрос. есть ли (наверное должна быть) книга где в подробностях описано как спектрум работает ? железно а не адресами ? ) или тут нужно читать отдельно про з80 и остальные части пэвм ?..
Ну, к примеру, как проверить чтение операции (цикл m1).
Синхронизируемся по сигналу m1. Далее проверяем наличие сигналов mreq и rd в пределах m1. Смотрим доку по z80, чтобы знать как эти сигналы должны располагаться относительно m1. Потом проверяемых все линии адреса. Во время m1 при матрасе мы должны всегда иметь адрес #0038 или 00000000 00111000, если все время выполняется rst 38h. Потом смотрим шину данных при чтении на всех линиях должны быть единицы. Далее у нас идёт запись в стек. Теперь синхронизация по сигналу wr. Будет два импульса wr потом перерыв на m1. При первом импульсе пишем младший байт #39 при втором старший #00. А адреса на каждом импульсе уменьшаются на один их не отследишь. Если все как описано, то нужно проверить запись в память, что все данные доходят до нужных микросхем памяти и правильно формируется сигнал wr на всех микросхемах.
---------- Post added at 10:10 ---------- Previous post was at 10:07 ----------
Если и теперь все хорошо нужно проверять чтение памяти видео контроллером. Должно считываться #0039. Эти данные должны корректно записываться в регистры атрибутов и пикселей и выдаваться с них на мультиплексоры.
---------- Post added at 10:14 ---------- Previous post was at 10:10 ----------
Где-то по ходу проверки обязательно будет несоответствие. Как только оно найдётся сразу станет понятно в чем проблема.
Все просто. Во время m1 a0 всегда равно нулю. Все правильно. Теперь нужно проверять остальные линии адреса.
---------- Post added at 14:18 ---------- Previous post was at 14:17 ----------
В этом нет смысла. Адреса используются еще в циклах записи. Что где так не разберешь.
уже разобрался.
сообщение потер, чтобы не загромождало форум, там мало информации.
вобщем.
на цпу всё ок!
т.е. адрес имеем #0038h
сейчас буду смотреть шину данных на цпу.
Да rd и mreq правильные. rd только при m1, а mreq при m1, при рефреше и при двух циклах записи.
---------- Post added at 14:21 ---------- Previous post was at 14:19 ----------
Раз адрес #0038 то данные можно и не проверять. Там #FF, иначе мы на #0038 не попадем.
---------- Post added at 14:22 ---------- Previous post was at 14:21 ----------
Скорее всего проблема либо с записью в память, либо с чтением из памяти видеоконтроллера.
на всей шине данных единицы. (на цпу)
не пойму как ориентироваться по wr (и по m1 тоже)
1- А0
2- WR
http://savepic.net/5901753.jpg
---------- Post added at 13:51 ---------- Previous post was at 13:50 ----------
пауза на М1 видимо длинной в 1мс и при этом с инверсным импульсом длинной WR ?
---------- Post added at 13:52 ---------- Previous post was at 13:51 ----------
такое впечатление что А0 равное лог.1 запаздывает или отстает на первый импульс WR
Адреса на запись ничего не дадут, они все время меняются. Раз экран заполняется полосами, знакит меняются правильно.
Смотри wr относительно m1. Должно быть два импульса wr (запись двух байт на стек). Запомни положение wr относительно m1, и смотри шину данных относительно m1. Там где были импульсы wr, считывай биты данных.
понял)
вобщем вот что там есть
данные пишутся такие:
00000000
00111001
все верно ведь.
Отлично. С Z80 подозрения сняты. Теперь опять сидим на M1 и смотрим память. На каждой микросхеме памяти должно быть два импульса wr, и в этот момент на входах данных присутствовать корректные биты.
---------- Post added at 15:06 ---------- Previous post was at 15:02 ----------
Также надо глянуть что на всех микросхемах памяти присутствуют импульсы CAS и RAS.
блин) на одной микрухе вместо импульсов WR (именно двух , как на всех остальных)
тупо всегда лог.1)))
проверяю почему так... видимо обрыв или кз..
оч интересно разбираться))) я теперь знаю как использовать свой осциллограф)) а то стоит и пылится..))) спасибо!
косяк я)..
импульсы есть везде!
Тем не менее, обрыв WR на памяти не должен влиять на работу тест-пзу. Возможно сейчас появится правильный матрас, но, видимо, есть что-то еще.
---------- Post added at 15:14 ---------- Previous post was at 15:14 ----------
Тогда ой. Проверяем CAS, RAS и вход данных.
http://savepic.net/5922235.jpg
вот так выглядит W относительно WR
---------- Post added at 14:31 ---------- Previous post was at 14:15 ----------
на некоторых РУ5
вход данных имеет такую нечеткость...
http://savepic.net/5913018.jpg
щя скажу)
CAS, RAS и W есть на всех микросхемах?
Относительно M1, W выгядит четко два импульса одинаковой длины?
Относительно M1, во время активности W данные какие?
1) есть на всех микросхемах
2) да четко 2 импульса.
3)
http://savepic.net/5905853.jpg
http://savepic.net/5903805.jpg
биты с такими сигналами входа данных, как выше на картинке
D7 D6 D1
все эти сигналы идут к цпу через КР580ВА86 микруху.
---------- Post added at 15:00 ---------- Previous post was at 14:58 ----------
http://savepic.net/5951932.jpg
это относительно м1 плохие импульсы данных на д7 д6 и д1
Это не плохие сигналы. Там где хорошие у тебя биты 0 и 1. А там где плохие 0 и 0. Потом шина отпускается и она медленно подтягивается к 5в.
---------- Post added at 16:06 ---------- Previous post was at 16:05 ----------
Должно быть 4 "хороших" данных и четыре "плохих". 00000000 00111001
Данные важны только в момент W в остальное время не имеет значения.
есть ещё вот такая РУ5 из тех четырех что должна быть с 0 0
http://savepic.net/5905852.jpg
бит D1 это норм ?
если норм то, тогда запись в память тоже нормально происходит ?!
Думаю нормально. Кстати, она той же серии/завода что и все остальные?
По крайней мере все условия для правильной записи есть. Теперь надо тестировать чтение того что мы записали в память.
---------- Post added at 16:19 ---------- Previous post was at 16:14 ----------
Есть сигнал счетчика H0. Когда он внизу мы адресуем четные байты видеопамяти, а когда вверху нечетные. То есть ширина полупериода - один атрибут на экране. Теперь, каждый полупериод мы должны считать два байта памяти, атрибут и пиксели. Но кроме этого обычно есть еще два обращения к памяти - Z80 читает/пишет память. Таким образом у нас на каждый полупериод H0 должно быть 4 обращения к памяти (2 чтения видеоконтроллера и 2 чтения или записи Z80). Либо 1 и 3, либо 2 и 4 будут чтением видеоконтроллера. На выходе данных должны быть биты для одного полупериода 0 и 0 (пиксели и атрибуты), а для второго полупериода H0 - #39 и #39. Вообщем нужно синхронизироваться по H0 и смотреть данные.
все РУ5 одинаковые.
сейчас буду смотреть что там с чтением))
чем дальше тем сложнее прям)))
Можно чуть схитрить. Синхронизироваться по CAS. Когда CAS падает в ноль происходит чтение. На выходе, для тех микросхем где 0 и 0, должно быть чтение только нулей. А там где 0 и 1 будет нестабильный выход.
http://savepic.net/5932465.jpg
вот что наблюдаю на D7 относительно Н0