Nästa kapitel

5 DATAÖVERFÖRINGEN

5.1 Parallell eller seriell överföring.

På en ledning kan man bara sända ett tecken i taget. Inne i en dator, internt, vill man att dataöverföringarna skall gå fort. Man vill även kunna överföra ett helt maskinord på en gång. Idag är maskinord på 32 bitar inte ovanligt, och längre maskinord existerar i större maskiner. Att sända en bit åt gången skulle ta 32 gånger längre tid än att sända allt på en gång. Därför använder man en ledare per bit, i det här fallet 32 ledare, och sänder allt på en gång. Man behöver en extra ledare för klocksignal. Så behöver man även ledare för svarssignaler och extra funktioner hos utrustningen signalen skall till. Det blir alltså fler ledare än bitar. Att överföra alla bitar på en gång kallas parallell överföring.

Man kan även använda parallell överföring utanför datorn, till periferienheter. Fördelen är att det är ett snabbt sätt. Nackdelarna är att man har många ledare, kablarna blir svårhanterliga, störkänsliga, och dyrare.

Med seriell överföring sänder man en bit åt gången på en ledare. Fördelarna är att kablarna blir billigare och tunnare. Nackdelen är att överföringshastigheten inte kan bli lika hög som för parallell överföring. I praktiken behöver man även för seriell överföring flera ledare, en för sändning, en för mottagning, och flera ledare för funktioner och statussignaler. Antalet ledare för signalering beror på utrustning och gränssnitt, se t.ex. V.24 för exempel på ledare som kan finnas.

bild 5.1
Figur Parallell överföring.

5.2 Asynkron eller synkron överföring.

Parallell och seriell överföring handlar om hur tecknen eller bitarna skall överföras rent fysiskt. Nu skall vi tala om hur man skall tolka bitmönstret som kommer fram, hur man skall urskilja de enskilda bitarna. Det finns två principer, asynkron eller synkron överföring. Parallell överföring kan i princip sägas vara synkron, man vet ju när ett tecken sänds, så den följande diskussionen gäller seriell överföring.

För att kunna identifiera enskilda bitar, måste man veta vilken hastighet de kommer med, och när den första kommer. Sedan är det bara att räkna ut det tidsintervall som skall vara mellan bitarna. Vid asynkron överföring sänder man först en s.k. startbit, som bara har till syfte att väcka mottagaren, och starta mottagarens klocka. Sedan räknar mottagaren till antalet bitar i ett tecken, vanligen 8, och därefter sänds en eller två s.k. stoppbitar, som markerar att tecknet är slut. Eftersom varje tecken innehåller en startbit som startar om mottagarens klocka, kan man sända tecken med ojämna mellanrum. Tecknen behöver inte komma i en viss ström. Asynkron överföring gör det möjligt att sända tecken när som helst.

bild 5.2
Figur Asynkrona tecken.

Vid synkron överföring skall sändare och mottagare arbeta i samma takt. Därför sänder man först en 2-4 synkroniseringstecken, sedan ett tecken som betyder "start av block", och ett block med flera tecken data. I blocket finns inga start- eller stopp-bitar som vid asynkron överföring. Blocket avslutas med ett tecken som betyder "slut på block". Mellan blocken sänder man oftast ett tecken som betyder "inget händer", s.k. "idle character". Synkroniseringstecknen före blocket startar mottagarens klocka och synkroniserar den med sändarens. Under själva överföringen håller mottagarens klocka takten, det finns inte några synkroniseringstecken i korta datablock.

bild 5.3
Figur Synkron överföring

Synkron överföring kräver dyrare utrustning än asynkron överföring. Man får en hel del fördelar med synkron överföring. Man utnyttjar linjen effektivare, och kan sända fler tecken per tidsenhet dels eftersom man inte använder start- och stoppbitar, dels eftersom man inte behöver mellanrum mellan tecknen. Vid asynkron överföring skall startbiten vara hög under minst 46 % av tiden för en bit. Med ökande linjehastighet blir tiden kortare, och risken för att störsignaler skall misstolkas som startbitar ökar. Den risken har man egentligen eliminerat med synkron överföring, och därmed kan man använda högre linjehastighet. Vid synkron överföring använder man oftast någon form av felkontroll (CRC), och kan därmed säkrare upptäcka och kanske rätta överföringsfel. Vid asynkron överföring använder man vanligen endast paritet som felkontroll. Även detta bidrar till att högre överföringshastighet kan användas vid synkron överföring. Synkron överföring är lämplig när stora datamängder skall överföras, eller när avståndet mellan sändare och mottagare är stort.

Någon måste styra den synkrona överföringen. Därför är ett antal synkrona terminaler anslutna till en s.k. kontrollenhet. Kontrollenheten är en liten dator som enbart har i uppgift att sköta kommunikationen terminaler - kontrollenhet, och kommunikationen kontrollenhet - stordator. Kontrollenheten frågar terminalerna i det s.k. terminalklustret i tur och ordning om de har något att sända. Har de något att sända, får just den terminalen klartecken att sända. Sedan frågar kontrollern vidare. Det kallas att "polla" terminalerna. Stordatorn pollar i sin tur kontrollenheterna. Genom att stordatorn inte behöver kontrollera varje terminal direkt minskar belastningen på datorns centralenhet.

Sammanfattning.

Vi kan förenklat säga att vid asynkron överföring kommer tecken regnande när som helst, olika tätt. Vid synkron överföring kommer tecknen med förvarning i en ordnad skur, väl samlade.

5.3 Teckenuppsättning.

5.3.1 ASCII

Datorer kan bara hantera tal, siffror. För att få en dator att hantera bokstäver, ställer man upp bokstäverna i en tabell, och ger sedan bokstäverna nummer, i tur och ordning. Då motsvaras varje bokstav av ett tal, och nu kan datorn hantera talen, men visa bokstäver på skärmen. Det finns flera olika tecken-tabeller. I början av utvecklingen höll sig varje datorleverantör med någon självrespekt med en egen tabell, som hade någon avancerad fördel. En av de allra vanligaste visas här, ASCII-tabellen, modifierad för svenska tecken. Observera att en teckentabell kan vara numrerad på flera olika sätt, vanligast är decimalt eller hexadecimalt, men även oktalt eller binärt förekommer. I den här kursen används decimala nummer om annat inte uttryckligen anges.

bild 5.4 Figur ASCII - tabell, med svenska tecken.

