TNS-UPP-NET
- 1. Принцип работы функции
- 2. Техническое описание
- = 2.1 Стандартная часть UPP-NET (плата UPP-UNIVERSAL) =
- = 2.2 Описание подключения прикладной части UPP-NET =
- 3. Перемычки и переключатели
- 4. Карта портов ввода/вывода
- = 4.1 Внутренние порты ЦП модуля UPP-NET =
- = 4.2 Ключевые биты портов SIO Управление (0xEE) при чтении (RR0) =
- = 4.3 Стандартные адреса UPP-NET со стороны шины TNS (хост-порт) =
- 5. Общая карта SRAM (просмотр с хоста TNS)
- 6. Структура внутренней оперативной памяти 0x4000–0x43FF
Описание основано на оригинальной документации (popis_modulu_upp_net, uzivatelska_dok_upp_net) и на обратном анализе прошивки (ПЗУ 2 КБ, сегмент 0x0000–0x07FF); анализ ПЗУ UPP-NET и оригинальной документации (Слушовице, ок. 1988 г.).
Примечание: исходная документация содержит незначительные ошибки (путаница 8255 × PIO, противоречивые
нумерация ввода-вывода) — ниже приведены исправленные значения, сверенные с исходным кодом.
Модуль UPP-NET используется для подключения компьютеров TNS к локальной локальной сети (локальной сети). Максимальное количество участников сети — 64. К сети могут быть подключены компьютеры TNS GC, TNS SC (при использовании модуля UPP-NET) и TNS HC, уже имеющие интерфейс Fast Line на материнской плате.
Передача данных между участниками сети происходит на физическом уровне в синхронном протоколе SDLC с немодулированным сигналом и управляется интегральной схемой Z80-SIO. Данные, передаваемые от SIO, кодируются манчестерским кодом и передаются на передатчик. Полученные данные обрабатываются в приемнике, декодируются и подаются в SIO.
Работа всей системы контролируется временной разверткой, полученной из кристалла частотой 10 МГц. Гальваническая развязка модуля от линии обеспечивается трансформаторной связью.
Используемый манчестерский код позволяет кодировать тактовый сигнал передатчика, необходимый для синхронной передачи, в передаваемые данные. Кроме того, закодированный таким образом сигнал не содержит постоянной составляющей.
Каждая станция на линии имеет свой номер пользователя, который задается DIP-переключателями с 1 по 6 поля переключателя SW1, где переключатель 1 соответствует порядку адресов 0 и т. д. На одной линии не должно быть 2 станций с одинаковыми номерами пользователей.
= 2.1 Стандартная часть UPP-NET (плата UPP-UNIVERSAL) =
Базовая схема карты — микропроцессор Z-80 (IO 3). Программа управления ЦП хранится в памяти EPROM (IO 4) в адресном пространстве от 0 до 1000h. Сегмент данных – оперативная память 1 КБ – состоит из двух цепей типа 2114 (IO 6, IO 7). Адресное пространство ОЗУ фиксировано расположено от адреса 4000h и занимает в общей сложности четыре дважды адресуемых «кило» (пространство 4000-5000h).
В стандартную часть модуля UPP-NET также входят схемы Z80-PIO (IO 1) и Z80-CTC (IO 2), которые в целом практически полностью пригодны для конкретного применения платы типа UPP.
В частности, в приложении UPP-NET схема CTC используется только для обеспечения связи ЦП компьютера TNS с платой UPP-NET (она обеспечивает генерацию прерываний для процессора модуля UPP). Схема PIO с вентилем «B» также участвует в связи карты UPP-NET с процессором TNS – через биты 0 и 1 этого вентиля периферийный процессор считывает флаги состояния входных и выходных буферов модуля UPP-NET. Элемент «A» схемы PIO используется для идентификации номера станции, установленного на DIP-переключателе SW1.
Цепи PIO и CTC подключены через свои входы IEI и выходы IEO в цепочку приоритетных прерываний, причем CTC по умолчанию имеет наивысший приоритет прерывания. В случае приложения UPP-NET его вход IEI подключен к выходу IEO схемы SIO прикладной части, поэтому по умолчанию схема SIO имеет наивысший приоритет прерывания.
Линейная адресация используется для декодирования портов IO1 (PIO) и IO2 (CTC), поэтому PIO занимает стандартные адреса от F4 до F7h, а схема CTC — адреса от F8 до FBh. Схема SIO прикладной части UPP-NET имеет адреса от EC до EFh.
Модуль УПП содержит два декодера адресов: один для обеспечения связи с ТНС (IO 9), т.е. разрешения адресов модуля УПП на шине TNS, и другой (IO 8) для разделения адресного пространства самого УПП. Первый декодер (IO 9 – PROMka 745571) устанавливает стандартные адреса модуля UPP-NET в диапазоне от A0 до A3h. Второй декодер (IO 8) реализован схемой 3205 и делит адресное пространство памяти между областью памяти EPROM, RAM и пространством.
соответствующие адресам входного и выходного буфера в схемах интерфейса шины TNS, которые отображаются в пространство памяти, т.е. UPP-NET считывает и отправляет данные в TNS, используя операции чтения и записи в памяти.
= 2.2 Описание подключения прикладной части UPP-NET =
Данные TxD, передаваемые от SIO в ритме переданного тактового сигнала передачи TxC, кодируются в манчестерском кодере SEEQ, образованном схемами IO 27, IO 28.A,B,D и IO 29.A. Кодированный сигнал поступает на линейный передатчик, образованный микросхемой 75325, к выходам которого подключен развязывающий трансформатор возбуждения линии.
Работу передатчика можно заблокировать, подав лог.1 на вход S2 схемы 74325. Такая блокировка передатчика необходима для взаимодействия нескольких передатчиков на линии и управляется от схемы аппаратного абонента линии, образованной IO 31.A.
Приемная обмотка также расположена на линейном трансформаторе. Приемник состоит из быстродействующего компаратора, гистерезис которого составляет около 100 мВ, устанавливаемого с помощью положительной обратной связи. На входе компаратора имеется схема защиты. Выходной сигнал компаратора поступает как на манчестерский декодер, так и на моностабильный триггер IO 26.A с постоянной времени около 50 мкс, который служит индикатором занятости линии и считывается процессором на входе PA7 схемы PIO (вентиль A, бит 7).
Информация о занятости линии также передается на аппаратный захват линии IO 31.A (если линия занята, наша станция больше не может ее занять) и на генератор сигналов WAIT, формируемый IO 29.C и T1 (однако в текущей версии ПО он не используется).
Подключение манчестерского декодера основано на решении компании SEEQ и состоит из цепей IO 23.A, IO 24, IO 25 и IO 30.C,D. Схема Z80-SIO получает данные RxD и тактовую частоту RxC от декодера.
Синхронизация всех схем осуществляется с помощью кварцевого генератора с частотой 10 МГц, образованного инверторами. Из него после деления выводятся частоты для работы задержек из сдвиговых регистров в декодере и для управления кодером.
При использовании адреса PROM плата UPP-NET адресуется в пространстве от 0A0H до 0A4H (см. описание стандарта UPP).
Модуль UPP-NET не требует установки перемычек. Перемычки, которые являются стандартными для плат UPP (квадратные площадки для пайки), сканируются непосредственно на печатной плате в приложении UPP-NET и поэтому фиксируются.
Модуль UPP-NET содержит один «DIP-переключатель» с восемью переключателями, шесть из которых используются для установки адреса пользовательской станции в диапазоне адресов от 0 до 3F в шестнадцатеричном формате (т.е. всего 64 станции), а остальные два переключателя заблокированы. Младший бит шестибитного адреса станции устанавливается переключателем на стороне корпуса DIP-переключателя, обращенной к разъему шины TNS, т.е. на ключевой стороне корпуса ввода-вывода. По направлению от корпуса DIP-переключателя вперед с разъемами для коаксиального кабеля последовательно расположены переключатели старших весовых бит адреса станции. При этом разомкнутый переключатель устанавливает бит в лог.1 (сторона, отмеченная на DIP-переключателе цифрой 0), а замкнутый переключатель выдает лог.0 (сторона 1).
= 4.1 Внутренние порты ЦП модуля UPP-NET =
Схема | Порт | Функции ----------|-------|------------------------------------------------ СТС ч.0 | 0xF8 | Базовый вектор прерывания CTC (запишите 0x40 = базовый) СТС ч.1 | 0xF9 | Сброс (CTC1, не используется) СТС ч.2 | 0xFA | Сброс (CTC2, не используется) СТС ч.3 | 0xFB | Счетчик линейных импульсов/генератор прерываний для обнаружения записи TNS | | WR: 0xD7 = режим счетчика, нарастающий фронт, следует постоянная времени | | Постоянная времени = 1 → прерывание после каждого импульса ПИО И данные | 0xF4 | Чтение: бит7 = линия занята (моностабильно 50 мкс) | | биты 5:0 = адрес станции от DIP-переключателей ПИО И Менеджмент | 0xF6 | Настройка PIO-вентиля A (режим 3 = битовый режим, 0xFF = все входы) Данные PIO B| 0xF5 | Бит 7 = блокировка передатчика (1 = блокировка) | | Бит 6 = передача включена (1 = передача включена) | | Бит 5 = состояние занятости линии (1 = линия свободна для передачи) | | Бит 1 = флаг данных во входном буфере TNS (для основного цикла) | | Бит 0 = статус передачи/передачи ПИО Б управление | 0xF7 | Настройки PIO шлюза B Данные СИО А | 0xEC | Чтение = полученный байт из сети, запись = байт для передачи. СИО А контроль.| 0xEE | Статус канала SIO A (чтение) / команды WRx (запись) Данные SIO B | 0xED | (не используется в сетевом коде) Управление SIO B.| 0xEF | Команды SIO канала B WRx — установка вектора прерывания WR2
= 4.2 Ключевые биты портов SIO Управление (0xEE) при чтении (RR0) =
Бит 0 (rrca → CF): доступен символ RX Бит 1: нулевой счетчик (CRC) Бит 2 (бит 2, a): буфер передачи пуст. Бит 5 (бит 5, a): SYNC/HUNT (ожидание флага SDLC) Бит 6 (бит 6, a): DCD (обнаружение несущей данных/линия активна) CF после rlca: соответствует биту 7 = получено прерывание/прерывание.
= 4.3 Стандартные адреса UPP-NET со стороны шины TNS (хост-порт) =
Адрес ТНС | Шестнадцатеричный | Функции -----------|------|------------------------------------------------ вход УПП | 0xA0 | Запись (TNS→UPP): номер узла назначения (0–63). Статус УПП1 | 0xA1 | Чтение состояния входного регистра Выход УПП | 0xA2 | Чтение выходного регистра UPP (UPP→TNS) Статус УПП2 | 0xA3 | Чтение состояния выходного регистра
5. Общая карта SRAM (просмотр с хоста TNS)
Хост TNS взаимодействует с UPP-NET через область общей памяти, сопоставленную с
собственного адресного пространства CPU Z80 на карте UPP:
Адрес ЦП УПП | Функция (доступ со стороны UPP CPU) ---------------|------------------------------------------------ 0x0000–0x0FFF | EPROM (прошивка, только чтение) 0x4000–0x4FFF | ОЗУ (внутренние переменные и буферы, см. ниже) 0x5000–0x5FFF | Чтение входного буфера (= то, что TNS записал по адресу 0xA0) | Формат: [target_node(1B)], затем [длина(1B)][данные...] | Специальные значения: 0x80 = полный сброс UPP. 0x6000–0x6FFF | Запись в выходной буфер (UPP → TNS), БЕЗ активации -SI1 0x7000–0x7FFF | Запись в выходной буфер (UPP → TNS), При активации -SI1 | (прерывание процессора TNS)
6. Структура внутренней оперативной памяти 0x4000–0x43FF
Адрес | Длина | Название | Описание ------------|-------|------------------------|------------------------------------------ 0x4000–403F | 64 Б | tx_seq_table | Таблица порядковых номеров передачи (на узел) | | | unk_4000[n] = следующая последовательность передачи для узла n | | | бит7=1: широковещательный/специальный режим | | | инициализация: 0x80 (неинициализированный) 0x4040–407F | 64 Б | rx_seq_table | Таблица порядковых номеров RX (на узел) | | |