Передовица » Hardware » Сеть » Контроллер сети

Контроллер сети (штатная сетевая карта из комплекта КУВТ-АГАТ)

Авторы: Е.Н.Глыбин, С.В.Козаренко, К.М.Левин. НИИВК 1988-90 год.
Разыскивается! Если вы автор или что-то знаете о нём, свяжитесь с нами! (ЗАЧЕМ ЭТО?)

Сделана она была вполне солидно. Есть микросхема ПЗУ, т.е. у неё был и onboard-драйвер и BOOT-ROM. Это уже был не просто порт для близлежащего устройства, а полноценный интерфейс дальней связи (сотни метров).

EPROM экспериментальной и серийной версий.

Плата поставлялась с ИКП ОС Локальной Сети.

* * *

Экспериментальная версия. Э-001-90.



Серийная версия. РВИЖ 469555.006. Комплектовалась шнуром длинной 2 метра с разъемом ОНЦ-ВГ-4-5-Р.

См.также фотошаблон РВИЖ 758727.025 серийной версии платы.

* * *

Этот контроллер в мире PC назвали бы просто "сетевой картой". Причем наличествует ПЗУ удалённой загрузки. Изначально он разрабатывался для работы с коаксиалом, но в серию пошел вариант явно заточен под витую пару, причем, похоже, что даже в этом случае хабы агатовской сети не требовались. В отличие от Ethernet по витой паре, здесь использовалась только одна пара проводов для обоих направлений. Так что дуплекс не предполагался. Да и скорость была весьма невысокой. Но тем не менее, сеть допускала топологию "шина", что позволяло иметь одну пару проводов на весь класс машин. Допускался как адресный, так и широковещательный режим обмена. Имелась гальваническая развязка.

Аппаратно состоит из приёмопередатчика кр580вв51, схемы дополнительного кодирования/декодирования данных, магистрального формирователя сигнала (силовые каскады + гальваническая развязка + входной формирователь) и шинного интерфейса Агата. Схема кодирования формирует Манчестерский код (каждый бит передается как два бита, один из которых просто равен кодируемому биту, а второй - его инверсии). Поскольку Манчестерский код является самосинхронизирующимся, декодер во время приёма вылавливает из этого кода синхронизацию для ВВ51.

Скорость обмена -- 62500 бод/сек.

Контроллер использует три адресных пространства:
C0n0..C0nF
Cm00..CmFF
C800..CFFF
где n - номер слота + 8, m - номер слота.

ПЗУ драйвера отображается так:

  • старшая страница всегда видна на Cm00..CmFF;
  • после обращения к старшей странице включается отображение остальных страниц на C800..CEFF, после обращения к любому адресу CF00..CFFF отображение C800..CEFF отключается (поэтому по CF00..CFFF в любом случае читается мусор);
  • также и после общесистемного RESET - C800..CEFF отключается.
Регистры управления:
C0n0, C0n2, C0n8, C0nA - регистр данных ВВ51 
(бит A0 напрямую подключен к 12 выводу ВВ51, дальше смотрим справочник);

C0n1, C0n3, C0n9, C0nB - регистр управления ВВ51;

C0n4, C0n5, C0nC, C0nD - чтение регистра сетевого адреса контроллера 
(устанавливается джамперами на плате, что-то вроде MAC-адреса);

C0n6, C0n7, C0nE, C0nF - любая операция приводит к генерации сигнала RESET для ВВ51. 
Причем сигнал удерживается некоторое время, превышающее несколько тактов ЦПУ.

На экспериментальной плате:
C0n0, C0n8 - регистр данных ВВ51;
C0n1, C0n9 - регистр управления ВВ51;
C0n2, C0n3, C0nA, C0nB - регистр выбора страниц ОЗУ;
C0n4, C0n5, C0nC, C0nD - чтение регистра сетевого адреса контроллера;
C0n6, C0n7, C0nE, C0nF - сброс ВВ51.

Вероятно, ВВ51 штатно работает в т.н. "синхронном" режиме (во всяком случае на приём), при этом используется аппаратная фича ВВ51-й, позволяющая параллелить несколько приёмников на общей магистрали (микросхема будет слушать канал, но регистр данных будет заполнятся только после появления в канале специального кода - адреса. Причем отличить этот код от обычного байта с таким же значением микросхема не может, это возлагается на более высокоуровеный протокол).

Модуль также может генерировать прерывание IRQ, оно идёт через инвертор от вывода SYND/BD (лапка 16). Вроде бы в штатном режиме возникать будет при проскакивании в канале кода адреса, но вообще-то лапка многофункциональная и к тому же двунаправленная, так что ...

... читайте описание ВВ51 ! Самое простое (и не полное) есть у Мымрина, более подробное было где-то в "Микропроцессорных средствах и системах", ну а самое-самое, наверное - если найти описание исходного импортного аналога.

Кстати, у меня есть следующая заметка: ВВ51 отличается от ИК51: "Сброс D1 RxRDY слова состояния у ИК51 просиходит при чтении из любого регистра, а у ВВ51 только при чтении из регистра данных".

* * *

В 1988 году, в журнале "Микропроцессорные средства и системы", авторы опубликовали статью Контроллер локальной сети с планами по устройству.

Но, в отличие от этой статьи, в реальных контроллерах не реализована схема обнаружения конфликтов передачи, кроме того, магистраль сделана симметричной.

В экспериментальной версии, видимо, попытались упростить ту часть платы, которая отвечает за прием. В результате выкинули одну К555ТМ2, счетчик К555ИЕ7 и К555ЛА3, которая им управляла. На счетчике фактически был сделан одновибратор, в экспериментальной версии вместо него поставили настоящий одновибратор КР1006ВИ1.

Решение спорное. Потому что в схеме на счетчике задержка определяется тактовой частотой и, по сути, стабилизирована кварцевым резонатором. А схема на КР1006ВИ1 использует резистор и конденсатор для формирования задержки. Реальные резисторы и конденсаторы никогда не бывают того номинала, который на них написан. Они всегда немного отличаются. Кроме того, и сопротивление и емкость зависят от температуры. А следовательно и задержка. Так что схему на КР1006ВИ1 надо подстраивать, а в процессе работы задержка вообще может "уплыть". Видимо, осознав это, в серийной версии вернулись к той схеме, которая есть в статье.

Теперь, что касается КР1533ТМ8 и ОЗУ. ТМ8 используется для управления ОЗУ. Разряды D0 и D2 позволяют выбрать, какая часть ОЗУ будет видна при обращении по адресам CX00 - CXFF. Разряд D1 управляет тем, что сейчас используется: ОЗУ или ПЗУ. Схема построена так, что можно использовать либо ОЗУ, либо ПЗУ. Одновременно их использовать нельзя. Наиболее вероятная причина, почему так было сделано - отладка кода загрузочного ПЗУ. То есть, разработчики загружали код начальной загрузки в ОЗУ и отлаживали его. Думаю, это было намного удобнее, чем по поводу каждой найденной баги стирать старое ПЗУ и записывать новое. К тому же, в теории, можно было прямо не выключая машины поправить багу и продолжить отладку.

В серийной версии это было уже не нужно, код был отлажен и записан в ПЗУ, поэтому выкинули и ТМ8 и место для установки ОЗУ. Кроме того, упростился дешифратор адресов. В серийной версии его собрали на нескольких логических элементах и выкинули КР1533ИД4.

Кстати, в экспериментальной версии забавная ошибка: на КР580ВВ51А сигнал выборки подается при любом значении на шине адреса, у которого разряды A2 и A1 равны 0. Но, поскольку у ВВ51 входы чтения и записи отдельные и они формируются корректно, то никакого вреда от невпопад приходящей выборки нет.

См. также обсуждение контроллера сети на нашем форуме.

На сайте "Проект создания реплик ПЭВМ Агат" выложены проекты экспериментальной и серийной версий.

* * *

Использование материалов проекта agatcomp без получения предварительного письменного разрешения agatcomp запрещено.


Почта для обратной связи: mail@agatcomp.ru


Живое общение по теме Агата: Telegram группа Agatcomp.


Накопленные знания и проекты: тематический ФОРУМ.


© 2004-2024 agatcomp.su / agatcomp.ru

* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *