TNS-UPP-NET

Fragmenty tego tematu mogły zostać przetłumaczone maszynowo.

Treść
Karta sieciowa dla komputerów TNS 8-bitowych (TNS-GC, TNS-MC) umożliwiająca połączenie z siecią TNS-NET. Szybkość komunikacji 100 kbps. Jego częściowy odpowiednik obwodu znajduje się w TNS HC-08.

Opis opiera się na oryginalnej dokumentacji (popis_modulu_upp_net, uzivatelska_dok_upp_net) oraz na odwrotnej analizie oprogramowania sprzętowego (ROM 2 KB, segment 0x0000–0x07FF); analiza ROM UPP-NET i oryginalnej dokumentacji (Slušovice, ok. 1988).

Uwaga: oryginalna dokumentacja zawiera drobne błędy (pomieszanie 8255 × PIO, niespójność

Numeracja IO) – poniżej poprawione wartości zweryfikowane z kodem źródłowym.

1. Zasada funkcji

Moduł UPP-NET służy do podłączenia komputerów TNS do lokalnej sieci LAN (Local Area Network). Maksymalna liczba uczestników sieci wynosi 64. Do sieci można podłączyć komputery TNS GC, TNS SC (przy zastosowaniu modułu UPP-NET) i TNS HC, które posiadają już na płycie głównej szybki interfejs liniowy.

Transfer danych pomiędzy uczestnikami sieci odbywa się na poziomie fizycznym w protokole synchronicznym SDLC z sygnałem niemodulowanym i sterowany jest przez układ scalony Z80-SIO. Dane przesyłane z SIO są kodowane w kodzie Manchester i przesyłane do nadajnika. Odebrane dane są przetwarzane w odbiorniku, dekodowane i podawane do SIO.

Pracą całego układu steruje podstawa czasu pochodząca z kryształu o częstotliwości 10 MHz. Izolację galwaniczną modułu od linii zapewnia sprzęgło transformatorowe.

Zastosowany kod Manchester umożliwia zakodowanie w przesyłanych danych sygnału zegarowego nadajnika, niezbędnego do transmisji synchronicznej. Ponadto tak zakodowany sygnał nie zawiera składowej stałej.

Każda stacja na linii ma swój własny numer użytkownika, który ustawia się na przełącznikach DIP od 1 do 6 pola przełączników SW1, gdzie przełącznik 1 odpowiada kolejności adresów 0 itd. W jednej linii nie mogą znajdować się 2 stacje z identycznymi numerami użytkowników.

2. Opis techniczny

= 2.1 Standardowa część UPP-NET (płyta UPP-UNIVERSAL) =

Podstawowym obwodem karty jest mikroprocesor Z-80 (IO 3). Program sterujący CPU jest przechowywany w pamięci EPROM (IO 4) w przestrzeni adresowej od 0 do 1000h. Segment danych – pamięć RAM 1 kB – składa się z dwóch obwodów typu 2114 (IO 6, IO 7). Przestrzeń adresowa pamięci RAM jest zlokalizowana na stałe od adresu 4000h i zajmuje w sumie cztery podwójnie zaadresowane „kilo” (przestrzeń 4000-5000h).

Standardowa część modułu UPP-NET zawiera również obwody Z80-PIO (IO 1) i Z80-CTC (IO 2), które w zasadzie są prawie w całości przydatne do specyficznego zastosowania płytki typu UPP.

W szczególności w aplikacji UPP-NET obwód CTC służy wyłącznie do zapewnienia komunikacji procesora komputera TNS z kartą UPP-NET (zapewnia generowanie przerwań dla procesora modułu UPP). Układ PIO z bramką „B” uczestniczy także w komunikacji karty UPP-NET z procesorem TNS – poprzez bity 0 i 1 tej bramki procesor peryferyjny odczytuje flagi stanu buforów wejściowych i wyjściowych modułu UPP-NET. Bramka „A” obwodu PIO służy do identyfikacji numeru stacji ustawionego na przełączniku DIP SW1.

Obwody PIO i CTC są połączone poprzez wejścia IEI i wyjścia IEO w łańcuch przerwań z priorytetem, przy czym CTC ma domyślnie najwyższy priorytet przerwań. W przypadku aplikacji UPP-NET jej wejście IEI jest połączone z wyjściem IEO obwodu SIO części aplikacji, więc domyślnie obwód SIO ma najwyższy priorytet przerwań.

Adresowanie liniowe służy do dekodowania portów IO1 (PIO) i IO2 (CTC), więc PIO zajmuje standardowe adresy od F4 do F7h, a obwód CTC adresy od F8 do FBh. Obwód SIO części aplikacji UPP-NET ma adresy EC do EFh.

Moduł UPP zawiera dwa dekodery adresów: jeden zapewniający komunikację z TNS (IO 9), czyli rozdzielający adresy modułu UPP na magistralę TNS, oraz drugi (IO 8) służący do podziału przestrzeni adresowej samego UPP. Pierwszy dekoder (IO 9 – PROMka 745571) ustawia standardowe adresy modułu UPP-NET z zakresu od A0 do A3h. Drugi dekoder (IO 8) jest realizowany przez obwód 3205 i dzieli przestrzeń adresową pamięci pomiędzy obszar pamięci EPROM, RAM i przestrzeń

odpowiadające adresom buforów wejściowych i wyjściowych w obwodach interfejsu magistrali TNS, które są mapowane do przestrzeni pamięci, tj. UPP-NET odczytuje i wysyła dane do TNS za pomocą operacji odczytu i zapisu w pamięci.

= 2.2 Opis połączenia części aplikacyjnej UPP-NET =

Dane TxD transmitowane z SIO w rytmie nadawanego zegara transmisyjnego TxC są kodowane w koderze SEEQ Manchester, utworzonym przez obwody IO 27, IO 28.A,B,D i IO 29.A. Zakodowany sygnał podawany jest do nadajnika liniowego utworzonego przez układ 75325, do którego wyjść podłączony jest transformator izolujący wzbudzenie linii.

Pracę przetwornika można zablokować poprzez podanie log.1 na wejście S2 układu 74325. Blokada nadajnika jest konieczna do współpracy kilku nadajników na linii i sterowana jest z obwodu sprzętowego zajmowanego linii, utworzonego przez IO 31.A.

Uzwojenie odbiornika znajduje się również na transformatorze liniowym. Odbiornik składa się z szybkiego komparatora, który ma histerezę około 100 mV nastawioną za pomocą dodatniego sprzężenia zwrotnego. Na wejściu komparatora znajduje się obwód zabezpieczający. Sygnał wyjściowy z komparatora podawany jest zarówno do dekodera Manchester, jak i do monostabilnego przerzutnika IO 26.A o stałej czasowej około 50 μs, który służy jako wskaźnik zajętości linii i jest odczytywany przez procesor na wejściu PA7 obwodu PIO (bramka A, bit 7).

Informacja o zajętości linii przekazywana jest także do okupanta linii HW IO 31.A (jeśli linia jest zajęta, nasza stacja nie może już jej zajmować) oraz do generatora sygnału WAIT utworzonego przez IO 29.C i T1 (jednak nie jest ona wykorzystywana w aktualnej wersji oprogramowania).

Podłączenie dekodera Manchester oparte jest na rozwiązaniu firmy SEEQ i składa się z obwodów IO 23.A, IO 24, IO 25 i IO 30.C,D. Obwód Z80-SIO odbiera z dekodera dane RxD i zegar RxC.

Taktowanie wszystkich obwodów pochodzi z oscylatora kwarcowego 10 MHz utworzonego przez falowniki. Częstotliwości do działania opóźniaczy z rejestrów przesuwnych w dekoderze i do sterowania koderem wyprowadzane są z niego po podziale.

Za pomocą adresu PROM karta UPP-NET jest adresowana w przestrzeni od 0A0H do 0A4H (patrz opis standardu UPP).

3. Zworki i przełączniki

Moduł UPP-NET nie wymaga ustawienia zworek. Zworki, które są standardem na płytkach UPP (kwadratowe pola lutownicze), są skanowane bezpośrednio w obwodzie drukowanym w aplikacji UPP-NET i dlatego są zamocowane.

Moduł UPP-NET zawiera jeden „przełącznik DIP” z ośmioma przełącznikami, z których sześć służy do ustawiania adresu stacji użytkownika w zakresie adresów od 0 do 3F w formacie szesnastkowym (tj. w sumie 64 stacje), a pozostałe dwa przełączniki są zablokowane. Najmniej znaczący bit sześciobitowego adresu stacji ustawiany jest za pomocą przełącznika znajdującego się po stronie obudowy przełącznika DIP skierowanej w stronę złącza magistrali TNS, czyli po stronie klucza obudowy IO. W kierunku od obudowy przełącznika DIP do przodu ze złączami kabla koncentrycznego znajdują się kolejno przełączniki bitów adresu stacji o większej wadze. Jednocześnie otwarty przełącznik ustawia bit na log.1 (strona oznaczona na DIP-switchu liczbą 0), a zamknięty przełącznik daje log.0 (strona 1).

4. Mapa portów I/O

= 4.1 Wewnętrzne porty procesora w module UPP-NET =