ASCII är utan tvekan den vanligaste teckenuppsättningen. ASCII betyder "American Standard Code of Information Interchange". I standard ASCII har man 128 tecken, dvs det krävs 7 bitar för att representera ett ASCII-tecken. I amerikanskt originalutförande finns inte de svenska tecknen ÅÄÖ med, där finns istället tecknen ][|][|. De tecknen brukar bytas ut mot nationella tecken, Tyskland, Frankrike, Spanien, Italien, Danmark, Sverige och Norge är länder som envisas med egna tecken. I England har man behov av ett pund-tecken, så man byter ut tecknet "brädgård" (#).

I Sverige har statskontoret konstruerat någon slags teckenstandard, där man inom olika områden kan byta ytterligare tecken för att få nödvändiga tecken. Inom juridik byter man ofta "brädgård" (#) mot paragraftecken. Tack vare statskontoret byts även dollartecknet allt för ofta mot en sol, och "commercial at" ("kanelbulle, snabel-a") (@) mot E med accent över. Tangentbordslayouten är olika på ett amerikanskt och ett svenskt tangentbord. Man bör observera att sorteringsprogram brukar sortera efter tecknens nummerordning. Det betyder att stora A sorteras före lilla a, stora Z kommer före lilla a. De svenska tecknen kommer i standard ASCII i ordningen ÄÖÅ. Ett amerikanskt program kan alltså inte sortera svenska tecken utan att ändra i programmet.

Använder man istället för 7 bitar en kod med 8 bitar, så kan man representera hela 256 tecken. Med tanke på alla nationella varianter, så är det önskvärt att kunna representera fler tecken.

bild 5.5 Figur PC-ASCII, character set 2.

När IBM PC kom, ville IBM arbeta med 8-bitars tecken. Samtidigt ville man använda ASCII-koden. Det slutade med att man skapade en egen ASCII-kod, som här kommer att kallas "PC-ASCII". Pc-ascii finns dessutom i två uppsättningar, "character set 1" och "character set 2" eller "graphic mode". Pc-ascii är i de första 128 tecknen lika med amerikansk standard. Tecken 176-255 används för grafiska tecken. Mellan de vanliga tecknen och de grafiska, tecken 128-175, kommer olika tecken beroende på om character set 1 eller character set 2 används. För character set 1 kommer först 32 kontrolltecken i upprepning, sedan kommer 16 specialtecken, a med accent, uppochnedvänt frågetecken, m.m. För character set 2 används tecken 128-159 för nationella tecken och tecken 160-175 för samma specialtecken som character set 1. Dvs character set 2 används för svenska tecken.

Det är bara IBM-PC och kompatibler som använder pc-ascii, och pc-ascii är inte kompatibel med någon annan teckenuppsättning, svenska tecken sitter på annan plats än i standard ASCII. Därför måste en fil i pc-ascii konverteras om den flyttas till annan dator. Observera även att ett terminalemulerande program måste konvertera från och till pc-ascii för att programmet skall kunna kommunicera med en annan dator.

Orsaken till felaktiga tecken vid utskrift med en pc får sökas i felaktig inställning av skrivaren, normalt skall den stå på "US-characters", och "character set 2" eller "graphic mode". Tänk på att skrivaren normalt endast läser av DIP-switcharna när strömmen slås på, man behöver alltså oftast bryta strömmen och starta om för att ändringar skall bli effektiva.

5.3.2 IBM Stordatorer.

IBM skapade tidigt sin egen kod, EBCDIC-koden, som består av 8 bitar. EBCDIC-koden används enbart på IBM stordatorer. Det går lätt att konvertera från ASCII till EBCDIC, men inte lika lätt att konvertera omvänt. Det beror dels på att EBCDIC har 256 tecken mot ASCII 128 tecken, dvs vissa EBCDIC-tecken är EBCDIC-specifika och har ingen ASCII motsvarighet. Dels beror det på att IBM-kunder genom tiderna kommit till IBM och sagt "vi har behov av det här tecknet, kan ni inte lägga in det ?", dvs skräddarsyningar för kund. Därigenom finns det flera olika varianter av EBCDIC, minst 7 olika, som innehåller olika tecken. Inte ens IBM lär tillhandahålla en EBCDIC-omvandlingstabell. Däremot är de vanliga bokstäverna väl definierade, och det är väl de som är viktigast.

    Till sist två teckentabeller:    (Hexadecimalt)
	 "ASCII"                         EBCDIC
	 -------                         ------
     H:0 1 2 3 4 5 6 7      H:0 1 2 3 4 5 6 7 8 9 A B C D E F
    L:                     L:
    0 ^@^PSP 0?? P?? p     0 ^@^P    SP & -          ?????? 0
    1 ^A^Q ! 1 A Q a q     1 ^A^Q         /   a j??   A J   1
    2 ^B^R " 2 B R b r     2 ^B^R  ^V         b k s   B K S 2
    3 ^C^S # 3 C S c s     3 ^C^S             c l t   C L T 3
    4 ^D^T?? 4 D T d t     4                  d m u   D M U 4
    5 ^E^U % 5 E U e u     5 ^I  ^J           e n v   E N V 5
    6 ^F^V & 6 F V f v     6   ^H^W           f o w   F O W 6
    7 ^G^W ' 7 G W g w     7 DE  ^Ä^D         g p x   G P X 7
    8 ^H^X ( 8 H X h x     8   ^X             h q y   H Q Y 8
    9 ^I^Y ) 9 I Y i y     9   ^Y          ?? i r z   I R Z 9
    A ^J^Z * : J Z j z     A         ?????? :              ??
    B ^K^Ä + ; K?? k??     B ^K       .?? ,??
    C ^L^Ö , < L?? l??     C ^L^Ö  ^T < * %??
    D ^M^Å - = M?? m??     D ^M^Å^E^U ( ) _ '    ????
    E ^N^^ . > N?? n??     E ^N^^^F   + ; > =
    F ^O^_ / ? O _ oDE     F ^O^_^G^Z???? ? "

    '??' anger position med varierande grafiskt tecken.
    'DE' anger DELETE.
    'SP' anger blanktecknet.
    '^' före ett tecken anger motsvarande styrtecken.

5.4 Terminaler och terminalemulatorer.

Den första populära generella terminaltypen var "Teletype", en asynkron terminal som skrev på papper. Den kom att tillverkas i många varianter, som dock inte skiljer sig dramatiskt i funktion. En pappersterminal, vilket fabrikat som helst kallas därför för "TTY", förkortning av den populäraste tillverkaren. De allra första bildskärms-terminalerna drog inte fördel av bildskärms-tekniken, de saknade funktioner för att styra markören. De var så att säga TTY:er med bildskärm istället för papper. Nästa generation terminaler hade funktioner för styrning av markören. De första var ganska enkla, snart kom terminaler med fler funktioner. Det visade sig vara en terminalrevolution, nu kunde man få terminalerna att visa text på olika sätt; blinkande, mot mörk eller ljus bakgrund, man kunde radera del av skärm, allt som behövs för att det skall hända något på skärmen. Några av de mest populära kom att bli Lear-Siegler ADM-3A, Ann Arbor Ambassador, Datamedia Elite 1520/2500, Digital Equipment VT-52/VT-100. Framför allt Digitals VT-100 kom att bli ett begrepp på terminalmarknaden.

Idag finns en massa olika terminaler och fabrikanter. De flesta imiterar en känd terminaltyp, det kallas att emulera. En av de asynkrona terminaler som emuleras mest är just VT-100. Själva VT-100 är nu gammal och tillverkas inte längre, nu heter modellerna VT-220 eller VT-320. Det finns även en ANSI-standard som inte skiljer sig märkbart från VT-100.

För IBM stordatorer kan man givetvis endast använda terminaler som pratar IBM-protokoll och EBCDIC, kända som "3270 Information Display System", färgterminaler, monokroma terminaler, skrivare. IBM-terminalerna är ett kapitel för sig, de har helt andra tangenter och funktioner än asynkrona terminaler. Det en användare märker först är att terminalen har ett stort antal tangenter märkta "PF1" och numrerade vidare uppåt. En tryckning på en av PF-tangenterna utlöser en funktion som är programmerad i datorn (PF = Programmed Function). I övrigt märker användaren att man arbetar på en hel skärmsida, som sänds till datorn först när man trycker på "Enter". Då visas en liten klocka längst ned på skärmen, det betyder att man skall vänta, datorn arbetar. Under tiden klockan syns tar terminalen inte emot några tangenttryckningar. Det finns en massa meddelanden att känna till, men förtvivla inte, handböcker finns.

Man kan använda standard asynkrona terminaler till ett IBM-system, genom att koppla dem till en s.k. protokollkonverterare. Protokollkonverteraren översätter ASCII-tecken till EBCDIC och tvärtom. Det är dock en nödfallsmetod, vissa tangenter och funktioner kommer att saknas, och som tidigare nämnts kommer vissa tecken att vara svåra att översätta.

Till de flesta datorer med asynkrona terminaler kan man använda vilken asynkron terminal som helst, dock har datorn alltid programvarustöd för vissa typer av terminaler, och det är trevligt att använda en sådan då. Då får man nämligen se alla konster som datorn kan göra på skärmen. Till Sperry och Bull stordatorer krävs deras synkrona terminaler.

5.5 Terminalemulatorer för PC.

En PC kan användas som en terminal. Man använder då ett program som fungerar som den terminal man vill efterlikna, emulera. Utan speciella hårdvaru-tillsatser kan en PC bara fungera som asynkron terminal. Det finns flera gratisprogram för terminalemulering. Ett av de vanligaste är Kermit, som i de flesta varianter åtminstone emulerar Digital VT-52. IBM-PC-Kermit emulerar dessutom VT-102, Heath-19, och Tektronix 4010 (grafisk terminal). PC-Kermit har en väl fungerande emulator. Förutom gratisprogrammen finns det flera kommersiella program, från billiga ProComm till dyrare varianter.

De flesta kommunikationsprogram saknar stöd för split speed. Det beror på att en PC inte har den hårdvara som krävs för att köra 75/1200 bps. Vissa programvaror kan via programvaran simulera split speed så att det fungerar, t.ex. svenska varianter av Kermit. Det fungerar dock inte alltid perfekt. Skall man köra split speed med en PC kan det vara skäl att köpa ett hastighetsbuffrande modem, dvs PC kommunicerar med modemet i 1200 bps i båda riktningarna, medan modemet kommunicerar med 75/1200 bps.

När man kör en PC som terminal mot en annan dator måste man tänka på att de svenska tecknen inte är lika på PC och mini/stordator. Därför måste terminalemulatorn ha en funktion för att konvertera till/från svenska tecken. Se även avsnittet om Kermit.

För att kunna köra PC mot en IBM stordator krävs speciell hårdvara förutom programvaran.

5.6 Terminalens uppkoppling, duplex.

5.6.1 Asynkrona terminaler:

Kan terminalen enbart sända, dvs enkelriktad förbindelse, talar man om "simplex". Kan terminalen antingen sända eller ta emot, men inte båda samtidigt, talar man om "halv duplex". Kan terminalen samtidigt ta emot och sända, talar man om "full duplex". Normalt sänder terminalen ett tecken till datorn utan att det syns på skärmen. Datorn inspekterar tecknet och avgör vad den skall göra, utföra en funktion, ta bort ett tecken, eller visa upp tecknet. Skall tecknet visas, sänder datorn tecknet till bildskärmen. Ett alternativ är att terminalen samtidigt sänder tecknet och visar det på skärmen. Det kallas "lokalt eko" (local echo, local copy). Lokalt eko används normalt när man använder halv duplex, hur skall man annars se vad man skriver.

5.6.2 Synkrona terminaler:

För synkrona terminaler arbetar man alltid i princip med lokalt eko, inga tecken sänds ju förrän man tryckt på Enter. Man kan koppla synkrona terminaler med "multidrop". Då låter man en ledning förgrena sig till flera terminaler. Det fungerar att ha flera terminaler på en ledning, eftersom datorn frågar terminalerna i tur och ordning om de har något att sända (pollar), och ger i så fall en viss terminal ensamrätt till linjen. Sedan startar frågerundan om igen. På så sätt kan man minska ledningskostnaden. Det är ofta använd metod vid hyrda linjer.

5.6.3 Tangenter på en terminal.

På olika terminaler finns olika tangenter, det är naturligt. Vissa är ganska uppenbara i sin funktion, t.ex. bokstavstangenterna. Andra är lite mindre uppenbara, t.ex. kontrolltangenten, och funktionstangenter.

Asynkrona terminaler: Det finns en tangent som är märkt DEL, RUBOUT, eller "pil bakåt". Den tangenten är till för att ta bort ett tecken, åt vänster, och sänder ascii tecken 127 eller ibland tecken 8. Förutom denna tangent finns det ofta en grupp av pilmärkta tangenter, upp, ned, höger, och vänster. De tangenterna skall flytta markören ett steg åt önskat håll, utan att ta bort tecken.

Den vänsterpilen har alltså en annan funktion än att ta bort tecken. Det finns en tangent som är märkt "CTL", "CTRL", eller "CONTROL". Den används i kombination med en annan tangent att skapa ett kontrolltecken. Tittar vi i ascii-tabellen är nämligen de första 30 tecknen inte bokstäver. De tecknen används för att styra funktioner. Tecken nummer ett, kallas "control-A", skapar man genom att hålla ned "control"-tangenten, och trycka på A. Dvs samma princip som SHIFT-tangenten. På så sätt kan man skapa de kontrolltecken man önskar. Kontrolltecken brukar i text betecknas med "ctrl-A", "ctl-A", "^A", "control-A", eller "C-A". Andra kontrolltecken än de vanliga bokstäverna kan vara svåra att finna ut vilka tangenter de sitter på. Tecken som kan vara svåra att hitta på tangentbordet är t.ex. NUL (tecken noll, 0), ctrl-, ctrl-?, m.fl. Olika tillverkare, ja olika modeller av samma tillverkare ger dessa tecken på olika tangenter, ibland kan man inte åstadkomma vissa kontrolltecken. Man får då försöka alla olika tangenter, eller läsa dokumentation, om man behöver de tecknen.

Likaså finns ofta en tangent märkt BREAK, som skall generera en bryt-signal. Finns inte den, kan det vara svårt att åstadkomma ett break, som vissa terminalväxlar kan kräva för att kunna styras. Ett Break är inte ett ascii-tecken, det finns inte med i ascii-tabellerna. Ett Break är nollor på linjen under ca 0,25 sek, oavsett hastighet, och utam rambitar vid synkront protokoll. Vissa terminaler, som VT-100, ger ett "kort" break när man trycker på Break-tangenten, och ett långt "break" om man trycker Shift-Break.

På de flesta terminaler idag finns funktionstangenter. Det finns två typer av funktionstangenter, dels programmerbara, dels fasta. Fasta funktionstangenter betyder att terminalen alltid sänder samma tecken eller teckenkombination när man trycker på tangenten. Programmet får tolka vad som skall utföras när tangenten trycks. Programmerbara funktionstangenter betyder att användaren kan programmera terminalen att sända en viss teckensekvens när man trycker på tangenten. Det är användbart, tangenterna kan användas till vad som helst, och är inte programberoende.

På en PC finns en tangent märkt "ALT", som fungerar som ytterligare en control-tangent. På en PC finns även 10 eller 12 funktionstangenter (beroende på tangentbord), F1-F12. Deras funktion är beroende av programmet.

bild 5.6
Figur PC-tangentbord.

Synkrona terminaler: En synkron terminal måste anslutas till en kontrollenhet. Rätt typ av terminal krävs. Terminaltypen måste vara använd av datortillverkaren, och olika tillverkare märker sina tangenter olika. Synkrona terminaler är inte lika generella som asynkrona.

Nästa kapitel