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
Другие статьи номера:
Похожие статьи:
В этот день... 9 октября