С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
Стоп-стоп! Правильная запись байта - значение записываемого байта выдается дважды, в [0-7] и в [8-15], а сигнал WTBT указывает, что из двух выданных на шину байтов надо записать только один, какой именно - указывает адресный бит A0. Мы с form'ом тут (или рядом) недавно обсуждали ошибку в нашей реализации СМ-овского контроллера кассетной ленты, там как раз об этом забыли...
Кто мешает тебе выдумать порох непромокаемый? (К.Прутков, мысль № 133)
Ну может на СМ и так, а вот на 1801ВМ2 в неиспользуемом байте выдается ноль. На УКНЦ есть стык С2, построенный на 1801ВП1-065. Этот чип сигнал WTBT не обрабатывает. Так вот, если в регистр данных передатчика по нечетному адресу+1 записывать байт, то на другой стороне принимается ноль. Такая же история с регистрами адреса/данных планов 176640/176642. Если регистр данных 176642 вполне нормально отрабатывает байтовую запись, то регистр адреса 176640 её не обрабатывает, т.к. в другом байте оказывается ноль, т.е. записали что-то в 176641, то 176640 очистится.
Вообще-то и у Э-60 (11/03) и у Э-60.1 (11/23) то же самое, о чем прямо написано в их руководствах. В частности, в книге "Центральный процессор М2". И наши, при разработке процессоров серии 1801, не могли проигнорировать эту важнейшую особенность Q-bus. А эксперименты с ВП1-065, скорее всего, просто показывают особенности реализации ее самой.
Vslav, что там показывают на эту тему результаты вскрытия?
Кто мешает тебе выдумать порох непромокаемый? (К.Прутков, мысль № 133)
Про 1806ВМ2 ничего не могу сказать, а 1801ВМ1 при байтовой записи на неиспользуемую дорожку нулевые данные выдает (логические нули, физически на шине высокое напряжение).
При словной записи по нечетному адресу младший байт также выдается на шину нулевым.
Update: про словную запись по нечетному адресу я ошибся - на шину выдается полное 16-разрядное слово без перестановки.
Последний раз редактировалось Vslav; 30.05.2016 в 23:29. Причина: ошибочное утверждение
Как это так? При словной записи по нечетному адресу, сначала выдается нечетный адрес, а уже после данные целиком, все 16 бит.
- - - Добавлено - - -
Никаких особенностей реализации нет. Я уже написал, что этот чип не обрабатывает сигнал WTBT, поэтому не различает словную и байтовую запись. При словной записи по адресу регистра данных передатчика+1 данные выводятся те данные, которые подаются, а при байтовой выводится ноль.
Фрагмент программки:
Диаграмма выполнения на реальном 1801ВМ1А: [Код:432 002030 012700 000101 mov #101, R0 433 002034 012701 100476 mov #100476, R1 434 435 002040 110110 1$: movb R1, @R0 436 002042 000776 br 1$]
Видно, что выдается сначала адрес 101, затем значение 037000 - это потасованное 100476 с обнуленным младшим байтом. Запись происходит при активном WTBT, система должна запись младшего байта проигнорировать.
Update: да, для словной записи по адресу 101 выдается честные 100476 (заменил в программке movb на mov). Упустил, что сигнал ta0 внутри модели уже оптимизирован, он устанавливается только при байтовой записи по нечетному адресу. То есть, словная запись всегда производится процессором одинаково, независимо от четности адреса. Натурный эксперимент на реальном ВМ1 это подтверждает.
Последний раз редактировалось Vslav; 30.05.2016 в 23:25.
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)