Manchester koodaus [ 1 ____]3[bipulssikoodiabsoluuttinen,]2[koodiII-Manchester,] tietovälineelle .
Manchester-koodilla koodattu signaali on itsesynkronoiva, eli tiedonsiirtoon ei tarvita ylimääräistä kellosiirtolinjaa , koska yhden databitin lähetyksen aikana, riippumatta siitä onko se 1 vai 0, yksi siirtyminen tasolta toiselle tarjotaan, jolloin vastaanotin voi synkronoida sisäisen kellonsa tai ajastimensa lähettimen kellon kanssa.
Manchester-koodin mukaisesti koodatulla signaalilla ei ole vakiokomponenttia edes pitkien nollien ja ykkösten sarjojen lähetyksessä, joten signaalia välittävät sähköliitännät voidaan eristää galvaanisesti esimerkiksi muuntajan avulla [5] .
Koodauksen nimi tulee Manchesterin yliopistosta , jossa tällaista koodausta käytettiin ensimmäisen kerran tallentamaan tietoja Manchester Mark I -tietokoneen magneettirummulle .
Manchester-koodissa on erilaisia käytäntöjä yksittäisten bittien koodaamiseen:
Kellon taso _ |
Databitti _ |
IEEE 802.3 Manchester -kooditaso [ 6] |
Thomas
Manchesterin kooditaso |
---|---|---|---|
0 | 0 | 0 | yksi |
yksi | yksi | 0 | |
yksi | 0 | yksi | 0 |
yksi | 0 | yksi
|
Manchester-koodin koodaus on suhteellisen yksinkertaista - se suoritetaan loogisella operaatiolla " EXCLUSIVE OR " (addition modulo two, XOR ) nykyisen koodatun bitin ja kellogeneraattoribitin yli, jos kyseessä on IEEE 802.3 -koodaus (esimerkkejä). pseudokoodissa ) :
Lähtö := Data_bit XOR Clock_generator ;tai inversiolla koodattaessa Thomasin mukaan:
Lähtö := EI (Data_bit XOR Clock_generator );Ehkä kooderin sekä laitteisto- että ohjelmistototeutus.
Laitteistototeutuksessa käytetään kellogeneraattoria, jonka toimintajakso on 2 ja toistojakso sama kuin koodausjakso, siirtorekisteriä , josta koodattu databitti ja EXCLUSIVE OR -logiikkaelementti työnnetään ulos kullakin jaksolla .
Ohjelmistossa toteutettu virtuaalinen kellogeneraattori luodaan ohjelmistoajastimella, jonka valotusaika on puolet ajanjaksosta:
JOS timer_half_period laukeaa, NIIN käynnistä ajastin uudelleen; Kellogeneraattori := Kellogeneraattori XOR 1 ; LOPETA JOS ;On mahdollista ja edullista toteuttaa kellogeneraattori käyttämällä laitteistoajastinkeskeytyksiä.
Lisäksi lopullisen lähtökoodin muodostamiseksi suoritetaan EXCLUSIVE OR -operaatio databitillä, joka on esimerkiksi siirretty eteenpäin rekisteristä, jossa nykyinen koodattu sana sijaitsee.
Dekoodaukseen on kaksi vaihtoehtoa:
Lisäksi kaikki tasot ja rintamat on kuvattu suhteessa IEEE 802.3 -koodauskäytäntöön, G. E. Thomasin mukaan kaikki tasot ja rintamat korvataan käänteisillä.
Tunnetulla koodausjaksollaEnsimmäisessä tapauksessa dekoodauksen yhteydessä suoritetaan ensin bitin synkronointi - jakson keskikohta määritetään. Tätä varten dekooderi tarkkailee signaalin nousuja ja laskuja, kaksi vierekkäistä erisuuntaista pudotusta, jotka erotetaan 1 jaksolla, ovat merkki siitä, että datavirrassa menee peräkkäin 0 ja 1 tai 1 ja 0, ja jos ensimmäinen nämä pisarat nousevat (etu) ja toinen laskevat (laskevat), tämä tarkoittaa, että tietovirrassa se on kahden bitin 1 ja 0 yhdistelmä tai laskevan reunan tapauksessa 0, 1, myös toinen näistä reunoista osoittaa koodausjakson keskikohdan. Näiden kahden bitin yhdistelmä kirjoitetaan dekoodattuun databittivirtaan. Seuraavaksi dekooderi odottaa noin 3/4 jaksosta ja alkaa tarkkailla pudotuksen esiintymistä, kun pudotus ilmestyy, jos se on pudotus, tämä tarkoittaa, että seuraava databitti on 0 ja 1 on edessä. Samanaikaisesti 3/4 jakson valotusajastin käynnistetään uudelleen käyttämällä samaa eroa, minkä jälkeen prosessi toistuu.
Pisaran saapumisen tarkastuksen aloitus 3/4 jakson jälkeen valittiin melunsietoperusteista, esimerkiksi tärinän ja/tai pisaroiden leviämisen (venymän) seurauksena, voimajohtojen lisämelun , putoamishetket vaihtelevat suhteessa idealisoituun tapaukseen, toisaalta datavirran vierekkäisillä identtisillä biteillä reunat esiintyvät kahden samojen bittien lähetysjakson välisellä rajalla, ja esiintymisen tarkistus reunasta tulee tehdä kellojen rajojen hetkien jälkeen.
Lisäksi jokaisen tietosiirtymän saapuessa on mahdollista mitata jakson kestoa apuajastimella ja säätää tarvittaessa ajastimen altistuksen kestoa 3/4 jaksosta. Näin voit seurata hitaita muutoksia kooderijaksossa, esimerkiksi magneettinauhan etenemisnopeuden vaihteluita magneettinauha-asemilta luettaessa tai magneettiraitakortin erilaisia nopeuksia ihmiskäden toimesta.
Bittisynkronoinnin helpottamiseksi Manchester-koodin tietolohkoja, erityisesti kun ne on tallennettu magneettiselle tietovälineelle, edeltää yleensä melko pitkä synkronointisekvenssi 1010101 ...
Tietolohkon alun määrittäminenBittisynkronoinnin saavuttaminen ei riitä informaatiobittivirran vastaanottamiseen, koska monissa tapauksissa informaatiolohkon alkua erottamattomien bittien virrassa ei tunneta esimerkiksi luettaessa dataa magneettilevyasemalta. Siksi synkronointisanan synkronointia sovelletaan lisäksi.
Koodaaessaan informaatiolohkon alkuun kooderi lisää binäärisynkronointisanan tai synkronointiallekirjoituksen , jonka dekooderin on tiedettävä. Lohkosynkronoinnin aloittamiseksi dekooderi vertaa jatkuvasti siirtorekisterin bittijonoa jokaisen siirron jälkeen, tämän rekisterin pituus on sama kuin allekirjoituksen pituus, johon joka jaksossa seuraava bitti lisätään, annetulla synkronoinnilla. sana. Siirtorekisterin sanan ja allekirjoituksen yhteensopivuus tai sen käännös on merkki informaatiolohkon alusta, jolloin dekooderi tulkitsee bittivirran informaatioksi. Synkronointisanan pituus eri järjestelmissä on erilainen, mutta yleensä vähintään 2 tavua, esim. Ethernet -protokollassa allekirjoituksen pituudeksi otetaan 56 bittiä.
Synkronointisanaa ei saa esiintyä tietovirrassa, tai ainakin sellaisen esiintymisen todennäköisyyden on oltava mitätön. Mitä pidempi allekirjoitus, sitä epätodennäköisemmin se on tietovirrassa. Toisaalta allekirjoitus ei sisällä hyödyllistä tietoa ja pitkä allekirjoitus vähentää tiedonsiirtonopeutta. Jos allekirjoitus on lyhyt, niin tietovirta ennen koodausta tarkistetaan allekirjoitusta vastaavan bittijonon satunnaisen läsnäolon varalta, ja tarvittaessa tietolohko koodataan uudelleen allekirjoituksen poissulkemiseksi tai synkronoinnin saavuttamisen jälkeen datalohkon, dekooderi jättää huomioimatta kaikki allekirjoitukset datalohkossa, kunnes se vastaanottaa koko lohkon.
Tietolohkon synkronoinnin muunnelmaa käytetään myös matalan ja korkean tason kestojen (0 ja 1) avulla, mikä on ilmeisen mahdotonta Manchester-koodissa. "Oikeassa" koodissa tämä kesto ei voi olla pidempi kuin jakso; jos esimerkiksi kaksi matalan tason ja kaksi korkean tason jaksoa lisätään lohkon alkuun, niin tällainen tapahtuma ei lisää vakiokomponenttia signaaliin ja osoittaa tietolohkon alun. GOST 52070-2003:n mukaan lohko synkronoidaan 3 jakson aikana - linjan ensimmäiset 1,5 jaksoa pidetään korkealla ja loput 1,5 jaksoa matalalla. Myös muut synkronointivaihtoehdot ovat mahdollisia, esimerkiksi signaalilla nollauslinjalla jne.
Monissa tapauksissa ei tiedetä etukäteen, kuinka monta kertaa vastaanotettu koodattu signaali on loogisesti käännetty lähetyksen aikana, esimerkiksi Ethernet-verkoissa koodattu signaali voi kulkea useiden solmujen läpi eri valmistajien laitteilla, jotka voidaan vaihtaa milloin tahansa. aika tai jos luet samoja magneettisia datanauhoja eri nauha-asemien malleissa. Siksi synkronoitaessa datalohkon alkua allekirjoituksella tietovirran yhteensopivuus allekirjoituksen ja sen bittisuuntaisen inversion kanssa tarkistetaan lähes aina. Jos käänteinen allekirjoitus löytyy, kaikki myöhemmät vastaanotetut databitit käännetään ja jätetään ennalleen, jos ei-invertoitu allekirjoitus löytyy. Tästä seuraa, että tällaisella synkronoinnilla ei ole olennaista sen mukaan, minkä sopimuksen mukaan koodaus alun perin tehtiin - Thomasin tai IEEE 802.3:n mukaan.
Ennakolta tuntemattomalla koodausjaksolla dekooderi aluksi mittaa tämän jakson mittaamalla vierekkäisten reunojen välisen ajan. Koska todellisten signaalien reunapisteet vaihtelevat ajan myötä värinän, kohinan, ohjelmistokooderin epäsäännöllisten ohjelmistoviiveiden jne. vuoksi, ei riitä, että mitataan vain muutama vierekkäisten reunojen pari. Siksi, kun mitataan jaksoa ja puolta jaksoa tietovirrasta, yleensä kerätään joitain tilastoja .
Oikeassa koodissa, jossa ei ole liikaa värinää , mittaushistogrammi koostuu kahdesta näyteryhmästä (Kuva 4), ja mitä pienempi värinä on, sitä kapeammat ovat histogrammin ryhmät . Ensimmäinen ryhmä vastaa 1/2 jakson kestoa, toinen - koko ajanjaksoa. Vastaanotetun histogrammin tilastollisen käsittelyn tulosten mukaan jakso määritetään ja sen arvo asetetaan dekooderin sisäiselle kellogeneraattorille tai sen intervalliajastimelle.
Jaksojen ja tarvittaessa puolen jakson mittaustuloksiin perustuva jaksoestimaatin laskenta suoritetaan painotetun aritmeettisen keskiarvon kaavalla .
missä on histogrammivälinäytteiden (taskujen) aikavälien lukumäärä, - välin leveys, on näytteiden kokonaismäärä on näytteiden lukumäärä th välissä.ja valitaan esimerkiksi ms:n ja ms:n kuvion mukaan.
Samankaltaisella menetelmällä määritetään puolen jakson arvo tilastollisen perusjoukon keskiarvona
Jakson määrittämisen jälkeen lisädekoodaus ei eroa edellä kuvatusta dekoodauksesta ennalta määrätyllä jaksolla.
Ensimmäisissä kotitaloustietokoneissa, esimerkiksi Sinclair ZX80 , " Elektronika BK-0010 ", ZX Spectrum , kotitalouksien nauhureita käytettiin ulkoisena asemana. Näissä tietokoneissa Manchester-koodin koodaus ja dekoodaus nauhurin kanssa tapahtuneen vaihdon aikana suoritettiin ohjelmallisesti.
Nykyaikaisissa järjestelmissä ohjelmistojen koodausta ja dekoodausta käytetään harvoin, ja nämä toiminnot on osoitettu erikoistuneille mikropiireille tai toiminnallisille lohkoille osana muita mikropiirejä, esimerkiksi mikro -ohjaimissa , mikroprosessoreissa .
Manchester-koodin koodaamiseen ja dekoodaukseen on olemassa useita erikoissiruja, esimerkiksi:
Koska kunkin databitin signaalitasossa on kaksi muutosta, tämä johtaa siihen, että Manchester-koodin spektri vie kaksi kertaa kaistanleveyden verrattuna esimerkiksi NZR-koodiin ( Non-nolla paluu , siirtyminen ilman paluuta nolla).
Manchester-koodin ja NZR:n spektrien vertailu on esitetty kuvassa. Koska Manchester-koodilla ei ole vakiokomponenttia (jos se koodataan eri polariteettitasoilla, jotka ovat samat absoluuttisesti), Manchester -koodin tehospektritiheys on yhtä suuri kuin nolla nollataajuudella, toisin kuin NZR-koodissa, joka sillä on aina vakiokomponentti kaikilla tasoilla ja sen spektrillä on äärellinen spektriteho nollataajuudella.
Manchesterin koodauksen maksimispektriteho osuu taajuudelle, joka on yhtä suuri kuin bittinopeus .
Manchester-koodausta voidaan pitää binaarisen vaihesiirtoavainnuksen (PSK) erikoistapauksena, jossa data ohjaa kantoaallon, jonka taajuus on bittinopeus, neliöaallon vaihetta.
Kahden taatun siirtymän läsnäolo 1 bitin lähetyksen aikana mahdollistaa signaalin itsesynkronoinnin , mikä mahdollistaa vastaanottimen (dekooderin) virittyvän oikein lähetysnopeuteen. Lähetystä varten ei tarvita lisälinjaa kellosignaalin lähettämiseen. Myöskään aloitus- ja lopetusbittejä ei tarvitse lisätä databittivirtaan, kuten esimerkiksi RS-232- ja RS-485-protokollassa, minkä vuoksi datatiheys koodin kokonaisbittivirrassa lähestyy 100 % ( esimerkiksi NRZ 1-8 -koodille -0 se on yhtä suuri kuin 80 %).
Ei DC:täTietystä bittivirrasta riippumatta Manchesterin koodaussignaali ei sisällä DC-komponenttia, jos ylemmän ja alemman tason arvot ovat samat absoluuttisesti. Tämä helpottaa galvaanisen eristyksen rakentamista käyttämällä muuntajaa [5] ja luku-kirjoitusta magneettisille tietovälineille.
Manchester-koodin lähettäminen vaatii kaksinkertaisen kanavan kaistanleveyden (kanavan leveyden) verrattuna esimerkiksi NRZ-koodaukseen .
värinävaatimuksetAsettaa korkeat vaatimukset etuosien vakaudelle ajoissa - alhainen värinä. On olemassa muitakin koodausmenetelmiä, esimerkiksi 8B/10B-koodilla on kapeampi kaistanleveys, mutta se on vaativampi jitterin vähentämisen kannalta.
Manchester-koodausta käytetään: