Ero sivun ”HDLC” versioiden välillä

Radioamatööriwikistä
Siirry navigaatioon Siirry hakuun
>Oh2mqk
(bittikellon palautettavuudesta.)
>Oh2mqk
p (typofix)
Rivi 28: Rivi 28:


Koska nollabitit aiheuttavat modulaation muutoksen, hyvä kellosynkronisoinnin preamble bittivirta on 0x0000 (24-32 bittiä) ja sitten voikin jo alkaa lähettää HDLC-lippuja ja dataa.
Koska nollabitit aiheuttavat modulaation muutoksen, hyvä kellosynkronisoinnin preamble bittivirta on 0x0000 (24-32 bittiä) ja sitten voikin jo alkaa lähettää HDLC-lippuja ja dataa.
Pidempiäkin Tx-preambleja käytetään, jotta vastaanottavat radiot eivät virransäästönsä takia
Pidempiäkin Tx-preambleja käytetään, jotta vastaanottavat radiot eivät virransäästönsä takia jättäisi paketin alkua kuulematta.


HDLC voidaan muokata NRZI muotoon (ja takaisin) seuraavalla kytkennällä:
HDLC voidaan muokata NRZI muotoon (ja takaisin) seuraavalla kytkennällä:

Versio 9. tammikuuta 2008 kello 07.11

HDLC (Highlevel Data Link Control) on bittisynkroninen datasiirtomenettely, jolla lähetetään dataa kehyksinä - "paketteina".

Toisin kuin tavallisimpien asynkronisten sarjaporttien tapauksessa, tässä tarvitaan dataa saattamaan myös siirtokello joka saadaan modeemilta joko suoraan, tai se voidaan joissain tapauksissa regeneroida epäsuoralla tekniikalla.

HDLC on kansainvälisen standardistatuksen saanut versio IBM:n SDLC:stä (Synchronous Data Link Control), jossa yhden bitin merkitys käännettiin päinvastaiseksi.

HDLC:n bittivirralla on kyky kehystää hyötydataa siten, että datan sisältö voi olla mielivaltaista, eikä itse datan tarvitse alkaa tietyllä merkkisarjalla (joita käytetään ns. byte-synkronisten siirtoprotokollien tapauksessa.) HDLC saavuttaa tämän kyvyn siten, että se ei koskaan lähetä enempää kuin 5 perättäistä ykkösbittiä. Ainoana poikkeuksena on kehyksien reunamerkit (FLAG), jotka ovat bittikuvioita: 0111-1110 eli niissä on 6 perättäistä ykkösbittiä.

Jos lähetettävässä datassa on enemmän kuin 5 perättäistä ykkösbittiä, lähetetään ensin 5 bittiä ja sitten lisätään väliin yksi nollabitti. Vastaanotossa nämä lisätyt (bit stuffed) nollabitit otetaan pois.

Jos linkillä ei kulje dataa, siellä lähetetään perättäisiä kehysten reunamerkkejä.

HDLC kehyksen alussa on aina Address ja Control tavuja, joille on esim. AX.25 protokollassa annettu omat merkityksensä. Kehyksen lopussa on 2 tavuinen CRC-16 tarkistussumma ennen seuraavaa reunamerkkiä.

HDLC:ssä lähetetään kaikki kehyksen sisäiset tavut alkaen alimmasta bitistään (0). Kehyksen loppuun lisättävä CRC-16 summa lähetetään kuitenkin ylin bitti (15) edellä.


Bittikellon synkronisuuden palautettavuusominaisuus, AX.25 @ 1200 bps:

Koska HDLC ei koskaan lähetä enempää kuin 6 perättäistä ykkösbittiä, voidaan laatia linkin modulaatiotapa josta saadaan bittireunakello esille, vaikka itse modulaatiossa ei selvää reunaa olisikaan.

Tällainen tapa on ns. Non-Return-to-Zero-Inverted, jossa HDLC:n nollabitit aiheuttavat lähetettävän modulaation vaihtumista "mark" ja "space" arvojen välillä, kun ykkösbitit eivät tätä tee. Tässä tilanteessa voidaan olla varmoja että lähetteessä on nähtävissä bittireunoja vähintään seitsemän bitin välein ja etukäteen tietämällä lähetenopeus voidaan sitten omalla refrenssikellolla synkronoitua saapuvaan bittivirtaan.

Koska nollabitit aiheuttavat modulaation muutoksen, hyvä kellosynkronisoinnin preamble bittivirta on 0x0000 (24-32 bittiä) ja sitten voikin jo alkaa lähettää HDLC-lippuja ja dataa. Pidempiäkin Tx-preambleja käytetään, jotta vastaanottavat radiot eivät virransäästönsä takia jättäisi paketin alkua kuulematta.

HDLC voidaan muokata NRZI muotoon (ja takaisin) seuraavalla kytkennällä:

Packet-radio-hdlc-to-nrzi-conv.png

Vastaanotossa demodulaattorin antamat "mark" ja "space" signaaleista saadaan bittireunasynkronoitu kello ja HDLC bittivirta. 16 kertaa bittikelloa nopeampaa refrenssikelloa käytetään syöttämään binääristä 16-jakajaa joka synkronoidaan saapuvaan bittireunaan.

Lähetyksessä invertteri ja JK-kiikku aikaansaavat lähtevän bittivirran vaihtamaan tilaa joka bittikellon jaksolla kun HDLC:n lähettämä bitti on nolla.