ZX Hard #00
31 августа 1998
  Железо  

Тонкости работы с IORQGE/ - что это за сигнал и с чем его вообще едят.


Аппаратное обеспечениеЭксплуатация и доработкиИнтерфейсы и шины

┌──────────────────────────────────────┐
│      Тонкости работы с IORQGE/       │
└──────────────────────────────────────┘

(c)VTS'98


В ZF'8 Nemo в описании нового KAY'а упо-
мянул о том, что при формировании IORQGE
нужно использовать только адрес порта.
Т.к. с этим я столкнулся лично, то решил
рассказать  поподробней, т.к. в основном
говорилось (и делалось!), что нужно фор-
мировать  этот  сигнал  по  факту выбора
порта.

Для начала я немного отступлю и расскажу
для тех, кто не в курсе, что это за сиг-
нал и с чем его вообще едят.

Сей  сигналец  фигурирует  еще  в старом
добром Sinclair ZX-Spectrum...

Прежде всего отмечу, что он имеет весьма
отдаленное  от порта #FF назначение (это
лишь частный случай в Скорпе). Кроме то-
го, он является одним из ключевых момен-
тов в архитектуре ZX-Spectrum, т.к. дает
возможность использовать неполную дешиф-
рацию  портов  ввода-вывода,  заложенную
еще Клайвом Синклером и столь охаянную в
ZX-ревю  не  совсем компетентными в этом
вопросе  людьми (см., к примеру, хвалеб-
ные  статьи Скорпиону ('куцее #FD', 'вы-
кинуть  пару  ЛЛ'ок'...)).  Все проблемы
возникли  от  кодеров,  а  железо всегда
должно  быть максимально простым (в рам-
ках мануала/ спецификации/ стандарта). К
примеру,    в    KAY'е    все   адресное
пространство  занято  портами платы безо
всяких  портов #FF. А сигнал IORQGE поз-
воляет сделать настолько полную дешифра-
цию,   насколько   необходимо  в  каждом
конкретном случае.

Кроме этого, в фирменном ZX и KAY версии
ниже 1.5 точка перехвата была реализова-
на  на резисторе, что позволяло работать
с портами платы внешним устройствам, хо-
тя это практически бессмысленно. Тем бо-
лее  в новом KAY'е такой возможности уже
нет.

Работать  с IORQGE/ необходимо с помощью
элемента  с  ОЭ (общий эмиттер) либо его
эмуляции - трехстабильной логики или ди-
ода  (т.е. активное состояние - запрет -
прижать линию к +5v, иначе - свободна).

                  ┌──┐
   │/────+5v──────┤|>├──┐
 ──┤\>─┐       ───┤e │  │  ───|>|──┐
запрет │  запрет/ └──┘  │ запрет   │
       │          ЛП8   │          │
IOGE/──┴────────────────┴──────────┘

Сделать IORQGE/ тоже просто. Если вы со-
бираетесь иметь только один такой сигнал
(и в будущем прикупить комп с шиной), то
лучше  сделать его на резисторе или дио-
де.  В  KAY 1.5 он реализован на цепочке
элементов ЛЛ1 (на каждый слот).

         IORQ/  IORQGE/
           │      │
IORQ/_Z80──┴─═══──┴───IORQ/_motherboard
             470
или так:
         IORQ/  IORQGE/
           │      │
IORQ/_Z80──┴─|>|──o───IORQ/_motherboard
                  │
          ┌───═══─┘ 4k7
         ─┴─
(последний более надежен, особенно когда
на  IORQ  процессора  сидело очень много
155  или  531  серии, да и сам IORQGE не
перегружается. Однако такую схему нельзя
использовать цепочкой (0.7v на диод)).

Ну а теперь собственно о том, из-за чего
весь  этот  сыр-бор.  То бишь где вообще
его (IORQGE/) брать ? И чего это тут все
всполошились ?

Объясню.  Сижу я значит и отлавливаю не-
существующий глюк в какой-то железяке на
'самолете'. И никак его не споймаю ;-)
И вдруг меня осеняет.
А  проблема  в  том, что порт у меня был
#F8  hex, %1111 1000 bin и влетал я пря-
мехонько в любимый ;) #xxFD hex... А вы-
дал все это дело BORDER...
Т.е. когдa я вырабатывал IOGE/ 'как вез-
де говориться' : IORQ/, WR/, ADR, он та-
ки  не поспевал за шустрым IORQ, который
успевал протащить 'иголку' на плату и по
фронту (можно и спаду) записать данные в
такие же шустрые 1533 регистры.
Еще  больший ужас я ощутил, когда увидел
(в мануале по Z80), что перед IORQ появ-
ляется  только  адрес.  Но потом подумал
(нет бы сразу ;) ), что здесь нет ничего
страшного  - подумаешь, блокируем порты,
когда обращаемся в память ;).

Хотя  тут еще может понадобиться иденти-
фицировать  WR/RD.  А  сделать это можно
только с приходом IORQ...

При  блокировке портов и на запись, и на
чтение, необходимо использовать при фор-
мировании IORQ только адрес.

При  блокировке  только записи прийдется
извернуться. А именно: формируем IORQGE/
по   приходу  адреса.  Затем  дожидаемся
WR/RD  и  уже заблокированный IORQ. Если
окажется, что происходит чтение, IORQGE/
снимаем. В результате получится задержка
IORQ  для  платы  на десяток наносекунд,
что  тоже  нестрашно,  т.к.  он  ооочень
длиннюююющий (нетурбированный).

При блокировки только чтения делаем ана-
логично, но снимаем IORQGE по приходу WR

Тут,  однако, можно возразить: ведь чте-
ние  процессор будет ждать еще аж 2 так-
та,  чего  ж зря огород городить ? Может
оно  и так, но конфликт на шине данных -
штука не столь желательная. Особенно ес-
ли учесть всякие левые компы и возраста-
ние задержек при буферизации шины...
(т.е. увеличение длительности конфликта)


21.08.98  22:53msk  is-dos




Другие статьи номера:

Introduction - вступление: цель газеты - помочь межрегиональному объединению железячников.

Krasnodar Hard Corp - группа Краснодарских железячников.

Железо - начинающим: уроки пайки.

Советы мастера - о том, как обpащаться с печатнoй платой и её элементами.

Измерения - очень полезная схемка для проверки печатных плат.

Тонкости опроса кемпстон-крыс - о глюках Kepston Mouse.

Прерывания в Spectrum'е - схема для использования IM2 прерываний.

Тонкости работы с IORQGE/ - что это за сигнал и с чем его вообще едят.

ZX+Dendy - возвращение к напечатанному.

Авора - об авторах газеты.


Темы: Игры, Программное обеспечение, Пресса, Аппаратное обеспечение, Сеть, Демосцена, Люди, Программирование

Похожие статьи:
Планета шелезяка - Буферы шины данных и адреса CPU Z80.
C-bus - шина основаная на Centronics interface.
Железо - Описание доработки,которая позволит подключить к вашему компьютеру любое внешнее устройство,расчитанное на последовательный порт (мышь, модем, принтер).

В этот день...   19 декабря