cod Manchester pentru Dummies

Codul Manchester - Acest cod binar auto sincronizarea fără componentă de curent continuu, în care valoarea fiecărui bit transmis este determinată de direcția de schimbare de nivel logic în mijloc din cauza intervalului de timp în avans. Deoarece nivelele logice de la cea mai mică unitate de informație (biți) la acest moment știm doar două (1 și 0), apoi au mușcat opțiuni: fie schimbare 1 => 0 sau 0 => 1. În conformitate cu standardele general acceptate pentru tranziția de cod Manchester de la zero la unitate este considerat a fi 1, iar în cazul în care dimpotrivă, apoi 0. de fapt, ultima declarație - este doar o formalitate - întrebarea este în ce fel te uiti ;-) principalul lucru este că atât receptor și emițător privesc viața în același mod.

Introduceți un număr și faceți clic pe „coda Manchester!“:

Acum, haideți să aruncăm o privire mai atentă la imaginea și să încerce să analizeze și să listeze principalele avantaje și dezavantaje ale conversia datelor într-un cod de Manchester:

Dimensiunea de date este dublat - acest lucru are un efect negativ asupra ratei

Numărul de zerouri logice este întotdeauna egal cu numărul de unități logice, respectiv, într-un astfel de semnal nu va fi o componentă constantă - acest lucru este extrem de important pentru circuitele electrice și unde radio

Combinația de niveluri de logica 11 indică în mod clar ultima primit 0, iar combinația 00, respectiv, indică 1. Astfel, după ce unul dintre ei este sincronizat receptor

Pot exista mai mult de două serii de niveluri logice identice, adică, combinație de tip 111 sau 000 nu pot fi

La începutul și sfârșitul datelor nu pot fi două nivele logice identice - doar 10 sau 01

În primul rând, vom scrie testul

Beneficiile testelor pot fi citite aici. În contextul rezolvării problemei actuale de mașini Mock obiecte vor fi folosite, astfel încât testul este utilizat gtest ligamentului (Google Test) + gmock (cadru Google Mocking). Toate aceste lucruri livrate în codul sursă, astfel încât cerința doar pentru sistemul - compatibil C / C ++ compilator, cum ar fi gcc g ++ pentru Linux sau Visual Studio C ++ pentru Windows. Se pare ca o aplicație consolă simplă, care se vor aduna împreună cu teste și să le executați:

Acum, testele propriu-zise. O sarcină mai simplă este de a converti datele în codul Manchester (codifice), cu toate acestea cu ea, probabil, începe:

Toate testele au fost plasate în TEST_F () macro. La începutul testului, prin utilizarea EXPECT_CALL (), este necesar să se stabilească comportamentul așteptat. În procesul de transformare 0 => 1010101010101010 și cu condiția că MSB vine primul (MSB), secvența așteptată a On_Man_Encode_One apel () și On_Man_Encode_Zero () și astfel de opt ori. După comportamentul așteptat descris, apel metoda Man_Encode () verificat. În cazul în care comportamentul real, diferă de așteptat, în cursul executării testelor va fi notificat de eroare. La sfârșitul fiecărui test este efectuat, de asemenea, verificarea condiției ca numărul de zerouri este egal cu numărul de unități.

Conversia datelor în codul Manchester este foarte simplu:

Punerea în aplicare a problemei inverse - decodificarea datelor de cod Manchester, în original, un pic mai complicat. Înainte de a transmite datele trebuie să fie sincronizate cu siignala receptor. În punerea în aplicare a testelor care nu sunt deosebit de interesați de modul în care sincronizeaza receptorul și în ce ordine vor fi numite (în cazul în care, la toate) On_Man_Decode_Add_1 () și On_Man_Decode_Add_0 () - în acest scop, denotă așteptări atât de pre-testare :: atmost (1). După sincronizarea procesului de decodificare poate prezice cu exactitate și descrie standby respectiv prin EXPECT_CALL (). De asemenea, ca și în cazul anterior, la sfârșitul fiecărui test verificat absența componentei continue (numărul unu și zero trebuie să fie aceleași).

realizarea estimată a procesului de decodare cod Manchester:

Construirea și rularea testelor