PLD-alkalmazástechnika (3. rész)
Manchester kódoló/dekódoló megvalósítása Xilinx CPLD-vel
Sorozatunk jelen részében egy a gyakorlatban is sokszor előforduló alkalmazást dolgozunk fel. Vezetékes, néhány kilométerre történő soros adatátvitelhez a bináris kódolás helyett gyakran Manchester-kódolást alkalmaznak. Ennek több oka is van. Egyik, hogy a bináris kódolásnál a 0V a logikai „0” szintnek, az 5V pedig a logikai „1” szintnek felel meg. Ez azonban a vonal egyenáramú összetevőjét jelentősen megnöveli, amely hátrányosan befolyásolja az adatátvitelt, mivel az adott távolságonként elhelyezett vonali regenerátorok az egyenáramú komponenst nem viszik át. A másik ok, hogy az adatvonalon csak akkor történik jelszint váltás, ha a logikai információ változik (0-1 vagy 1-0 átmenet esetében). Azonban ha az átvitt információban túl sok logikai „1” vagy „0” szint követi egymást akkor szinkronizálási probléma léphet fel, mivel a vevő nem tudja megállapítani hol kezdődnek és hol végződnek a bitek.
lokális hálózatok (LAN – Local Area Network), mint például az Ethernet, szinte kivétel nélkül a Manchester-kódolás (PE – Phase Encode) valamilyen formáját alkalmazzák. Ennél a kódolási formánál a célállomás egyértelműen el tudja dönteni mikor tart az elején, közepén vagy a végén egy bit a csatornán. A kódoló minden bit-időt két egyenlő részre vág, ahol a bináris „0” küldése esetén az első intervallumban magas, míg a második alatt alacsony szint jelenik meg a vonalon. Bináris „1” elküldése esetén az előbbi folyamat inverze valósul meg, az első intervallumban alacsony a másodikban pedig magas szint kerül a csatornára. Ezzel a megoldással minden bit-idő közepén lesz egy átmenet, így a vevő könnyen összeszinkronizálódhat az adóval. A Manchester-kódoló hátránya, hogy a felére csökkent impulzus szélesség miatt a bináris kódoláshoz elegendő sávszélesség kétszeresét igényli. A kódoló működését az 1. ábra mutatja.

1. ábra. Manchester kódolás
A Manchester-kódolás esetén a magas szintnek +0.85V, míg az alacsonynak a -0.85V felel meg, melynek köszönhetően a vonal egyenáramú összetevője gyakorlatilag 0V lesz.
Az Interneten jó néhány ingyenesen letölthető szoftvermagot lehet találni a legkülönfélébb funkciókra (processzor, memória-illesztő, protokolok, ALU egységek, stb). Ezeket, eszköz függetlenül szinte bármelyik típusú PLD-ben fel lehet használni. Alábbiakban egy ingyenes Machester kódoló/dekódoló funkciót ellátó VHDL magot mutatunk be, melyet egy Xilinx CPLD-ben (XCR3032XL) implementáltunk.

2. ábra. Funkcionális blokkvázlat
A következőkben nézzük meg a LAN vezérlő működését. Ehhez nyújt segítséget a 2. ábrán látható blokkvázlat. Az összeállításban egy mikrokontroller soros bináris jelet küld a kódoló „DATA_IN” bemenetére a „CLK_10” leosztott órajel ütemében a „TEN” engedélyező bemenet magas szintje alatt. A „LAN_OUT” kimeneten szinte azonnal megjelenik a soros Manchester kód, mely a megfelelő illesztő áramkörön keresztül közvetlenül az átviteli csatornára (pl. Ethernet) vezethető. Az illesztő áramkörre azért van szükség, mert a CPLD bipoláris jelet ad ki magából, melyben 3.3V a magas szint és 0V az alacsony szint. A hálózat felől érkező Manchester kódolt jel binárissá alakítása tulajdonképpen a fenti folyamat inverze. A jel a „LAN_IN” bementen érkezik a dekódolóba, ahol a logikai áramkör másfél leosztott órajel (CLK_10) ciklus alatt bináris jellé alakít át. Az egységet az „MR” reszet bemenetén keresztül hozhatjuk alapállapotba. A „CLK_80” bemenetén fogadja a 80MHz-es rendszer órajelet, melyet nyolcad részére oszt le. Az így előállított 10MHz-es (CLK_10) órajel felfutó élének hatására változik a „LAN_OUT” kimeneten az adat. Ennek megfelelően 10Mbit/s–os adatátviteli sebességet képes biztosítani, mely jól alkalmazható például a 10BaseT Ethernet hálózatnál.
A projekt összeállítását a 3. ábra mutatja, ahol a „manch” nevű blokk a Manchester kódoló/dekódolót szimbolizálja. Jelen esetben a könnyű szimulálhatóság kedvéért az egység „LAN_OUT” és „LAN_IN” bemenetét összekötöttük.

3. ábra. Projekt összeállítása
A mintaalkalmazáson elvégeztük a szoftveres szimulációt, melynek eredményét a 4. ábra foglalja össze.

4. ábra. Manchester kódoló/dekódoló szimulációja
A projektet 29 makrocellában lehetett implementálni, mellyel a 32 makrocellás CPLD eszköz belső mérete ideális mértékben ki lett használva. A fejlesztést a Xilinx ISE WebPack 5.1i fejlesztőrendszerrel végeztük, mely a www.xilinx.com WEB oldalról regisztráció ellenében ingyen letölthető. A bemutatott projekt forráskódja www.chipcad.hu WEB oldalról tölthető le. Sok sikert a kipróbáláshoz.
(folytatjuk)