Третье состояние
Пусть есть два устройства, логические выходы которых мы подсоединили к шине. Получается, что мы буквально соединили выходы друг с другом. Одно устройство выставляет на выходе 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.
Шинный формирователь выполняет много полезных нам функций:
- отключает выводы цифрового устройства от шины;
- позволяет передавать данные в двух направлениях;
- согласует токи в шине и в устройстве.
Польза налицо. Посмотрим, как мы его будем использовать.
Подключение регистра прерывания к шине данных через шинный формирователь
Подключим 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 с последующим допиливанием
Также из картинки видно, что на каждый 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 с последующим допиливанием
Комментариев нет:
Отправить комментарий