14 декабря 2011 г.

Делаем курсач по VMEbus. Часть 4. Slave-устройство на шине DTB. Циклы записи и чтения


Вот мы и подошли к наиключевейшему моменту нашей саги курсовой работы - размещению Slave-устройства на шине DTB.

В этой статье рассказывается и показывается, к каким линиям DTB как подключен слэйв, как выглядят циклы записи и чтения, и что нам нужно сделать для их корректного осуществления.



Подключение слэйва к шине DTB

Вот как сидит слэйв на шине DTB. // Удивительно, но в англоязычной спецификации нет этой картинки, как будто ее просто забыли вставить... при верстке, чтоли, потеряли?



Мы видим, что к слэйву аккуратненько подключены все линии DTB (подробно о назначении линий я рассказывал в прошлой статье). Наше устройство должно контролировать и/или возбуждать эти линии. Здесь же стало видно, что не было печали, да апдейтов накачали - нам придется обрабатывать сигналы еще и на IACK* и SYSTEMRESET*. Наверное, вы уже догадались, что по низкому уровню на линии IACK* устройство должно совершать какие-то действия по обработке прерывания, а при низком уровне на SYSTEMRESET* должен происходить КОНЕЦ ВСЕМУ ПЛАТЫ ОТРУБАЮТСЯ ПАМЯТЬ СТИРАЕТСЯ ДВЕРЬ ВЫШИБАЕТСЯ КРЕЙТ ВЫНОСИТСЯ!!!

Циклы записи и чтения

Поймем алгоритм чтения и записи.

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

...по человечески это выглядит так. А железки вынуждены между собой общаться унылым поднятием и опусканием уровней сигналов на линиях.
Ниже я привел табличку, в которой расписывается цикл записи двухбайтной посылки.



Мое мнение насчет принципиальной важности понимание этого общения совпадает с мнением г-на Зензина, который приводит в своей книжке следующую картинку цикла чтения для одного байта. Посмотрите, насколько цикл чтения похож на цикл записи и чем они отличаются.


Прочитайте несколько раз и осознайте, что происходит. Вспомните о назначения каждой линии из предыдущей статьи.


P.S.

Это была одна из самых принципиальных частей, надеюсь, я смог показать всю ее прелесть достаточно доступно. Однако, если у вас все равно возникли какого-либо рода недопониямая, не стесняйтесь задавать вопросы в комментариях.

Список статей

Часть 1. Введение. Евромеханика
Часть 2. Шины и устройства
Часть 3. Шина DTB
Часть 4. Slave-устройство на шине DTB. Циклы записи и чтения
Часть 5. Чтение адреса slave-устройством. Типы адресации. Регистр-защелка и компаратор
Часть 6. Программное управление slave-устройством. Дешифратор, D-триггер и свичи
Часть 7. Прерывания, прерыватели, шина приоритетных прерываний,вектор прерывания
Часть 8. Шинные формирователи
Часть 9. Рисуем схему по ЕСКД. Schemagee. Автоматическое создание списка элементов
Часть 10.Добавляем собственную микросхему в Schemagee
Часть 11. Импорт микросхемы из P-CAD в SchemaGee с последующим допиливанием