Obwód | Port | Funkcje
----------|-------|------------------------------------------------
CTC rozdz.0 | 0xF8 | Wektor bazowy przerwania CTC (zapis 0x40 = podstawa)
CTC rozdz.1 | 0xF9 | Resetuj (CTC1, nieużywany)
CTC rozdz.2 | 0xFA | Resetuj (CTC2, nieużywany)
CTC rozdz.3 | 0xFB | Licznik impulsów linii/generator przerwań do wykrywania zapisu TNS
|       | WR: 0xD7 = tryb licznika, zbocze narastające, następuje stała czasowa
|       | Stała czasowa = 1 → przerwanie po każdym impulsie
PIO I dane| 0xF4 | Odczyt: bit7 = linia zajęta (monostabilny 50 μs)
|       |        bity 5:0 = adres stacji z przełączników DIP
PIO I Zarządzanie | 0xF6 | Ustawienie bramki PIO A (tryb 3 = tryb bitowy, 0xFF = wszystkie wejścia)
Dane PIO B| 0xF5 | Bit 7 = blokowanie nadajnika (1 = blokada)
|       | Bit 6 = zezwolenie TX (1 = zezwolenie TX)
|       | Bit 5 = stan zajętości linii (1 = linia wolna dla TX)
|       | Bit 1 = flaga danych w buforze wejściowym TNS (dla pętli głównej)
|       | Bit 0 = stan TX/transmisji
Zarządzanie PIO B | 0xF7 | Ustawienia PIO bramki B
Dane SIO A| 0xEC | Odczyt = bajt odebrany z sieci, zapis = bajt do przesłania
SIO Kontrola.| 0xEE | Stan kanału SIO A (odczyt) / komendy WRx (zapis)
Dane SIO B| 0xED | (nieużywane w kodzie sieciowym)
Kontrola SIO B.| 0xEF | Komendy WRx kanału SIO B – ustawienie wektora przerwań WR2

= 4.2 Porty SIO Bity klucza Sterowanie (0xEE) podczas odczytu (RR0) =

Bit 0 (rrca → CF): Dostępny znak RX
Bit 1: Liczba zerowa (CRC)
Bit 2 (bit 2, a): Bufor TX pusty
Bit 5 (bit 5, a): SYNC/HUNT (czeka na flagę SDLC)
Bit 6 (bit 6, a): DCD (wykrycie nośnika danych / aktywna linia)
CF po rlca: Odpowiada bitowi 7 = odebrane przerwanie/przerwanie

= 4.3 Standardowe adresy UPP-NET od strony magistrali TNS (port hosta) =

Adres TNS | Heks | Funkcje
-----------|------|------------------------------------------------
Wejście UPP | 0xA0 | Zapis (TNS → UPP): numer węzła docelowego (0-63)
Stan UPP1 | 0xA1 | Odczyt stanu rejestru wejściowego
Wyjście UPP | 0xA2 | Odczyt rejestru wyjściowego UPP (UPP → TNS)
Stan UPP2 | 0xA3 | Odczyt stanu rejestru wyjściowego

5. Współdzielona mapa SRAM (widok z hosta TNS)

Host TNS komunikuje się z UPP-NET poprzez zamapowany obszar pamięci współdzielonej

własnej przestrzeni adresowej CPU Z80 na karcie UPP:

Adres procesora UPP | Funkcja (dostęp z CPU UPP)
--------------|------------------------------------------------
0x0000–0x0FFF | EPROM (oprogramowanie sprzętowe, tylko do odczytu)
0x4000–0x4FFF | RAM (zmienne wewnętrzne i bufory, patrz poniżej)
0x5000–0x5FFF | Odczyt bufora wejściowego (= co TNS napisał pod adresem 0xA0)
| Format: [target_node(1B)], następnie [długość(1B)][dane...]
| Wartości specjalne: 0x80 = twardy reset UPP
0x6000–0x6FFF | Zapis do bufora wyjściowego (UPP → TNS), BEZ aktywacji -SI1
0x7000–0x7FFF | Zapis do bufora wyjściowego (UPP → TNS) z aktywacją -SI1
| (przerwanie procesora TNS)

6. Układ wewnętrznej pamięci RAM 0x4000–0x43FF

Adres | Długość | Tytuł | Opis
--------|-------|----------------------------|------------------------------------------------------
0x4000–403F | 64B | tx_seq_table | Tabela numerów sekwencyjnych TX (na węzeł)
|       |                        | unk_4000[n] = następna sekwencja TX dla węzła nr
|       |                        | bit7=1: tryb rozgłoszeniowy/specjalny
|       |                        | inicjalizacja: 0x80 (niezainicjowana)
0x4040–407F | 64B | rx_seq_table | Tabela numerów sekwencyjnych RX (na węzeł)
|       |                        |