PLD alkalmazástechnika I.

Hétszegmenses kijelzők meghajtása Xilinx CPLD-vel

 

A Programozható logikai eszközök (PLD – Programmable Logic Device) alkalmazásának népszerűsítése céljából egy új cikksorozatot indítunk útjára. A hazai piacon jelen levő PLD típusok elérhetőségét és alkalmazástechnikai- illetve szoftver támogatottságát figyelembe véve a Xilinx PLD eszközökre tervezett mintapéldákat mutatunk be.

A PLD-k a processzor gyártás melléktermékeként a 80-as évek második felében jelentek meg. Alapvetően két nagy eszközcsaládot különböztetünk meg: a FLASH bázisú CPLD (Complex Programmable Logic Device) és az SRAM alapú FPGA (Field Programmable Gate Array) áramköröket. A Xilinx PLD-k konfigurálása Windows alatt futó fejlesztőrendszer segítségével lehetséges, melynek ingyenes változata (Xilinx ISE WebPACK) a www.xilinx.com WEB oldalról tölthető le.

Alábbi cikkünkben a hétszegmenses LED- illetve LCD kijelzők, Xilinx CPLD-vel való közvetlen meghajtását mutatjuk be két alapeseten, és egy összetett alkalmazáson keresztül. Mivel a projektek bemutatása során néhány műszaki paramétert is szeretnénk közölni fontos, hogy egy konkrét Xilinx CPLD családot válasszunk ki cél eszközként, mely jelen esetben a CoolRunner XPLA3. A hétszegmenses kijelzőkön decimális számokat illetve az ABC néhány betűjét jeleníthetjük meg. A CPLD működését leíró logikai hálózatok a grafikus kapcsolási rajz szintű, és a szöveges VHDL hardverleíró nyelv együttes alkalmazásával készültek, a fent említett fejlesztőrendszer segítségével.

 

 

·        Közös anódos LED kijelző közvetlen meghajtása

A LED kijelzők karakterenként 7 katóddal (a tizedespontot jelen esetben nem használjuk) és egy közösített anóddal rendelkeznek. Az egyes szegmensek felvillantása úgy lehetséges, ha az anódra VCC-t, a katódra pedig GND-t kapcsolunk, tehát a kijelzőt aktív „L” szinttel vezéreljük. A komplett hardver elvi blokkvázlata az 1. ábrán látható, melyben a Xilinx nevű doboz a benne levő ábrával a CPLD-t szimbolizálja. A CPLD tetszőlegesen konfigurálható I/O lábaiból négy  bemenetként (In0…In3), hét pedig kimenetként (Out_C0…Out_C6) funkcionál.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 A bemeneteken a kijelezni kívánt négybites bináris kódot adhatjuk be, mely a dekódolás után a kimeneteken keresztül a kijelző katódjaira csatlakozik. A négy digites bináris jel dekódolását a hex2led nevű -VHDL nyelven definiált- blokk végzi, melynek forráskódja a 2. ábrán látható, illetve a WebPACK HDL szerkesztőjének nyelvi segítőjében kompletten megtalálható.

Összehasonlításképpen elmondjuk, hogy a legkisebb XPLA3 CPLD 32 makrocellával rendelkezik, miközben az alábbi projekt 7 makrocellát igényel (a CPLD eszközök belső méretét a makrocelláinak száma határozza meg).

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

·        LCD kijelző közvetlen meghajtása

Az LCD kijelzők működése és meghajtása kissé bonyolultabb a LED kijelzőkhöz képest. Az LCD kijelzők a megjelenítés során nem bocsátanak ki fényt, hanem a bennük levő folyadékkristály polarizációja révén kontrasztkülönbséget hoznak létre. A polarizációt a BP (virtuális föld) láb és az egyes szegmensek lábai közötti potenciálkülönbség biztosítja. Mindegy melyik a pozitívabb illetve negatívabb, de egy adott állapotot csak rövid ideig lehet fenntartani. Kijelzéskor tehát a BP és a szegmensek lábai között lévő feszültség irányát váltogatni kell kb. 70Hz frekvenciával. A logikai hálózatban (3. ábra) található Kizáró-NemVagy (XNOR) kapuk ezt a feladatot látják el az órajel ütemében. A rendszer órajele a Clock bemeneten jut el a belső logikához, illetve az LCD_GND kimeneten keresztül az LCD BP lábához. Az időzítések miatt fontos, hogy az LCD BP lába is a CPLD-n keresztül kapja meg az órajelet. Az előző példához hasonlóan a kijelzésre kerülő négybites bináris kód az In0…In3 bemeneteken keresztül érkezik a dekóderre, mely ugyancsak aktív „L” szint szerint dekódol. A dekódolt jel az XNOR kapukon keresztül kerül a CPLD Out0…Out6 kimeneteire, majd onnan az LCD szegmenseire.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

A 4. ábrán látható, hogy a kijelzés akkor valósul meg, ha az LCD_GND és az Out kivezetéseken levő jelek inverzei egymásnak. A projekt 8 makrocellát foglal le a CPLD-ben.

 

 

 

 

 

 

 

 

 

 

 

·        4 digites Közös anódos LED kijelző multiplex meghajtása

Az alábbi példa a LED kijelzők multiplex meghajtását mutatja be. Fontos, hogy a kijelző karakterenként önálló anódokkal rendelkezzen. A CPLD a kijelző anódjait pufferen keresztül „H” szinttel, a katódokat pedig közvetlenül „L” szinttel hajtja meg. A puffer alkalmazására a LED kijelzők nagy áramfelvétele miatt van szükség. A kijelző azonos szegmensei (katódjai) párhuzamosan össze vannak kötve, így mind a négy karakter ugyanazt a jelet kapja meg, de csak azon valósul meg a kijelzés amelynek anódjára „H” szint kerül. Ezzel a megoldással 28 helyett csak 11 kimeneten jut el a jel a CPLD-ből a kijelzőre. A kijelzés megvalósításához a dekóderbe érkező jeleket és az anódokra kerülő „H” szintet megfelelően nagy frekvenciával, szinkronban váltogatni kell. Az előbbit multiplexerek (M4_1E), az utóbbit pedig demultiplexer (D2_4E) biztosítja. A léptetéshez szükséges vezérlőjelet egy kétbites számláló (CB2CE) kimeneti jelei szolgáltatják. A rendszer órajele (Clock) kb. 300Hz a villogásmentes kijelzés érdekében, mivel az egyes karakterek az Clock/4 frekvenciával fognak felvillanni. A teljes projekt 14 makrocellát igényel.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

A fenti mintapéldák Xilinx ISE fejlesztőrendszer alatt futtatható forráskódjai a www.chipcad.hu WEB oldalon a „Letölthető programok” rovatban találhatók és tölthetők le.