******************************************************************************** ** Этот документ пригоден для просмотра на ZX Spectrum в 80 символьном формате** ******************************************************************************** (c) Black_Cat 2011-2020 www.zx.clan.su BC Info Guide #7. Стандартизация ZXBus интерфейсов и шин. Оглавление: 1. Шинный интерфейс ZXBus и шина NemoBus. 1.1 Терминология. 2. Шинный интерфейс ZXBus и его самые распространённые клоны. 3. Шина NemoBus. 3.1 Основные принципы ZXBus. 3.2 Базовые принципы шины NemoBus. 3.3 Габаритные размеры карт расширения шины NemoBus. 3.4 Назначение сигналов шины NemoBus. 3.4.1 Сигналы шины NemoBus v0.9. 3.4.2 Новые (характерные) и изменённые сигналы шины NemoBus v1.0. 3.4.3 Новые (характерные) сигналы шины NemoBus v1.1. 3.4.4 Новые (характерные) и изменённые сигналы шины NemoBus v1.2 (проект). 4. Проектирование устройств для шины NemoBus. 4.1 Требования и рекомендации к шине и архитектуре компьютера для соответствия стандарту NemoBus. 4.2 Требования и рекомендации к интерфейсу периферийных устройств, подключаемых к шине NemoBus. 4.3 Формирователь сигнала IORQGE для шины NemoBus. 4.4 Арбитр адреса портов ввода-вывода шины NemoBus. 4.5 Формирователь сигнала RDR/ для шины NemoBus. 4.6 Арбитр доступа к памяти в окне CPU0 шины NemoBus. 4.7 Формирователь маскируемых прерываний от устройств шины NemoBus. 4.8 Интерфейс динамического запроса ПДП для шины NemoBus v.1.2. 4.9 Управление памятью в окнах CPU0-CPU3 с шины NemoBus v.1.2. 1. Шинный интерфейс ZXBus и шина NemoBus. ZXBus и NemoBus - это названия соответственно внешнего шинного интерфейса расши- рения оригинальных моделей ZX Spectrum и компьютерной шины расширения оте- чественного клона ZX Spectrum "KAY", разработанного Вячеславом Скутиным aka Nemo. Широкое распространение шины NemoBus сделало её стандартом де-факто на территории СССР для компьютеров разработанных в концепции десктопного конструк- тива. На сегодняшний день кроме компьютера KAY, шина NemoBus поддержана в компьютерах: Pentagon-1024SL v.1.4 / v.2.2, Pentagon v.2.666 / v.2.666LE разработки Алексея Жабина aka KoE, ZXM-Phoenix, ZXM-Phoenix 2, ZXM-Zephyr, Devboard Z80 разработки Михаила Тарасова aka Mick, кроме того, Development Board "ZX Evolution", разра- ботки группы NedoPC, также позволяет реализовать шину совместимую с NemoBus. 1.1 Терминология. За время прошедшее с момента разработки ZX Spectrum, было выпущено множество его клонов, большая часть из которых имела шинный интерфейс расширения, т.е. интер- фейс для расширения внутренней шины компьютера. Интерфейсы этих клонов ZX Spectrum имели разные конструкции, и отличались по составу используемых си- гналов, их обозначению, при этом имея одно и то же наименование "ZXBus", что вносило анархию и невозможность определить о какой модификации шинного интерфей- са идёт речь. Дополнительную сумятицу вносило отсутствие чёткого разграничения терминов "интерфейс", "шина" и "магистраль". Поэтому прежде чем перейти к описа- нию различных стандартов следует уточнить применяемую терминологию. Интерфейс - применительно к аппаратной части, это выделенный канал связи исполь- зуемый в компьютере. Применяется для организации взаимодействия только между двумя компонентами системы. Т.е. через конкретный аппаратный интерфейс мо- гут одновременно взаимодействовать только два компонента системы. В компьютере, как правило, реализовано несколько типов интерфейсов. Шина — это общий канал связи, используемый в компьютере. Применяется для органи- зации взаимодействия между двумя и более однородными компонентами системы. Т.е. через конкретную шину могут одновременно взаимодействовать два или более компо- нента системы. В компьютере, как правило, реализовано несколько типов шин. Шинный интерфейс - внешний интерфейс внутренней шины компьютера. Магистраль - совокупность шины данных, шины адреса, и шины управления компью- тера. В отношении используемых названий и определения интерфейса и шины впредь предла- гается придерживаться следующих правил: 1) Используемые названия являются именами собственными, при этом написание их обладает качеством повторяемости и неизменности формы написания присущих торго- вым знакам. Под формой написания подразумевается чередование букв, пробелов, знаков, а так же заглавных и прописных букв латинского или кириллического алфавита. 2) Для обозначения интерфейсов и шин расширения использовать слитное обозначение состоящее из двух частей: начальной - указывающей на название семейства компью- теров использующих этот интерфейс или шину, и оконечной - "Bus": ZXBus - шинный интерфейс расширения компьютеров ZX Spectrum; ZX128Bus - шинный интерфейс расширения компьютеров ZX Spectrum 128/+2; ZX+3Bus - шинный интерфейс расширения компьютеров ZX Spectrum +2a,b/+3; ProfiBus - шина расширения компьютеров Profi+/2+; Profi3Bus - шина расширения компьютеров Profi3+; ScorpionBus - шина расширения компьютеров Scorpion; NemoBus - шина расширения компьютеров KAY (авторское наименование); 3) Для обеспечения стандартизации развития шины NemoBus, используется обозначе- ние её версии в виде: NemoBus v.X.X, где X.X - номер используемой версии. При этом шина NemoBus компьютеров KAY-1024SL соответствует версии NemoBus v.1.0, а шины более ранних моделей компьютеров KAY соответствуют версии NemoBus v.0.9. Критерием, определяющим принадлежность к той или иной версии является наличие характерных для неё изменений - всех, или только их части. Если при этом шина не полностью соответствует спецификации стандарта из-за отсутствия каких-либо сиг- налов, то к номеру версии добавляется бува "m", т.е. "modified". Пример: шина ZXM-Phoenix содержит сигнал IODOS/, характерный для NemoBus v.1.1, но в то же время не имеет сигнала TURBO, харатерного для NemoBus v.1.0, но, т.к. стандарт v.1.0 является подмножеством стандарта v.1.1, то шина идентифицируется как v.1.1, но с добавкой "m", указывающей на отсутствие некоторых сигналов, т.е. у ZXM-Phoenix шина NemoBus v.1.1m. 4) Шинным интерфейсом, в отношении клонов ZXBus, называть стык, имеющий единст- венный физический соединитель, непосредственно к которому возможно подключение единственного устройства. 5) Шиной расширения, в отношении клонов ZXBus, называть стык, позволяющий под- ключать параллельно несколько устройств имеющих однотипный интерфейс связи. 6) Шинным расширителем, в отношении клонов ZXBus, называть устройство, подключа- емое к шинному интерфейсу клонов ZXBus, и предназначенное для организации стыка типа шина. 2. Шинный интерфейс ZXBus и его самые распространённые клоны. В Табл.1 дана цоколёвка шинного интерфейса ZXBus оригинального ZX Spectrum, а также цоколёвка шинных интерфейсов и шин наиболее распространённых его клонов. Тип интерфейса или шины (Bus type): 1 - ZXBus (ZX Spectrum) 2 - ZX128Bus (ZX Spectrum 128/+2) 3 - ZX+3Bus (ZX Spectrum +2a,b/+3) 4 - Quorum128Bus (Quorum 128) 5 - ScorpionBus (Scorpion ZS256 / Scorpion ZS256 Turbo+) 6 - NemoBus v.0.9-v.1.1(USSR ZX Spectrum expansion bus standard) 7 - NemoBus v.1.2(USSR ZX Spectrum expansion bus standard) 8 - TC2048Bus (Timex Computer 2048) 9 - TC2068Bus (Timex Computer 2068) 10 - ProfiBus/Profi3Bus (Profi+/Profi3+) Тип соединителя (Connector type): 1 - печатный краевой разъём 2 - разъём ОНП-КС-23-Р 3 - разъём SL-62 4 - разъём СНП58-64/94*9Р Табл.1 ==========================================================+---------+=========== 1 2 3 4 5 6 7 8 9 10 Bus type ==========================================================+---------+=========== 1 1 1 1 2 3 3 1 1 4 Connector type 2,54 2,54 2,54 2,5 2,5 2,54 2,54 2,54 2,54 2,5 Step,mm ==========================================================+---------+=========== UP(B) UP(B) UP(B) UP(A) A B B UP(B) UP(B) B Side +=========== +---------+ TURBO 1 ==========================================================+ 1 EXROM/ RIGHT 2 1 A15 A15 A15 A15 A15 A15 A15 A15 2 A15 ADR15 3 2 A13 A13 A13 A13 A13 A13 A13 A13 3 A13 ADR13 4 3 D7 D7 D7 D7 D7 D7 D7 D7 4 D7 DC7 5 4 NC NC ROM1 OE /RAMCS BLK BLK BLK NC 5 NC NC 6 5 Key Key Key Key NC **TURBO TURBO Key 6 Key NC 7 6 D0 D0 D0 D0 D0 D0 D0 D0 7 D0 DC0 8 7 D1 D1 D1 D1 D1 D1 D1 D1 8 D1 DC1 9 8 D2 D2 D2 D2 D2 D2 D2 D2 9 D2 DC2 10 9 D6 D6 D6 D6 D6 D6 D6 D6 10 D6 DC6 11 10 D5 D5 D5 D5 D5 D5 D5 D5 11 D5 DC5 12 11 D3 D3 D3 D3 D3 D3 D3 D3 12 D3 DC3 13 12 D4 D4 D4 D4 D4 D4 D4 D4 13 D4 DC4 14 13 INT INT INT /INT INT INT INT INT/ 14 INT/ INT 15 14 NMI NMI NMI /NMI NMI NMI NMI NMI/ 15 NMI/ NMI 16 15 HALT HALT HALT /HLT HLT HLT EOP\HLT HALT/ 16 HALT/ HALT 17 16 MREQ MREQ MREQ /MREQ MREQ MREQ MREQ MREQ/ 17 MREQ/ MREQ 18 17 IORQ IORQ IORQ /IORQ IORQ IORQ IORQ IORQ/ 18 IORQ/ IORQ 19 18 RD RD RD /RD RD- RD RD RD/ 19 RD/ RD 20 19 WR WR WR /WR WR- WR WR WR/ 20 WR/ WR 21 20 -5V -5V NC RA14 NC ***IODOS/ IODOS/ NC 21 NC #12MHz 22 21 WAIT WAIT WAIT /WAIT WAIT WAIT WAIT WAIT/ 22 WAIT/ READY 23 22 +12V +12V +12V NC +12V NC A15' +12V 23 NC +12V 24 23 12VAC 12VAC -12V /TRDOS NC NC A17' 12VAC 24 NC #TIMER 25 24 M1 M1 M1 /M1 M1 M1 M1 M1/ 25 M1/ M1 26 25 RFSH RFSH RFSH /RFSH RFSH RFSH ER\RFSH RFSH/ 26 RFSH/ REF 27 26 A8 A8 A8 A8 A8 A8 A8 A8 27 A8 ADR8 28 27 A10 A10 A10 A10 A10 A10 A10 A10 28 A10 ADR10 29 28 NC NC RESET NC NC +5V +5V NC 29 NC CP/M 30 29 - - - - NC +12V +12V - 30 RED TR_DOS 31 30 - - - - GND GND A21' - 31 GREEN BLOK 32 31 - - - - - NC A19' - 32 BLUE +=========== ==========================================================+---------+ ==========================================================+---------+=========== DOWN(A)DOWN(A)DOWN(A)DOWN(B) B A A DOWN(A) DOWN(A) A Side +=========== +---------+ NC 1 ==========================================================+ 1 BE/ LEFT 2 1 A14 A14 A14 A14 A14 A14 A14 A14 2 A14 ADR14 3 2 A12 A12 A12 A12 A12 A12 A12 A12 3 A12 ADR12 4 3 +5V +5V +5V +5V +5V +5V +5V +5V 4 +5V +5V 5 4 +9V +9V NC NC DOS/ DOS/ DOS/ +9V 5 +9V NC 6 5 Key Key Key Key NC F F Key 6 Key NC 7 6 GND GND GND GND GND GND GND GND 7 GND GND 8 7 GND GND GND GND GND GND GND GND 8 GND GND 9 8 CLK CLK CLK CLK CLK CLK CLK CLK 9 CLK CLCAY 10 9 A0 A0 A0 A0 A0 A0 A0 A0 10 A0 ADR0 11 10 A1 A1 A1 A1 A1 A1 A1 A1 11 A1 ADR1 12 11 A2 A2 A2 A2 A2 A2 A2 A2 12 A2 ADR2 13 12 A3 A3 A3 A3 A3 A3 A3 A3 13 A3 ADR3 14 13 IORQGE NC NC /IORQGE IORQGE IORQGE IORQGE **** 14 NC OUTIORQ 15 14 GND GND GND GND GND GND GND GND 15 GND GND 16 15 Video *Video ROM2 OE NC RDR/ RDR/ RDR/ NC 16 Video #-5V 17 16 Y *Y Disk RD NC NC RS EXTA\RS R 17 NC NC 18 17 V *V Disk WR NC NC NC A14' G 18 NC NC 19 18 U *U MotorON NC NC NC A16' B 19 NC NC 20 19 BUSRQ BUSRQ BUSRQ /BUSRQ BRQ BRQ BRQ BUSRQ/ 20 BUSRQ/ BUSRQ 21 20 RESET RESET RESET /RES RES RES RES RESET/ 21 RESET/ RESET 22 21 A7 A7 A7 A7 A7 A7 A7 A7 22 A7 ADR7 23 22 A6 A6 A6 A6 A6 A6 A6 A6 23 A6 ADR6 24 23 A5 A5 A5 A5 A5 A5 A5 A5 24 A5 ADR5 25 24 A4 A4 A4 A4 A4 A4 A4 A4 25 A4 ADR4 26 25 ROMCS ROMCS NC /ROMCS CSR/ CSR/ CSR/ ROMCS/ 26 ROMCS/ ROMCS 27 26 BUSAK BUSAK BUSAK /BUSAK BAK BAK EA\BAK BUSAK/ 27 BUSAK/ BUSAK 28 27 A9 A9 A9 A9 A9 A9 A9 A9 28 A9 ADR9 29 28 A11 A11 A11 A11 A11 A11 A11 A11 29 A11 ADR11 30 29 - - - - NC +5V +5V - 30 CSYNC ROM14 31 30 - - - - GND GND A20' - 31 BRIGHT SOUND 32 31 - - - - - NC A18' - 32 GND +=========== ==========================================================+---------+ * - NC для ZX Spectrum +2 ** - NC для NemoBus младше v.1.0 *** - NC для NemoBus младше v.1.1 **** - NC для Issue 03 и младше, IORQ/ для Issue 04 и старше # - NC для Profi+ 3. Шина NemoBus. Впервые эта шина появилась как опциональное расширение для компьютера "Composite-128K AY" ("KAY-128"). Впоследствии шина получила развитие и утверди- лась в линейке компьютеров "KAY". Из всех клонов ZXBus, только в NemoBus были правильно поняты идеи, заложенные в ZXBus Ричардом Альтвассером, что позволяло преодолевать ограничения упрощённой дешифрации присущей ZX Spectrum. Именно эта особенность шины NemoBus позволила ей стать де-факто региональным стандартом на территории СССР. 3.1 Основные принципы ZXBus. Существует два основных альтвассеровских принципа, лежащих в основе интерфейса ZXBus и его развития - шины NemoBus: 1) Первый альтвассеровский принцип, или "сигнальный принцип" - сигнал IORQGE в обязательном порядке включает в себя адресные сигналы и сигнал M1/, и не вклю- чает сигнал IORQ/. 2) Второй альтвассеровский принцип, или "принцип приоритета" - системные порты материнской платы имеют самый низкий приоритет доступа. Следствия: 1) Наиболее низкий приоритет системных портов материнской платы позволяет ис- пользовать для них максимально упрощённую дешифрацию. 2) Шины и интерфейсы периферийных устройств, не соответствующие основным альт- вассеровским принципам некорректно называть "ZXBus", правильно им давать собст- венное название. В частности, например клоны ZX Spectrum 128/+2/+3, Scorpion, Profi не соответствуют основным альтвассеровским принципам. Поэтому, корректно называть интерфейсы и шины этих клонов соответственно ZX128Bus, ZX+3Bus, ScorpionBus, ProfiBus и т.д. Так же рекомендуется применять собственное название в случае отличий в сигналах шины или интерфейса, например ZXBus и NemoBus имеют разные названия, хотя соответствуют основным альтвассеровским принципам. Объяснение основных принципов шины ZXBus. Принцип разделения адресного пространства портов ввода-вывода (ВВ) базируется на особенностях таймингов процессора Z80, в частности, на опережающем выставлении процессором адреса относительно сигнала IORQ/, что позволяет произвести его де- шифрацию и арбитрирование ещё до прихода IORQ/, и таким образом исключить гонки вызванные различиями в схемотехнике дешифраторов устройств. Т.е. ещё до прихода IORQ/ сигналы IORQGE на всех периферийных устройствах уже будут выставлены. Это накладывает ограничения на использование клонов Z80 других производителей или FPGA ядер, которые так же обязаны иметь упреждающее выставление адреса относи- тельно IORQ/. Разделение адреса происходит путём его дешифрации при единичном значении сигнала M1/, и в случае его совпадения - выработке блокирующего сигна- ла IORQGE для остальных устройств. Учитывать сигнал M1/ при арбитрировании не- обходимо, чтобы исключить блокирование арбитром сигнала IORQ/ в цикле чтения вектора прерывания. 3.2 Базовые принципы шины NemoBus. 1) Шина NemoBus основана на разделении адресного пространства портов ВВ между установленными в слоты периферийными устройствами и материнской платой компью- тера. Разделение происходит путём захвата адресного пространства портов ВВ уст- ройствами в слотах шины NemoBus, и выражается в прекращении распространения сиг- нала IORQ/ на слоты с низшим приоритетом. Разделение производится с помощью ар- битра IORQ/. Такой способ разделения адресного пространства является базовым принципом арбитрирования устройств шины NemoBus. 2) Слоты шины NemoBus имеют убывающий приоритет захвата адресного пространства портов ВВ, и по этому признаку делятся на master-слот и slave-слоты с убывающим приоритетом. Наивысший приоритет имеет master-слот, на который непосредственно подаётся сигнал IORQ/ от CPU. Наинизший приоритет имеют порты материнской платы компьютера. 3) Только устройство в master-слоте может выступать задатчиком шины при её за- хвате. 4) Возможно арбитрирование только в циклах записи или чтения. Для арбитрирования в цикле чтения в дешифрацию включается сигнал WR/=1, а в цикле записи - сигнал RD/=1. Такое арбитрирование приводит к укорачиванию сигнала IORQ/ в противопо- ложных арбитрируемым циклах - циклах чтения при арбитрировании в цикле записи, и наоборот. 5) Кроме функции разделения адресного пространства портов ВВ, арбитр IORQ/ так же может выполнять функцию арбитрирования источника вектора маскируемого преры- вания. Наивысший приоритет в выставлении на шину вектора прерывания имеет устройство в master-слоте, а наинизший - материнская плата. Следствия базовых принципов шины NemoBus: 1) Запрещается буферирование сигналов шины адреса, а так же сигналов M1/, RD/, WR/, IORQ/, идущих от процессора к шине NemoBus, т.к. это приведёт к увеличению задержки времени арбитрирования, следствием чего могут стать гонки при дешифра- ции устройств и их некорректная работа. Допускается буферирование любых сигналов для устройств интегрированных на материнскую плату, имеющих низший приоритет доступа по сравнению с устройствами NemoBus. 2) Устройства в слотах рекомендуется располагать в зависимости от полноты деши- фрации их сигнала IORQGE, а так же в зависимости от наличия арбитрирования толь- ко в цикле чтения или записи. Устройства с наиболее полной дешифрацией ре- комендуется устанавливать в слоты с более высоким приоритетом, а устройства с наименее полной дешифрацией в слоты с наинизшим приоритетом. Это минимизирует диапазон адресов портов подвергающихся блокировке сигналом IORQGE вследствие не- полноты его дешифрации. Устройство с арбитрированием только в цикле чтения или записи рекомендуется устанавливать в слот с наинизшим приоритетом. 3) Возможно включение в арбитрирование периферийных устройств интегрированных на материнской плате, но только с приоритетом либо ниже чем у master-слота, либо равным ему. Иначе, для внешних устройств, предназначенных для установки в master-слот, будет недоступна возможность полноценного захвата шины с генераци- ей собственного IORQ/. Т.е. вместо слота, или параллельно ему может быть подклю- чено интегрированное на материнскую плату периферийное устройство. Такое подклю- чение накладывает ограничение - в запараллеленный слот нельзя вставлять устрой- ства, конфликтующие по дешифрации портов с включенным параллельно ему интегриро- ванным устройством. 3.3 Габаритные размеры карт расширения шины NemoBus. Шина NemoBus изначально была рассчитана на возможность работы с картами перифе- рийных устройств двух формфакторов: A и B, различающихся между собой максималь- ным расстоянием h от середины первого контакта интерфейса краевого разъёма до левого края платы, выходящего на тыльную сторону компьютера, и соответственно максимальным расстоянием H от середины 31 контакта интерфейса краевого разъёма до правого края платы, выходящего внутрь системного блока компьютера. NemoBus card +------------------ ....... -------------------------------+ --- |<--- rear computer Component side inside computer --->| ^ | | | | PLD connector | 2,54 mm| | L = max 95,5 mm | 1B+++++++++ ....... +++++++++31B v | | | 1A+++++++++ ....... +++++++++31A ----+- | v +--------+ +------------+--------+ -+- 1B | Edge connector side B | 31B ^ | 7,62 mm +UUUUUUUUU ....... UUUUUUUUU+ | -+- | | 81 mm ^ -->+---------------------------+<----- | h 1B 31B H |<------->| |<-------------------->| Рис.1 Табл.2 +------------+-----+-----+ | Формфактор | A | B | |------------|-----|-----| | h(max), мм | 50 | 25,4| |------------|-----|-----| | H(max), мм |212,2|236,8| +------------+-----+-----+ Формфактор B полностью соответствует размерной сетке ISA8 карт, но компоненты в устройствах NemoBus размещены на противоположной стороне относительно ISA карт. Предельные размеры H, h, L даны для полноразмерного PC AT/ATX корпуса. Для малогабаритных корпусов предельные размеры H и L могут быть меньше. Для карт предназначенных для работы во всех существующих клонах, не рекомендуется исполь- зовать размер H более 25,4 мм, а так же размещать разъёмы, ответные части кото- рых выходят за этот габарит. Такое ограничение связано с некорректным размещени- ем слотов шины NemoBus в компьютерах Pentagon-1024 v.2.2/v.2.666. Формфактор A рекомендуется для несистемного периферийного оборудования, такого как дополнительные опциональные звуковые и видео карты, программаторы, комму- никационное оборудование. Формфактор B рекомендуется для системного периферийного оборудования, такого как муьтикарты или отдельные контроллеры клавиатуры, мыши, джойстика, HDD, FDD, SD, контроллеры ПДП и прерываний, внешние менеджеры ОЗУ и ПЗУ, скандаблеры и контроллеры палитры. 3.4 Назначение сигналов шины NemoBus. Начиная с момента своего возникновения, шина NemoBus продолжает эволюционно раз- виваться, и претерпела определённые изменения. Дальнейшее развитие ZX Spectrum требует решения целого ряда новых задач, которые в свою очередь предполагают со- ответствующее развитие шины NemoBus. Целью развития шины NemoBus является созда- ние законченной, аппаратно полноценной, открытой компьютерной архитектуры, при- годной для интеграции компьютера в современные вычислительные системы. Ниже при- ведены описания назначения сигналов для существующих версий шины NemoBus, а также для перспективной версии, предполагающей следующие дополнительные функции сверх имеющихся в предыдущих версиях шины: NemoBus v.1.2 : – возможность работы через шину NemoBus v.1.2 с внешним контроллером DMA, кото- рому доступна вся внутренняя память компьютера; - возможность адресации через шину NemoBus v.1.2 до 4Мб внутреннего ОЗУ компью- тера без мультиплексирования адресных линий, и до 256Мб с помощью мультиплек- сирования; - возможность подмены внутреннего менеджера памяти компьютера на внешний, для управления извне через шину NemoBus v.1.2 внутренней памятью компьютера; - возможность в любом окне подмены внутренней памяти компьютера на внешнюю, управляемую внешним менеджером памяти; - возможность использования дополнительного адресного пространства портов ввода- вывода, позволяющего адресовать до 256 дополнительных портов; - возможность запуска до 256 изолированных спектрумовских программ в ОЗУ компью- тера, без необходимости их переделки, и возможностью мгновенного между ними переключения пользователем, в особом защищённом режиме аппаратной многозадач- ности - режиме Аппаратных Виртуальных Машин (АВМ); Версии шины NemoBus некоторых компьютеров: 1. KAY-256 v.1.1-v.1.3 - NemoBus v.0.9 2. KAY-256 v.1.4, KAY-1024SL3, KAY-2010 - NemoBus v.1.0 3. Pentagon-1024SL v.1.3-v.1.4 - NemoBus v.0.9m 4. Pentagon-1024SL v.2.2 - NemoBus v.1.0m 5. Pentagon v.2.666/LE - NemoBus v.1.0m 6. ZXM-Phoenix rev.00-rev.07 - NemoBus v.1.1m 7. ZXM-Phoenix 2 rev.0 - NemoBus v.1.1m 8. ZX Evolution (devboard) rev.A-rev.C - NemoBus v.0.9m 9. Devboard Z80 rev.0 - NemoBus v.0.9m 10. ZXM-Zephyr rev.0 - NemoBus v.1.1m 3.4.1 Сигналы шины NemoBus v0.9. Принятые обозначения для колонок таблицы: 1. Наименование сигнала. 2. Направление передачи сигнала относительно компьютера: IO - двунаправленная линия, источник сигнала либо внутренний, либо внешний; I/O - однонаправленная линия, источник сигнала либо внутренний, либо внешний; I&O - однонаправленная линия, источником сигнала могут быть одновременно и внутренний и внешний сигналы; I - однонаправленная линия, источник сигнала внешний; O - однонаправленная линия, источник сигнала внутренний; 3. Уровень активного сигнала: L - Low, активный уровень сигнала - низкий; H - High, активный уровень сигнала - высокий; - - оба уровня сигнала являются активными; 4. Тип выхода сигнала: OK - открытый коллектор; TTL - транзистор-транзисторная логика; 3 - сигнал с третьим состоянием; R - сигнал с резистивной развязкой; 5. Номер контакта. Табл.3 --------+---+-+---+---+--------------------------------------------------------- 1 | 2 |3| 4 | 5 | --------+---+-+---+---+--------------------------------------------------------- D0 |I O|-| 3 | 6B|шина данных D1 |I O|-| 3 | 7B| D2 |I O|-| 3 | 8B| D3 |I O|-| 3 |11B| D4 |I O|-| 3 |12B| D5 |I O|-| 3 |10B| D6 |I O|-| 3 | 9B| D7 |I O|-| 3 | 3B| --------+---+-+---+---+--------------------------------------------------------- A0 |I/O|-| 3 | 9A|адресная шина процессора A1 |I/O|-| 3 |10A| A2 |I/O|-| 3 |11A| A3 |I/O|-| 3 |12A| A4 |I/O|-| 3 |24A| A5 |I/O|-| 3 |23A| A6 |I/O|-| 3 |22A| A7 |I/O|-| 3 |21A| A8 |I/O|-| 3 |26B| A9 |I/O|-| 3 |27A| A10 |I/O|-| 3 |27B| A11 |I/O|-| 3 |28A| A12 |I/O|-| 3 | 2A| A13 |I/O|-| 3 | 2B| A14 |I/O|-| 3 | 1A| A15 |I/O|-| 3 | 1B| --------+---+-+---+---+--------------------------------------------------------- BLK |I&O|H|3 R| 4B|сигнал установки в окно CPU0 страницы ОЗУ, wr D0=1 #1FFD --------+---+-+---+---+--------------------------------------------------------- INT/ |I&O|L|OK |13B|сигнал маскируемого прерывания --------+---+-+---+---+--------------------------------------------------------- NMI/ |I&O|L|OK |14B|сигнал немаскируемого прерывания --------+---+-+---+---+--------------------------------------------------------- HALT/ | O|L|TTL|15B|сигнал, сообщающий об остановке CPU до прихода прерывания --------+---+-+---+---+--------------------------------------------------------- MREQ/ |I/O|L| 3 |16B|сигнал обращения к памяти --------+---+-+---+---+--------------------------------------------------------- IORQ/ |I/O|L| 3 |17B|сигнал обращения к портам ввода-вывода, арбитрируется | | | | |сигналом IORQGE --------+---+-+---+---+--------------------------------------------------------- RD/ |I/O|L| 3 |18B|сигнал чтения из портов или памяти --------+---+-+---+---+--------------------------------------------------------- WR/ |I/O|L| 3 |19B|сигнал записи в порты или память --------+---+-+---+---+--------------------------------------------------------- WAIT/ |I&O|L|OK |21B|сигнал запроса цикла ожидания --------+---+-+---+---+--------------------------------------------------------- M1/ |I/O|L| 3 |24B|машинный цикл 1 --------+---+-+---+---+--------------------------------------------------------- RFSH/ |I/O|L|TTL|25B|сигнал регенерации памяти процессором --------+---+-+---+---+--------------------------------------------------------- DOS/ |I/O|L|TTL| 4A|сигнал активации режима TR-DOS, вырабатывается BDI, | | | | |при RES/=0 сигнал DOS/=1 --------+---+-+---+---+--------------------------------------------------------- F | O|-|TTL| 5A|14MHz, сигнал синфазный задающему генератору --------+---+-+---+---+--------------------------------------------------------- CLK | O|-|TTL| 8A|3,5MHz сигнал, противофазный тактовой частоте CPU --------+---+-+---+---+--------------------------------------------------------- IORQGE |I |H| 3 |13A|Сигнал захвата адреса порта внешним устройством. | | | | |В цикле чтения вектора прерывания, используется для | | | | |захвата вектора прерывания. --------+---+-+---+---+--------------------------------------------------------- RDR/ |I |H|3 R|15A|READ ROM - сигнал захвата окна CPU0 и блокировки ПЗУ | | | | |внешним устройством --------+---+-+---+---+--------------------------------------------------------- RS |I&O|-|3 R|16A|ROM SELECT, адресная линия A14" ROM, управляется D4 #7FFD --------+---+-+---+---+--------------------------------------------------------- BUSRQ/ |I&O|L|OK |19A|сигнал запроса на захват шины, синхронизируется задат- | | | | |чиком по спаду CLK --------+---+-+---+---+--------------------------------------------------------- RES/ |I&O|L|OK |20A|сигнал системного сброса --------+---+-+---+---+--------------------------------------------------------- CSR/ | O|L|TTL|25A|CS ROM - сигнал, разрешающий захват окна CPU0, арбитри- | | | | |руется сигналом RDR/ --------+---+-+---+---+--------------------------------------------------------- BUSAK/ | O|L|TTL|26A|сигнал подтверждения запроса на захват шины ========+======================================================================= +5V |3A,29A,28B --------+----------------------------------------------------------------------- +12V |29B --------+----------------------------------------------------------------------- GND |6A,7A,14A,30A,30B ========+======================================================================= 3.4.2 Новые (характерные) и изменённые сигналы шины NemoBus v1.0. Табл.4 Новые (характерные) сигналы шины NemoBus v1.0. --------+---+-+---+---+--------------------------------------------------------- 1 | 2 |3| 4 | 5 | --------+---+-+---+---+--------------------------------------------------------- TURBO |I&O|H|OK | 5B|сигнал индицирует работу в турбо режиме, может отключать- | | | | |ся внешним устройством --------+---+-+---+---+--------------------------------------------------------- Табл.5 Изменённые сигналы шины NemoBus v1.0. --------+---+-+---+---+--------------------------------------------------------- 1 | 2 |3| 4 | 5 | --------+---+-+---+---+--------------------------------------------------------- CLK | O|-|TTL| 8A|сигнал тактовой частоты CPU, синфазен сигналу F --------+---+-+---+---+--------------------------------------------------------- 3.4.3 Новые (характерные) сигналы шины NemoBus v1.1. Табл.6 --------+---+-+---+---+--------------------------------------------------------- 1 | 2 |3| 4 | 5 | --------+---+-+---+---+--------------------------------------------------------- IODOS/ |I/O|L|TTL|20B|соответствует инверсному значению D7=1 #EFF7, | | | | |в цикле IORQ/ активирует все теневые порты --------+---+-+---+---+--------------------------------------------------------- 3.4.4 Новые (характерные) и изменённые сигналы шины NemoBus v1.2 (проект). Табл.7 Новые (характерные) сигналы шины NemoBus v1.2. --------+---+-+---+---+--------------------------------------------------------- 1 | 2 |3| 4 | 5 | --------+---+-+---+---+--------------------------------------------------------- A14/A22'|I&O|-| 3 |17A|мультиплексируемая шина старших адресов ОЗУ, позволяет A15/A23'|I&O|-| 3 |22B|адресовать до 256Mb ОЗУ. Данные достоверны при MREQ/=0, и A16/A24'|I&O|-| 3 |18A|CSR/=1. По сигналу EXTA\RS=0 передаются адреса A22'-A27', A17/A25'|I&O|-| 3 |23B|при EXTA\RS=1 передаются адреса A14'-A19' A18/A26'|I&O|-| 3 |31A| A19/A27'|I&O|-| 3 |31B| --------+---+-+---+---+--------------------------------------------------------- Табл.8 Изменённые сигналы шины NemoBus v1.2. ---------+---+---+---+---+------------------------------------------------------ 1 | 2 | 3 | 4 | 5 |(сигнал при BUSAK/=1)\(сигнал при BUSAK/=0) ---------+---+---+---+---+------------------------------------------------------ DOS/ |I/O| L |OK | 4A|сигнал активации режима TR-DOS, вырабатывается BDI, | | | | |при RES/=0 сигнал DOS/=1, совокупность сигналов | | | | |DOS/=0, IODOS/=0 индицирует работу компьютера в режи- | | | | |ме KERNEL, изменён тип выхода ---------+---+---+---+---+------------------------------------------------------ BLK |I&O| H |3 R| 4B|CPU0:BLK=1, при RDR/=1 - сигнал установки в окно CPU0 | | | | |страницы внутреннего ОЗУ, по wr D0=1 #1FFD | | | | |CPU0:BLK=1, при RDR/=0 - сигналы внешнего устройства | | | | |на отключение внутреннего ОЗУ и ПЗУ в окне CPU0 | | | | |CPU1-CPU3:BLK=1 сигнал внешнего устройства на отключе- | | | | |ние внутреннего ОЗУ в окне CPU1-CPU3 ---------+---+---+---+---+------------------------------------------------------ CLK |I&O| - |OK | 8A|сигнал тактовой частоты CPU, синфазен сигналу F, изме- | | | | |нён тип выхода ---------+---+---+---+---+------------------------------------------------------ RDR/ |I | H |3 R|15A|RDR/(CSR/=0) - READ ROM, внешний сигнал захвата окна | | | | |CPU0 и блокировки ПЗУ внешним устройством ---------+---+---+---+---+------------------------------------------------------ EOP\HLT/ |I/O| L |3 R|15B|HALT/(BUSAK/=1) - сигнал, сообщающий об остановке CPU | | | | |до прихода прерывания | | | | |EOP/(BUSAK/=0) - END OPERATION, сигнал контроллера | | | | |ПДП, сообщает об окончании счёта ---------+---+---+---+---+------------------------------------------------------ EXTA\RS |I&O| - |3 R|16A|RS(CSR/=0, MREQ/=0) - ROM SELECT, активен при обраще- | | | | |нии к ПЗУ в окне CPU0, отображает состояние адресной | | | | |линии A14 ПЗУ компьютера, управляется D4 #7FFD. | | | | |EXTA(CSR/=1, MREQ/=0) - EXTENDED ADRESS, активен при | | | | |обращении к внутреннему ОЗУ компьютера. При EXTA=0, по | | | | |6-ти разрядной мультиплексируемй шине старших адресов, | | | | |передаются сначала адреса A22'-A27', а потом, по | | | | |EXTA=1 - адреса A14'-A19' | | | | |EXTA(MREQ/=1) - EXTENDED ADRESS, активен при обращении | | | | |к портам, и выполняет роль старшего разряда адреса вы- | | | | |бора портов A16. | | | | |EXTA=1 при использовании команд IN/OUT(nn),A , при | | | | |этом адресуются дополнительные 256 портов сверх 65536 | | | | |доступных процессору, в остальных случаях EXTA=0. ---------+---+---+---+---+------------------------------------------------------ IODOS/ |I&O| L |OK |20B|соответствует инверсному значению D7=1 #EFF7, в цикле | | | | |IORQ/ активирует все теневые порты, совокупность си- | | | | |гналов DOS/=0, IODOS/=0 индицирует работу компьютера в | | | | |режиме KERNEL, изменён тип выхода ---------+---+---+---+---+------------------------------------------------------ ER\RFSH/ |I/O| L |3 R|25B|RFSH/(BUSAK/=1) - сигнал регенерации памяти процессо- | | | | |ром | | | | |ER/(BUSAK/=0) - END REQUEST, сигнал завершения запроса | | | | |ПДП, по заднему фронту сигнала внешнее устройство фик- | | | | |сирует подтверждённый канал ПДП, и освобождает шину | | | | |данных ---------+---+---+---+---+------------------------------------------------------ EA\BUSAK/| O| L |TTL|26A|BUSAK/ - для SLAVE слотов - сигнал подтверждения за- | | | | |проса на захват шины. |I&O| L |OK | |BUSAK/ - для MASTER слота - сигнал подтверждения за- | | | | |проса на захват шины и подмены внутреннего менеджера | | | | |памяти компьютера на внешний в цикле ПДП | | | | |EA/ - EXTERNAL ADRESS, сигнал подмены внутреннего ме- | | | | |неджера памяти компьютера на внешний, снимается по | | | | |второму фронту CLK после BUSRQ/=0 ---------+---+---+---+---+------------------------------------------------------ A20' |I&O| - |OK |30A|не мультиплексируемая шина старших адресов ОЗУ, изме- A21' |I&O| - |OK |30B|нено назначение вывода ---------+---+---+---+---+------------------------------------------------------ 4. Проектирование устройств для шины NemoBus. Возможность арбитрирования доступа к диапазону портов была присуща оригинальному ZX Spectrum изначально, но стала использоваться по назначению и получила разви- тие только в шине NemoBus. Шина NemoBus предполагает использование трёх типов арбитрирования: арбитрирования доступа к портам ввода-вывода, арбитрирования ис- точника вектора прерывания, и арбитрирования доступа к памяти в окне CPU0. Последнее в оригинальном ZX Spectrum не было предусмотрено, и является характер- ной особенностью только шины NemoBus, хотя на практике до сих пор в ней это и не применялось ввиду отсутствия устройств требующих такого арбитрирования. Схемотехническая поддержка арбитрирования доступа к памяти в окне CPU0 предпола- галась для шины NemoBus v.1.2. 4.1 Требования и рекомендации к шине и архитектуре компьютера для соответствия стандарту NemoBus. 1) Соответствие базовым принципам шины NemoBus. 2) При размещении компьютера в ПЛИС, для устройств внутри ПЛИС наиболее критич- ных к быстродействию, эмулируется их установка в master-слот. Такие устройства должны иметь полную дешифрацию для сигнала IORQGE, также возможно их запаралле- ливание с реальным master-слотом с объединением сигналов IORQGE по "ИЛИ". В этом случае на пользователя ложится ответственность за то, чтобы внешнее устройство в master-слоте не конфликтовало по диапазону используемых портов с параллельным устройством в ПЛИС. Для устройства в ПЛИС, афиллированного с master-слотом воз- можно использование системных портов #FE и #7FFD только в цикле записи без гене- рирования при их выборке IORQGE. Для компьютера в ПЛИС, как и для любого клона ZX Spectrum, чтение порта #FE возможнот только с наинизшим приоритетом. 3) При использовании т.н. "порта атрибутов" #FF, не рекомендуется выполнять его выборку прямой дешифрацией, а только по отсутствию сигналов блокировки IORQGE от всех устройств компьютера при активном сигнале бордюра. 4.2 Требования и рекомендации к интерфейсу периферийных устройств, подключаемых к шине NemoBus. 1) Если предусмотрено чтение из портов устройства, то обязательно наличие форми- рователя сигнала IORQGE, посредством которого происходит захват адреса порта ввода-вывода. 2) Если периферийной платой предусмотрена возможность подмены ПЗУ компьютера в окне CPU0, то обязательно наличие формирователя сигнала RDR/, посредством кото- рого происходит блокировка ПЗУ компьютера. Использование нескольких периферийных плат имеющих возможность подмены ПЗУ компьютера предполагает наличие арбитра доступа к памяти в окне CPU0. 3) Необходимо предусмотреть максимальное снижение нагрузки на выходные сигналы шины. Для этого, при проектировании, необходимо использовать правило: "одно уст- ройство - один вход на каждый используемый выходной сигнал шины". Так же, по возможности, рекомендуется применение серий микросхем с минимальной нагрузкой на шину по их входу. 4) Периферийное устройство, устанавливаемое в слот NemoBus может содержать дуб- лирующий шину двухрядный игольчатый интерфейсный коннектор типа PLD для подклю- чения дочерней платы. Стандарт соответствия контактов такого разъёма, сигналам шины NemoBus приведён на Рис.1. Дочерняя плата оборудуется ответным коннектором типа PBD. Возможно наличие на дочерней плате одновременно и PLD и PBD коннекторов с её противоположных сторон. 4.3 Формирователь сигнала IORQGE для шины NemoBus. В режиме арбитрирования захвата адресов портов, сигнал IORQGE периферийной карты формируется из сигнала шины NemoBus M1/,и сигнала адресного дешифратора карты. Сигнал M1/ определяет выбор режима арбитрирования шины NemoBus. При M1/=0 вклю- чается режим арбитрирования векторов прерываний устройств, а при M1/=1 - режим арбитрирования захвата адресов портов. В некоторых случаях, когда один и тот же адрес порта на чтение и запись исполь- зуется различными периферийными устройствами, в формирователь могут включаться сигналы RD/, WR/ (сигналы не должны быть буферированы). В формирователе сигнала адресного дешифратора карты рекомендуется использовать максимально полную деши- фрацию адреса порта. К каждому слоту шины NemoBus допускается подключение нескольких периферийных карт, соединяемых между собою параллельно через дочерний игольчатый разъём, поэ- тому выходы IORQGE каждой карты при таком подключении обязаны быть тристабильны- ми. При параллельном подключении нескольких карт к одному слоту, пользователь предварительно обязан самостоятельно убедиться в отсутствии конфликтов дешифра- ции их портов ВВ. При проектировании карт расширения предусматривающих возможность параллельного подключения к одному слоту нескольких устройств генерирующих IORQGE, не ре- комендуется использовать формирователь представленный на рис.4, он пригоден только при использовании единственного устройства в слоте. Для корректной работы карт использующих неполную дешифрацию, рекомендуется всег- да устанавливать их в слоты с более низким приоритетом относительно карт с пол- ной дешифрацией, это уменьшит вероятность конфликтов по диапазону захватываемых адресов. Ниже представлены разные схемотехнические решения для формирования сигнала IORQGE периферийными устройствами: - Рис.2 - с помощью бистабильного логического элемента и диода; - Рис.3 - с помощью тристабильного буфера; - Рис.4 - с помощью PNP транзистора; - Рис.5 - с помощью NPN транзистора; - Рис.6 - формирование сигнала IORQGE только в цикле чтения; - Рис.7 - формирование сигнала IORQGE только в цикле записи. _____ +5V | BF >| __ VD1 __---| |--- IORQGE ADR/----------|1 | ADR/----------|1 | |--+ | | o--[>|-- IORQGE | |--oOE| | __ +--|__| __ +--|__| |__|__| |1 | | |1 | | M1/ -| o--+ M1/ -| o--+ |__| Рис.2 |__| Рис.3 +5V_____ VT1 ___ IORQGE | \ / R1 П V___/ __ Ц | ADR/----------|1 | | | | o--+ +-----+---+ __ +--|__| | | | |1 | | _|_ R2 П === C M1/ -| o--+ / \ __ Ц | |__| __/ V___ ADR/----------|1 | | | +5V VT1 IORQGE | |--+---+ __ +--|__| Рис.5 |1 | | M1/ -| o--+ |__| Рис.4 _____ _____ +5V | BF >| +5V | BF >| __---| |--- IORQGE __---| |--- IORQGE ADR/----------|1 | |--+ | ADR/----------|1 | |--+ | | |--oOE| | | |--oOE| | __ +--|__| |__|__| __ +--|__| |__|__| WR/ -|& | | RD/ -|& | | | o--+ | o--+ M1/ -|__| Рис.6 M1/ -|__| Рис.7 В формирователе сигнала IORQGE рекомендуется использовать микросхемы с минималь- ными задержками времени распространения сигнала, и составные транзисторы. 4.4 Арбитр адреса портов ввода-вывода шины NemoBus. Принцип действия арбитра адреса основан на разном уровне приоритета устройств ввода-вывода (УВВ) компьютера, использующего шину NemoBus. Для компьютеров с шиной NemoBus приоритет УВВ распределяется следующим образом: 1) MASTER SLOT (SLOT 0) - УВВ имеют наивысший приоритет и предполагают полную дешифрацию портов ВВ, кроме того, устройство в этом слоте может быть задатчиком в цикле захвата шины. Адресные сигналы слота шины NemoBus v.1.2 позволяют адре- совать всё адресное пространство. ОЗУ компьютера. 2) SLAVE SLOT 1 - SLAVE SLOT n (слоты от 1 до n)) - УВВ имеют более низкий приоритет, понижающийся по мере увеличения номера слота. 3) УВВ компьютера имеют наинизший приоритет, и могут быть активны только в том случае, если не активно ни одно УВВ на шине NemoBus. Такое архитетурное построение шины обеспечивает безконфликтное подключение УВВ имеющих неполную дешифрацию адреса, что традиционно для УВВ ZX Spectrum, а так же позволяет применять для УВВ новые свободные диапазоны адресов портов без необходимости переделки схемотехники компьютера. Архитектурным исключением может быть случай использования в качестве CPU одно- кристальной микро-ЭВМ eZ80, содержащей встроенные УВВ, имеющие более высокий приоритет по сравнению со всеми остальными УВВ. На Рис.8 приведена типовая схема последовательного арбитра шины для компьютера с тремя слотами NemoBus: IORQ/ SLOT0 ^ IORQ/ SLOT1 | ^ IORQ/ SLOT2 | __ | ^ CPU IORQ/ ->-+-|1 | | __ | | |---------+-|1 | | __ IORQGE0 ->-+-|__| | |---------+-|1 | SLOT0 | IORQGE1-+-|__| | |---> IORQG/ to MAINBOARD П R1 SLOT1 | IORQGE2-+-|__| Ц 680 П R2 SLOT2 | | Ц 680 П R3 --- | Ц 680 --- | Рис.8 --- IORQ/ SLOT0 ^ | IORQ/ SLOT1 | __ ^ IORQ/ SLOT2 CPU IORQ/->---+--+-|1 | | __ ^ | | |-+ +-------------|1 | | IORQGE0 ->-+-|--+-|__| | | |-+ SLOT0 | | | +-|-------------| | __ | | П R1 | | | | +--------------|1 | | | Ц 680 | |IORQGE1-+--+-|__| | | | | | | | | SLOT1 | | | +------------| | | | --- | | | П R2 | | | |---> IORQG/ to | | | | | Ц 680 | | +----------| | MAINBOARD | | | | | | | | | | | | | | | | --- | | |IORQGE2-+-|__| | +---------|-+--------|---------+ | | SLOT2 | | | +-----------+ | П R3 +-----------+------------------------+ Ц 680 Рис.9 | --- Где IORQGE0-2 - сигналы со слотов 0-2, а IORQG/ - результирующий сигнал, подава- емый в схему компьютера. Недостатком схемы на Рис.8 является значительная задержка сигнала IORQG/ относи- тельно заднего фронта сигнала IORQ/, что может приводить при записи или чтении по его заднему фронту к некорректному результату. Это устраняется использованием схемы параллельного арбитра шины представленного на Рис.9. Так же в схемах выби- раемых только в цикле записиили возможно использование дешифрации по переднему фронта IORQG/. В арбитре шины представленном на Рис.8 рекомендуется использовать микросхемы с минимальными задержками времени распространения сигнала. Арбитр шины представ- ленный на Рис.9 рекомендуется к реализации в ПЛИС. 4.5 Формирователь сигнала RDR/ для шины NemoBus. Сигнал RDR/ периферийной карты предназначен для блокирования внутреннего ПЗУ компьютера этой картой, а так же для формирования сигнала CSR/ для следующего внешнего устройства с более низким приоритетом. По своей сути сигнал RDR/ выпол- няет ту же функцию, что и IORQGE при захвате диапазона адресов портов, а сигнал CSR/, ту же функцию, что и IORQ/. Сигнал RDR/ периферийной карты формируется из сигнала включения режима подмены ПЗУ CS/, формируемого портом внешнего устройства,и из формируемого внешним устройством сигнала выборки диапазона подменяемых адресов. В каждый слот шины NemoBus v.1.2 и выше допускается установка только одной периферийной карты использующей подмену ПЗУ компьютера в окне CPU0. В компьюте- рах с более ранними версиями шины NemoBus, не имеющих арбитра доступа к памяти в окне CPU0, допускается одновременная установка только одной периферийной карты использующей подмену ПЗУ компьютера в окне CPU0. Эта карта может быть установле- на в любой слот. На Рис.10-13 представлены возможные схемы формирования сигнала RDR/ периферийны- ми устройствами: _____ +5V | BF >| __ VD1 __---| |--- RDR/ CS/ ---|1 | CS/ ---|1 | |--+ | | o--[>|-- RDR/ | |--oOE| | ADR/---|__| ADR/---|__| |__|__| Рис.10 Рис.11 +5V_____ VT1 ___ RDR/ | \ / R1 П V___/ __ Ц | ADR/----|1 | | | | o--+ +-----+---+ CS/ ----|__| | | | _|_ R2 П === C / \ __ Ц | __/ V___ ADR/----|1 | | | +5V VT1 RDR/ | |--+---+ CS/ ----|__| Рис.13 Рис.12 В формирователе сигнала RDR/ рекомендуется использовать микросхемы с минималь- ными задержками времени распространения сигнала, и составные транзисторы. 4.6 Арбитр доступа к памяти в окне CPU0 шины NemoBus. Арбитр доступа к памяти в окне CPU0, применяется при необходимости обеспечения доступа к этому окну несколькими периферийными устройствами. Принцип арбитриро- вания доступа к памяти в окне CPU0 основан на разном уровне приоритета слотов шины NemoBus. Для компьютеров с шиной NemoBus v.1.2 приоритет доступа к памяти в окне CPU0 распределяется следующим образом: 1) Компьютер имеет наинизший приоритет при установке в окно CPU0 страницы ОЗУ. 2) SLOT 0(или MASTER SLOT) - SLAVE SLOT n (слоты от 1 до n) - имеют более низкий приоритет, понижающийся по мере увеличения номера слота. На Рис.14 приведена типовая схема последовательного арбитра доступа к памяти в окне CPU0 для компьютера с тремя слотами NemoBus: CSR/ SLOT0 ^ CSR/ SLOT1 | ^ CSR/ SLOT2 | __ | ^ MB CSR/ ->-+-|1 | | __ | | |---------+-|1 | | __ RDR/ SLOT0->-+-|__| | |---------+-|1 | | RDR/ ->-+-|__| | |---> RDR/ to MAINBOARD П R1 SLOT1 | RDR/ ->-+-|__| Ц 680 П R2 SLOT2 | | Ц 680 П R3 --- | Ц 680 --- | Рис.14 --- CSR/ SLOT0 ^ | CSR/ SLOT1 | __ ^ CSR/ SLOT2 MB CSR/ ->---+--+-|1 | | __ ^ | | |-+ +-------------|1 | | RDR/ SLOT0->-+-|--+-|__| | | |-+ | | | +-|-------------| | __ | | П R1 | | | | +--------------|1 | | | Ц 680 | | RDR/->-+--+-|__| | | | | | | | | SLOT1 | | | +------------| | | | --- | | | П R2 | | | |---> RDR/ to | | | | | Ц 680 | | +----------| | MAINBOARD | | | | | | | | | | | | | | | | --- | | | RDR/->-+-|__| | +---------|-+--------|---------+ | | SLOT2 | | | +-----------+ | П R3 +-----------+------------------------+ Ц 680 Рис.15 | --- Недостатком схемы на Рис.14 является значительная задержка сигнала RDR/ по срав- нению с CSR/ после его возврата в неактивное состояние. Это устраняется исполь- зованием схемы параллельного арбитра представленной на Рис.15, в которой задний фронт RDR/ выравнивается по CSR/. В арбитре шины представленном на Рис.14 рекомендуется использовать микросхемы с минимальными задержками времени распространения сигнала. Арбитр шины представ- ленный на Рис.15 рекомендуется к реализации в ПЛИС. 4.7 Формирователь маскируемых прерываний от устройств шины NemoBus. Возможность работы одновременно с несколькими источниками маскируемых прерыва- ний, а так же арбитрирования их запросов существовала для шины NemoBus изначаль- но, и доступна во всех её версиях. Шина NemoBus предоставляет возможность неза- висимого и неарбитрируемого выставления запросов маскируемого прерывания устрой- ствами, а так же выставления ими арбитрируемого приоритетного вектора прерыва- ния. Т.к. для шины NemoBus арбитрирование вектора маскируемого прерывания производится тем же арбитром что и арбитрирование захвата диапазона адресов пор- тов ввода-вывода, то приоритеты векторов прерывания устройств соответствуют при- оритетам слотов в которые они утановлены: наивысший приоритет у устройства в master-слоте, наинизший - у материнской платы, при этом режим арбитрирования векторов прерывания задаётся значением сигнала M1/=0. При активации этого сигна- ла, все периферийные устройства выставившие запросы на маскируемое прерывание, активируют свои сигналы IORQGE, тем самым блокируя выставление векторов прерыва- ния устройствами с более низким приоритетом. Для работы с контроллерами прерываний, в ZX Spectrum используется режим IM2 обработки прерываний процессором. При генерации адресов вектора прерывания, мо- гут быть задействованы разряды D1-D7 вектора прерывания, позволяющие определять 128 двухбайтовых адресов вектора прерывания. Разряд D0 вектора прерывания может иметь любое требуемое значение, но необходимо иметь ввиду, что векторы прерыва- ния свойственные ZX Spectrum - нечётные, в то время как векторы прерывания ис- пользуемые ИС Zilog или Intel чётные. Арбитрирование выставления вектора прерывания осуществляется аналогично арбитри- рованию захвата диапазона портов ВВ с помощью сигнала IORQGE формируемого пери- ферийным стройством. На Рис.16 представлена типовая схема программируемого контроллера прерываний для устройств шины NemoBus: +-------------------------------+------|<]------> INT/ | +5V <--+ _____ | VD1 | __ | | |T | DD3.1 | +--|& | +--oS/|Q/o--+ | | o--+ | |--| | | | IRQ/-----------------------|__| +-|-->C | | | | __ DD2.1 +--|D | | | | +-----|& | |--| | | __ | DD6.1 _____ | | |-------------oR/|Q | +--|1 | | | |T | | +--|__|DD1.1 |__|__| | | |--+ +5V--oS/|Q/o--|--|-------------+--------------|--|__| DD5.1 ________ |--| | +--|-------------|--------------|------------oOE/|BF >| Dn --|D | | | | +----------|--------------+ |---| | WCS/-->C | | | | | | __ +------------------|___|____|--> Dx |--| | | | | _____ +--|1 | | DD4.1 RES/--oR/|Q | | | | | |T | | |--+ |__|__| | | +--oS/|Q/o----|__| | __ DD5.4 __ | | |--| | DD5.3 +--|1 | __ DD1.2 IORQ/----|1 | | |GND--|D | | | |-----|& | ________ | |--+--|----->C | | +-------|__| | |---oOE/|BF >| +--|__| | |--| | | __ +--|__| |---| | | DD5.2 +-----oR/|Q | | ADR--|& | | +5V--|___|____|--> IORQGE | | |__|__| | | o--+ DD4.2 M1/--+-----------|-----------------+-------|__| _____ | DD3.2 DD2.2 | |T | | +5V--oS/|Q/o | |--| | | D7 --|D | | | Рис.16 WCS/-->C | | | |--| | | RES/--oR/|Q |-----+ |__|__| DD6.2 Прерывание от устройства фиксируется по отрицательному фронту сигнала IRQ/. Триггер DD3.1 взводится прерыванием, запоминая факт запроса маскируемого преры- вания устройством, и находится в таком состоянии до момента запроса процессором вектора прерывания от устройства. Сигнал с выхода триггера DD3.1 взводит триггер DD3.2, тем самым разрешая активацию сигнала IORQGE и одновременное выставление вектора прерывания при его запросе процессором сигналами IORQ/ or M1/=0. Триггер DD3.2 сохраняет взведённое состояние до окончания действия сигналов IORQ/ or M1/=0. При этом сигнал IORQGE блокирует выставление вектора прерывания всеми устройствами с более низким приоритетом. Так же сигнал IORQGE может быть активирован при при обращении к портам устройст- ва при активации сигнала дешифратора ADR=1, блокируя при этом обращение к портам всех устройств с более низким приоритетом захвата адресного пространства портов. При запросе процессором вектора прерывания, открывается буфер DD4.1, и на соот- ветствующий разряд Dx шины данных выставляется ноль. Т.к. шина данных в клонах использующих шину NemoBus должна быть стабильна, и по умолчанию подтянута резис- торами к единичному логическому уровню, то ноль в одном из разрядов шины данных формирует вектор прерывания отличный от стандартного для ZX Spectrum вектора ка- дрового прерывания #FF. Логический уровень разряда Dn триггера DD6.1, защёлкиваемый сигналом WCS/, опре- деляет состояние маски, разрешающей прохождение сигнала прерывания от устройства к процессору. По умолчанию, после сброса, прерывания от всех устройств кроме ка- дрового прерывания компьютера, запрещены. Для всех устройств шины NemoBus адрес порта маски вектора прерывания является общим: WCS/ = wr #F777. На сегодняшний день разряды D0-D7 порта маски вектора прерывания #F777 выделены следующим устройствам: D0 - маска прерывания соответствующая сигналу окончанию счёта контроллером DMA 8237, соответствует разряду D4 вектора прерывания, по сбросу прерывание запрещено; D1 - маска для прерывания от первого таймера 8254, соответствует разряду D5 век- тора прерывания, по сбросу прерывание запрещено; D2 - маска для прерывания от второго таймера 8254, соответствует разряду D6 век- тора прерывания, по сбросу прерывание запрещено; D3 - маска для прерывания от ULA, соответствует разряду D7 вектора прерывания, по сбросу прерывание разрешено (на схеме не показано); D4-D6 - зарезервированы; D7 - разрешение работы контроллера прерываний, по сбросу работа запрещена; Разряды D0-D3, D7 порта #F777 маски вектора прерывания относятся к одному и тому же контроллеру маскируемых прерываний. При наличии такого контроллера, он уста- навливается в слот с наивысшим приоритетом. Остальные контроллеры маскируемых прерываний используют разряды D4-D6, кроме того, разряды D3, D7 порта маски век- тора прерывания используются всеми контроллерами маскируемых прерываний. Порт маски вектора прерывания #F777 доступен на чтение (на схеме не показано), поэтому он обязан запоминать байт маски полностью. Соответственно содержимое этого порта доступно на чтение только из контроллера маскируемых прерываний с наивысшим приоритетом. Чтение из остальных контроллеров маскируемых прерываний должно блокироваться сигналом IORQGE контроллера маскируемых прерываний с наи- высшим приоритетом. На Рис.17 представлена диаграмма работы контроллера прерываний: __ __________________________________________________________________ IRQ/ \__/ __ _________________________________________ INT/ \___________________________/ ____________________ _________________ M1/ \_________________________________/ ________________________________ IORQGE ---------------------/ \----------------- _____________________________ __________________ IORQ/ \_______________________/ Dx ----------------------------------------------- Рис.17 На Рис.18 представлена схема упрощённого контроллера прерываний, без функции маскирования прерываний: +5V <--+ +----------------------+---------|<]----------> INT/ | | +5v <--+ _____ | VD1 П R1 | __ | | |T | | Ц +--|& | +--oS/|Q/o--+ ___ | | o--+ | |--| | | IRQ/-----о о------+--------|__| +-|-->C | | | JP1 __ DD2.1 +--|D | | | +--|& | |--| | | | | |-------------oR/|Q | | RES/-----------+--|--|__| |__|__| | | | DD1.1 DD3.1 | ________ | +----------------------------|---------oOE/|BF >| | | +-------------------------+ |---| | | | | _____ +-----------------------|___|____|---> Dx | | | | |T | | __ DD4.1 | | +--oS/|Q/o--+-----|1 | __ __ | | |--| | | |-----|& | IORQ/----|1 | | |GND--|D | | +-----|__| | |--+ | +--|--+----->C | | | DD5.2 +--|__| | ________ +--|__| | |--| | | | DD1.2 +--oOE/|BF >| | DD5.1 +--------oR/|Q | | __ | |---| | | |__|__| |ADR--|& | | +5V--|___|____|---> IORQGE | DD3.2 | | o--+ DD4.2 M1/--+--------------------------+-----|__| DD2.2 Рис.18 В упрощённом контроллере отключение прерываний возможно только в ручном режиме с помощью перемычки JP1. 4.8 Интерфейс динамического запроса ПДП для шины NemoBus v.1.2. В цикле запроса ПДП, внешнее устройство на шине NemoBus выставляет запрос захва- та шины BUSRQ/, а после его подтверждения, по спаду BUSAK/ выставляет на одном из разрядов D0-D6 шины данных запрос канала ПДП установкой его в ноль. После прихода запроса ПДП, контроллер ПДП перехватывает сигнал BUSRQ/, и удерживает его до завершения цикла ПДП. Далее контроллер ПДП сбрасывает разряд D7 шины дан- ных в ноль, что означает подтверждение запроса ПДП, и в соответствии с приорите- том запросов, выставляет подтверждение приоритетному каналу на одном из разрядов D0-D6 шины данных, соответствующих разрядам запросов ПДП. Устройствам на шине NemoBus доступны только 7 каналов ПДП, для каждого из которых выделен свой бит на шине данных для выставления запроса канала ПДП. Тип выходов запросов канала ПДП и его подтверждения - ОК. После этого контроллер ПДП генерирует импульс на линии ER\RFSH/, индицирующий завершение процедуры запроса ПДП устройством. По заднему фронту сигнала ER\RFSH/, внешнее устройство чей запрос подтверждён, фиксирует у себя подтверж- дение своего запроса. Кроме того, все устройства запрашивавшие одновременно ПДП, освобождают шину данных, и снимают свои запросы BUSRQ/. После этого контроллер ПДП выполняет цикл ПДП, по завершении которого выставляет в ноль сигнал EOP\HALT/, сообщающий внешнему устройству о завершении запрашиваемого ПДП, а также снимает запрос BUSRQ/, освобождая шину. После этого, внешние устройства, чьи запросы ПДП не были удовлетворены, могут попытаться их повторить. На Рис.19 представлена диаграмма цикла динамического запроса ПДП для шины NemoBus v.1.2: __ __ ________________ BUSRQ/ BUS \_________________________/ ________ _________ BUSRQ/ DMA \______________________ ______/ __ _________ BUSRQ/ CPU \____________________________ ______/ ____ _______ BUSAK/ \__________________________ //-- цикл ПДП --// ________/ ___________________ ___ _____________ ER\RFSH/ XXXX/ \__/ \XX __________________________ __ ____ EOP\HALT/ XXXX/ \__/ \XXXXX D0-D6 XXXX>-<ЗАПРОС><ПОДТВЕРЖДЕНИЕ>-- --------------------\_____________/-- -----------