1 Отредактировано Voldemar0 (21-04-2021 06:28)

Тема: 565ру: DRAM refresh

Привет!

Во всяких доках на 565-ю серию пишут, что обновление - это операция, происходящая при возникновении сигнала RAS, по адресу, который в этот момент присутсвует на шине адреса.
Вроде как даже упоминается, что адрес при этом защёлкивается.
Если происходит чтение или запись, то должна быть защёлкнута также и CAS-часть адреса. В то же время предполагается, что до завершения операции CAS-часть адреса будет оставаться на шине. Так он защёлкивается или нет ?

Что будет, если при обычных таймингах и порядке следования сигналов RAS и CAS случайным образом менять адрес ?
Насколько операцию обновления можно считать атомарной ?

Не может ли получиться так, что при смене адреса в момент обновления данные будут прочитаны по одному адресу, а затем сохранены уже по другому адресу ? Т.е этакая порча содержимого памяти при !W = 1.

2

Re: 565ру: DRAM refresh

Я привык к термину "регенерация", потому что обновлением можно назвать и обычный цикл записи и непонятно, что конкретно имеется в виду.

Все части адреса конечно защелкиваются на входе в микру. В случае CAS части адреса - в момент спада сигнала CAS + время tCAH (или, по-нашему, tу.а.CAS). Дальше адрес может как угодно меняться - на диаграммах это показано заштрихованной частью.

В случае, если регенерация идет без CAS (как в модулях ДопОЗУ), то вторая часть адреса просто игнорируется.

Voldemar0 пишет:

Не может ли получиться так, что при смене адреса в момент обновления данные будут прочитаны по одному адресу, а затем сохранены уже по другому адресу ?

Нет, в исправной микросхеме так быть не может. В микросхеме ОЗУ есть матрица запоминающих ячеек. Когда подается сигнал RAS, происходит подключение определенной строки в матрице к массиву усилителей чтения. Усилителей чтения столько же, сколько колонок в матрице.

Само по себе чтение в динамическом ОЗУ - разрушающее. То есть, после того как конденсатор запоминающей ячейки через шину колонки подключится к усилителю чтения, весь его заряд будет потерян, потому что емкость шины в десятки раз больше, чем емкость этого конденсатора. Поэтому при каждом чтении информация тут же заново записывается обратно в ячейку (это происходит со всеми ячейками выбранной строки).

Когда подается сигнал CAS, то через мультиплексор просто выбирается выход соответствующего усилителя чтения. Соответственно, никакого "перебегания" битов между колонками быть не может.

3 Отредактировано Voldemar0 (21-04-2021 21:02)

Re: 565ру: DRAM refresh

Изменим задачку: а если в этих микрах однажды случайно испортить порядок сигналов, например, подать !CAS, а потом коротко !RAS  - что будет в этом случае ? Или !CAS без !RAS ? Или !RAS, потом !CAS, потом снять !RAS и через некоторое время снять !CAS ?

Я где-то краем глаза видел, что изменённый порядок CAS/RAS может вызывать некий вид авторегенерации, если в микрухе есть счётчки регенерации, но в ру5 его вроде как нет. Был в ру7, но не помню как управлялся.

Т.е. вопрос: можно ли испортить содержимое памяти не трогая !W, но вводя какие-то нетипичные комбинации RAS и CAS ? Нарушения одиночные, т.е. между ними регенерация происходит по всем правилам (фактически не дольше 50 мкс для любого ряда, по докам должна быть не реже 2 мс).

4 Отредактировано avivanov76 (22-04-2021 03:00)

Re: 565ру: DRAM refresh

Я думаю, тут большее значение имеет длительность сигналов, а не их сочетание.
Обычный цикл чтения внутри микросхемы имеет 4 фазы: презаряд, считывание, усиление и восстановление.
Сигналы для включения этих фаз генерируются из одного сигнала - RAS. Причем три последних фазы формируются при низком (активном) уровне RAS. Если длительность RAS сильно сократится, то первой сломается фаза восстановления, когда все конденсаторы в ячейках строки перезаряжаются. При этом информация, скорее всего, будет испорчена.

Сигнал CAS вряд ли что-то может сломать. При высоком уровне RAS в РУ3, РУ5, РУ6 он просто игнорируется. А при низком - он отвечает только за выбор колонки и появление сигнала данных на выходе. Так, кстати, режим FAST PAGE работает: когда номер строки зафиксирован, можно "мигать" CAS-ом и подавать на адресные входы только новые номера столбцов.

Самый сложный вопрос - что будет, если CAS активен до прихода RAS. Подозреваю, что поскольку установка RAS разрешает прохождение сигнала CAS, то микруха решит, что оба сигнала перешли в активный уровень одновременно. Дальше она, скорее всего защелкнет то, что есть на адресных входах в регистр номера колонки, а номер строки использует тот, что остался с последнего обращения. Короче, будет чтение со странного адреса.

5 Отредактировано Voldemar0 (22-04-2021 06:22)

Re: 565ру: DRAM refresh

Я к чему спрашиваю: игрался с шиной девятки и обнаружил странный эффект: если даже ЦП остановлен и отключен от шины сигналами DMA и RDY, а R/!W жестко зафиксирован в высоком состоянии, то произвольный перебор ША вызывает порчу содержимого DRAM.
Это наглядно видно, если включить отображение какого нибудь HGR=0. Просто начинает мусором закрываться почти всё. Не совсем равномерно, но при большой интенсивности и длительности можно легко изрисовать весь экран за секунды.

Естесно, сперва грешил на какую-то помеху по !W, но облазив всё разными способами, включая и просто закорачивание !W на питание, ничего такого не выявил.

А вчера обнаружил, что мусор лезет в первую очередь при воздействии на A12 и A13. По схеме они идут на таблицу в 556рт и оттуда, через бит D2, напрямую влияют на !RAS. Логика, похоже, такая: Если A12..A15 указывают на обращение к IO или ROM, то !RAS не активен. А если к RAM - то активен (сигнал ВК ОЗУ на схеме девятки). И вот, если смена старших разрядов адреса происходит не синхронно с шиной, то !RAS бесится, причем двумя способами:
1) он может просто зависеть от значения старших разрядов.
2) при смене старших разрядов он может очень коротко (5-7 нс) прыгать вверх (это переключения в 556рт).
В нормальном режиме работы смена адреса на ША привязана к фазе F0, а она напрямую связана с активностью !RAS. Если он не активен - переключай что хочешь. Но если переключать асинхронно, то рано или поздно влетаешь на переключение на активном !RAS.

Сам по себе такой асинхронный режим я не планировал как-то использовать, просто случайно наткнулся на этот эффект и долго пытался понять, как он может влиять на содержимое ОЗУ ?

6

Re: 565ру: DRAM refresh

Мне кажется, тут разработчики девятки оказались сами себе злобные Буратины. На выходе ПЗУ в момент смены адреса всегда будут иголки, поскольку времена выборки ячеек отличаются. И объединяя сигнал RAS с выходом ПЗУ - они обеспечили себе запас проблем на будущее.

Кстати, посмотрел на формулы, которые LeoN получил, и подумал, что такие же глюки с разрушением памяти можно еще получить дергая не вовремя сигналы блокировки ОЗУ и ПЗУ.

И, главное, непонятно, зачем вообще было блокировать RAS? Ведь ОЗУ отделено от шины данных выходными регистрами. Ну было бы при обращении к портам ввода/вывода чтение по левому адресу. При заблокированных регистрах оно никому бы не помешало. А сигнал записи и так блокируется через бит D1 того же ПЗУ.

7

Re: 565ру: DRAM refresh

Позвольте и мне вставить пять копеек...

Voldemar0 пишет:

то произвольный перебор ША вызывает порчу содержимого DRAM.

Первое приближение. Мигать на ША можно только в фазе адреса (Ф0=0), и не позднее, чем за надцать нс до положительного фронта Ф0, чтобы адрес успел устаканиться перед адресными мультиплексорами.

Второе приближение. Старшие разряды адреса идут на РТшку, у которой время одупливания более 70 нс. И тоже она должна отдуплиться в фазе адреса. Плюс ещё 2И-НЕ сидит на А15 и А14, она тоже должна отдуплиться в фазе адреса.

Третье приближение. А ещё маппер сидит на старших адресах, это и мультиплексор и РУ8 должны отдуплиться. И адрес должен устаканиться...


Voldemar0 пишет:

Естесно, сперва грешил на какую-то помеху по !W, но облазив всё разными способами, включая и просто закорачивание !W на питание, ничего такого не выявил.

Сохранность данных обеспечивается за счёт регенерации дисплейным контроллером. Если же данные портятся, то однозначно за счёт протухшего RnW...

Турбо АГАТ-9/16 (ЦП 65C802, 5 Махов, dual-port SRAM).

8 Отредактировано Voldemar0 (24-04-2021 07:51)

Re: 565ру: DRAM refresh

> Сохранность данных обеспечивается за счёт регенерации дисплейным контроллером. Если же данные портятся, то однозначно за счёт протухшего RnW...

R/!W проверялся тремя способами:

1) Логический анализатор, порог 1.5 в, разрешение до 2.5нс (400 МГц), непосредственно на микрухах DRAM (пин 3).
2) Осцилограф, максимальная частота 60 МГц.
3) Просто замыкал коротким проводом пин 3 на пин 8.

Как ещё можно проверить стабильность !W ?

Также снял несколько дампов по всем пинам DRAM при нормальной работе системы и когда данные портятся. Написал парсер, который проверил время рефреша (кстати, любопытно оно там идёт: нерегулярно и зависит от видеорежима. Есть довольно короткие интервалы и довольно длинные. Но за 2 мс не выходит, даже к 1 мс не приближается) и порядок CAS и RAS.
Когда память портиться, видно нарушение именно !RAS. Откуда оно берётся - очевидно.

9

Re: 565ру: DRAM refresh

Владимир, а все же попробуй мигать адресом ТОЛЬКО в окне не более 250-300 нс после отрицательного фронта Ф0. Изменится картина?

Турбо АГАТ-9/16 (ЦП 65C802, 5 Махов, dual-port SRAM).

10

Re: 565ру: DRAM refresh

Конечно изменится, я даже не сомневаюсь.
Я это обязательно буду делать, но позднее.