4 января 2012 г.

Делаем курсач по VMEbus. Часть 8. Шинные формирователи

Поговорим о маленьких, но абсолютных необходимых деталях нашей схемы - шинных формирователях. Попутно нам придется вспомнить про третье состояние и прочие схемотехнические финты. Поехали.


Третье состояние


Пусть есть два устройства, логические выходы которых мы подсоединили к шине. Получается, что мы буквально соединили выходы друг с другом. Одно устройство выставляет на выходе 0, а другое - 1. Можно себе предствить, что при этом произойдет - схема не будет работать так, как нужно (а вообще у вас сгорит транзистор какой-нибудь).

И вообще, на шине обычно происходит обмен данными только между двумя устройствами, pvp, а другие устройства при этом никак не должны влиять на передачу, если их не просят. Устройства дожны уметь отключать свои выводы от шины.

Для реализации возможности отключения выходов придумали третье состояние в дополнение к высокому и низкому логическим состояниям. Это состояние иначе называется высокоимпедансным состоянием или Z-состоянием. Если вывод находится третьем состоянии, то он фактически отключен от схемы и не испытывает чужого влияния и сам не влияет на других. Вообще говоря, он повисает в воздухе.

Глубинную философию третьего состояния можно окончательно понять по табличке и картинке:


Ну то есть если на В единичка, то ключ замкнут (условно) и все классно передается с А на С, а есть на B нолик, то как ты Ашкой не тряси, на выходе все равно третье состояние - ключ то разомкнут. 


Входы OE и CS


Многие устройства имеют входы OE или CS. OE означает output enable (разрешение выхода), а CS - chip select (выбор устройства). Разница между этими входами есть:
  • Устройство не работает, пока на входе CS высокий уровень, оно спит как белоснежка. Соответственно, его выходы никак не влияют на шину. Когда управляющее устройство-принц выставляет на его входе горячий поцелуй в виде низкого уровня CS, устройство-белоснежка просыпается и начинает вместе с гномами добывать уголь.
  • Устройство работает, однако его выходы отсоединены от линий передачи, пока на его входе OE высокий уровень. Это как отличник-первоклассник, который сделал все домашние задания, но, соблюдая приличия, молчит на уроке, а как только его спрашивают, начинает выдавать килотонны знаний в областях арифметики и природоведения.
Как вы поняли, и в том, и в другом случае для отключения выходов используется третье состояние.

Можно сделать вывод о времени реакции, то есть задержки выдачи данных на линию после дерганья разрешающего входа:  OE - быстрая реакция, CS - медленная реакция. В шине SPI, например, о которой я уже писал, используется CS (там его иногда называют SS).

Шинный формирователь

Вот есть прекрасный восьмибитный шинный формирователь (он же bus driver) из 555 серии, называется он К555АП6:


Низкий уровень на входе EO (он же OE), как мы уже поняли, разрешает работу этого устройства. Уровень на входе Т определяет направление "копирования" данных: высокий - из DA в DB, низкий - из DB в DA.

Шинный формирователь выполняет много полезных нам функций:

  1. отключает выводы цифрового устройства от шины;
  2. позволяет передавать данные в двух направлениях;
  3. согласует токи в шине и в устройстве.
Польза налицо. Посмотрим, как мы его будем использовать.

Подключение регистра прерывания к шине данных через шинный формирователь

Подключим DA шинного формирователя к шине данных, а с DB поступим хитро (да это просто финт ушами какой-то!). Поделим эти выводы пополам, на пары 0-3 и 4-7. Квартет 0-3 подключим ко входам D0-D3 регистра ИР35, а 4-7 подключим к выходам Q0-Q3 регистра.


Теперь при высоком уровне на Т и низком уровне на EO (которые обеспечиваются линией WRITE*, адресом регистра прерывания и стробами данных DS0* и DS1*), 4 бита с шины данных запишутся в регистр прерывания. При низких уровнях на входах Т и EO 4 бита из регистра прерывания выставятся на шине данных.

Еще надо не забыть как-то порулить входами C и R регистра, чтобы все корректно работало.

Также из картинки видно, что на каждый 8-битный регистр должно приходиться по два 8-битных шинных формирователя. Ces't la vie! Приляпайте второй там как-нибудь (думаю, понятно, как).

Не знаю, вдруг вам понадобится вектор прерывания делать длиннее, например, 2 байта, или 4... Тогда наращивайте пропорционально: 2 регистра - 4 шинных формирователя, 4 регистра - 8 формирователей.

P.S.

Будет круто, если вы поставите шинные формирователи в самом начале схемы - где вы дешифруете адрес. Да и вообще везде, где вы заводите шину в регистр. Это согласует токи устройств и добавит позитива!

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

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

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