1 KLAIPĖDOS UNIVERSITETAS JŪRŲ TECHNIKOS FAKULTETAS INFORMATIKOS INŢINERIJOS KATEDRA „Skaitmeninis grandinių projektavimas (National Instruments įrankiais)“ (KODAS - T120B043) DALYKAS Metodinė priemonė (paskaitų konspektas) skirta informatikos inţinerijos bakalauro studijoms Apimtis: 6 autoriniai lankai Kursas patalpintas virtualioje mokymosi aplinkoje (vma) moodle: http://vma.ku.lt/moodle Autorius (-ai) prof. dr. Arūnas Andziulis asist. Ţydrūnas Lukošius asist. dokt. Mindaugas Kurmis Recenzentai Doc. dr. Albinas Stankus, Doc. dr. Violeta Bulbenkienė. KLAIPĖDA, 2012 2 Turinys 1. ĮVADAS Į LabVIEW ...................................................................... 14 1.1. Duomenų srautas ir grafinė programavimo kalba ....................... 15 1.2. Kaip veikia LabVIEW? ............................................................. 15 2. PALETĖS .................................................................................... 17 2.1. Įrankių paletė ....................................................................... 17 2.2. Valdymo ir funkcijų paletės ..................................................... 19 2.2.1. Valdymo paletė ............................................................... 19 2.2.2. Funkcijų paletė ................................................................ 21 3. LabVIEW CIKLAI ......................................................................... 23 3.1. Ţinomo kartojimų skaičiaus ciklas (For Loop) ............................ 24 3.2. Neţinomo kartojimų skaičiaus ciklas (While Loop) ..................... 25 3.3. LabVIEW sinchronizavimo funkcijos ......................................... 26 3.4. Occurence ............................................................................ 27 3.5. Pranešiklis (notifier) ............................................................... 30 3.6. Eilės (Queue) ........................................................................ 33 3.7. Randevu (Rendezvous) .......................................................... 37 3.8. Semaphoras (Semaphore) ...................................................... 39 3.9. First Call? funkcija ................................................................. 41 3.10. Laiko ciklas (timed loop) ...................................................... 41 4. VARTOTOJO SĄSAJOS KŪRIMAS ................................................... 50 4.1 Blokinės diagramos kūrimas ................................................... 51 4.2. Virtualiųjų prietaisų sujungimas ir vykdymas ............................ 52 3 4.3. Virtualiųjų prietaisų sinchronizavimas....................................... 54 4.4. Duomenų analizė ir įvestis/išvestis .......................................... 55 PRATIMAI ...................................................................................... 57 Pratimas Nr.1 ................................................................................. 57 Pratimas Nr.2 ................................................................................. 61 Pratimas Nr.3 ................................................................................. 66 5. LOGINĖS ALGEBROS ELEMENTAI .................................................. 73 6. LOGINĖS ALGEBROS ELEMENTAI LabVIEW APLINKOJE .................... 78 6.1. Loginiai veiksmai su pora įvesčių ............................................. 78 6.2. Loginiai veiksmai su masyvais ................................................. 85 6.3. Kiti loginiai veiksmai .............................................................. 89 Pratimas Nr.4 ................................................................................. 91 7. KOMBINACINĖS LOGINĖS SCHEMOS ............................................. 93 7.1. Kombinacinių loginių schemų projektavimo etapai ..................... 93 7.2. Dvejetainiai sumatoriai ........................................................... 93 7.3. Dvejetainiai atėmikliai ............................................................ 98 7.4. Dvejetainiai komparatoriai .................................................... 101 7.5. Kodo keitikliai ..................................................................... 104 7.6. Šifratorius .......................................................................... 107 7.7. Dešifratoriai ........................................................................ 109 7.9. Multiplekseriai ..................................................................... 112 8. LOGINIŲ SIGNALŲ GENERATORIAI ............................................ 113 8.1. Multivibratoriai .................................................................... 114 8.2. Autovirpesių multivibratoriai ................................................. 114 4 8.3. Laukiantieji mutivibratoriai ................................................... 117 8.4. Paprastieji ţiediniai skaitikliai ................................................ 117 8.5. Susuktieji ţiediniai skaitikliai ................................................. 120 Pratimas Nr.5 ............................................................................... 120 9. Būlio algebra ............................................................................ 122 9.1. Būlio algebra matematikoje .................................................. 122 9.2. Loginiai kintamieji ............................................................... 123 9.3. Literatūroje naudojami ţymėjimai .......................................... 123 9.4. Loginės operacijos ............................................................... 123 9.5. Pagrindinės Būlio algebros aksiomos ...................................... 124 9.6. Būlio algebros teoremos ....................................................... 125 10. TRIGERIAI .............................................................................. 125 10.1. RS trigeris ........................................................................ 126 10.2. JK trigeris ......................................................................... 126 10.3. D trigeris .......................................................................... 127 10.4. T trigeris .......................................................................... 127 10.5. Skaitikliai .......................................................................... 128 10.6. Šmito trigeris .................................................................... 131 10.6.1. Šmito trigeris su operaciniu stiprintuvu ............................ 132 10.6.2. Invertuojantis Šmito trigeris su operaciniu stiprintuvu ....... 133 11. KOMBINACINĖS IR TRIGERINĖS LOGINĖS SCHEMOS ................... 134 11.1. Kombinacinių loginių schemų struktūrinė schema .................. 134 11.2. Dviejų stabilių būvių atminties ląstelė ................................... 136 11.3. Bazinis SR trigeris .............................................................. 139 5 11.4. Bazinis ~S~R trigeris ........................................................... 142 11.5. Charakteringoji lygtis ......................................................... 143 11.6. Būvių reikšmių lentelė ........................................................ 144 11.7. Būvių kaitos diagrama ........................................................ 145 11.9. Karno diagrama ................................................................. 146 12. SINCHRONINIAI TRIGERIAI ...................................................... 147 12.1. Sinchroniniai SR trigeriai .................................................... 148 12.2. Sinchroniniai D trigeriai ...................................................... 148 12.3. Sinchroniniai JK trigeriai ..................................................... 149 12.5. Sinchroniniai T trigeriai ....................................................... 150 Pratimas Nr.6. .............................................................................. 151 13. SIGNALŲ DUOMENŲ GENERAVIMAS IR JŲ ANALIZĖ LABVIEW TERPĖJE ............................................................................................................ 152 13.1. NI ELVIS sistema ............................................................... 152 13.2. Standartinis relalių signalų įvedimas ir generavimas naudojant LabVIEW virtualius modulius .................................................................... 153 14. TINKAMO ANALITINIO METODO PASIRINKIMAS .......................... 158 14.1 „Inline― ir „Offline― analizė ................................................... 158 14.2. Programuojama ir interaktyvioji analizės .............................. 161 14.3. Analizių kategorijos ............................................................ 164 Literatūros sąrašas ........................................................................ 167 Paveikslėlių sąrašas 1 pav. LabVIEW vartotojo sąsajos ir grafinio kodo langai .................... 16 6 2 pav. Įrankių paletės grafinis vaizdas ............................................. 18 3 pav. Valdymo paletės grafinis vaizdas ........................................... 19 4 pav. Funkcijų paletės grafinis vaizdas ........................................... 21 5 pav. „Struktūrų― subpaletės ciklai ................................................. 24 6 pav. ........................................................................................... 24 7 pav. For ciklo pavyzdys ............................................................... 24 8 pav. While ciklo komandos prie terminalo prijungus klaidos klasterio ir loginę vertes 25 9 pav. While ciklo pavyzdys ............................................................ 26 10 pav. Vietos kur funkcijų paletėje yra Sinchronizacijos subpaletės .... 27 11 pav. Sinchronizacijos subpaletė .................................................. 27 12 pav. .......................................................................................... 27 13 pav. Occurrence subpaletė ......................................................... 28 14 pav. Occurrence pavyzdys ......................................................... 29 15 pav. Pranešiklio subpaletė .......................................................... 30 16 pav. Pranešiklio pavyzdys .......................................................... 32 17 pav. Queue subpaletė ................................................................ 33 18 pav. Eilių panaudojimo pavyzdys ................................................ 35 19 pav. Eilių panaudojimo pavyzdţio programos priekinio skydelio grafikai 36 20 pav. Eilių ir pranešiklių vienoje programoje panaudojimas .............. 36 21 pav. Randevu subpaletė............................................................. 37 22 pav. Randevu suprogramuotos sitemos pavyzdys.......................... 38 23 pav. Semaforo subpaletė ........................................................... 39 24 pav. Semaforo suprogramuotos sitemos pavyzdys ........................ 41 25 pav. Laiko struktūrų subpaletė ................................................... 41 26 pav. Laiko ciklas su visomis įvestimis ir išvestimis: ....................... 42 27 pav. Configure Timed Loop langas............................................... 43 28 pav. Laiko ciklų pavyzdys ........................................................... 45 7 29 pav. Laiko ciklai pavyzdys .......................................................... 46 30 pav. Configure next iteration langas ............................................ 48 31 pav. Laiko ciklas padalytas į kadrus ............................................. 49 32 pav. Configure next frame timing langas ...................................... 50 33 pav. Controls>>Boolean>>Stop Button parinkimas ...................... 50 34 pav. Controls>>Graph>>Waveform Chart parinkimas ................... 51 35 pav. Functions>Structures>>While Loop (blokinė diagrama) .......... 52 36 pav. Stop mygtukas (blokinė diagrama) ...................................... 53 37 pav. Generuojamo signalo atavizdavimas ..................................... 54 38 pav. Wait Until Next ms Multiple (uţdelsimas) .............................. 55 39 pav. Analizės VP modulių prijungimas .......................................... 56 40 pav. Loginis elementas NE (NOT) grafinis ţymėjimas ..................... 73 41 pav. Loginis elementas IR ( AND) grafinis ţymėjimas .................... 74 42 pav. Loginis elementas ARBA (OR) grafinis ţymėjimas ................... 74 43 pav. Loginis elementas IR – NE (NAND)grafinis ţymėjimas ............ 75 44 pav. Loginis elementas Išskirtinis ARBA ( XOR / exclusive OR)grafinis ţymėjimas 76 45 pav. Loginis elementas Išskirtinis ARBA – NE (NOR) grafinis ţymėjimas 77 46 pav. Loginis IR (AND) ................................................................ 78 47 pav. .......................................................................................... 78 48 pav. Loginis ARBA (OR) ............................................................. 79 49 pav. .......................................................................................... 79 50 pav. Išskirtinis ARBA (exclusive OR/XOR) ................................... 80 51 pav. NE (NOT) .......................................................................... 81 52 pav. IR - NE (NOT AND) ............................................................ 82 53 pav. ARBA - NE (NOT OR) .......................................................... 83 54 pav. NE išskirtinis ARBA (NE exclusive OR/ NOR XOR) ................... 84 55 pav. Implikacija (Implies) .......................................................... 85 8 56 pav. Loginis masyvo IR (AND array elements) .............................. 86 57 pav. ARBA masyvo elemantai (OR array elements) ....................... 86 58 pav. .......................................................................................... 86 59 pav. Iš Skaičiaus į Boolean masyvą (Number to Boolean array) ...... 87 60 pav. Boolean masyvas į skaičių (Boolean array to number) ............ 88 61 pav. Boolean į (0,1) (Boolean to (0,1) ........................................ 89 62 pav. MIŠRIOJI aritmetika (COMPOUND arithmethics) ................... 90 63 pav. Pussumatoriaus loginės schemos ......................................... 94 64 pav. Pussumatoaus grafiniai ţymenys ......................................... 95 65 pav. Pilnojo sumatoriaus išėjimo funkcijų S1 (a) ir COUT1 (b) Karno diagramos lentelė ..................................................................................... 95 66 pav. Pirmosios skilties pilnojo sumatoriaus loginės schemos ........... 97 67 pav. Pilnojo sumatoriaus grafinių ţymenų variantai ....................... 97 68 pav. Nuosekliojo sumatoriaus funkcinė schema ............................ 98 69 pav. Pusatėmiklio loginės schemos .............................................. 99 70 pav. Pilnojo atėmiklio išėjimo funkcijos BOUT1 Karno diagrama ...... 99 71 pav. Pilnojo atėmiklio skolinamojo vieneto signalą formuojanti schema 101 72 pav. Pusatėmiklio ir pilnojo atėmiklio grafiniai ţymenys ............... 101 73 pav. Komparatoriaus pirmojo išėjimo loginės funkcijos Karno diagrama 105 74 pav. Kodo keitiklio išėjimo funkcijų F1 (a), F2 (b) ir F3 (c) Karno diagramos 106 75 pav. DDK keitiklio "SP3 į 8421" loginės schemos ......................... 107 76 pav. Keturių skilčių kodo keitiklio grafinis ţymuo ........................ 107 77 pav. Telefono klaviatūros šifratoriaus grafinis ţymuo ................... 109 78 pav. Demultiplekseriai, sujungti piramidiniu pakopiniu būdu ......... 112 79 pav. Demultiplekseris "iš 1 į 4" ................................................ 112 9 80 pav. Multiplekserio "iš 2 į 1" išėjimo funkcijos Karno diagrama (a), loginė schema (b) ir grafinis ţymuo (c)..................................................... 113 81 pav. Autovirpesių multivibratorius iš diskretinių elementų ............ 115 82 pav. Kondensatoriaus CB1 įtampa, atsidarius tranzistoriui VT1 ..... 115 83 pav. Autovirpesių multivibratoriaus laiko diagramos .................... 116 84 pav. Trijų bitų ţiedinis skaitiklis ................................................ 118 85 pav. Trijų bitų ţiedinio skaitiklio laiko diagramos ......................... 119 86 pav. "Nepakimbantis" trijų bitų ţiedinis skaitiklis ......................... 119 87 pav. Trijų trigerių susuktasis ţiedinis skaitiklis ............................ 120 88 pav. Plačiausiai paplitusių trigerių ţymejimai .............................. 126 89 pav. Sumuojantis dvejetainis skaitiklis ....................................... 128 90 pav. Skaitiklio schema su =5 ............................................... 130 91 pav. Šmito trigeris su operaciniu stiprintuvu ............................... 132 92 pav. Invertuojantis Šmito trigeris su operaciniu stiprintuvu .......... 134 93 pav. Realios kombinacinės schemos struktūrinė schema .............. 135 94 pav. Pirmasis dviejų būvių atminties ląstelės schemos variantas ... 137 95 pav. Pagrindinė atminties ląstelės schema ................................. 138 96 pav. Dviejų būvių atminties ląstelės loginė schema .................... 139 97 pav. Bazinio SR trigerio elektrinė principinė schema .................... 140 98 pav. Bazinio SR trigerio loginė schema ...................................... 141 99 pav. Bazinio ~S~R trigerio loginė schema ................................... 143 100 pav. Grafinis SR trigerio ţymuo ............................................... 143 101 pav. Vėlinančiojo SR trigerio modelis ....................................... 143 102 pav. SR trigerio būvių kaitos diagrama..................................... 146 103 pav. SR trigerio veikimo algoritmo blokinė schema .................... 146 104 pav. SR trigerio Karno diagrama, kur stabilūs trigerio būviai ....... 147 105 pav. Sinchroninio D trigerio funkcinė schema (a) ir grafinis ţymuo (b) 149 10 106 pav. Sinchroninio JK trigerio loginė schema (a),funkcinė schema (b) ir grafinis ţymuo (c) ................................................................................ 150 107 pav. Sinchroninio T trigerio funkcinė schema (a) ir grafinis ţymuo (b) 150 108 pav. NI ELVIS ....................................................................... 153 109 pav. Measurement I/O-DAQmx – Data Acquisition subpaletė ...... 154 110 pav. Kurių funkcijų aprašymas pateiktas lentelėje. .................... 154 111 pav. Signalų fiksiavimo virtuali programa ................................. 155 112 pav. LabVIEW signalų nuskaitymo programos schema ............... 156 113 pav. Signalų generavimo virtuali programa .............................. 158 114 pav. Duomenų apdorojimo schema ......................................... 160 11 Lentelių sąrašas 1 lentelė. Įrakių paletės modulių arašymas ..................................... 18 2 lentelė. Įrakių paletės modulių arašymas ..................................... 20 3 lentelė. Funkcijų paletės modulių arašymas .................................. 21 4 lentelė. Occurrence subpaletės modulių aprašymas ....................... 28 5 lentelė. Pranešiklio subpaletės modulių aprašymas ........................ 31 6 lentelė. Queue subpaletės modulių aprašymas .............................. 33 7 lentelė. Randevu subpaletės modulių aparšymas ........................... 37 8 lentelė. Semaforo subpaletės modulių arašymas ........................... 39 9 lentelė. • Loginio elemento NE (NOT) Reikšmių lentelė: ................. 73 10 lentelė. Loginio elemento IR ( AND)Reikšmių lentelė: .................. 74 11 lentelė. Loginio elemento ARBA (OR) Reikšmių lentelė: ................ 74 12 lentelė. Loginio elemento IR – NE (NAND)Reikšmių lentelė: .......... 75 13 lentelė. Loginio elemento Išskirtinis ARBA ( XOR / exclusive OR)Reišmių lentelė: 76 14 lentelė. Loginio elemento ARBA – NE (NOR) Reikšmių lentelė: ...... 77 15 lentelė. Pussumatoriaus reikšmių lentelė .................................... 94 16 lentelė. Pirmosios skilties pilnojo sumatoriaus reikšmių lentelė ...... 95 17 lentelė. Pusatėmiklio reikšmių lentelė ........................................ 99 18 lentelė. Pirmosios skilties pilnojo atėmiklio reikšmių lentelė ........ 100 19 lentelė. Dvejetainio puskomparatoriaus reikšmių lentelė ............ 102 20 lentelė. Pirmosios skilties pilnojo dvejetainio komparatoriaus reikšmių lentelė, Nerealūs loginių įėjimų kintamųjų deriniai, sukuriantys nereikšmingas loginių išėjimo kintamųjų kombinacijas, yra apvesti. .............. 102 21 lentelė. Dvejetainių-dešimtainių kodų keitiklio "SP3 į 8421" reikšmių lentelė. (dvejetainį-dešimtainį kodą (DDK) su pertekliumi 3 (SP3) keitimas į natūralųjį DDK, vadinamą kodu 8421) ....................................................... 105 22 lentelė. Telefono klaviatūros šifratoriaus reikšmių lentelė ........... 108 12 23 lentelė. Pilnojo dešifratoriaus "iš 3 į 8" reikšmių lentelė .............. 110 24 lentelė. Demultiplekserio "iš 1 į 4" reikšmių lentelė .................... 111 25 lentelė. Multiplekserio "iš 2 į 1" reikšmių lentelė ........................ 113 26 lentelė. SR trigerio būvių reikšmių lentelė ................................ 144 27 lentelė. LabVIEW signalo fiksavimui skirtų virtualių modulių aparašymas 154 28 lentelė. LabVIEW signalo nuskaitymo virtualių modulių aparašymas 156 29 lentelė. LabVIEW virtualių modulių aparašymas ........................ 157 13 Padėka Autoriai dėkoja projektui LLII-061 „Development of Joint Research and Training Centre in High Technology Area― uţ paramą rengiant šią metodinę priemonę. 14 1. ĮVADAS Į LabVIEW Jums tikriausiai yra įdomu, kas yra LabVIEW, kol ţengsite kitą ţingsnį. LabVIEW (sutrumpinimas iš Laboratory Virtual Instrument Engineering Workbench) yra programinė terpė, kurioje jūs kuriate programas grafinėje terpėje; šiuo atţvilgiu ji skiriasi nuo tradicinių programavimo kalbų, kaip C, C++ arba Java, kuriose jūs rašote programas su tekstu. Vis dėlto, LabVIEW yra daug daugiau negu kalba. Tai programos sukūrimo ir vykdymo sistema, sukurta ţmonėms, tokiems kaip mokslininkai, inţinieriai, kuriems programa yra jų darbo dalis. LabVIEW dirba su kompiuteriais, naudojančiais Windows, MacOS, Linux, Solaris ir HP-UX operacines sistemas. Programa, kurią tradiciniu būdu reikėtų rašyti savaites arba net mėnesius gali būti baigta per kelias valandas, naudojant LabVIEW, nes ji yra specialiai sukurta atlikti matavimus, išanalizuoti duomenis ir pristatyti galutinius rezultatus vartotojui. Kadangi LabVIEW turi tokią lanksčią vartotojo sąsają ir tokį lengvą programavimo būdą, ji yra ideali simuliacijoms, idėjų pristatymams, bendram programavimui ar net programavimo pagrindų dėstymui. LabVIEW siūlo daugiau lankstumo negu standartiniai laboratorijos instrumentai, nes jos bazė yra programinė įranga. Jūs galite charakterizuoti prietaisų funkcionalumą. Jūsų kompiuteris, prijungiama įranga ir LabVIEW sudaro visiškai konfigūruojamą virtualų prietaisą, kuris padės jums įgyvendinti jūsų uţduotis. Jeigu norite kaţką pakeisti, jūs galite tiesiog spragtelėti ir virtualaus prietaiso parametrai pasikeis. LabVIEW turi platų funkcijų ir paprogramių pasirinkimą, kurios padės jums daugumoje programavimo uţdavinių. Jūs taip pat rasite taikomąsias kodų bibliotekas skirtas duomenų įsigijimui (DAQ – Data Acquisition), bendrosios paskirties sąsajos magistrales (GPIB – General Purpose Interface Bus) ir nuosekliųjų instrumentų kontrolę, duomenų analizę, duomenų pristatymą, 15 duomenų saugojimą ir ryšį per internetą. Analizės biblioteka turi savyje daugybę naudingų funkcijų, įskaitant signalų generavimą, signalų apdirbimą, filtrus, langus, statistiką, linijinę algebrą ir masyvų aritmetiką. Dėl grafinio LabVIEW pobūdţio jos prigimtis yra prezentacijos. Išvestis gali būti pateikta jums patogiausia forma. LabVIEW programos gali būti parašytos Macintosh tipo kompiuteriuose, o pakrautos ir paleistos kompiuteriuose, naudojančiuose Windows operacinę sistemą. Jūs galite surasti LabVIEW taikomąsias programas, padidinančias našumą daugelyje pramoninių šakų: biologijos, ţemės ūkio, psichologijos, chemijos, fizikos ir daugelio kitų. 1.1. Duomenų srautas ir grafinė programavimo kalba LabVIEW programinės terpės vystymasis skiriasi nuo komercinės C arba Java terpių vystymosi pagal vieną esminį dalyką. Kadangi kitų programavimo kalbų pagrindas yra kalbos, kurios remiasi tekstinėmis linijomis, kad sukurtų kodų eilutes, LabVIEW naudoja grafinę programavimo kalbą, kad sukurtų programas vaizdiniu pavidalu – blokine diagrama, atmetant sintaksines smulkmenas. Tokiu būdu jūs galite susikoncentruoti į duomenų srautą jūsų taikomojoje programoje. LabVIEW naudoja terminologiją, piktogramas ir idėjas, gerai ţinomas mokslininkams ir inţinieriams. Ji verčiau pasikliauja grafiniais simboliais nei tekstine kalba, pavaizduojant programos veiksmus. Duomenų srauto principą, kuriame funkcijos yra vykdomos tik po reikalingų duomenų gavimo, valdo tiesaus vykdymo metodas. Jus galite išmokti dirbti su LabVIEW net ir nemokėdami programuoti, bet programavimo pagrindų ţinios gali palengvinti jūsų darbą. 1.2. Kaip veikia LabVIEW? 16 LabVIEW programos yra vadinamos virtualiais prietaisais (VP) todėl, kad jų išvaizda ir veikimas imituoja tikruosius prietaisus. Visdėlto, uţkulisiuose jos yra analogiškos pagrindinėms programoms, funkcijoms ir paprogramėms gerai ţinomoms programavimo kalboms kaip C arba Basic. Ateityje mes kalbėsime apie LabVIEW programas kaip apie virtualiuosius prietaisus (VP). Vartotojo sąsaja Grafinis kodas 1 pav. LabVIEW vartotojo sąsajos ir grafinio kodo langai Virtualusis preitaisas susideda š trijų dalių: Priekinio plano skydelis (Front Panel) yra sąveikaujanti vartotojo sąsaja su VP. Taip pavadintas jis yra dėlto, kad skydelis simuliuoja tikro prietaiso vartotojo sąsają. Priekinio plano skydelis gali turėti rankenas, mygtukus, grafikus ir įvairiausias kitas valdymo priemones (programos įvestis) bei indikatorius (programos išvestis). Vartotojas įveda duomenis pelytės bei klaviatūros pagalba, o rezultatus mato ekrane. Blokinė diagrama (Block Diagram) yra virtualaus prietaiso pirminis kodas, sudarytas LabVIEW grafinėje programavimo terpėje. Blokinė diagrama yra tikroji vykdomoji programa. Blokinės diagramos komponentai yra ţemesnio lygio 17 virtualieji prietaisai su standartinėmis funkcijomis, konstantomis ir programos vykdymo valdymo struktūromis. Jus braiţote laidus tam, kad sujungti atitinkamus objektus tarpusavyje, taip nurodant duomenų srautą tarp jų. Tam, kad naudoti VP kaip paprogramę kito VP blokinėje diagramoje, jūs privalote turėti piktogramą ir jungtį. Virtualusis prietaisas, kuris yra naudojamas kitame VP yra vadinamas ţemesnio lygio virtualiuoju prietaisu (subVI), ir yra paprogrames atitikmuo. Piktograma yra VP grafinė reprezentacija, kuri yra naudojama kito VP blokinėje diagramoje, kaip objektas. VP jungtis yra mechanizmas naudojamas perkelti duomenis į VP iš kitų blokinių diagramų, kada VP yra naudojamas kaip ţemesnio lygio virtualusis prietaisas. Kitaip sakant jungtis pavaizduoja įvestį/išvestį (I/O). VP būna hierarchiniai ir moduliniai. Jūs galite naudoti juos kaip aukšto lygio programas ir paprogrames. Su tokia architektūra LabVIEW prisideda prie modulinio programavimo idėjos. Iš pradţių, jūs suskirstote programą į eilę paprastų uţduočių. Po to, jūs sukuriate VP kiekvienos uţduoties įvykdymui, ir tada suderinate tuos VP blokinėje diagramoje pagrindinės uţduoties įvykdymui. Modulinis programavimas yra didelis privalumas, nes jūs galite dirbti su kiekvienu VP atskirai, kas palengvina programos derinimą. 2. PALETĖS LabVIEW turi 3 grafines paletes: - Įrankių paletė (Tools Palette) - Valdymo paletė (Controls Palette) - Funkcijų paletė (Functions Palette) 2.1. Įrankių paletė 18 Šioje paletėje yra įrankiai reikalingi virtualiems prietaisams (VP) kurti, naudoti ir modifikuoti VP. Jeigu jūs nematote įrankių paletės, paspauskite Show Tools Palette, kuri yra Windows meniu. Išrinkus įrankį iš šios paletės pelytės ţymeklis tampa jo formos. Jūs galite naudoti kiekvieną įrankį iš šios paletės darbui su funkcijomis ir paprogramėmis. 2 pav. Įrankių paletės grafinis vaizdas 1 lentelė. Įrakių paletės modulių arašymas Valdymo įrankis. Naudokite jį darbui su pagrindiniu skydeliu ir indikatoriais. Išsidėstymo įrankis. Naudokite jį paţymėjimui, perkėlimui arba instrumento vietos pakeitimui. Ţymeklis. Naudokite jį teksto įvedimui. Jungimo įrankis. Naudokite jį objektų sujungimui laidais blokinėje diagramoje. Objektinio meniu įrankis. Naudokite jį meniu iškvietimui, spragtelėjus kairiuoju pelytės klavišu. Slinkties įrankis. Naudokite jį lango perţiūrai nenaudojant slinkties juostos. Kontrolinio taško įrankis. Naudokite jį jūsų VP kontroliniams taškams nustatyti. Bandinio ėmėjas. Naudokite jį bandinių paėmimui nuo laidų jūsų schemoje. Spalvos kopijavimo įrankis. Naudokite jį nukopijuojant spalvą ir panaudojant ją su spalvos įrankiu. 19 2.2. Valdymo ir funkcijų paletės Valdymo ir funkcijų paletės yra sudarytos iš aukštesnio lygio piktogramų, kurios pavaizduoja ţemesnio lygio paletes, duodant priėjimą prie platesnio turimų objektų diapazono. Juos galime panaudoti kuriant virtualų prietaisą. Prie palečių galime prieiti paspaudus aukštesnio lygio piktogramą. Ţemesnio lygio paletės gali būti transformuotos į slenkančią paletę, kuri lieka jūsų darbastalyje. 2.2.1. Valdymo paletė Valdymo įrankius ir indikatorius į priekinę sąsają jūs įterpiate iš valdymo paletės. Kiekvienas paletės parametras simbolizuoja prieinamas ţemesnio lygio paletes su valdymo priemonėmis ir indikatoriais. Jeigu jūs nematote valdymo paletės, jūs galite atidaryti ją spragtelėjus Show Controls Palette išWindows meniu. 3 pav. Valdymo paletės grafinis vaizdas Spalvos įrankis. Naudokite jį objektų nudaţymui. 20 2 lentelė. Įrakių paletės modulių arašymas Ţemesnio lygio skaitmeninė paletė (Numeric). Susideda iš valdymo įrankių ir indikatorių, skirtų skaitmeniniams duomenims. Ţemesnio lygio eilučių paletė (String). Susideda iš valdymo įrankių ir indikatorių, skirtų ASCII eilutėms ir lentelėms. Ţemesnio lygio masyvų ir klasterių paletė (Array & Cluster). Susideda iš valdymo įrankių ir indikatorių, skirtų grupuoti duomenų tipų rinkinius. Ţemesnio lygio kelių ir nuorodų paletė (Path & Refnum). Susideda iš valdymo įrankių ir indikatorių, skirtų valdyti kelius ir nuorodas. Ţemesnio lygio valdymo paletė (Control). Reprezentuoja dialogo langą nepriklausomiems valdymo elementams pakrauti. Ţemesnio lygio ActiveX objektų paletė (ActiveX). Susideda iš valdymo įrankių, leidţiančių įterpti ActiveX objektus į priekinio plano langą. Ţemesnio lygio loginių reikšmių paletė (Boolean). Susideda iš valdymo įrankių ir indikatorių, skirtų loginėms reikšmėms. Ţemesnio lygio sąrašų ir sujungtų sąrašų paletė (List & Ring). Susideda iš valdymo įrankių ir indikatorių, sudarytų iš sąrašų ir sujungtų sąrašų. Ţemesnio lygio grafinė paletė (Graph). Susideda iš indikatorių, skirtų duomenų grafikų ir diagramų sudarymui realiame laike. 21 Ţemesnio lygio įforminimo paletė (Decorations). Susideda iš grafinių objektų, skirtų pagrindinio skydelio vaizdų nustatymui. Ţemesnio lygio vartotojo valdymo paletė (User Controls). Susideda iš specialių valdymo priemonių, kurias sudaro pats vartotojas. 2.2.2. Funkcijų paletė Funkcijų paletės pagalba jūs formuojate blokinę schemą. Kiekvienas paletės parametras simbolizuoja prieinamas ţemesnio lygio paletes. Jeigu jūs nematote funkcijų paletės, spragtelėkite Show Functions Palette iš Windows meniu. 4 pav. Funkcijų paletės grafinis vaizdas 3 lentelė. Funkcijų paletės modulių arašymas Ţemesnio lygio struktūrų paletė (Structures). Susideda iš valdančių struktūrų, tokių kaip ciklas For. Ţemesnio lygio skaitmeninė paletė (Numeric). Susideda iš 22 trigonometrinių, logaritminių ir skaitmeninių funkcijų. Ţemesnio lygio loginių reikšmių paletė (Boolean). Susideda iš loginių funkcijų. Ţemesnio lygio eilučių paletė (String). Susideda iš funkcijų darbui su eilutėmis. Ţemesnio lygio masyvų paletė (Array). Susideda iš funkcijų darbui su masyvais. Ţemesnio lygio klasterių paletė (Cluster). Susideda iš funkcijų darbui su klasteriais. Ţemesnio lygio palyginimų paletė (Comparison). Susideda iš funkcijų, skirtų eilučių, skaičių ir loginių reikšmių palyginimui. Ţemesnio lygio laiko ir dialogų paletė (Time & Dialog). Susideda iš funkcijų dialogų langams, sinchronizacijai ir klaidų apdorojimui. Ţemesnio lygio bylų įvesties/išvesties paletė (File I/O). Susideda iš funkcijų ir VP skirtų įvedimui/išvedimui į bylą. Ţemesnio lygio komunikacijos paletė (Communication). Susideda iš VP darbui su TCP, DDE, Apple Events, IrDA ir OLE tinklais. Ţemesnio lygio instrumentų įvesties/išvesties paletė (Instrument I/O). Susideda iš VP skirtų komunikacijai ir kontrolei per GPIB ir VISA magistrales. Ţemesnio lygio duomenų surinkimo paletė (Data Acquisition). Susideda iš VP skirtų duomenų įvesties plokščių įterpimui. Ţemesnio lygio analizes paletė (Analysis). Susideda iš VI skirtų duomenų analizei. Ţemesnio lygio mokymo paletė (Tutorial). Susideda iš VI naudojamų LabVIEW mokomojoje programoje. Ţemesnio lygio tobulinimo paletė (Advanced). Susideda iš įvairių funkcijų, tokių kaip bibliotekos uţklausymo funkcijos, duomenų manipuliacijos ir t.t. 23 Ţemesnio lygio virtualiųjų prietaisų paletė (VI). Susideda iš dialogų lango skirto paprogramių įterpimui į VP. Ţemesnio lygio prietaisų tvarkyklių paletė (Instrument Drivers). Susideda iš VP sugebančiu valdyti išoriniais įrenginiais, oscilografais, generatoriais ir t.t., per nuoseklųjį prievadą arba GPIB sąsają. Ţemesnio lygio vartotojo bibliotekos paletė (User Libraries). Su šios paletes pagalba sudaromas greitas priėjimas prie reikiamo VP. Ţemesnio lygio programos valdymo paletė (Application Control). Susideda iš VP, valdančių virtualiuosius instrumentus, VP serverių, leidţiančių įkėlinėti VP ant kitų kompiuterių per tinklą. Prieš pradėdami programavimo darbus su LabVIEW programine įranga reikia susipaţinti su esminiu LabVIEW programavimo detale, tai LabVIEW esantis ciklai, be kurių nė viena suprogramuota LabVIEW aplinkoje programa neapseina. 3. LabVIEW CIKLAI Ciklai LabVIEW grafinio programavimo terpėje yra naudojami pasikartojančių operacijų valdymui. LabVIEW pagrinde taikomi dviejų rūšių ciklai: ţinomo kartojimų skaičiaus ciklas - For ir neţinomo kartojimų skaičiaus ciklas - While. Šie ciklai kartu su kitomis struktūromis yra programavimo (Programming) paletės struktūrų (Structures) subpaletėje. 24 5 pav. „Struktūrų“ subpaletės ciklai 6 pav. 3.1. Ţinomo kartojimų skaičiaus ciklas (For Loop) Ţinomo kartojimų skaičiaus ciklas (For Loop) vykdo subdiagramą n kartų. Kur n yra vertė sujungta su skaičiavimo terminalu (N – count terminal). Iteracijos (i) terminalas vykdo ciklo iteracijų skaičiavimą, kuris tęsiasi nuo 0 iki n-1. 7 pav. For ciklo pavyzdys Iliustracijoje pavaizduotas For ciklas, su prie N įvesties prijungta verte – 5, o prie i išvesties prijungta sumos funkcija, kuri ciklui veikiant prie vieneto prideda tos 25 iteracijos vertę. Gauta suma perduodama į masyvą, esantį uţ ciklo ribų ir sujungtą su tuneliu (tunnel), kuris yra su įjungtu auto-indeksavimu, t. y. į masyvą yra perduodamos visų ciklo iteracijų sumų reikšmės. Ciklas sustoja po 5 iteracijų. 3.2. Neţinomo kartojimų skaičiaus ciklas (While Loop) Neţinomo kartojimų skaičiaus ciklas (While Loop) kartoja subdiagramą, tol kol sąlyginio terminalo (conditional terminal) įvestis gauna konkrečią loginę (boolean) vertę: TRUE arba FALSE. Loginė vertė priklauso nuo to kaip programuotojas nuspręs panaudoti ciklą. Per terminalo kontekstinį meniu (pasiekiamą dešiniu pelės klavišu) galima pasirinkti Stop if True (sustabdyti esant TRUE vertei) arba Continue if True (tęsti esant TRUE vertei) komandas. Taip pat jei prie terminalo bus prijungtas klaidos klasteris (cluster) kontekstiniame meniu bus galima pasirinkti Stop on Error (ciklas bus sustabdytas jei įvyks klaida) arba Continue while Error (jei įvyks klaida, ciklas veiks toliau) komandas. 8 pav. While ciklo komandos prie terminalo prijungus klaidos klasterio ir loginę vertes 26 9 pav. While ciklo pavyzdys Iliustracijoje pavaizduotas While ciklas vykdantis sudėties funkciją, o sumos reikšmes kaupiantis masyve naudojant tunelį su įjungtu auto- indeksavimu. Dėl daugiau (greater?) funkcijos, kurios išvestis yra prijungta prie terminalo įvesties, ciklas sustos po penktosios iteracijos, nes tai bus didesnė vertė uţ 4. Struktūrų subpaletėje yra dar vienas ciklas – laiko (laikinis) ciklas (timed loop), jis bus plačiau aprašytas IV skyriuje. 3.3. LabVIEW sinchronizavimo funkcijos Dirbant LabVIEW anksčiau ar vėliau prireikia sinchronizuoti ciklus. Tam LabVIEW programuotojai naudoja sinchronizavimo funkicijas. Sinchronizavimo VI naudojami paraleliai vykdomų uţduočių sinchronizavimui bei duomenų perdavimui tarp jų. Sinchronizacijos (Synchronization) virtualiuosius instrumentus galima rasti Funkcijų (Function) paletės programavimo (Programming) arba duomenų komunikavimo (Data Communication) subpaletėse. 27 10 pav. Vietos kur funkcijų paletėje yra Sinchronizacijos subpaletės Sinchronizacijos subpaletę sudaro penkios kategorijos: occurrences (įvykiai), notifier (pranešikliai), queue (eilės), rendezvous (randevu) ir semaphore (semaforai). Šioje paletėje yra ir viena funkcija nepriklausanti jokiai kategorijai – First Call?. 11 pav. Sinchronizacijos subpaletė 12 pav. 3.4. Occurence Terminas Occurrence iš anglų kalbos verčiant reiškia atsitikimą, įvykį. Tai yra paprasčiausias iš LabVIEW siūlomų sinchronizavimo metodų, jį sudaro tik trys funkcijos. Occurrence naudojami atskirų, sinhroninių funkcijų valdymui. 28 13 pav. Occurrence subpaletė 4 lentelė. Occurrence subpaletės modulių aprašymas Paletės objektas Aprašymas Generate Occurrence (sukurti occurrence) Sukuria occurence, kurį galima perduoti į Wait on Occurence ir Set Occurence funkcijas. Set Occurrence (paskirti occurrence) Paskiria konkretų occurence. Visi funkciniai blokai laukia kol šis occurence nustos laukti. Wait on Occurrence (laukti occurrence) Laukia, kol Set Occurence funkcija paskirs duotą occurence. Occurrence yra sukuriamas su Generate Occurrence funkcija, o valdomas Wait on Occurrence ir Set Occurrence funkcijomis. Kuomet occurrence yra sukuriamas jis gali būti perduotas į Wait on Occurrence ir Set Occurrence funkcijas. Wait on Occurrence yra savotiškas barjeras, kuris neleidţia vykdyti kitų kodo dalių, tol kol nebus aktyvuota Set Occurrence funkcija. 29 14 pav. Occurrence pavyzdys Pavyzdyje yra pavaizduoti du while ciklai, viršutiniame yra atsitiktinio skaičiaus (Random Number) funkcija, kuri generuoja skaitinę reikšmę nuo 0 iki 1, šis rezultatas panaudojant vietinį kintamąjį (Local variable) (Create > local variable kontekstiniame meniu) yra perduodamas apatiniame cikle esančiam grafikui. Apatinis ciklas yra antrame kadrų struktūros (Flat sequence structure) kadre. Kuomet Occurrence yra sukuriamas, jis laidu yra perduodamas į Set Occurrence ir Wait on Occurrence fukcijas. Wait on Occurrence funkcija yra pirmame kadrų struktūros (Flat sequence structure) kadre. Dėl šios funkcijos apatinis ciklas negali būti vykdomas tol kol nebus suţadinta Set Occurrence funkcija, kuri ir valdo Wait on Occurrence funkciją. Šiuo atveju Set Occurrence funkcija yra atvejų struktūros (case structure) skiltyje True, todėl kol į šioje struktūroje esančio atvejų selektoriaus (case selector) įvestį nėra perduodama loginė TRUE reikšmė, tol Occurrence negalės pasiekti šios funkcijos. Pavyzdyje yra padaryta taip, kad iteracijų skaičiui pasiekus reikšmę didesnę uţ 5, į case selector yra perduodama TRUE reikšmė ir 30 tuomet suţadinama Set Occurrence funkcija. Kai tai įvyksta, pradedamas vykdyti antrame kadre esantis apatinis ciklas. Paprastai tariant kuomet pirmas ciklas paskiria occurence, LabVIEW aktyvuoja antrąjį ciklą ar bet kurias kitas blokines diagramas, kurios laukia paskirto occurrence. Generate occurence galima sujungti su bet kokiu skaičiumi Set Occurrence ir Wait on Occurrence funkcijų. Skirtingai nei kitos sinchronizacinės funkcijos, kiekviena Generate Occurence funkcija blokinėje diagramoje atstovauja vieną unikalų Occurence. Tokiu būdu ši funkcija yra panaši į konstantą. Kuomet VI yra paleistas, kiekvieną kartą veikiant šiai funkcijai, ji duoda ta pačią reikšmę. jei Generate Occurence bus cikle, funkcijos grąţinama reikšmė bus ta pati kiekvienoje ciklo iteracijoje. 3.5. Pranešiklis (notifier) 15 pav. Pranešiklio subpaletė 31 5 lentelė. Pranešiklio subpaletės modulių aprašymas Objektas Trumpas aprašymas Cancel Notification (atšaukti pranešimą) Ištrina bet kurią ţinutę tuo metu esančią pranešiklyje ir ją grąţina išvestyje. Get Notifier Status (gauti pranešiklio statusą) Grąţina informaciją apie dabartinę pranešiklio būseną, tokią kaip kad paskutinis neištrintas pranešimas, siųstas pranešėjui ir t. t. Obtain Notifier (sukurti pranešiklį) Sukuria arba suranda egzistuojantį pranešiklį Release Notifier (sunaikinti pranešiklį) Sunaikina pranešiklį Send Notification (nusiųsti pranešimą) Nusiunčia ţinutę į visas funkcijas, laukiančias pranešiklio. Wait on Notification from Multiple Laukia, kol nors vienas iš pasirinktų pranešiklių gauna ţinutę. Wait on Notification Laukia kol pranešiklis gauna ţinutę. Pranešiklių (notifier) sinchronizavimo funkcjų veikimas yra panašus į occurrence bet šis būdas yra lankstesnis ir turi didesnes galimybes. Pranešiklis daugiausia leidţia programuotojui trumpam sustabdyti programą laukiančią instrukcijos. Jis gali būti naudojamas cikluose, kurie nuskaito duomenis. Po to kai instrukcija yra gaunama ciklas gali pradėti dirbti tai, kam jis buvo sukurtas. Taip pat pranešiklis gali būti panaudotas trumpam sustabdyti duomenų laukiantį VI. Pagrindinė ir svarbiausia pranešiklio savybė yra laukti tol kol bus gauti duomenys. Tokie duomenys vadinami pranešimu (notification). Daţnis kuriuo pranešimai yra išsiunčiami ir daţnis kuriuo pranešimai yra gaunami turi būti sinchronizuoti kad apsaugoti ţinutės praradimą, nes pranešimų perdavimo sistema neturi buferio, kuriame laikytų nenuskaitytus pranešimus. Grįţtamojo ryšio sistema gali būti parengta norint apsaugoti pranešimų ţinučių 32 praradimą. Šis atvejis daugiausiai atsiranda kuomet pranešiklis yra naudojamas nenutrūkstamam duomenų perdavimui. Pranešikliai gali būti naudojami kartu su kitomis duomenų perdavimo formomis, kaip kad eilėmis, pavyzdţiui norint parodyti kad duomenys atkeliavo skaitymui. Pranešiklis yra puiki priemonė siunčiant individualias ţinutes bet ne pertraukiamus duomenis, tačiau jis gali būti sukonfigūruotas kad darytų ir tai. Pranešikliai turi minusą - jų negalima naudoti komunikavimui su VI kituose kompiuteriuose, pavyzdţiui komunikavimui per tinklą arba VI serverį. 16 pav. Pranešiklio pavyzdys Iliustracijoje pavaizduota paprasta rašymo į ir skaitymo iš pranešiklio blokinė diagrama. Joje yra du ciklai. Viršutiniame cikle obtain notifier funkcija sukuria pranešiklį, jis siunčiamas į Send Notification ir Wait on notification funkcijas. Atsitiktinio skaičiaus (random number) funkcija sukuria atsitiktinę reikšmę nuo 0 iki 1 ir parodo rezultatą. Ši reikšmė yra sujungiama su Send Notification per notification įvestį. Apatinis ciklas šią reikšmę gauna per Wait on Notification funkcijos notification išvestį ir pavaizduoja ją grafike. Ciklą 33 sustabdţius, funkcija Release Notifier sunaikina pranešiklį, duomenys nebėra rašomi ir programa sustoja. 3.6. Eilės (Queue) 17 pav. Queue subpaletė Tai yra metodas kurio metu iš atskirų duomenų elementų yra sukuriama vientisa eilė, tokiu būdu ją galima perduoti į kitą ciklą ar VI. Duomenys yra saugojami atminties buferyje iki jų nuskaitymo. Yra dvi eilių rūšys: First in First Out (FIFO) ir Last in First Out (LIFO). FIFO eilė gali būti palyginama su paprasta ţmonių eile prie kiosko ar prekybos centro kasos. Pirmas asmuo stovintis eilėje ir yra aptarnaujamas pirmasis. LIFO eilę galima apibūdinti tokiu pavyzdţiu: kuomet knygos dedamos į krūvą, paskutinė įdėta knyga daţniausiai ir bus paimta iš jos pirma. 6 lentelė. Queue subpaletės modulių aprašymas Objektas Aprašymas Dequeue Element (išimti elemetą) Pašalina elementą iš eilės priekio ir jį grąţina. Enqueue Element At Opposite End (pridėti Prideda elementą eilės priekyje. 34 elementą piešingame gale) Enqueue Element (pridėti element) Prideda elementą eilės gale. Flush Queue (―išplauti‖ eilę) Išima visus elementus iš eilės ir grąţina juos kaip masyvą. Get Queue Status (gauti eilės statusą) Grąţina informaciją apie dabartinį eilės statusą, kaip kad elementų, esančių eilėje skaičių. Obtain Queue Sukuria (suranda) eilę Preview Queue Element Grąţina elementą, esantį eilės priekyje jo nepašalinant. Release Queue Sunaikina eilę Pirmas ţingsnis naudojant eiles yra sukurti eilę. Obtain Queue funkcija leidţia programuotojui nustatyti eilės dydį. Jei maksimalus dydis bus pasiektas, jokių papildomų elementų į eilę nebebus galima įdėti, tol kol eilėje jau esantys elementai nebus pašalinti. Elementai į eilę įdedami naudojant Enqueue Element funkciją. Tokiu būdu naujas elementas padedamas į eilės galą, bet su funkcija Enqueue element at opposite end galima padėti elementą į eilės priekį. Elementai iš eilės išimami naudojant Dequeue Element funkciją. Pagrinde eilės yra labai tinkamos duomenų srautams, tokiems kaip waveform, ypač tada kai informacijos praradimas yra nepageidaujamas. 35 18 pav. Eilių panaudojimo pavyzdys Iliustracijoje pavaizduota paprasta įrašymo ir nuskaitymo iš sekos blokinė diagrama. Diagrama turi du ciklus. Viršutiniame cikle random number funkcijos pagalba sukuriama atsitiktinė vertė nuo 0 iki 1 ir pavaizuojama grafike. Obtain Queue funkcija sukuria seką. Šioje funkcijoje būtina nurodyti naudojamą duomenų, iš kurių formuojama eilė, tipą. Funkcija Enqueue element kiekvienos iteracijos random number sukurtą vertę sudeda į FIFO tipo eilę. Kitame cikle su Dequeue Element funkcija elementai yra išimami iš eilės ir pavaizduojami antrame grafike prieš apatinį ciklą yra prijungta Wait funkcija su 5000 ms verte, tai reiškia, jog antras ciklas prasidės po 5 sekundţių nuo to laiko kai bus pradėta vykdyti programa. Čia pasireiškia svarbiausia eilių savybė – saugoti duomenis tol kol jie bus išimti iš eilės. Tad antrasis grafikas priekiniame skydelyje nors ir atsilieka nuo pirmo, bet pavaizduoja visas reikšmes, kurios buvo sukurtos random number funkcijos viršutiniame cikle. Pirmasis ciklas sustabdomas STOP mygtuku. Tokiu atveju eilėje lieka neišimtų elementų. Naudojantis Get Queue Status funkcija suţinomas eilėje esančių elementų kiekis ir jam pasiekus 0 sustabdomas antrasis ciklas. 36 19 pav. Eilių panaudojimo pavyzdţio programos priekinio skydelio grafikai 20 pav. Eilių ir pranešiklių vienoje programoje panaudojimas 37 Šiame paveksle pavaizduota sudėtingesnė programa naudojanti ir eiles ir pranešiklius. Eilės naudojamos duomenų perdavimui, o pranešikliai ciklų sinchronizavimui. 3.7. Randevu (Rendezvous) 21 pav. Randevu subpaletė Randevu yra naudojama sudėtinių paralelinių uţduočių sinchronizavimui. 7 lentelė. Randevu subpaletės modulių aparšymas Objektas Aprašymas Create Rendezvous (sukurti randevu) Ieško egzistuojančio randevu arba sukuria naują. Destroy Rendezvous (sunakinti randevu) Sunaikina nurodytą randevu. Get Rendezvous Status (gauti randevu status) Grąţina dabartinio randevu statuso informaciją. Not A Rendezvous (ne randevu) Graţina TRUE jei randevu nėra galiojantis randevu duomenų tipas. Resize Rendezvous (pakeisti randevu dydį) Pakeičia randevu dydį ir graţina naują dydį. 38 Wait at Rendezvous (laukti randevu) Laukia kol pakankamas uţduočių skaičius atvyks į Randevu. 22 pav. Randevu suprogramuotos sitemos pavyzdys Pavyzdyje parodytos trys kadrų struktūros, kiekviena iš jų yra padalinta į du kadrus, ir kiekviename iš jų yra po while ciklą, o kituose kadruose po Wait at Rendezvous funkcija. Viršutiniame cikle yra funkcija random number, kuri generuoja atsitiktines skaitines vertes nuo 0 iki 1. Viduriniame cikle pasinaudojant local variable komanda rezultatas yra vaizduojamas grafiškai. Apatinis ciklas skirtingai nei kiti 39 du yra pirmame struktūros kadre, šis ciklas yra padarytas, taip, kad sustotų po 6 iteracijų. Randevu yra sukuriamas Create Rendezvous funkcija, joje būtina nurodyti randevu dydį. Jis perduodamas trims Wait at Rendezvous funkcijoms, bet kad būtų pasiekta trečioji funkcija esanti apatinėje struktūroje, programa turi įvykdyti pirmame kadre esantį ciklą. Viršutinių ciklų antrų kadrų ciklai pradės veikti tik tada, kad bus pasiektos visos trys Wait at Rendezvous funkcijos. 3.8. Semaphoras (Semaphore) 23 pav. Semaforo subpaletė 8 lentelė. Semaforo subpaletės modulių arašymas Objektas Aprašymas Acquire Semaphore Įgyja priėjimą prie šviesoforo. Create Semaphore Ieško egzistuojančio semaphore arba sukuria naują. Destroy Semaphore Sunaikina pasirinktą semaphore. Get Semaphore Status Graţina semaforo dabartinio statuso informaciją. Not A Semaphore Graţina TRUE jei semaforas nėra galiojantis semaforo 40 duomenų tipas. Release Semaphore Sunaikina priėjimą prie Semaforo. Semaforo tikslas yra kontroliuoti priėjimą prie dalinamų resursų. Vienas pavyzdys būtų kodo sekcija, atsakinga uţ elementų pridėjimą ir pašalinimą duomenų masyve. Jei ši kodo sekcija programoje yra keliose vietose, reikalingas būdas uţtikrinti kad viena kodo sekcija priekyje tų duomenų kurie yra pašalinami neprideda naujų. Semaforų panaudojimas apsaugotų nuo tokios problemos. Pradţioje semaforas yra sukuriamas. Kuriant yra nustatomas uţduočių skaičius. Numatytoji tuo pat metu vykstančių priėjimų skaičiaus vertė - 1. Kitas ţingsnis yra padėti Acquire Semaphore VI prieš norimą apsaugoti kodą. Loginė išvestis gali būti panaudota atvejų struktūros suţadinimui. TRUE išvestis parodys, kad semaforas nebuvo įgytas. Tai turėtų sąlygoti nurodyto kodo nevykdymą. Jei semaforas yra įgyjamas, jo dydis yra sumaţinamas, apsaugant kitą semaforą nuo vykdymo iki bus paleista Release Semaphore VI funkcija. Kuomet ji yra įvykdoma kitas pasiekiamas semaforas gali būti pradėtas vykdyti. Semaforus galima naudoti dviejų ar daugiau atskirų paralelinių uţduočių sinchronizavimui, taip kad viena uţduotis vienu metu vykdytų kritinę kodo sekciją apsaugotą bendro semaforo. Konkrečiu atveju šie VI naudojami kada norima, kad būtini VI ar blokinės diagramos dalys lauktų tol kol kitas VI ar blokinės diagramos dalis baigs vykdyti kritinę kodo sekciją (critical section). 41 24 pav. Semaforo suprogramuotos sitemos pavyzdys 3.9. First Call? funkcija Sinchronizacijos paletėje yra viena funkcija nepriklausanti jokiam skyriui. Tai First call funkcija. Ji neturi nė vienos įvesties ir tik vieną išvestį. Ši išvestis yra loginė vertė parodanti ar tai yra pirmas kartas, kada ši kodo sekcija arba subVI buvo įvykdyta. Paprastai tariant, ši funkcija pirmą kartą ją iškviečiant graţiną reikšmę TRUE, o kitus kartus reikšmę FALSE, taigi gali būti naudinga jei uţduotį reikia atlikti tik vieną kartą. 3.10. Laiko ciklas (timed loop) 25 pav. Laiko struktūrų subpaletė Laiko ciklas yra panašus į While ciklą, bet suteikia programuotojui galimybę valdyti vykdymo daţnį ir paleidimo laiką. Šis ciklas suteikia precizišką laiko valdymą toms programoms, kurios reikalauja sudėtinių kritinių laiko uţduočių, veikiančių skirtingais daţniais. Kiekvienas toks ciklas veikia savo paties vykdymo sistemoje ir gali būti priskirtas unikalus prioriteto lygmuo iki 128 skirtingų uţduočių. Aukštesnio prioriteto ciklai uţbėgs uţ kelio ţemesnio priotiteto 42 ciklams. Laiko ciklai suteikia savo vykdymo grįţtamąjį ryšį, kas leidţia pritaikyti ciklinį laiko skaičiavimą, paremtą realaus laiko atlikimu. Laiko ciklas skirtingai nei while ciklas nereikalauja sujungimo su sąlyginiu terminalu, tokiu atveju ciklas eis neribotą laiką. 26 pav. Laiko ciklas su visomis įvestimis ir išvestimis: Šiame paveiksle pavaizduotas laiko ciklas su išskleistomis visomis įvestimis ir išvestimis. Laiko ciklas turi keturis blokus: 1 – įvesties blokas, 2 kairysis duomenų blokas, 3 – dešinysis duomenų blokas, 4 - išvesties blokas. Įvesties bloke įvedamos charakteristikų, kurias norime pritaikyti ciklui vertės. Kairysis duomenų blokas, tai pirmesnės iteracijos metu nustatytų ir gautų duomenų vertės. Dešinysis duomenų blokas tai kitos iteracijos įvesties blokas, kuriame galima pakeisti pirmosios iteracijos parametrus. Išvesties blokas, tai - viso ciklo veikimo rezultatai. Paspaudus pele du kartus ant įvesties bloko ar paspaudus dešinį klavišą ir pasirinkus Configure Input Node (Konfigūruoti įvesties mazgą) atsidaro Configure Timed Loop (konfigūruoti laiko ciklą) langas. Vertės, kurios bus 43 įvedamos šiame lange pasirodys pačiame įvesties bloke. Taipogi nurodyti norimus parametrus ciklui taip pat galima norimą vertę prijungus prie įvesties mazgo. 27 pav. Configure Timed Loop langas Configure Timed Loop langas yra skirtas pagrindinių ciklo parametrų nustatymui: laiko skaičiavimo šaltiniui, periodui, prioritetui bei kitoms pasirinktims. Ciklo laiko skaičiavimo Šaltinio (Loop Timing Source) skiltis nusako ciklo laiko skaičiavimo šaltinio tipą ir pavadinimą. Šis šaltinis gali būti vidinis – iš anksto nustatytas arba išorinis – sukurtas naudojant Create Timing Source funkciją arba DAQmx duomenų kaupimo funkcijas. Jei bus palikta varnelė ant Use Built-In Timing Source (naudoti standartinį laiko skaičiavimo šaltinį), bus nurodoma naudoti vidinį laiko skaičiavimo šaltinį laiko struktūros valdymui, kurį galima apsirinkti iš Source Type sąrašo, o jei bus pasirinktas Use Timing Source Terminal (Naudoti šaltinio terminalą), bus galima naudoti įėjimo terminalą esantį įvesties bloke, kad būtų galima prijungti išorinį laiko skaičiavimo šaltinį. Jau minėtame Use Built-In Timing Source sąraše yra keturios numatytosios reikšmės: 44 1. 1kHz laikrodis (clock) – numatytasis operacinės sistemos laikrodis, jį naudojant laiko struktūra gali vykdyti vieną iteraciją kartą į vieną miliskundę. Visos Labview platformos kurios gali paleisti laiko struktūras (tarp jų ir laiko ciklus) palaiko šio tipo šaltinį. 2. 1 MHz laikrodis – parenkamas 1 MHz laikrodis, palaikomas RT (realaus laiko) objektų su Intel Pentium III ar vėlesnės klasės procesoriais, tokių kaip NI PXI-817x ir NI PXI-818x įrenginiai. Jį naudojant ciklas gali vykdyti iteraciją kas vieną mikrosekundę. 3. 1 kHz - parenkamas 1 kHz šaltinis, kuris atsistato po kiekvienos struktūros iteracijos. 4. 1 MHz - parenkamas 1 MHz šaltinis, kuris atsistato po kiekvienos struktūros iteracijos. Prie vidinių šaltinių sąraše gali būti nurodomi ir paties vartotojo sukonfigūruoti šaltiniai. Source name nusako vardą atskiram šaltinio atvejui. Pavyzdţiui, jei bus įvestas tas pats šaltinio vardas dviejose skirtingose struktūrose, abi struktūros dalinsis ta pačia laikrodţio instancija kaip jų laiko skaičiavimo šaltiniu (naudojant tą patį šaltinį uţtikrinama, kad struktūrų fazės yra tos pačios, bet struktūros gali ir nestartuoti tuo pačiu metu). Loop Timing Attributes – nurodomi pagrindiniai struktūros parametrai: periodas ir prioritetas: 1. Period (periodas) – nurodo laiko tarpą, kuris praeina tarp dviejų tolesnių ciklo iteracijų. Periodo laiko vienetas keičiasi priklausomai nuo pasirinkto laiko skaičiavimo šaltinio. 2. Priority (prioritetas) – nurodo laiko struktūros, reliatyvios kitoms struktūroms, vykdymo prioritetą. Kuo didesnis skaičius yra įvedamas tuo didesnį prioritetą gauna struktūra lyginant su kitomis. Reikšmė turi būti teigiamas sveikasis skaičius nuo 1 iki 65 535. 45 Advanced Timing — nurodomi sudėtingesni struktūros parametrai: 1. Deadline (galutinė riba) — nurodo laiko ribą ciklo iteracijos uţbaigimui. Jei iteracija nesibaigia prieš nurodytą ribą, Finished Late? [i-1] (baigta vėlai?) išvestis iš kairiojo duomenų bloko kitoje iteracijoje grąţins reikšmę TRUE. 2. Offset / Phase (atsvara / fazė)—nurodo starto laiką ar fazę struktūros iteracijai. Šią pasirinktį galima naudoti struktūroms sinchronizuoti arba jų fazėms sulygiuoti. Pavyzdţiui galima sukonfigūruoti du ciklus taip, kad jie naudotų to paties laiko skaičiavimo šaltinio instanciją, nurodant tą patį šaltinio vardą Source name skiltyje. Viename cikle į offset laukelį galima įrašyti 0, o į kitą 100. Ciklai veiks savo atitinkamuose perioduose, bet 100 laiko vienetų atskirs jų vykdymą. 3. Timeout (pertrauka) — nurodo maksimalų laiko tarpą, kurį ciklas gali laukti trigerinio (trigger) įvykio iš laiko skaičiavimo šaltinio. Jei ciklas nepradeda veikti prieš nurodytą reikšmę, iteracija vykdoma ne laiku (untimed) ir sekančioje iteracijoje grąţinama Timeout reikšmė kairiojo duomenų bloko Timeout in the Wake-up reason išvestyje. 4. Loop name — unikalus ciklą identifikuojantis vardas. 28 pav. Laiko ciklų pavyzdys 46 Ilustracijoje pavaizduotoje blokinėje diagramoje naudoja numatytąsis 1kHz laiko skaičiavimo šaltinis. Periodas (dt) Ciklui A yra 1000 ms, o ciklui B - 500 ms, tai reiškia, kad Ciklas A yra vykdomas kas vieną sekundę, o Ciklas B kas pusę sekundės. Abu ciklai baigia vykdymą praėjus 10 iteracijų, ciklas A vykdymą baigs po 10 sekundţių, o ciklas B po 5 sekundţių. 29 pav. Laiko ciklai pavyzdys Iliustacijoje pateiktoje blokinėje diagramoje Ciklui B yra pakeista Offset/ Phase reikšmė – iš 0 į 5000 ms. Dėl šios prieţasties ciklas vykdymą pradės po 5 s, tuo tarpu ciklas A veiks normaliai, t.y pradės vykdymą iškart ir baigs po 10 sekundţių. Processor Assignment (procesoriaus paskyrimo) skiltis — nurodo procesorių, kuris yra paskirtas ciklo vykdymo valdymui. 1. Mode (reţimas) — nurodo kaip paskirti laisvus procesorius vykdymo valdymui. Galima pasirinkti tokius reţimus: - Automatinis (automatic) – LabVIEW paskiria procesorių automatiškai. Procesoriaus (Processor) laukelis tampa neveiksnus ir nustatoma vertė -2. 47 - Savarankiškas (manual) – programuotojas įveda vertę nuo 0 iki 255, kuri nurodo procesorių, kuris bus naudojamas ciklo vykdymo valdymui. 2. Processor (procesorius) – laukelyje nurodomas procesorius, kurį programuotojas nori paskirti vykdymo valdymui. Numatytoji reikšmė yra - 2, kuri reiškia, kad LabVIEW automatiškai paskiria procesorių. Norint tai padaryti savarankiškai, į laukelį reikia įvesti skaičių nuo 0 iki 255, kur 0 reiškia pirmą įmanomą procesorių. Jei bus įvestas skaičius didesnis nei galimų procesorių skaičius, bus sukurta relaus laiko klaida ir struktūra nebebus vykdoma. Action on Late Iterations (veiksmas dėl pavėlavusių iteracijų) — nurodo pavėlavusios iteracijos reţimą ciklui. - Discard missed periods (atmesti praleistus periodus) — nurodo kad ciklas išmestų bet kokius duomenis, sukurtus per praleistas iteracijas ir vykdytų kitą numatytą iteraciją nustatytą per offset ir period vertes. - Maintain original phase (išlaikyti originalią fazę) – nurodo kad ciklas grįţtų į originaliai sukonfigūruotą fazę. Pašalinus ţymę nurodoma, kad ciklas vyktų tame pačiame periode bet ne originaliai sukonfigūruotoje fazėje. Jei ciklas vėluoja, jis gali praleisti duomenis, kuriuos sugeneravo kiti laiko ciklai ar įrenginiai. Pavyzdţiui, jei ciklas praleidţia dvi iteracijas ir kai kuriuos duomenis iš dabartinio perodo, buferis gali pasaugoti duomenis iš praleistų iteracijų. Vartotojas gali sukonfigūruoti ciklą, kad jis apdorotų praleistus duomenis prieš susilygiuojant su nurodyta tvarka. Vis dėlto timed ciklas kuri apdoroja praleistas iteracijas sukelia jitter (drebėjimą / mirgėjimą) (Jitter yra maţi pakitimai laikrodţio periode (from sample to sample). Jie pasirodo kaip triukšmas suskaitmenintame signale ir labiau paveikia aukštesnio daţnio signalus. Šį reiškinį galima valdyti (bet ne pašalinti), naudojant tikslų laikrodţio šaltinį. 48 Jei vartotojas nenori apdoroti praleistų duomenų, ciklas gali ignoruoti senesnius duomenis buferyje, kuriuos ciklo iteracijos praleido ir apdoroti tik naujausius duomenis, tokius, kurie yra prienami kitame periode ir vėlesnėse iteracijose. Dukart spustelėjus dešinį duomenų bloką arba per kontekstinį meniu pasirinkus Configure input node (konfigūruoti įvesties bloką) atsidarys Configure next iteration (konfigųruoti sekančią iteraciją) langas. 30 pav. Configure next iteration langas Šitas langas naudojamas nustatyti, kaip ciklas bus vykdomas per kitą iteraciją. Galima nurodyti naują periodą, prioritetą ir kitas pasirinktis sekančiai iteracijai. Period, priority, deadline, timeout, offset / phase numatytos reikšmės yra -1, kas reiškia, jog reikšmės bus tokios pačios kaip ir praeitoje iteracijoje. Laiko ciklą skirtingai nei While ar For ciklus, galima padalyti į kelias dalis (kadrus). Per kontekstinį meniu pasirinkus Add Frame After arba Add Frame Before. Tumet spsutelėjus du kartus ant pirmo kadro dešiniojo duomenų bloko 49 arba per kontekstinį meniu pasirinkus configure input node (konfigūruoti įvesties bloką) atsivers langas configure next frame timing (konfigūruoti sekančio kadro laiką) . 31 pav. Laiko ciklas padalytas į kadrus Be jau ţinomų Priority, Deadline, Timeout, Mode, Processor ir Mode laukelių jame yra Start laukelis. Start nurodo laiką nuo kurio bus pradėtas vykdyti sekantis kadras. Nurodyta start laiko vertė turi būti reliatyvi praeito kadro startui. 50 32 pav. Configure next frame timing langas 4. VARTOTOJO SĄSAJOS KŪRIMAS 1. Naujojo virtualaus prietaiso sukūrimui spragtelkite New VI LabVIEW dialogo lange. 2. Sukurkite stop mygtuką spragtelėję Controls>>Boolean>>Stop Button valdymo paletėje, kaip parodyta ţemiau. 33 pav. Controls>>Boolean>>Stop Button parinkimas 3. Spragtelkite ant objekto dešiniuoju klavišu ir pasirinkite Visible Items>>Label iš pasirodţiusio meniu tam, kad parodyti arba paslėpti objekto ţymę. 4. Objektų matmenų bei vietos pakeitimui naudokite išsidėstymo įrankį iš įrankių paletės. Jei darbastalyje nesimato šios paletės spragtelkite Window>>Show Tools Palette. 5. Sugrįţimui į pagrindinę valdymo paletę naudokite mygtuką Up (aukštyn). Sukurkite bangos grafiką pasirenkant Controls>>Graph>>Waveform Chart. Šis instrumentas braiţo grafiką po 1 tašką 51 prie vieną laiko momentą. Grafiko pavadinimo pakeitimui naudokite ţymeklį iš įrankių paletės . 6. Norėdami pamatyti įrankių paletę spragtelkite Window>>Show Tools Palette. Panaudokite valdymo įrankį grafiko skalės pakeitimui. Spragtelkite du kartus ant -10 Y ašyje ir uţrašykite 0.0 skalės pakeitimui. Po to spragtelkite du kartus ant 10 Y ašyje ir uţrašykite 1.0. Po pakeitimo grafikas turėtų atrodyti kaip parodyta ţemiau. 34 pav. Controls>>Graph>>Waveform Chart parinkimas 4.1 Blokinės diagramos kūrimas 1. Norėdami pamatyti savo VP blokinę diagramą, spragtelkite Window>>Show Diagram. 2. Dvi piktogramos blokinėje diagramoje atitinka Stop mygtuką ir grafiką, kuriuos jūs įterpėt į vartotojo sąsają. Norėdami pamatyti funkcijų paletę, spragtelkite Window>>Show Functions Palette. 3. Pasirinkite Functions>>Numeric>>Random Number (0-1). Priartinus 52 atsitiktinio skaičiaus funkciją prie grafiko piktogramos išvadų, LabVIEW automatiškai sujungia juos laidais. Atleidus pelytės klavišą nuo funkcijos, LabVIEW automatiškai prijungia laidą prie prievado. 4. Norėdami grįţti į pagrindinę funkcijų paletę spragtelkite Up navigacijos mygtuką. Sukurkite kilpą „kol― (while loop), pasirinkdami Functions>Structures>>While Loop. Kodas šioje kilpoje yra vykdomas, kol būklės jungtis priima signalą TEISINGAI arba KLAIDINGAI (TRUE or FALSE). Pagal nutylėjimą tas signalas yra „vykdyti jeigu teisingai― (Continue if True). 5. Nustatykite pelytės ţymeklį blokinėje diagramoje ten, kur jūs norite pritvirtinti viršutinį kairįjį kilpos kraštą. Nutemkite rėmelį taip, kad jame atsirastų atsitiktinio skaičiaus funkcija, grafikas ir stop mygtukas. Blokinė diagrama turėtų atrodyti, kaip pavaizduota ţemiau pateiktame paveiksliuke. 35 pav. Functions>Structures>>While Loop (blokinė diagrama) 4.2. Virtualiųjų prietaisų sujungimas ir vykdymas 1. Spragtelkite Window>>Show Tools Palette, įrankių paletės aktyvavimui. Pasirinkite jungimo įrankį iš įrankių paletės. 2. Naudodami jungimo įrankį, sujunkite Stop mygtuką su kilpos būklės 53 piktograma. Kad padarytumėte tai, spragtelkite Stop mygtuką, po to judėkite iki būklės piktogramos. Spragtelėjus dar kartą, šios piktogramos susijungs laidais. 3. VP naudoja Stop mygtuką, todėl reikėtų pakeisti kilpos elgesį į tokį, kad VP sustotų paspaudus Stop mygtuką. Spragtelkite dešiniuoju klavišu kilpos būklės piktogramą ir pasirinkite Stop if True. Būklės piktograma turėtų atrodyti kaip pavaizduota paveiksliuke iš kairės. Blokinė diagrama turėtų atrodyti kaip pavaizduota ţemiau pateiktame paveiksliuke. 36 pav. Stop mygtukas (blokinė diagrama) 4. Pasirinkite pagrindinį skydelį paspaudus . Įrankių paletei aktyvuoti spragtelkite Window>>Show Tools Palette. Pasirinkite valdymo įrankį iš šios paletės. 5. Spragtelkite vykdymo (Run) mygtuką VP vykdymui. 6. Spragtelkite Stop mygtuką VP sustabdymui 54 37 pav. Generuojamo signalo atavizdavimas 4.3. Virtualiųjų prietaisų sinchronizavimas 1. Aktyvuokite blokinę diagramą paspaudus . Iš funkcijų paletės pasirinkite Functions>>Time & Dialog>>Wait Until Next ms Multiple ir patalpinkite piktogramą kilpoje. 2. Naudodami jungimo įrankį, spragtelkite dešiniuoju klavišu kairėje piktogramos Wait Until Next ms Multiple pusėje ir pasirinkite Create>>Constant iš atsiradusio meniu. 3. Įrašykite 250 atsiradusiame milisekundţių langelyje. Tokiu būdu jūs sukursite 250 ms uţdelsimą tarp generuojamų grafiko taškų. Blokinė diagrama turėtų atrodyti kaip pavaizduota ţemiau pateiktame paveiksliuke. 55 38 pav. Wait Until Next ms Multiple (uţdelsimas) 4. Vartotojo sąsajos langelyje paleiskite jūsų VP. Dabar galite stebėti, kaip veikia jūsų VP uţdelsimo poveikis. 4.4. Duomenų analizė ir įvestis/išvestis 1. Blokinėje diagramoje aktyvuokite funkcijų paletę spragteldami Window>>Show Functions Palette. 2. Pasirinkite Functions>>Mathematics>>Probability and Statistics>>Mean.vi ir patalpinkite VP kilpos išorėje. 3. Naudodami jungimo įrankį spragtelkite ant vidurkio VP (Mean VI) viršutiniame dešiniame kampe ir pasirinkiteCreate>>Indicator iš atsiradusio meniu. Tokiu būdu vartotojo sąsajoje atsiras indikatorius, rodantis atsitiktinio skaičiaus funkcijos vidurkį. 4. Pasirinkite Functions>>File I/O>>Write To Spreadsheet File.vi ir patalpinkite šį VP kilpos išorėje. 5. Naudodami jungimo įrankį sujunkite vidurkio funkcijos X jungtį su laidų jungiančiu atsitiktinio skaičiaus funkciją su grafiku. Lauţytas laidas parodo, kad jūs bandote sujungti skirtingų duomenų tipo jungtis. Jūs pataisysite tai 7 ţingsnyje. 6. Sukurkite kitą laido atsišakojimą, prijungdami laidą nuo įrašančio į bylą 56 VP 1D data jungties prie laido dalies tarp vidurkio ir atsitiktinio skaičiaus, esančio kilpos išorėje. Jūs naudojate vienos dimensijos jungtį, nes kilpa „kol― sukuria vienos dimensijos skaičių eilutę iš duomenų sugeneruotų atsitiktinių skaičių. Laidai bus lauţyti, bet jūs pataisysite tai 7 ţingsnyje. 7. Oranţinis kvadratėlis ant kilpos yra vadinamas tuneliu. Spragtelkite dešiniuoju klavišu šį kvadratėlį ir pasirinkite Enable Indexing iš atsiradusio meniu. Taip jūs sudarote sąlygas kilpai rinkti duomenis ir praleidinėti juos kaip surinktų duomenų rinkinį, kada kilpos vykdymas yra sustabdytas. Lauţyti laidai turėtų pasikeisti į vientisus oranţinės spalvos laidus, nes jungtis jau yra vieno tipo. Blokinė diagrama turėtų atrodyti kaip pavaizduota ţemiau pateiktame paveiksliuke. 39 pav. Analizės VP modulių prijungimas 8. Grįţkite į vartotojo sąsają ir paleiskite VP. Kada paspausite Stop mygtuką, jūs pamatysite duomenų vidurkį ir atsiras dialogo langas Choose file to write. Įrašykite duomenys.txt ir išsaugokite bylą, spragteldami Save mygtuką. 9. Atidarykite duomenys.txt bylą, naudodami tekstinį redaktorių. 57 PRATIMAI Pratimas Nr.1 Darbo tikslas. Susipaţinti su LabVIEW pagrindinių funkcijų generavimo virtualiais prietaisais ir išmokti pavaizduoti funkcijas grafikuose. Uţduotis. 1. Naujojo virtualaus prietaiso sukūrimui spragtelkite New VI LabVIEW dialogo lange. 2. Sukurkite du bangos grafikus pasirenkant Controls>>Graph>>Waveform Graph. Grafiko pavadinimo pakeitimui naudokite ţymeklį iš įrankių paletės. 3. Objektų matmenų bei vietos pakeitimui naudokite išsidėstymo įrankį iš įrankių paletės. Jei darbastalyje nesimato šios paletės spragtelkite Window>>Show Tools Palette. Vartotojo sąsaja turėtų atrodyti kaip parodyta ţemiau. 58 4. Aktyvuokite VP blokinę diagramą spragtelėję Window>>Show Diagram. 5. Iš funkcijų paletės įterpkite sinusinės funkcijos VP pasirenkant Functions>>Waveform>>Waveform Generation>>Sine Waveform.vi. Pakartokite šį veiksmą įterpdami trikampinę funkciją (Triange Waveform.vi), kvadratinę funkciją (Square Waveform.vi), pjūklinę funkciją (Sawtooth Wave.vi) ir pagrindinių funkcijų generuoklę (Basic Function Generator.vi). 6.Naudodami jungimo įrankį spragtelkite dešiniuoju pelytės klavišu kairėje sinusinės funkcijos VP pusėje prie daţnio jungties (frequency) ir pasirinkite Create>>Control iš atsiradusio meniu. Pakartokite tą patį veiksmą kurdami amplitudes (amplitude) valdymą. 59 7.Naudodami jungimo įrankį prijunkite prie atsiradusių valdymo įrankių kitų virtualiųjų prietaisų daţnio ir amplitudės jungtis. 8. Naudodami jungimo įrankį spragtelkite dešiniuoju pelytės klavišu viršutinėje pagrindinių funkcijų generuoklės pusėje prie signalo tipo (signal type) jungties ir pasirinkite Create>>Control iš atsiradusio meniu. 9. Sukurkite kilpą „kol― (while loop), pasirinkdami Functions>>Structures>>While Loop. Kilpoje turi atsirasti visi VP esantys blokinėje diagramoje. 10. Prie būklės jungties prijunkite loginį „Taip―, kuris yra Functions>>Boolean>>True Constant. Blokinė diagrama turėtų atrodyti kaip parodyta ţemiau. 11. Naudodami jungties įrankį prijunkite antrą grafiką prie pagrindinių funkcijų generuoklės išėjimo jungties (signal out). 12. Norint prijungti likusias funkcijų generuokles prie pirmo grafiko, reikia sudaryti iš jų masyvą. PasirinkiteFunctions>>Array>>Build Array ir patalpinkite šį VP blokinėje diagramoje. 60 13. Pagal nutylėjimą masyvo sudarymo įrankis turi tik viena įėjimą. Spragtelkite dešiniuoju pelytės klavišų šį įrankį ir pasirinkite Add Input iš atsiradusio meniu. Kartokite šį veiksmą tol, kol neatsiras keturi įėjimai. 14. Prie masyvo sudarymo įrankio iš kairės pusės prijunkite dar neprijungtas funkcijų generuokles. Prie dešinės masyvo sudarymo įrankio pusės prijunkite pirmą grafiką. Blokinė diagrama turėtų atrodyti, kaip pavaizduota ţemiau. 15. Pasirinkite pagrindinį skydelį paspaudus . Naudodami išsidėstymo įrankį, patalpinkite valdymo įrankius į jums patogią vietą. 16. Spragtelkite Run VP vykdymui. Dabar galite keisti signalų daţnius, amplitudes ir signalų tipus ir stebėti signalų grafikus. 61 Pratimas Nr.2 Darbo tikslas. Išmokti įtraukti duomenis į VP, sudaryti iš tų duomenų pasiskirstymo histogramą bei paskaičiuoti duomenų aritmetinį vidurkį, standartinę paklaidą bei dispersiją. Trumpa teorija. Pasiskirstymo histogramoje abscisių ašyje yra atidedamos klasių ribos, o ordinačių ašyje – stačiakampiai, kurių plotas lygus klasės santykiniam daţniui, o aukštis – atitinkamos klasės vidutiniam empiriniam tikimybės tankiui. Visos histogramos stačiakampių plotas pagal tikimybės tankio normavimo sąlygą yra 62 lygus vienetui. Tikrosios matuojamo dydţio vertės įverčių laikomas matavimo rezultatų aritmetinis vidurkis. Jeigu matavimai yra vienodo tikslumo, tai aritmetinis vidurkis nustatomas taip: Čia n – matavimų skaičius, xn – n-tojo matavimo metu gauta matuojamo dydţio vertė. Matavimo rezultatų atsitiktinių paklaidų dispersijos įverčių, kai rezultatas yra vienodo tikslumo, yra: Daţniau nei paklaidų dispersijos įvertį prireikia naudoti standartinės paklaidos įvertį, todėl tenka traukti kvadratinę šaknį iš σn2: Uţduotis. 63 1. Naujojo virtualaus prietaiso sukūrimui spragtelkite New VI LabVIEW dialogo lange. 2. Sukurkite XY grafiką pasirinkdami Controls>>Graph>>XY Graph. Grafiko pavadinimo pakeitimui naudokite ţymeklį iš įrankių paletės. 3. Objektų matmenų bei vietos pakeitimui naudokite išsidėstymo įrankį iš įrankių paletės. Jei darbastalyje nesimato šios paletės, spragtelkite Window>>Show Tools Palette. Vartotojo sąsaja turėtų atrodyti kaip parodyta ţemiau. 4. Norėdami pamatyti savo blokinę diagramą, spragtelkite Window>>Show Diagram. 5. Įterpkite histogramos įrankį spragteldami Analyze>>Mathematics>>Probability and Statistics>> Histogram.vi. 6. Įterpkite standartinės paklaidos ir dispersijos funkcijos įrankį, spragtelėdami Analyze>>Mathematics>> Probability and Statistics>>Standart Deviation and Variance. 7. Naudodami jungimo įrankį spragtelkite dešiniuoju pelytės klavišu 64 dešinėje standartinės paklaidos ir dispersijos įrankio pusėje ir sukurkite aritmetinio vidurkio, standartinės paklaidos ir dispersijos indikatorius, pasirinkdamiCreate>>Indicator iš atsiradusio meniu. 8. Sukurkite klasių skaičiaus pasirinkimo įrankį spragteldami dešiniuoju pelytės klavišu dešinėje tikimybinės pasiskirstymo histogramos įrankio pusėje ir pasirinkite Create>>Indicator iš atsiradusio meniu. 9. Įterpkite duomenų nuskaitymo iš bylos įrankį pasirinkdami Functions>>File I/O>>Read From Spreadsheet File.vi. Sujunkite įrankius, kaip pavaizduota ţemiau. 10. Duomenų nuskaitymui iš kiekvienos tekstinės bylos eilutės prijunkite loginį „Taip― prie duomenų nuskaitymo iš bylos įrankio perkėlimo (transpose) jungties. Loginį „Taip― galite rasti spragtelėję Functions>>Boolean>>True Constant. 11. Duomenų prijungimui prie histogramos grafiko naudokite ryšulio įrankį, kuris yra Functions>>Cluster>> Bundle. Prijunkite prie kairės jo pusės h(X) ir X histogramos išėjimus. 12. Sujunkite blokinę diagramą, kaip pavaizduota ţemiau. 65 13. Su tekstiniu redaktoriumi sukurkite bylą ir įveskite į ją duomenis kaip pavaizduota ţemiau. 14. Pasirinkite vartotojo sąsają paspausdami . 15. Išdėstykite įrankius jums patogioje vietoje. 16. Tam, kad grafike būtų vaizduojama ne kreivė, o stulpeliai, spragtelkite dešiniuoju klavišu grafiko uţrašą ir pasirinkite iš Bar Plots jums tinkamą horizontalių stulpelių vaizdavimo būdą. 66 17. Spragtelkite Run VP vykdymui. Atsiradusiame dialogo lange pasirinkite prieš tai sukurtą bylą. Rezultatai turėtų atrodyti kaip pavaizduota ţemiau. Pratimas Nr.3 Darbo tikslas. Išmokti naudotis LabVIEW formulių mazgu, atvaizduoti formulę XY grafike, bei įrašyti rezultatų duomenis į tekstinę bylą. Trumpa teorija. Prijungus prie pn sandūros išorinę įtampą, sutrinka krūvininkų difuzijos ir dreifo pusiausvyra ir per pn sandūrą ima tekėti srovė. Šios srovės priklausomybė nuo 67 įtampos yra netiesinė ir vadinama pn sandūros voltamperine charakteristika. Idealios pn sandūros voltamperinės charakteristikos grafikas ir formulė yra pateikti ţemiau. kur: Is - atgalinė pn sandūros srovė; q - elektrono krūvis (1,602∙10-19 C); U - įtampa (voltais); T - normali temperatūra (kelvinais); k - Bocmano konstanta (1,381∙10-23 J/mol); Uţduotis. 1. Naujojo virtualaus prietaiso sukūrimui spragtelkite New VI LabVIEW dialogo lange. 2. Grafiko pavadinimo pakeitimui naudokite ţymeklį iš įrankių paletės. 3. Objektų matmenų bei vietos pakeitimui naudokite išsidėstymo įrankį iš 68 įrankių paletės. Jei darbastalyje nesimato šios paletės, spragtelkite Window>>Show Tools Palette. 4. Įterpkite XY grafiką į vartotojo sąsają spragtelėję Controls>>Graph>>XY Graph. 5. Spragtelkite Controls>>Numeric>>Digital Control ir įterpkite penkis skaičių valdymo įrankius į vartotojo sąsają. 6. Naudodami ţymeklį pakeiskite skaičių valdymo įrankių pavadinimus į Umin (minimali įtampa), Umax (maksimali įtampą), dV (įtampos ţingsnis), Is (atbulinė srovė), T (normali temperatūra). 7. Spragtelkite dešiniuoju pelytės klavišu į temperatūros valdymo įrankį ir pasirinkite Format & Precision iš atsiradusio meniu. Tikslumo skiltyje (Digits of Precision) įrašykite 0. Tokiu būdu temperatūros valdymo įrankyje nebus rodomi skaičiai po kablelio. Vartotojo sąsaja turėtų atrodyti, kai parodyta ţemiau. 69 8. Naudodami valdymo įrankį spragtelkite grafiką dešiniuoju pelytės klavišu ir nuimkite varnelę nuo Y Scale>>AutoScale Y. Y ašyje pakeiskite skalę nuo -1 iki 30. 9. Paspauskite blokinės diagramos aktyvavimui. 10. Tuščioje vietoje sukurkite gana platų formulės mazgą pasirinkdami Functions>>Structures>>Formula Node. Šiame mazge vėliau bus įrašytos formulės. 11. Aplink formulės mazgą sukurkite kilpą (For Loop) spragtelėję Functions>>Structures>>For Loop. 12. Spragtelkite dešiniuoju pelytės klavišu formulės mazgą ir sukurkite septynis įėjimus – i, dV, Umin, q, k, T, Is(didelės ir maţos raidės nėra tas pats!) pasirinkdami Add Input iš atsiradusio meniu. 13. Tokiu pačiu būdu sukurkite du išėjimus I ir U pasirinkdami Add Output. 14. Naudodami jungties įrankį prijunkite atitinkamus skaičių valdymo įrankius prie formulės mazgo įėjimo. 15. Sukurkite dvi skaičių konstantas q ir k spragtelėję Functions>>Numeric>>Numeric Constant. 16. Spragtelkite dešiniuoju pelytės klavišu q konstantą ir pasirinkite Format & Precision iš atsiradusio meniu. Tikslumo skiltyje (Digits of Precision) įrašykite 3 ir pasirinkite Scientific Notation. Įrašykite 1,603E-19 į skaičiaus dėţutę. Pakartokite tą pati veiksmą su k konstanta įrašydami į skaičiaus dėţutę 1,381E-23. 17. Įterpkite skirtumo ir dalybos įrankius spragtelėję Functions>>Numeric. Naudodami jungties įrankį sujunkite įrankius, kaip pavaizduota ţemiau. Dabar kilpa bus vykdoma tiek kartų, koks bus formulės (Umax-Umin)/dV rezultatas. 70 18. Dviejų išėjimų (U ir I) prijungimui prie grafiko naudokite ryšulio įrankį, kurį rasite Funtions>>Cluster>>Bundle. Prijunkite išėjimus (U ir I) prie dešinės ryšulio funkcijos pusės, o prie kitos jo pusės prijunkite grafiką. 19. Į formulės mazgą įrašykite įtampos funkciją: U=Umin+dV*i; (kiekviena funkcija turi pasibaigti kabliataškiu). Tokiu būdu U išėjime atsiras įtampos reikšmių masyvas nuo Umin iki Umax su dV ţingsniu. 20. Į formulės mazgą įrašykite srovės funkciją: I=Is*(exp((U*q)/(T*k))-1);. Tokiu būdu I išėjime atsiras srovės reikšmių masyvas. 21. Duomenų įrašymui į bylą naudokite VP, kuris yra Functions>>File I/O>>Write to Spreadsheet File.vi. 22. Duomenys įrašomi į bylą turi būti masyvo pavidalu. Tam tikslui naudokite masyvo sudarymo įrankį, kuris yraFunctions>>Array>>Buid Array. Pagal nutylėjimą šis įrankis turi vieną įėjimą. 23. Spragtelkite dešiniuoju pelytės klavišu masyvo sudarymo įrankį ir pasirinkite Concaternate Inputs iš atsiradusio meniu. Po to pasirinkite Add Input. 24. Prijunkite U ir I išėjimus prie masyvo sudarymo įrankių. Kitą įrankio galą 71 prijunkite prie įrašymo i bylą įrankio 2D Data jungties. 25. Iš funkcijų paletės pasirinkite loginę konstantą „Taip― spragtelėję Functions>>Boolean>>True Constant. Prijunkite ją prie įrašymo į bylą įrankio transpose jungties. Tokiu būdu tekstinėje byloje dviejų dimensijų masyvas bus įrašytas i du stulpelius (neprijungus loginio „Taip― prie perkėlimo (transpose) jungties, masyvas į tekstinę bylą būtų surašytas viena eilute). 26. Pasirinkite Controls>>Numeris>>Digital Indicator ir pajunkite jį prie kilpos informacinės jungties. Indikatoriuje bus pavaizduotas atliktų operacijų skaičius. 27. Spragtelkite Run VP vykdymui. 28. Atsiradusiame langelyje įrašykite bylos (pvz. duomenys.txt), į kurią bus išsaugoti rezultatai, pavadinimą. Atidarykite bylą ir perţiūrėkite duomenis. Pagrindinis skydelis po vykdymo turėtų atrodyti kaip pavaizduota ţemiau. 72 29. Duomenų byla turėtų atrodyti, kaip pavaizduota ţemiau. Kairiajame stulpelyje yra įrašytos įtampos reikšmės, o dešiniajame – srovės reikšmės. 73 5. LOGINĖS ALGEBROS ELEMENTAI 1. Neigimas – loginis elementas NE (invertorius) - Loginis elementas NE (NOT). Jis turi vieną įėjimą ir vieną išėjimą. Jei įėjime esti loginio vieneto įtampa, išėjime – loginio nulio ir atvirkščiai. Jei du NE elementai sujungiami nuosekliai, signalas antrojo elemento išėjime kartoja įtampos kitimus pirmojo elemento įėjime. - Ţymimas simboliu - ar ÷ . 40 pav. Loginis elementas NE (NOT) grafinis ţymėjimas 9 lentelė. • Loginio elemento NE (NOT) Reikšmių lentelė: x ÷x K T T K 2. Konjunkcija – loginis elementas IR - Elementas IR ( AND) turi du arba daugiau įėjimų. Išėjimo signalas įgyja vieneto reikšmę tik tada, kuomet į visus įėjimus paduodama vieneto reikšmė. - Ţymimas simboliu . ar *. 74 41 pav. Loginis elementas IR ( AND) grafinis ţymėjimas 10 lentelė. Loginio elemento IR ( AND)Reikšmių lentelė: x y x .y T T T T K K K T K K K K 3. Disjunkcija – loginis elementas ARBA - Elementas ARBA (OR) turi du arba daugiau įėjimų. Išėjimo signalas įgyja vieneto reikšmę jei į bet kurį įėjimą paduodama vieneto reikšmė. - Ţymimas simboliu v ar + 42 pav. Loginis elementas ARBA (OR) grafinis ţymėjimas 11 lentelė. Loginio elemento ARBA (OR) Reikšmių lentelė: x y x v y 75 T T T T K T K T T K K K 4. Loginis elementas IR-NE - Elementas IR – NE (NAND) turi du arba daugiau įėjimų. Išėjimo signalas įgyja nulio reikšmę tik tada, kuomet į visus įėjimus paduodama vieneto reikšmė; kitu atveju išėjime esti vieneto reikšmė. - Tai labai populiarūs elementai, nes įvairiai juos jungiant galima gauti IR, ARBA, NE elementus ar bet kurią kitą loginę funckiją. 43 pav. Loginis elementas IR – NE (NAND)grafinis ţymėjimas 12 lentelė. Loginio elemento IR – NE (NAND)Reikšmių lentelė: x y ÷ (x . y) T T K T K T K T T K K T 5. Loginis elementas - Išskirtinis ARBA - Elementas Išskirtinis ARBA ( XOR / exclusive OR), dar vadinamas palyginimo elementu, paprastai turi du (labai retai daugiau) įėjimų. Dviejų įėjimų 76 elementui išėjimo signalas įgyja nulio reikšmę tik tada, jei abiejų įėjimo signalų reikšmės lygios. Jei įėjimo signalų reikšmės skirtingos (nesvarbu kokios), įšėjime esti loginio vieneto reikšmė. - Tokie elementai gerai tinka lyginimo operacijai. Esant daugiau įėjimų, elemento išėjimo signalas lygus vienetui jei įėjimo signalų, turinčių vienetinį lygį, skaičius yra nelyginis. 44 pav. Loginis elementas Išskirtinis ARBA ( XOR / exclusive OR)grafinis ţymėjimas 13 lentelė. Loginio elemento Išskirtinis ARBA ( XOR / exclusive OR)Reišmių lentelė: x y XOR T T K T K T K T T K K K 6. Loginis elementas – ARBA-NE - Elementas ARBA – NE (NOR) turi du arba daugiau įėjimų. Išėjimo signalas įgyja nulio reikšmę jei į bet kurį įėjimą paduodama vieneto reikšmė. Kitu atveju išėjime turi vieneto reikšmė. 77 45 pav. Loginis elementas Išskirtinis ARBA – NE (NOR) grafinis ţymėjimas 14 lentelė. Loginio elemento ARBA – NE (NOR) Reikšmių lentelė: x y ÷ (x v y) T T K T K K K T K K K T 78 6. LOGINĖS ALGEBROS ELEMENTAI LabVIEW APLINKOJE 6.1. Loginiai veiksmai su pora įvesčių 1. Loginis IR (AND) Apskaičiuoja visų ivesčių loginį IR. Abi įvestys privalo būti Boolean tipo kintamieji arba skaitinės reikšmės. Jeigu abi įvestys yra TIESA (TRUE), tada funkcija grąţina tiesos reikšmę, kitu atveju KLAIDOS (FALSE) reikšmę. 46 pav. Loginis IR (AND) 47 pav. x.and.y? – tai x bei y loginis IR x – privalo būti Boolean kintamasis ar skaitinė vertė. Tai taip pat gali būti ir skaliaras, masyvas ar grupelė skaitmenų arba Boolean kintamųjų ir t.t. y - privalo būti Boolean kintamasis ar skaitinė vertė. Tai taip pat gali būti ir skaliaras, masyvas ar grupelė skaitmenų arba Boolean kintamųjų ir t.t. Reikšmių lentelė: x y x .and. y? T T T T K K 79 K T K K K K 2. Loginis ARBA (OR) Apskaičiuoja loginį ARBA (OR) visų įvesčių. Abi įvestys turi būt Boolean tipo kintamieji arba skaitinės reikšmės. Jeigu abi įvestys turi KLAIDOS (FALSE) reikšmes, tai funkcija grąţina KLAIDOS reikšmę. 48 pav. Loginis ARBA (OR) 49 pav. x.or.y? – tai yra x bei y loginis ARBA. x – privalo būti Boolean kintamasis ar skaitinė vertė. Tai taip pat gali būti ir skaliaras, masyvas ar grupelė skaitmenų arba Boolean kintamųjų ir t.t. y - privalo būti Boolean kintamasis ar skaitinė vertė. Tai taip pat gali būti ir skaliaras, masyvas ar grupelė skaitmenų arba Boolean kintamųjų ir t.t. Reikšmių lentelė: x y x .or. y? T T T T K T K T T K K K 80 3. Išskirtinis ARBA (exclusive OR/XOR) Apskaičiuoja grieţtą (XOR) visų įvesčių ARBA. Abi įvestys turi būti Boolean kintamųjų tipų. Jeigu ai įvestys yra TIESA, arba abi KLAIDA, funkcija grąţina klaidos reikšmę. Kitu atveju funkcija grąţina TIESOS reikšmę. 50 pav. Išskirtinis ARBA (exclusive OR/XOR) x.or.y? – tai yra x bei y loginis ARBA. x – privalo būti Boolean kintamasis ar skaitinė vertė. Tai taip pat gali būti ir skaliaras, masyvas ar grupelė skaitmenų arba Boolean kintamųjų ir t.t. y - privalo būti Boolean kintamasis ar skaitinė vertė. Tai taip pat gali būti ir skaliaras, masyvas ar grupelė skaitmenų arba Boolean kintamųjų ir t.t. Reikšmių lentelė: x y x .and. y? T T K T K T K T T K K K 81 4. NE (NOT) Apskaičiuoja loginį įvesties paneigimą. Jeigu x yra KLAIDA (FALSE), funkcija grąţina TIESOS (TRUE) reikšmę. Jeigu x yra TIESA, funkcija grąţina KLAIDOS reikšmę. 51 pav. NE (NOT) .not. x? – tai yra loginis x paneigimas. x – gali būti skaliarinė Boolean kintamojo ar skaitinė vertė, masyvas ar grupelė Boolean kintamųjų verčių ar skaičių ir t.t. Reikšmių lentelė: x .not. x? K T T K 5. IR - NE (NOT AND) Apskaičiuoja loginį visų įvesčių IR paneigimą (NAND) . Abi įvestys turi būti Boolean tipo kintamieji arba skaitinės reikšmės. Jeigu abi įvestys yra TIESA (TRUE), tada funkcija graţins KLAIDOS (FALSE) reikšmę. Kitu atveju bus grąţinama TIESOS reikšmė. 82 52 pav. IR - NE (NOT AND) .not. (x .and. y)? – tai yra loginis x IR y paneigimas. x – privalo būti Boolean kintamasis ar skaitinė vertė. Tai, taip pat, gali būti ir skaliaras, masyvas ar grupelė skaitmenų arba Boolean kintamųjų ir t.t. y - privalo būti Boolean kintamasis ar skaitinė vertė. Tai, taip pat, gali būti ir skaliaras, masyvas ar grupelė skaitmenų arba Boolean kintamųjų ir t.t. Reikšmių lentelė: x y x .not. (x .and. y)? T T K T K T K T T K K T 6. ARBA - NE (NOT OR) Apskaičiuojamas loginis visų įvesčiu ARBA (NOR) paneigimas. Abi įvestys turi būti Boolean tipo kintamieji arba skaitinės reikšmės. Jei abi įvestys yra KLAIDA (FALSE), tada funkcija grąţina TIESOS (TRUE) reikšmę. Kitu atveju grąţina KLAIDOS reikmšmę. 83 53 pav. ARBA - NE (NOT OR) x. (x .xor. y)? – tai yra x bei y loginis ARBA (OR) ir loginis x paneigimas. x – privalo būti Boolean kintamasis ar skaitinė vertė. Tai, taip pat, gali būti ir skaliaras, masyvas ar grupelė skaitmenų arba Boolean kintamųjų ir t.t. y - privalo būti Boolean kintamasis ar skaitinė vertė. Tai, taip pat, gali būti ir skaliaras, masyvas ar grupelė skaitmenų arba Boolean kintamųjų ir t.t. Reikšmių lentelė: x y .not. (x .or. y)? T T K T K K K T K K K T 7. NE išskirtinis ARBA (NE exclusive OR/ NOR XOR) Apskaičiuoja visų įvesčių grieţto ARBA (XOR) loginį paneigimą . Abi įvestys turi būti Boolean tipo kintamieji arba skaitinės reikšmės. Jeigu abi įvestys yra TIESA (TRUE) arba abi įvestys yra KLAIDA (FALSE), tada fuknkcija grąţina TIESOS reikšmę. Kitu atveju grąţinama KLAIDOS reikšmė. 84 54 pav. NE išskirtinis ARBA (NE exclusive OR/ NOR XOR) x. (x .xor. y)? – tai yra x bei y loginis ARBA (OR) ir loginis x paneigimas. x – privalo būti Boolean kintamasis ar skaitinė vertė. Tai, taip pat, gali būti ir skaliaras, masyvas ar grupelė skaitmenų arba Boolean kintamųjų ir t.t. y - privalo būti Boolean kintamasis ar skaitinė vertė. Tai, taip pat, gali būti ir skaliaras, masyvas ar grupelė skaitmenų arba Boolean kintamųjų ir t.t. Reikšmių lentelė: x y .not. (x .xor. y)? T T T T K K K T K K K T 8. Implikacija (Implies) Paneigia x ir tada suskaičiuoja y loginį ARBA (OR) ir paneigtą x. Abi įvestys turi būti Boolean tipo kintamieji arba skaitinės reikšmės. Jeigu x yra TIESA (TRUE), o 85 y yra KLAIDA (FALSE), funkcija grąţina KLAIDOS reikšmę. Kitu atveju, grąţinama TIESOS reikmė. 55 pav. Implikacija (Implies) x.implies.y? – tai yra x bei y loginis ARBA (OR) ir loginis x paneigimas. x – privalo būti Boolean kintamasis ar skaitinė vertė. Tai, taip pat, gali būti ir skaliaras, masyvas ar grupelė skaitmenų arba Boolean kintamųjų ir t.t. y - privalo būti Boolean kintamasis ar skaitinė vertė. Tai, taip pat, gali būti ir skaliaras, masyvas ar grupelė skaitmenų arba Boolean kintamųjų ir t.t. Reikšmių lentelė: x y x .implies. y? T T T T K K K T T K K T 6.2. Loginiai veiksmai su masyvais 86 1. Loginis masyvo IR (AND array elements) Grąţina TIESOS (TRUE) reikšmę, jei visi elementai loginiame masyve (Boolean array) yra tiesa arba jei šis masyvas yra tuščias. Kitu atveju funkcija grąţina KLAIDOS (FALSE) reikšmę. Ši funkcija apdoroja betkokio dydţio masyvą , tačiau grąţina tik vieną reikšmę. 56 pav. Loginis masyvo IR (AND array elements) Boolean tipo kintamųjų masyvas gali būti betkokio dydţio. Loginis IR perduoda signalą, jei visi Boolean tipo masyvo kinatmieji turi TIESOS reikšmę. 2. ARBA masyvo elemantai (OR array elements) Grąţinama KLAIDOS (FALSE) reišmė, jei visi elementai Boolean tipo kintamųjų masyve turi KAIDOS reikšmę arba je visi Boolean tipo kinatmųjų masyvas yra tusčias. Kitu atveju, fukcija grąţinam TIESOS (TRUE) reikšmę. Ši funkcija priima bet kokio dydţio masyvą, tačiau grąţina tik vieną reikšmę, kuri remiasi visomis Boolean masyvo reikšmėmis. 57 pav. ARBA masyvo elemantai (OR array elements) 58 pav. 87 Boolean tipo kintamųjų masyvas gali būti betkokio dydţio. Loginis IR perduoda signalą, jei visi Boolean tipo masyvo kinatmieji turi KLAIDOS reikšmę. 3. Iš Skaičiaus į Boolean masyvą (Number to Boolean array) Paverčia svaikąjį skaičių arba fiksuoto taško (fixed-point) skaičių į Boolean tipo kintamųjų masyvą. - Jeigu sveikasis skaičius yra prijungiamas kaip skaitmuo (number), tada Boolean tipo masyvas grąţina masyva iš 8, 16, 32, 64 elementų. Tai priklauso bitų skaičiaus sveikąjame skaičiuje. - Jeigu fiksuoto taško skaičius yra prijungiamas kaip skaitmuo, tada masyvo dydis, kurį grąţina Boolean tipo masyvas, yra ţodţio ilgio. 59 pav. Iš Skaičiaus į Boolean masyvą (Number to Boolean array) Skaitmuo (number) turi būti skaičius. Boolean tipo masyvas (Boolean array) gali turėti 8, 12, 32, 64 elementus, jei skaitmuo (number) yra sveikasis skaičius. Jeigu skaitmuo yra fiksuoto taško, tada Boolean tipo masyvas gali turėti tarp 1 ir 64 elementų. 4. Boolean masyvas į skaičių (Boolean array to number) 88 Funkcija paverčia Boolean tipo masyva į sveikajį arba fiksuoto taško (fixed- point) skaičių, suprasdama masyva kaip dvejetainių skaičių kodą, kuris nusako skaičių. Pavzdziui, jeigu prie šios funkcijos yra prijungiamas masyvas, kuris turi du Boolean tipo kintamuosius, ir nei vieno kintamojo reikšmė nėra TIESA (TRUE), tada funkcija grąţina 0. Jeigu pirmoji masyvo reikšmė yra TIESA, funkcija grąţina 1. Jeigu antroji masyvo reikšmė yra TIESA, funkcija grąţina 2 ir jeigu abi masyvo ir, jeigu abi funkcijos reikšmės yra TIESOS, funkcija grąţina 3. 60 pav. Boolean masyvas į skaičių (Boolean array to number) Skaitmuo (number) yra sveikasis skaičius arba fiksuoto taško(fixed-point) skaičius. Boolean tipo masyvas (Boolean array) yra vienmatis Boolean kitamųjų reikšmių masyvas. Ši funkcija sutrumpina Boolean tipo masyva, jeigu jis yra pernelyg ilgas ir padidina jį su Boolean KLAIDOS bitais, jeifu Boolean tipo kintamųjų masyvas pernelyg trumpas. Galima panaikinti pagal nutylėjimą esančius parametrus, keičiant išėjimo parametrus per Properties. 5. Boolean į (0,1) (Boolean to (0,1) Paverčia Boolean kintamojo įvesties TIESOS (TRUE) arba KLAIDOS (FALSE) reišmė į 16 bitų sveikąjį skaičių su reikšme 0 arba 1 nurodyta tvarka. 89 61 pav. Boolean į (0,1) (Boolean to (0,1) Boolean kintamasis gali būti skaliaras, masyvas arba grupelė skaitmenų ar Boolean kintamųjų ir t.t. 0, 1 yra 0, jeigu Boolean reikšmė yra KLAIDA ir 1,jeigu Boolean yra TIESA. 6.3. Kiti loginiai veiksmai 1. KLAIDOS konstanta (FALSE constant) Konstanta naudojama, kad suteikti KLAIDOS reikšmę schemos daliai. 2. TIESOS konstanta (TRUE constant) Konstanta naudojama suteikti klaidos reikšmę schemos daliai. 3. MIŠRIOJI aritmetika (COMPOUND arithmethics) Atlieka artimetinius veiksmus su įvairiomis įvestimis : vienu arba daugiau skaitmenų, masyvų, skaičiu grupių, Boolean tipo kintamaisiais. Norimą atlikti operaciją (sudėtį (add), daugybą (multiply), loginius veiksmus IR (AND), ARBA (OR), grieţtą ARBA (XOR)) pasirenkame paspaudami dešiniu pelės klavišu ant ikonos ir pasirinkdami Change Mode iš sparčiojo meniu. Pasirenkant šią funkciją iš Skaitmeninės paletės (Numeric palette) numatytasis yra sudėties reţimas. 90 Pasirenkant šią funkciją iš Loginių reikšmių paletės (Boolean palette) numatytasis yra ARBA reţimas. 62 pav. MIŠRIOJI aritmetika (COMPOUND arithmethics) Reikšmė 0..n-1 (value 0..n-1) gali būti skaičius arba Boolean reikšmė, skaičių arba Boolean reikšmių masyvas, grupė skaitmenų, grupės skaitmenų masyvas ir t.t. Jeigu įvestis yra signalas, galima turėti neribotą kiekį įvairau dydţio skaliarinės formos įvesčių. Rezultatas (result) grąţinamas priklausomai nuo pasirinktos operacijos visoms reikšmėms. Operacijos IR (AND), ARBA (OR), grieţtas ARBA (XOR), rezultatas grąţina bitines operacijas skaitinėms įvestims ir logines operacijas Boolean tipo įvestims. Papildomų įvesčių galime pridėti kiek norime. Jas pridedame spragtėldami dešiniu pelės klavišu ant atskirų išėjimų ir pasirinkdami Perversti (Invert) sparčiąjame meniu. - Sudėties operacijai Perverti pasirenkamas, kad paneigti įvestį arba išėjimą. - Daugybos operacijai Pervesti pasirenkamas, kad būtų naudojamos atvirkšinės įvesties arba pateikiamos atvirktinės išėjimo reikšmės. 91 - IR, ARBA, grieţtam ARBA operacijoms Perversti pasirenkamas bitiniam papildymui sveikuoju skaičiu įvestyje ar išėjime arba logiškai paneigti įvestį ar išėjimą. Kai naudojame funkcijos Mišriosios aritmetikos operaciją gieţtąjį ARBA su 3 ar daugiau įvesčių, pirmiausia operacija yra atliekami su pirmomis dviem įvestimis. Po to, operacija atliekama su pirmosios poros rezutatu ir trečia įvestimi. Šios poros rezultatas yra naudojamas atliekant operaciją su ketivrtąją įvestimi. Operacijos atliekamos tol kol sutvarkomos visos įvestys. Šios funkcijos negalima naudoti su racionaliais skaitmenimis. Jeigu tokie skaičiai prijungiami programa nepasileis, bus rodomas lauţytas Paleisti (Run) ţenkliukas. Pratimas Nr.4 Pasinaudojant LabVIEW 2010 programine įranga sukonstruoti loginius elenentus ir įsitikinti jų veikimą (riamentis pateiktu pavyzdţiu). 92 93 7. KOMBINACINĖS LOGINĖS SCHEMOS Kombinacinės loginės schemos - tai schemos be atminties, automatai su nuline atmintimi, arba nulinės eilės automatai, kurių išėjimų signalus vienareikšmiškai nustato tuo metu veikiantys signalai šių schemų įėjimuose. Kartais vartojami "kombinatorinių schemų" arba "kombinatorikos" terminai. Angliškas terminas – combinational logic. 7.1. Kombinacinių loginių schemų projektavimo etapai Kombinacinės loginės schemos paprastai projektuojamos tokia tvarka: 1. Sudaromas ţodinis projektuojamo įtaiso veikimo aprašymas kalba, panašia į tas kalbas, kuriomis rašomos programos: ‖jeigu ... , tai", "o jeigu ... , ir ... , arba ... ir ... , tai... ". 2. Įvardijami loginiai kintamieji ir loginės funkcijos. 3. Pagal ţodinį aprašymą sudaroma loginės funkcijos, kurią turi vykdyti projektuojama schema, reikšmių lentelė. 4. Remiantis reikšmių lentele, uţrašoma loginės funkcijos išraiška. 5. Uţrašytoji loginės funkcijos išraiška minimizuojama. 6. Sudaroma minimizuotą funkciją vykdanti loginė schema. Kombinacinės loginės schemos sudarymą pradėsime tarę, kad jau ţinome schemos vykdomą loginę funkciją, uţrašytą minimaliu sandaugų sumos (SAS) pavidalu. 1. Sudaromas signalų sąrašas ir uţrašoma loginės funkcijos darbinė išraiška. 2. Išdėstomi loginę funkciją vykdantys loginiai elementai. 3. Nurodoma inversija loginių elementų įėjimuose. 7.2. Dvejetainiai sumatoriai 94 Paprasčiausias dvejetainių skaičių sumatorius (angl. – binary adder) skirtas vienaskilčiams ţemiausios nulinės skilties skaičiams sumuoti, dar vadinamas pussumatoriumi (angl. – half adder). Jis turi du įėjimo signalus – sumuojamus nulinėje skiltyje skaičius a0 ir b0 – ir du išėjimo signalus – sumą nulinėje skiltyje S0 ir perkeliamo iš nulinės skilties vieneto signalą COUT0 (iš angl. carry – perkelti). 15 lentelė. Pussumatoriaus reikšmių lentelė Standartine sandaugų sumos išraiška: S0 = a0· b0 + a0· b0; COUT0 = a0· b0 .(šios loginių funkcijų išraiškos jau yra minimalios) S0 1. S0, a0, b0; COUT0 1. COUT0, a0, b0; S0 = a0· b0 + a0· b0; COUT0 = a0 · b0 . 2.S0 = a0· b0 + a0· b0; 2.COUT0 = a0 · b0 . 3.1 0 1 1 0 3. 1 1 1 Logines schemos, realizuojančios šias lygtis 63 pav. Pussumatoriaus loginės schemos a0 b0 S0 COUT0 0 0 0 0 0 1 1 0 1 0 1 0 1 1 0 1 COUT0 S0 & b0 a0 >1 & b0 a0 & b0 a0 95 64 pav. Pussumatoaus grafiniai ţymenys Vienetus ir nulius nurodysime inversiją schemos loginių elementų įėjimuose. Vienetai rodo, kad ką tik sudarytoje loginėje schemoje nieko keisti nereikia, nuliai rodo, kad atitinkamame loginio elemento įėjime reikia įrašyti inversijos ţenklą. 65 pav. Pilnojo sumatoriaus išėjimo funkcijų S1 (a) ir COUT1 (b) Karno diagramos lentelė Pilnasis sumatorius (angl. – full adder), sumuojantis bet kurios i-tosios skilties du dvejetainius skaičius, turi tris įėjimus: sumuojamų skaičių a i ir b i bei iš ţemesniosios (i – 1)-osios skilties keliamojo vieneto CIN i = COUT i–1 . Kaip ir pussumatorius, taip ir pilnasis sumatorius turi du išėjimus: sumos i-oje skiltyje S i ir iš i-tosios skilties keliamojo vieneto signalo COUT i . 16 lentelė. Pirmosios skilties pilnojo sumatoriaus reikšmių lentelė CIN1 a 1 b 1 S 1 COUT1 0 0 0 0 0 0 0 1 1 0 H HA A b b0 0 a a0 0 C CO OU UT T0 0 S S0 0 C CR R S S0 0 H HA A 0 1 S1 CIN1 a1b1 00 01 11 10 1 1 1 1 p3 p1 0 1 COUT1 CIN1 a1b1 00 01 11 10 p2 1 1 1 1 1 a b 96 0 1 0 1 0 0 1 1 0 1 1 0 0 1 0 1 0 1 0 1 1 1 0 0 1 1 1 1 1 1 Išėjimo funkcijos S1 Karno diagramoje yra tik pavieniai vienetai uţrašyti, remiantis reikšmių lentele. Šios funkcijos standartinis sandaugos suma (minimali): S1 = CIN1· a1· b1 + CIN1· a1· b1 + CIN1· a1· b1 + CIN1· a1· b1 COUT1 = p1 + p2 + p3 = a1· b1 + CIN1 · b1 + CIN1· a1 Pilnojo sumatoriaus schemą: S1 1. S1, CIN1, a1, b1 ; S1 = CIN1· a1· b1 + CIN1· a1· b1 + CIN1· a1· b1 + CIN1· a1· b1. 2. S1 = CIN1· a1· b1 + CIN1· a1· b1 + CIN1· a1· b1 + CIN1· a1· b1. 3. 1 0 0 1 0 1 0 1 0 0 1 1 1 COUT1 1. COUT1, CIN1, a1, b1 ; COUT1 = a1· b1 + CIN1 · b1 + CIN1· a1. 2. COUT1 = a1· b1 + CIN1 · b1 + CIN1· a1. 3. 1 1 1 1 1 1 97 66 pav. Pirmosios skilties pilnojo sumatoriaus loginės schemos 67 pav. Pilnojo sumatoriaus grafinių ţymenų variantai Nuosekliai jungdami pussumatorių ir aukštesniųjų skilčių pilnuosius sumatorius, galime sudaryti nuoseklųjį sumatorių, sumuojantį dvejetainius skaičius su bet kokiu norimu skilčių skaičiumi. Pussumatoriaus išėjimo signalas COUT0 vėluoja jo įėjimo signalų atţvilgiu vieno loginio elemento vėlinimo laiku t v . Visi kiti pussumatoriaus ir pilnųjų sumatorių išėjimo signalai vėluoja jų įėjimo signalų atţvilgiu dviejų loginių elementų vėlinimo laiku 2t v , nes visi įėjimo signalai turi praeiti per du nuosekliai sujungtus loginius elementus. Vadinasi, didėjant daugiaskilčio nuosekliojo sumatoriaus skilčių skaičiui, tolygiai auga aukštesniųjų skilčių išėjimo signalų vėlinimo laikai. Tai – esminis daugiaskilčio nuosekliojo sumatoriaus trūkumas. b1 a1 CIN1 & b1 a1 CIN1 & b1 a1 CIN1 & S1 b1 a1 CIN1 & >1 CIN1 a1 CIN1 COUT1 & b1 a1 >1 & b1 & S S COUT CIN b FA a CR FA 98 68 pav. Nuosekliojo sumatoriaus funkcinė schema Tolygiai augančio vėlinimo laiko prieţastis – keliamojo vieneto signalas, kuris yra vienas iš pilnojo sumatoriaus sumuojamų dėmenų. Lygiagretusis daugiaskiltis sumatorius keliamojo vieneto signalus formuoja tik iš tuo metu veikiančių visų skilčių įėjimo signalų, praėjusių ne daugiau kaip per tris nuosekliai sujungtus loginius elementus. 7.3. Dvejetainiai atėmikliai Dvejetainiai atėmikliai (angl. – binary subtractor) – įtaisai, tiesiogiai atliekantys dvejetainių skaičių atimties veiksmus. Vienaskilčiams dvejetainiams skaičiams atimti pakanka pusatėmiklio (angl. – half subtractor). FA2 FA1 HA0 b1 a1 b0 a0 CIN1 S1 COUT1 S0 COUT0 b2 a2 CIN2 S2 COUT2 · · · 1t v 2t v 3t v 3t v 5t v 5t v 99 17 lentelė. Pusatėmiklio reikšmių lentelė a0 b0 DIF0 BOUT0 a0 0 0 0 0 0 0 1 1 1 0 1 0 1 0 1 1 1 0 0 1 Pusatėmiklio loginės schemos sudarymas: DIF0 1. DIF0, a0, b0; BOUT0 1.BOUT0, a0, b0; DIF0 = a0· b0 + a0· b0 BOUT0 = a0· b. 2. DIF0 = a0· b0 + a0· b0 2. BOUT0 = a0· b0 3. 1 0 1 1 0 3. 1 0 1 69 pav. Pusatėmiklio loginės schemos 70 pav. Pilnojo atėmiklio išėjimo funkcijos BOUT1 Karno diagrama 0 1 00 01 11 10 1 1 1 1 BIN1 a1 b1 BOUT1 p1 p2 p3 >1 DIF0 & b0 a0 & b0 a0 BOUT0 & b0 a0 100 Pilnasis atėmiklis (angl. – full subtractor) – įtaisas, atimantis bet kurios i- osios skilties dvejetainius skaičius. Kaip ir pilnasis sumatorius, taip ir pilnasis atėmiklis turi tris įėjimo signalus: ateinančio iš ţemesnės skilties skolinamojo vieneto, turinio ir atėminio. 18 lentelė. Pirmosios skilties pilnojo atėmiklio reikšmių lentelė BIN1 a1 b1 DIF1 BOUT 1 0 0 0 0 0 0 0 1 1 1 0 1 0 1 0 0 1 1 0 0 1 0 0 1 1 1 0 1 0 1 1 1 0 0 0 1 1 1 1 1 (DIF1 = a1 – b1 – BIN1, o vienetas išėjime BOUT1 reiškia, kad prie a1 pridedame 2) Suprastinama antroji išėjimo funkcija BOUT1 iš Karno diagramos: BOUT1 = p1 + p2 + p3 =a1·b1 + BIN1· a1 + BIN1· b1. 1. BOUT1, BIN1, a1, b1 ; BOUT1 = a1· b1 + BIN1· a1 + BIN1· b1 2.BOUT1 = a1· b1 + BIN1· a1 + BIN1· b1 3. 1 0 1 1 0 1 1 101 71 pav. Pilnojo atėmiklio skolinamojo vieneto signalą formuojanti schema 72 pav. Pusatėmiklio ir pilnojo atėmiklio grafiniai ţymenys 7.4. Dvejetainiai komparatoriai Dvejetainiai komparatoriai palygina du dvejetainius skaičius A ir B ir sukuria loginio vieneto signalą viename iš trijų išėjimų: arba išėjime A < B, arba išėjime A = B, arba išėjime A > B. Kituose dviejuose komparatoriaus išėjimuose tuo metu būna loginio nulio signalai. Puskomparatoriai, kaip ir pussumatoriai bei pusatėmikliai, atlieka veiksmus su vienaskilčiais dvejetainiais skaičiais ţemiausioje nulinėje skiltyje, pilnieji komparatoriai – aukštesnėse skiltyse. BOUT1 BIN1 b1 BIN1 & b1 a1 >1 & a1 & DIF B a DIF DIF BOUT FS b BIN b0 BOUT B DIF HS a0 102 19 lentelė. Dvejetainio puskomparatoriaus reikšmių lentelė a0 b0 a0< b0 a0= b0 a0> b0 0 0 0 1 0 0 1 1 0 0 1 0 0 0 1 1 1 0 1 0 Pilnasis n-osios skilties komparatorius turi penkis įėjimus: į tris jo įėjimus ateina ţemesnės (n – 1)-osios skilties pilnojo komparatoriaus išėjimų signalai, į likusius du įėjimus – lyginamų dvejetainių skaičių A ir B n-osios skilties skaitmenys a n ir b n . Pilnasis komparatorius, kaip ir puskomparatorius, turi tris išėjimus. Pilnojo n-osios skilties komparatoriaus išėjimai yra šitokie: a n ... a1a0 < b n ... b1b0, a n ... a1a0 = b n ... b1b0, a n ... a1a0 > b n ... b1b0 (sutrumpintai šiuos išėjimus toliau ţymėsime tik ţenklais < , = , >) 20 lentelė. Pirmosios skilties pilnojo dvejetainio komparatoriaus reikšmių lentelė, Nerealūs loginių įėjimų kintamųjų deriniai, sukuriantys nereikšmingas loginių išėjimo kintamųjų kombinacijas, yra apvesti. a0< b0 (< IN) a0= b0 (= IN) a0> b0 (> IN) a1 b1 < = > 0 0 0 0 0 x x x 0 0 0 0 1 x x x 0 0 0 1 0 x x x 0 0 0 1 1 x x x 0 0 1 0 0 0 0 1 0 0 1 0 1 1 0 0 0 0 1 1 0 0 0 1 0 0 1 1 1 0 0 1 0 1 0 0 0 0 1 0 103 0 1 0 0 1 1 0 0 0 1 0 1 0 0 0 1 0 1 0 1 1 0 1 0 0 1 1 0 0 x x x 0 1 1 0 1 x x x 0 1 1 1 0 x x x 0 1 1 1 1 x x x 1 0 0 0 0 1 0 0 1 0 0 0 1 1 0 0 1 0 0 1 0 0 0 1 1 0 0 1 1 0 0 0 1 0 1 0 0 x x x 1 0 1 0 1 x x x 1 0 1 1 0 x x x 1 0 1 1 1 x x x 1 1 0 0 0 x x x 1 1 0 0 1 x x x 1 1 0 1 0 x x x 1 1 0 1 1 x x x 1 1 1 0 0 x x x 1 1 1 0 1 x x x 1 1 1 1 0 x x x 1 1 1 1 1 x x x Daugelis įrašytų į lentelę ţemesnės skilties komparatoriaus išėjimo signalų yra tokie, kurių ir būti negali: a0 vienu metu nebus ir ne maţesnis, ir nelygus, ir ne didesnis kaip b0. Tokių nelogiškų ţemesnės skilties komparatoriaus išėjimo signalų lentelėje esti ir daugiau. Visi jie – nereikšmingi loginių kintamųjų deriniai, 104 kurie sukuria nereikšmingą išėjimo signalą, vadinamą signalu x – don't care output. Visose pozicinėse skaičiavimo sistemose kiekvienos aukštesnės skilties vertė yra didesnė uţ visų ţemesnių skilčių verčių sumą. Pavyzdţiui, jei a1 > b1, tai visai nesvarbu, kokie yra a0 ir b0; galime būti tikri, kad šiuo atveju a1a0 > b1b0. Įvertinti ţemesnės skilties išėjimo signalą reikia tada ir tik tada, kai aukštesnės skilties signalai esti lygūs. Vadinasi, ir daugiaskilčio komparatoriaus aukštesniajai n-ajai skilčiai informacija iš ţemesnės kaip n – 1 skilties tiesiogiai nereikalinga. Ji reikalinga tik tam, kad nustatytų n – 1 skilties signalą. Loginės funkcijos išraišką: < = p1 + p2 + p3 = a1· b1 + < IN · a1 + < IN · b1 7.5. Kodo keitikliai Skaičiavimo sistemas ir kodus daţnai tenka keisti, pavyzdţiui, dvejetainį kodą – Grėjaus, aštuonetainiu, arba kuriuo nors dvejetainiu-dešimtainiu ar kitu kodu. Taigi kodų keitimo variantų esti daug ir įvairių. Kodus keičiantis įtaisas vadinamas kodo keitikliu (angl.– code converter). Kodo keitiklių schemos sudaromos taip pat, kaip ir kitų kombinacinės logi- kos įtaisų schemos. Pirmiausiai uţpildoma kodo keitiklio reikšmių lentelė. Šioje lentelėje keičiamo kodo skiltys yra kodo keitiklio įėjimai, o pakeistojo – išėjimai. 00 01 11 10 IN a1 b1 00 x x x x 0 1 0 0 0 1 0 0 x x x x 01 11 10 < p2 01 11 10 00 01 11 10 IN a1 b1 00 x x x x 0 1 0 0 0 1 0 0 x x x x p1 p3 105 73 pav. Komparatoriaus pirmojo išėjimo loginės funkcijos Karno diagrama Pagal reikšmių lentelę uţrašytos kodo keitiklio realizuojamos loginės funkcijos minimizuojamos, paprastai taikant Karno diagramas. Po to sudaromos loginės schemos, vykdančios šias minimizuotas funkcijas. 21 lentelė. Dvejetainių-dešimtainių kodų keitiklio "SP3 į 8421" reikšmių lentelė. (dvejetainį-dešimtainį kodą (DDK) su pertekliumi 3 (SP3) keitimas į natūralųjį DDK, vadinamą kodu 8421) DS SP3 8421 IN3 IN2 IN1 I N0 F3 F2 F1 F0 0 0 0 1 1 0 0 0 0 1 0 1 0 0 0 0 0 1 2 0 1 0 1 0 0 1 0 3 0 1 1 0 0 0 1 1 4 0 1 1 1 0 1 0 0 5 1 0 0 0 0 1 0 1 6 1 0 0 1 0 1 1 0 7 1 0 1 0 0 1 1 1 8 1 0 1 1 1 0 0 0 9 1 1 0 0 1 0 0 1 1 1 0 1 x x x x 106 1 1 1 0 x x x x 1 1 1 1 x x x x 0 0 0 0 x x x x 0 0 0 1 x x x x 0 0 1 0 x x x x Kodu SP3, kaip ir kodu 8421, uţrašo dešimtainius simbolius keturiose dvejetainėse skiltyse. Šis kodas sudaromas prie kiekvieno dešimtainį simbolį atitinkančio skaičiaus pridedant 3. Angliškai šis kodas vadinamas XS3 (Excess 3) kodu. Teigiama šio kodo ypatybė – nė vienas dešimtainis simbolis šiuo kodu nevaizduojamas nei keturių nulių, nei keturių vienetų rinkiniu, kadangi šios kombinacijos kartais tampa trikdţių arba klaidų loginėse schemose prieţastimis. 74 pav. Kodo keitiklio išėjimo funkcijų F1 (a), F2 (b) ir F3 (c) Karno diagramos Lentelėje įėjimai – keturios kodo SP3 skiltys – paţymėti simboliais IN, išėji- mai – keturios kodo 8421 skiltys – simboliais F. DDK deriniai, atvaizduojantys didesnius kaip 9 dešimtainius skaičius, yra nereikšmingos loginių kintamųjų kombinacijos, lentelės išėjimų stulpeliuose paţymėtos simboliu x. Loginė išėjimo funkcija F0 yra įėjimo funkcijos IN0 inversija. Kitų trijų loginių išėjimo funkcijų minimalios išraiškos randamos taikant Karno diagramas: b a IN3 IN2 IN1 IN0 00 01 11 10 00 x x x F3 01 p1 11 1 x x x 10 1 p2 IN3 IN2 IN1 IN0 00 01 11 10 00 x x x F1 01 1 1 11 x x x 10 1 1 p1 p2 IN3 IN2 IN1 IN0 00 01 11 10 00 x x x F2 01 1 p3 11 x x x 10 1 1 1 p1 p2 c 107 F0 = IN0 , F1 = IN0·IN1 + IN0·IN1; F2 = IN0·IN2 + IN1·IN2 + IN0·IN1·IN2; F3 = IN2·IN3 + IN0·IN1·IN3 75 pav. DDK keitiklio "SP3 į 8421" loginės schemos 76 pav. Keturių skilčių kodo keitiklio grafinis ţymuo 7.6. Šifratorius Šifratorius (angl. - encoder arba coder) – tai kombinacinė loginė schema, keičianti signalą viename iš n įėjimų m išėjimų signalų deriniu – kodu. Kitaip tariant, kiekvienas išėjimo signalų derinys atitinka vieną įėjimo signalą. Jei išėjimų skaičius yra m, galima sukurti ne daugiau kaip 2 m skirtingų kodų, IN1 & & >1 IN3 IN0 IN3 IN2 IN1 IN0 IN1 IN1 IN0 IN1 IN2 IN1 IN0 IN2 IN1 IN2 IN0 IN0 & 1 F0 & & >1 F1 & & F1 & >1 F2 & & & & F1 F3 & 0 1 2 3 0 1 2 3 XS3 CC BCD IN0 IN1 IN2 IN3 F0 F1 F2 F3 108 vadinasi, įėjimų skaičius n negali būti didesnis kaip 2 m . Galima ir atvirkščia formuluotė: šifratorius su n įėjimų turi turėti ne maţiau kaip m išėjimų: 2 m > n . Paprastai pasirinktu laiko momentu signalas gali būti tik viename šifratoriaus įėjime. Jei ši sąlyga netenkinama, nustatomas įėjimų prioritetas, pavyzdţiui, laiko atţvilgiu – šifratorius priima tik tą signalą, kuris ateina pirmiausia (taip veikia kompiuterio klaviatūros šifratorius), arba vienas iš įėjimų laikomas pačiu svarbiausiu, kitas – maţiau svarbiu ir šitaip nustatoma visų likusių įėjimų svarbu- mo eilė. Šifratorius, kurio įėjimų ir išėjimų skaičius sieja lygybė n = 2 m , vadina- mas pilnuoju šifratoriumi. Labai daţnai naudojami šifratoriai, kurių 2 m > n. Jie vadinami nepilnaisiais. Tipiškas nepilnojo šifratoriaus pavyzdys – telefono klaviatūros šifratorius, koduojantis dvylikos telefono klavišų signalus keturių skilčių dvejetainiu kodu. Kadangi keturioms skiltims reikia m = 4 išėjimų, akivaizdu, kad 2 4 > 12; taigi šis šifratorius yra nepilnasis. Kai telefono klavišas yra nenuspaustas, jį atitinkančiame šifratoriaus įėjime esti aukštas loginis lygis, jei nuspaustas – ţemas. 22 lentelė. Telefono klaviatūros šifratoriaus reikšmių lentelė T elefono Dvejetainis kodas išėjimuose kl avišas W X Y Z IN1 0 0 0 1 IN2 0 0 1 0 IN3 0 0 1 1 IN4 0 1 0 0 IN5 0 1 0 1 IN6 0 1 1 0 IN7 0 1 1 1 109 IN8 1 0 0 0 IN9 1 0 0 1 IN0 1 0 1 0 IN - 1 0 1 1 IN# 1 1 0 0 Tuomet loginės išėjimų funkcijos: W = IN8 + IN9 + IN0 + IN - + IN# . X = IN4 + IN5 + IN6 + IN7+ I N# . Y = IN2 + IN3 + IN6 + IN7+ IN0 + IN - Z = IN1 + IN3 + IN5 + IN7+ IN9 + IN - Šias logines funkcijas realizuoja loginiai elementai ARBA su inversiniais įėjimais: funkcijoms W ir X reikia penkių, Y ir Z – šešių inversinių įėjimų. 77 pav. Telefono klaviatūros šifratoriaus grafinis ţymuo 7.7. Dešifratoriai Dešifratorius (angl. – decoder) atpaţįsta kodinę signalų jo įėjimuose kombinaciją ir sukuria signalą viename tą kodinę kombinaciją atitinkančiame išėjime. Jei dešifratoriaus įėjimų skaičių n ir išėjimų skaičių m sieja lygybė m = 2 n , tai toks dešifratorius vadinamas pilnuoju. Pilnąjį dešifratorių galime laikyti mintermų indikatoriumi. Šią prielaidą patvirtina dešifratoriaus ―iš 3 į 8‖ reikšmių lentelė W X Y Z CD IN1 IN2 IN3 · · · IN0 IN - IN# . . . 110 23 lentelė. Pilnojo dešifratoriaus "iš 3 į 8" reikšmių lentelė 7.8. Demultiplekseriai Įėjimai Išėjimai A B C F7 F6 F5 F4 F3 F2 F1 F0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 1 0 0 0 1 1 0 0 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 0 0 1 0 1 0 0 1 0 0 0 0 0 1 1 0 0 1 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 111 Demultiplekseris (angl. – demultiplexer) – tai įtaisas, kuris ateinančius viena įėjimo linija signalus pagal n skilčių adreso kodą nukreipia į vieną iš 2 n išėjimo linijų. Demultiplekseris – tai kodo keitiklis, keičiantis nuoseklųjį kodą lygiagrečiuoju. Dešifratoriaus su įėjimų leidimu įėjimus A, B ir C laikysime trijų skilčių adreso įėjimais, o į įėjimą EI nukreipsime signalus, kuriuos reikia paskirstyti į išėjimo linijas F0 ... F7, tai toks dešifratorius veiks kaip demultiplekseris. 24 lentelė. Demultiplekserio "iš 1 į 4" reikšmių lentelė IN(EI) S1 S0 F3 F2 F1 F0 0 x x 0 0 0 0 1 0 0 0 0 0 1 1 0 1 0 0 1 0 1 1 0 0 1 0 0 1 1 1 1 0 0 0 D12 IN S0 S1 DX F0 F1 F2 F3 IN S0 S1 DX F0 F1 F2 F3 IN S0 S1 DX F0 F1 F2 F3 D S2 S3 D0 D1 D2 D3 IN S0 S1 DX F0 F1 F2 F3 S0 S1 D13 D15 D14 . . . 112 78 pav. Demultiplekseriai, sujungti piramidiniu pakopiniu būdu Demultiplekserio logines išėjimo funkcijos(jas realizuoja loginiai elementai 3IR.): F0 = E1· S1· S0, F1 = E1· S1· S0, F2 = E1· S1· S0, F3 = E1· S1· S0. Kai reikia daugiau išėjimo linijų, į kurias būtų galima nukreipti įėjimo signalus, tuomet kelis demultiplekserius galime sujungti piramidiniu pakopiniu būdu. Demultiplekseriai – dešifratoriai su įėjimo leidimu – paprastai ţymimi santrumpa DX. Kartais demultiplekseriai ţymimi ir santrumpa DMUX. 79 pav. Demultiplekseris "iš 1 į 4" 7.9. Multiplekseriai Multiplekseris (angl. – multiplexer), arba duomenų selektorius (angl. – data selector), – tai įtaisas, kuris pagal n skilčių adreso kodą atrenka vieną iš 2 n įėjimo linijų ir šia linija ateinančius signalus nukreipia į vieną išėjimo liniją. Multiplekseris – tai kodo keitiklis, keičiantis lygiagretųjį kodą nuosekliuoju. Daţniausiai multiplekseriai turi ir įėjimo leidimo įėjimą. IN S0 S1 DX F0 F1 F2 F3 113 25 lentelė. Multiplekserio "iš 2 į 1" reikšmių lentelė Multiplekserio loginė funkcija: F = p1 + p2 = EI· D1· S0 + EI· D0· S0 . 80 pav. Multiplekserio "iš 2 į 1" išėjimo funkcijos Karno diagrama (a), loginė schema (b) ir grafinis ţymuo (c) Kaip ir demultiplekserius, taip ir nesudėtingus mul- tiplekserius galime jungti nuosekliai piramidiniu pakopiniu būdu; šitaip padidinamas įėjimo linijų skaičius. Ţemiausio lygmens (piramidės pagrindo) multiplekserių išėjimų signalai esti aukštesniojo pramidės lygmens multiplekserių įėjimų signalais. Visi to paties piramidės lygmens multi- plekseriai gauna tų pačių adreso kodo skilčių signalus. 8. LOGINIŲ SIGNALŲ GENERATORIAI EI D1 D0 S0 F 1 x x x 0 0 x 0 0 0 0 x 1 0 1 0 0 x 1 0 0 1 x 1 1 c EI D0 D1 S0 MX F EI D1 D0 S0 00 01 11 10 00 11 F 01 p2 11 10 1 1 1 1 p1 a b F S0 EI S0 D1 N2 EI & >1 & & D0 114 8.1. Multivibratoriai Elektroniniai įtaisai, kuriuos sudaro du varţinio stiprintuvo laipsniai su kryţ- miniu (iš kiekvieno laipsnio išėjimo į kito laipsnio įėjimą) teigiamu grįţtamuoju ryšiu, generuojantys periodinius ir neperiodinius stačiakampės formos įtampų šuolius, vadinami multivibratoriais, arba daugelio daţnių signalų generatoriais. Šis elektroninis įtaisas generuoja tokio daţnio signalą, kuriam tenkinamos ampli- tudţių ir fazių balanso sąlygos: įtaiso ir grįţtamojo ryšio grandies perdavimo koeficientų sandauga lygi vienetui bei fazės pokytis toje grandinėje lygus 2nt, čia n = 0, 1, 2, ... . Multivibratoriai dar vadinami relaksatoriais, nes jie staigiai griūtiškai suformuoja statų impulso frontą, ir po to iki kito fronto, kol lėtai išsikrauna kondensatorius, vaizdţiai tariant, ilsisi, arba relaksuoja. 8.2. Autovirpesių multivibratoriai 115 Kai abiejose grįţtamojo ryšio grandinėse nėra kelio nuolatinei srovei ir tei- giamas grįţtamasis įtampos ryšys sudaromas tik per kondensatorius, tuomet turime nestabilųjį (angl. – astable multivibrator), arba autovirpesių multivibratorių, daţnai vadinamą tiesiog multivibratoriumi. Jis gali būti simetrinis arba asimetrinis. Nestabilusis multivibratorius pats be išorinių paleidimo impulsų keičia būvį, ir kiekviename būvyje išbūna tol, kol tą būvį palaiko persikraunantis kondensatorius, įjungtas į grįţtamojo ryšio grandinę. Tai reiškia, kad nestabilusis multivibratorius formuoja nenutrūkstančią stačiakampių impulsų seką. Kai multivibratorius simetrinis, santykinis impulsų retumas (angl. – duty cycle) generuojamoje sekoje yra 0,5, arba 50%, kitaip tariant, sekos teigiamojo impulso trukmė lygi neigiamojo impulso trukmei – laiko intervalui tarp teigiamų impulsų. 81 pav. Autovirpesių multivibratorius iš diskretinių elementų 82 pav. Kondensatoriaus CB1 įtampa, atsidarius tranzistoriui VT1 +5V R B2 R B1 U B2 VT2 VT1 C2 R K2 U K2 U B1 C1 R K1 U K1 R B2 + 4.3 V – VT2 E K VT1 C B1 E B 116 83 pav. Autovirpesių multivibratoriaus laiko diagramos Schema veikia paeiliui atsidarant vienam ir uţsidarant kitam jos tranzistoriui. Kai VT2 atsidaro, o VT1 uţsidaro, kondensatorius C1 per nedidelę rezistoriaus R K1 varţą ir atvirą tranzistoriaus VT2 bazės-emiterio sandūrą greitai įsikrauna iki įtampos E K – U B2 = 5 – 0,7 = 4,3 V. Ši įtampa kondensatoriuje išlieka tol, kol VT2 yra atviras, o VT1 uţdaras. Kai VT1 atsidaro, tranzistoriaus VT2 bazės-emiterio sandūrą veikia kondensatoriaus C1 įtampa. Ši atgalinė 4,3 V įtampa uţdaro tranzistorių VT2. Kondensatoriui C1 pamaţu išsikraunant per didelę rezistoriaus R B2 varţą jo įtampa sumaţėja tiek, kad atidaro VT2, o kondensatoriaus C2 įtampa uţdaro tranzistorių VT1. Tada jau U K2 +0.2 +5 U B1 +0.7 –4.3 U K1 +0.2 +5 U B1 +0.7 –4.3 R K1 C1 R B2 C1 t 117 per rezistoriaus R B1 varţą lėtai išsikrauna kondensatorius C2, o kondensatorius C1 vėl greitai įsikrauna per maţą rezistoriaus R K1 varţą. 8.3. Laukiantieji mutivibratoriai Kai nuolatinė srovė gali pratekėti tik viena grįţtamojo ryšio grandine, o kitoje nuolatinę srovę nutraukia nuosekliai į tą grandinę įjungtas kondensatorius, turime monostabilųjį multivibratorių (angl. – monostable multivibrator), daţnai vadinamą laukiančiuoju multivibratoriumi. Šie terminai pabrėţia, kad monostabi- lusis multivibratorius vieninteliame stabiliame būvyje būna tol, kol sulaukia palei- dimo signalo: teigiamo įtampos impulso, atidarančio uţdarąjį tranzistorių, arba neigiamo impulso, uţdarančio atvirąjį. Pasibaigus tam impulsui, multivibratorius grįţta į stabilų būvį tik po to, kai persikrauna nuosekliai įjungtas į vieną grįţtamojo ryšio grandinę kondensatorius. Laukiančiojo, arba monostabiliojo, mutivibratoriaus klasikinė schema gau- nama vieną iš kondensatorių pakeitus trumpu jungimu arba nedidelės varţos rezistoriumi. Tarkim, kad rezistoriumi yra pakeistas kondensatorius C2. Tuomet multivibratorius turės vieną stabilų būvį, kuriame tranzistorius VT2 yra atviras, o tranzistorius VT1 – uţdaras. Šis būvis trunka tol, kol į tranzistoriaus VT2 įėjimą nepaduodamas trumpas neigiamas impulsas. Padavus tokį impulsą, VT2 uţsidaro ir aukštas jo kolektoriaus potencialas atidaro tranzistorių VT1. Kondensatoriui C1 išsikrovus per atvirą tranzistorių VT1 ir rezistorių R B2 , atidaromas tranzistorius VT2. Išvardintieji vyksmai suformuoja teigiamą tranzistoriaus VT2 kolektoriaus įtampos impulsą ir grąţina schemą į vienintelį stabilų išeities būvį. Šiame būvyje schema bus tol, kol nebus paduotas kitas tranzistorių VT2 uţdarantis impulsas. 8.4. Paprastieji ţiediniai skaitikliai 118 Paprastieji ţiediniai skaitikliai, arba tiesiog ţiediniai skaitikliai, tai nuoseklie- ji registrai, kuriuose paskutiniosios atminties ląstelės (paskutiniojo trigerio) tie- sioginis išėjimas yra sujungtas su pirmosios atminties ląstelės (pirmojo trigerio) įėjimu. Paprastųjų ţiedinių skaitiklių būvių skaičius, arba impulsų skaičius pagrin- dinėje impulsų sekoje, yra lygus skaitiklį sudarančių trigerių skaičiui. Jei trigerinėje schemoje yra n trigerių, tai joje galimi 2 n skirtingi būviai, vadinasi, 2 n – n ţiedinio skaitiklio schemos būvių yra nereikalingi ir neįeina į pagrindinę impulsų seką. Šie nepanaudojami, pertekliniai, arba draudţiami, būviai yra pagrindinė problema, projektuojant ţiedinius skaitiklius, nes iš jų susidaro šaluti- nės impulsų sekos, kuriose skaitiklis gali "pakibti" ir negeneruoti pagrindinės sekos impulsų. 84 pav. Trijų bitų ţiedinis skaitiklis Šioje schemoje kiekvieno trigerio išėjimas y yra ir impulsų sekos gene- ratoriaus atitinkamos skilties išėjimas Z ir kito trigerio įėjimas D. Kadangi schemos išėjimų signalus nustato tik trigerių būviai, schema priskirtina Mūro sinchroniniams būvių automatams. Trijų trigerių ţiedinio skaitiklio pagrindinę impulsų seką sudaro trys impulsai – trys skirtingi šio skaitiklio būviai, o 2 3 – 3 = 5 ţiedinio skaitiklio būviai yra pertekliniai. Jie suformuoja tris šalutines impulsų sekas, ir kiekvienoje skaitiklis gali "pakibti". T1 CK y1= Z1= D2 C D y2= Z2= D3 C D y3= Z3= D1 C D T2 T3 119 Perteklinių būvių problema sprendţiama sudarant schemą, atpaţįstančią perteklinį būvį ir "parvarančią" skaitiklį į pagrindinei sekai priklausantį būvį. Trijų bitų ţiedinis skaitiklis papildomas schema, sukuriančia D1 = y1· y2. 85 pav. Trijų bitų ţiedinio skaitiklio laiko diagramos 86 pav. "Nepakimbantis" trijų bitų ţiedinis skaitiklis Bûviai CK y1 = D2 t y2 = D3 y3 = D1 a b c y1 y2 & CK D1 T1 y1= Z1= D2 C D y2= Z2= D3 C D y3= Z3 C D T3 T2 120 8.5. Susuktieji ţiediniai skaitikliai Susuktieji, arba Mebijaus, ţiediniai skaitikliai – tai nuoseklieji registrai, ku- riuose paskutiniosios atminties ląstelės (paskutiniojo trigerio) inversinis išėjimas yra sujungtas su pirmosios atminties ląstelės (pirmojo trigerio) įėjimu. 87 pav. Trijų trigerių susuktasis ţiedinis skaitiklis Iš n trigerių sudaryto Mebijaus skaitiklio pagrindinę būvių seką sudaro 2n skirtingų būvių. Tuomet perteklinių būvių skaičius yra lygus 2 n – 2n. Trijų trigerių skaitiklio pagrindinė būvių seka yra šitokia: 100 110 111 011 001 ir 000; du schemos būviai 010 ir 101 yra pertekliniai. Skaitiklio pagrindinės sekos būvius galima uţfiksuoti nesudėtingomis dešifravimo schemomis, prijungtomis prie skaitiklį sudarančių trigerių išėjimų. Uţfiksavęs perteklinį skaitiklio būvį, dešifratorius gali grąţinti skaitiklį į pagrindinės sekos būvį. Mebijaus skaitiklyje perteklinį būvį dešifruojančios schemos signalas siunčiamas į skaitiklio įėjimą kartu su inversiniu paskutiniojo trigerio išėjimo signalu per loginį elementą ARBA. Pratimas Nr.5 Pasinaudojant NI MULTISIM programine įranga sukonstruoti atemikli, sumatoriuių ir dekompleksorių (riamentis pateikteiktais pavyzdţiais). Paiškinti jų veikimą. y3= D1 T1 CK y1= Z1= D2 C D y2= Z2= D3 C D y3= Z3 C D T2 T3 121 122 9. Būlio algebra Matematikoje bei informatikoje Būlio algebra (arba Logikos algebra) – sritis, tirianti loginius kintamuosius bei funkcijas. Loginės algebros svarbiausias taikymas – elektroninėse schemose. Būlio algebra sukūrė Dţordţas Būlis (George Boole, 1815-1864) vardu, nes šis anglų matematikas pirmasis ją apibrėţė kaip loginės sistemos dalį, bandant panaudoti algebrines technikas loginiams skaičiavimams. 9.1. Būlio algebra matematikoje Matematikoje Būlio algebra apibrėţiama kaip algebra (B, *, +, ¬, 0, 1), kurią sudaro aibė B, turinti maţiausiai 2 elementus (0, 1), kurioje apibrėţtos tokios 3 operacijos: IR operacija (konjunkcija, loginė daugyba), ARBA operacija (disjunkcija, loginė sudėtis), NE operacija (inversija, neigimas). 123 Šiandien Būlio algebra turi daugybę pritaikymų elektroninėse schemose. Pirmą kartą Klodas Šenonas ją pritaikė XX amţiuje komutatoriuose. 9.2. Loginiai kintamieji Loginiai kintamieji (dar vadinami binariniais) gali turėti tik dvi reikšmes – 1 (taip) ir 0 (ne). Su jais galima atlikti logines operacijas. Elementarios loginės operacijos su vienu, dviem loginiais kintamaisiais yra vadinamos unarinėmis (vieno kintamojo) ar binarinėmis (dviejų kintamųjų) loginėmis operacijomis. Loginė operacija paprastai uţrašoma formule arba jai sudaroma funkcijos būvio (teisingumo) lentelė. 9.3. Literatūroje naudojami ţymėjimai Būlio daugyba: ., &. Kaip ir įprastinėje algebroje, Būlio algebroje daugybos ţenklas iš viso praleidţiamas: xy. Daugybos ţenklą būtina rašyti tada, kai Būlio kintamųjų vardai turi daugiau nei vieną simbolį. Būlio sudėtis: +, v Ţenklas + yra įprastesnis, tačiau jį vartoti galima tik tuomet, kai tuo pačiu metu nėra kalbama apie aritmetinės ar algebrinės sudėties operaciją. Šiuo atveju ţymime v. Inversija: ‗, ÷ ir daţniausiai naudojamas ţenklas . 9.4. Loginės operacijos Disjunkcija (loginė sudėtis) lygi 1, jei bent vienas kintamasis lygus vienetui. Konjunkcija (loginė sandauga) lygi 1 tik tuomet, kai abu kintamieji lygūs 1 Disjunkcija (loginė sudėtis) lygi 1, jei bent vienas kintamasis lygus vienetui. Konjunkcija (loginė sandauga) lygi 1 tik tuomet, kai abu kintamieji lygūs 1 124 IR funkcija ţymima taip: 1 ( ) f x x y x = . = & y xy = Sudėtis moduliu 2 – funkcija, kuri lygi vienetui tik tuomet, kai kintamųjų reikšmės skiriasi, t.y. x y = . Ši funkcija dar vadinama „išskirtine ARBA―, kadangi nuo ARBA (disjunkcijos) skiriasi tuo, kad pastaroji lygi 1 ir tuo atveju, kai x=y=1. ARBA-NE (Pirso funkcija) – funkcija, kuri lygi vienetui tik tuomet, kai lygūs 0 abu kintamieji x ir y. Ekvivalentiškumas – funkcija, kuri lygi 1 tik tuomet, kai kintamųjų reikšmės sutampa, t.y. x=y. Implikacija - funkcija, kuri lygi nuliui tik tuomet, kai esant klaidingai prielaidai (y=0) daroma teisinga išvada (x=1). IR-NE (Šeferio funkcija) – funkcija, kuri lygi nuliui tik tuomet, kai lygūs 1 abu kintamieji x ir y. 9.5. Pagrindinės Būlio algebros aksiomos Matematikoje pagrindiniai teiginiai daţnai būna akivaizdūs arba naudojami sutariant, o toliau kuriama teorija šių teiginių pagrindu formuluojant naujus dėsnius ar išvadas. Pirminius teiginius įprasta vadinti aksiomomis (postulatais), o jų pagrindu sudaromus naujus – teoremomis ar dėsniais. 1a) x . x = x - idempotentyvumas 1b) x + x = x 2a) x . y = y . x – komutatyvumas 2b) x + y = y + x 3a) x . (y . z) = (x . y ). z - asociatyvumas 3b) x + (y + z) = (x + y )+ z 4a) x . (y + z) = x . y + x . z – distributyvumas 4b) x + y . z = (x + y) . (x + z) Aksiomose išraiškos pateiktos poromis, nes Bulio algebroje veikia dualumo dėsnis, pagal kurį jas galima gauti vieną iš kitos. 125 Dualumo dėsnis: Išraiškoje pakeitus disjunkciją konjunkcija, konjunkciją – disjunkcija, nulį – vienetu, vienetą – nuliu ir skliaustais išlaikius tą pačią veiksmų tvarką, bus gauta nauja išraiška vadinama dualia. Dualumas reiškia, kad, jei teisinga kokia nors išraiška, jai duali išraiška taip pat bus teisinga. Aksiomų teisingumu nesunku įsitikinti, paskaičiuojant išraiškos kiekvienos pusės funkcijos reikšmių lenteles. 9.6. Būlio algebros teoremos - absorbcijos teorema - neigimo eliminavimo teorema - jungimo teorema - De Morgano dėsniai (teoremos) - Šenono teorema. f(x1,x2 ,...,xn,+,.) = f(x1, x2 ,...,xn,.,+) - skleidimo teorema 10. TRIGERIAI Trigeris (trigger) – tai dviejų stabilių būsenų elektroninis įtaisas, iš vienos būsenos į kitą perjungiamas įėjimo signalais ir pasiţymintis charakteristikos histereze. Trigeriu vadinamas įrenginys, turintis dvi stabilias būsenas. Dvi stabilios trigerio būsenos, kurias uţtikrina teigiamas grįţtamasis ryšys, išėjime sukuria būsenas: =1 ir =0. Kokios būsenos bus trigeris, priklauso nuo trigerio įėjimų signalų ir nuo ankstesnės trigerio būsenos, kitaip sakant, trigeris turi atmintį. Trigerį galima pavadinti elementaria atminties ląstele. 126 Pagal darbo algoritmus trigeriai skirstomi į tipus. Priklausomai nuo darbo algoritmo, trigeris gali turėti nustatymo, informacinius ir valdančius įėjimus. Nustatymo įėjimai nustato trigerio būseną, nepriklausomai nuo kitų įėjimų būsenos. Valdantys įėjimai leidţia uţrašyti duomenis, paduodamus į informacinius įėjimus. Plačiausiai paplitę trigeriai RS, JK, D ir T. Šių trigerių ţymėjimai parodyti ţemiau pateiktame paveiksle. 88 pav. Plačiausiai paplitusių trigerių ţymejimai 10.1. RS trigeris RS - trigeris turi du informacinius įėjimus, S ir R. Padavus į įėjimą S signalą 1, o į įėjimą R signalą 0, trigerio išėjime gaunamas signalas 1. Atvirkščiai, esant signalams =0 ir =1, trigerio išėjimo signalas bus 0. RS - trigerio veikimas nusakomas lygtimi: +1=+ kur ir +1 - atitinkamai buvusi ir nauja trigerio būsena. RS - trigeriui kombinacija =1 ir =1 draudţiama. Esant tokiai informacinių signalų kombinacijai, trigerio būsena taps neapibrėţta: jo išėjime gali būti 0 arba 1. Egzistuoja RS - trigerių rūšys, vadinami E, R, ir S - trigeriais, kuriems derinys ==1 nėra draudţiamas. E - trigeris, esant ==1, nekeičia savo būsenos (+1=), S - trigeris, esant ==1, nusistato būsenoje =1, o R - trigeris šiuo atveju atsiduria būsenoje =0. 10.2. JK trigeris 127 JK - trigeriai taip pat turi du informacinius įėjimus J ir K. Kaip ir RS - trigeryje, JK - trigeryje J ir K - tai nustatymo įėjimai, pervedantys išėjimą į būseną 1 arba 0. Bet, priešingai nei RS - trigeryje, JK – trigeryje, kai ==1, pakeičia trigerio išėjimo būseną į priešingą. JK - trigeriai sinchronizuojami loginės būsenos pasikeitimu įėjime . JK - trigerio veikimo sąlyga išreiškiama: +1= + 10.3. D trigeris D - trigeris, arba uţdelsimo trigeris, gavęs į įėjimą sinchronizavimo signalą, įrašo į trigerį įėjime buvusį loginį lygį. D - trigerio veikimo lygtis atrodo taip: +1=. Ši lygtis parodo, kad išėjimo signalas +1 pakinta ne iš karto, pasikeitus įėjimo signalui , o tik sulaukus sinchronizavimo signalo, t. y., su vienu sinchronizacijos impulsų periodo uţdelsimu (Delay - uţdelsimas). D - trigeris sinchronizuojamas impulsu arba jo frontu. 10.4. T trigeris T - trigeris, arba skaičiavimo trigeris, keičia išėjimo būseną pagal impulso frontą įėjime . Be sinchronizacijos įėjimo () T - trigeris gali turėti paruošiamąjį įėjimą . Signalas šiame įėjime leidţia (kai =1) arba neleidţia (kai =0) trigerio suveikimą nuo impulsų frontų įėjime . T - trigerio veikimo lygtis yra: +1= + Iš šios lygties matyti, kad, esant =1, atitinkamas signalo frontas įėjime perveda trigerį į priešingą būseną Potencialo kitimo daţnis T -trigerio išėjime du kartus maţesnis nei impulsų daţnis įėjime . Ši T - trigerių savybė leidţia jų pagrindu kurti dvejetainius skaitiklius. Todėl šie trigeriai ir vadinami skaičiavimo trigeriais. Skaičiavimo trigeris be įėjimo veikia taip pat, kaip ir T - trigeris, esant =1. 128 10.5. Skaitikliai Skaitikliu vadinasi įrenginys, skirtas įėjimo impulsų skaičiavimui. Su kiekvienu impulso patekimu į įėjimą skaitiklio būsena pakinta vienetu. Skaitiklį galima sukurti iš kelių trigerių, tada skaitiklio būseną nusakys jo trigerių būsenos. Sumuojančiuose skaitikliuose kiekvienas įeinantis impulsas padidina išėjimo skaičių vienetu, o atimties skaitikliuose kiekvienas įeinantis impulsas sumaţina šį skaičių vienetu. Patys paprasčiausi skaitikliai – dvejetainiai, kuris parodytas paveiksle (sumuojantis dvejetainis skaitiklis). 89 pav. Sumuojantis dvejetainis skaitiklis Skaitiklyje trigeriai sujungiami nuosekliai. Kiekvieno trigerio išėjimas tiesiogiai veikia kito trigerio taktinį įėjimą. Norint realizuoti sumuojantį skaitiklį, reikia bet kurio kito trigerio skaičiavimo įėjimą prijungti prie paskutiniojo trigerio inversinio išėjimo. Skaičiavimo krypčiai pakeisti (sukurti atimties skaitiklį) naudojami tokie metodai: 1) išėjimo signalai skaičiuojami ne tiesioginiuose, o inversiniuose trigerių išėjimuose; 2) skaitiklio ryšių struktūra pakeičiama, paduodant signalą į trigerio skaičiavimo įėjimą ne iš inversinio, bet iš tiesioginio paskutinio įrenginio išėjimo. Skaitikliai charakterizuojami būsenų skaičiumi per vieną skaičiavimo periodą (ciklą). Būsenų skaičius nustatomas trigerių skaičiumi skaitiklio struktūroje. 129 Skaitiklio būsenų skaičius vadinamas perskaičiavimo koeficientu . Šis koeficientas lygus impulsų skaičiaus įė įėjime santykiui su impulsų skaičiumi vyriausio laipsnio skaitiklio išėjime š per skaičiavimo periodą: Jeigu į skaitiklio įėjimą paduotume periodinę daţnio įė impulsų seką, tai vyriausio laipsnio skaitiklio išėjime daţnis š bus kartų maţesnis: Todėl skaitiklius galima naudoti kaip daţnio daliklius, dydis tokiu atveju bus dalijimo koeficientas. Dydţio padidinimui tenka padauginti trigerių kiekį grandinėje. Kiekvienas papildomas trigeris padvigubina skaitiklio būsenų skaičių ir skaičių . Koeficiento sumaţinimui galima kaip skaitiklio išėjimą naudoti tarpinių pokopų trigerių išėjimus. Galima sukurti skaitiklį, kuriam būtų bet kuris sveikas skaičius. Pavyzdţiui, iš trijų trigerių galima sukurti skaitiklį skaičiuojantį nuo 2 iki 7, bet tuo pat metu vienas ar du trigeriai gali tapti nereikalingais. Panaudojant visus tris trigerius, galima gauti =5…7, t.y. 221 >1 S R Q Q 142 loginio elemento ARBA (taip pat ir loginio elemento ARBA-NE) išėjime, yra loginis vienetas arba aukštas įtampos lygis. Vadinasi, kai loginės schemos įėjimuose yra signalų rinkinys S = 1 ir R = 0, signalas S = 1 vienareikšmiškai nustato Q = 0. Signalai R = 0 ir Q = 0 savo ruoţtu nustato Q = 1. Bazinis SR trigeris dar vadinamas baziniu ARBA-NE trigeriu, šitaip pabrėţiant, kad jis yra sudarytas iš loginių elementų ARBA-NE. Du bazinio SR trigerio įėjimo signalų rinkiniai SR = 10 ir SR = 01 vadi- nami aktyviaisiais, arba nustatančiaisiais. Rinkinys SR = 10 nustato trigerio būvį Q = 1, rinkinys SR = 01 – būvį Q = 0. Įėjimo signalų rinkinys SR = 00 vadinamas pasyviuoju, arba neutraliuoju, nes nekeičia prieš tai buvusio trigerio būvio. Tą patį galime suformuluoti ir kitaip: tik vienetas yra aktyvusis bazinio tri- gerio ARBA-NE įėjimo signalas. S = 1 nustato trigerio būvį Q = 1, R = 1 – būvį Q = 1. Įėjimo signalų rinkinys SR = 11 baziniam SR trigeriui yra draudţiamas. 11.4. Bazinis ~S~R trigeris Pritaikę de Morgano teoremą, SR trigerio loginę schemą galime pakeisti schema, sudaryta iš loginių elementų 2IR-NE. Po kintamųjų įėjime inversijos loginis elementas 2ARBA-NE vykdo loginę funkciją 2IR. Vadinasi, suda- rius schemą iš loginių elementų 2IR-NE, inversija bus atliekama ne tik schemos įėjimuose, bet ir jos išėjimuose. Loginių elementų IR ir IR-NE įėjime "stiprusis" signalas, vienareikšmiškai nustatantis būvį loginio elemento išėjime, yra nulis. Tai reiškia, kad ~S~R trigerio būvį nustato aktyvieji įėjimo signalų rinkiniai ~S~R = 01 ir ~S~R = 10. Įėjimo sig- nalas ~S = 0 (S = 1) nustato bazinio ~S~R trigerio būvį Q = 1, o signalas ~R = 0 (R = 1) – būvį Q = 1. Rinkinys ~S~R = 11 yra pasyvusis, o ~S~R = 00 draudţia- mas, nes tuomet Q = Q = 1. 143 99 pav. Bazinio ~S~R trigerio loginė schema 100 pav. Grafinis SR trigerio ţymuo 11.5. Charakteringoji lygtis Trigerio charakteringoji, arba būdingoji, lygtis sieja trigerio kito būvio išėjimo signalą su išoriniais trigerio įėjimo signalais ir vidiniu įėjimo, arba grįţtamojo ryšio, signalu – šiuo trigerio būviu. Charakteringoji lygtis uţrašoma remiantis vėlinančiojo trigerio modelio logine schema. 101 pav. Vėlinančiojo SR trigerio modelis Tuomet SR trigerio kito būvio išėjimo signalas: Q R q >1 >1 At X S ~S ~R & & Q Q Q S R Q 144 Q=S + q + R= (S + q)·R=SR + qR Apvestoji dalis yra SR trigerio charakteringoji lygtis. Ji aprašo grįţta- mąjį ryšį trigeryje: Q matome ir kairiojoje, ir dešiniojoje lygties pusėse, nes q yra Q po At. Be to, charakteringoji lygtis teigia, kad trigerio kito būvio signalas Qyra ir išorinių įėjimo signalų S ir R, ir trigerio šio būvio q funkcija. 11.6. Būvių reikšmių lentelė Pagal trigerio charakteringąją lygtį galime sudaryti jo būvių reikšmių lentelę (angl. – present state – next state table, arba state table). 26 lentelė. SR trigerio būvių reikšmių lentelė Iš sudarytosios lentelės matyti, kad trigeris turi tris įėjimo signalus: išorinių įėjimų S ir R bei vidinį įėjimo, arba grįţtamojo ryšio, signalą q. Charakteringoji lygtis leidţia pagal šiuos tris įėjimo signalus nustatyti trigerio išėjimo, arba kito būvio, signalą Q. Įėjimo signalai Išėjimo signalas Komentarai Vidinis įėjimo, arba šio būvio išėjimo, signalas Išoriniai įėjimo signalai Kito būvio signalas Šis būvis Trigerio būvis X = S+q(po At) = = S+Q q S R Q q Q X = Q 0 0 0 0 stabilus R 1 0 0 1 0 stabilus R 1 0 1 0 1 nestabilus S 0 0 1 1 0 stabilus R 0 1 0 0 1 stabilus S 0 1 0 1 0 nestabilus R 1 1 1 0 1 stabilus S 0 1 1 1 0 nestabilus R 0 145 Šis trigerio būvis q yra stabilus, kai q= Q. Kai q= Q, po laiko At q reikšmė pakinta ir būna lygi Q. Loginio kintamojo X =Q reikšmės rodo, kad trigerio išorinių įėjimo signalų rinkinys SR= 11 yra draudţiamas, nes tuomet Q ir Q reikšmės sutampa. Šį draudţiamąjį SR rinkinį atitinkančios lentelės eilutės yra išskirtos. 11.7. Būvių kaitos diagrama Remiantis trigerio būvių reikšmių lentele, galima nubraiţyti tų būvių kaitos diagramą. Beje, ją galima sudaryti ir pagal trigerio charakteringąją lygtį. Būvių diagramoje šis trigerio būvis q= 0 ţymimas skritulėlyje įrašyta a raide, o q= 1 – skritulėlyje įrašyta b raide. Pakitus trigerio išoriniams įėjimo signalams, trigerio būvis gali likti toks pats – būvių diagramoje tai atvaizduojama grįţtančia į tą patį skritulėlį rodykle. Jei pakitus išoriniams įėjimo signalams trigerio būvis kinta, būvių diagramoje tai atvaizduojama nukreipta į kitą skritulėlį rodykle. Trigerio būvių kaitos diagramoje strėlytė visuomet eina iš skritulėlio, kuriame įrašytas šis trigerio būvis, į skritulėlį, kuriame įrašytas kitas trigerio būvis. 11.8. Veikimo algoritmas Anksčiau minėjome, kad trigeriai ir schemos su trigeriais vadinami būvių automatais. Šių automatų veikimą galime aprašyti programiškai. SR trigerio veikimo algoritmo blokinę schemą sudaro būvių blokeliai, paţymėti raidėmis a (q= 0)ir b (q= 1), bei sprendimo priėmimo blokeliai. Išnagrinėję šį algoritmą, galime įsitikinti, kad jis atitinka SR trigerio būvių kaitos lentelę ir diagramą. 146 102 pav. SR trigerio būvių kaitos diagrama 103 pav. SR trigerio veikimo algoritmo blokinė schema 11.9. Karno diagrama SR 01 11 b SR 10 SR 00 10 SR 00 01 11 a – q = 0 b – q = 1 SR = 11 – draudþiamas áëjimo signalø rinkinys a 1 0 1 0 S· R a b R 147 Remiantis trigerio charakteringąja lygtimi, jo būvių lentele arba dia- grama, galima sudaryti trigerio Karno diagramą. Šios Karno diagramos argumentai, loginiai kintamieji, yra trigerio vidiniai ir išoriniai įėjimo signalai q, S bei R; į diagramą įrašoma loginė funkcija – kitas trigerio būvis Q. Karno diagrama labai gerai tinka trigerio būvio stabilumui nustatyti: jei į diagramos langelį įrašyta trigerio kito būvio reikšmė Q sutampa su šio trigerio būvio reikšme q, tai trigerio būvis yra stabilus, nes po laiko Atq reikšmė išliks ta pati. Ir atvirkščiai, jei į diagramos langelį įrašyta trigerio kito būvio reikšmė Q skiriasi nuo šio trigerio būvio reikšmės q, tai reiškia, kad trigerio būvis yra nesta- bilus, nes po laiko Atq reikšmė pakis, sutaps su trigerio kito būvio reikšme Q. 104 pav. SR trigerio Karno diagrama, kur stabilūs trigerio būviai Pagal Karno diagramą galima uţrašyti trigerio charakteringąją lygtį, trige- rio kito būvio Q priklausomybę nuo vidinių ir išorinių įėjimo signalų q, S ir R. Tuo tikslu diagramoje sudarome du vienetų kontūrus p1 ir p2 ir gauname, kad Q=p1 + p2=SR + qR . 12. SINCHRONINIAI TRIGERIAI q SR 00 01 11 10 0 0 0 0 1 1 1 0 0 1 SR = 11 – uþdraustas rinkinys p1 p2 Q 148 12.1. Sinchroniniai SR trigeriai Prieš tai nagrinėti baziniai SR ir ~S~R trigeriai yra potencialiniai trigeriai, nes jų būvius keičia aukšti ir ţemi įtampų lygiai informaciniuose S ir R įėjimuose. Šie trigeriai yra asinchroniniai, nes jų būvius lemia vien tik informacinių įėjimų signalai. Visuose sinchroniniuose trigeriuose informaciniai signalai prieš patekdami į bazinio trigerio įėjimą turi praeiti pro laiko vartus (angl. – gates). Vartus valdo arba signalas C (control – valdymo), arba CK (clock – sinchronizavimo), arba E (enable – leidimo). Kad ir kaip šie signalai būtų vadi- nami, jie yra vartininkai, praleidţiantys arba nepraleidţiantys į bazinį trigerį infor- macinius signalus. Sinchroniniuose SR trigeriuose naudojami loginių elementų IR vartai, jei bazinis trigeris yra SR trigeris, arba loginių elementų IR-NE vartai, jei bazinis trigeris – ~S~R trigeris. 12.2. Sinchroniniai D trigeriai Klasifikuodami trigerius sakėme, kad D (angliškai D interpretuojamas dve- jopai: data arba delay) trigeris – tai SR trigeris su vienu informaciniu įėjimu D=S; įėjimas R sudaromas kaip įėjimo S inversija. Pagal tokį D trigerio apibrėţimą nu- braiţyta sinchroninio D trigerio (angl. – gated D latch) funkcinė schema parodyta ţemiau pateiktoje schemoje. Ši trigerio schema eliminuoja draudţiamą signalų rinkinį SR= 11 (arba CSR= 111). Kai valdymo įėjimo signalas C= 1, informacinio įėjimo signalas D= 1 nustato trigerio būvį Q= 1 (b būvį), o signalas D = 0 – būvį Q= 0 (a būvį). Taigi signalų rinkinys CD= 11 nustato, arba įrašo, trigerį, o rinkinys CD= 10 jį numeta, arba ištrina. 149 105 pav. Sinchroninio D trigerio funkcinė schema (a) ir grafinis ţymuo (b) Asinchroninio D trigerio funkcinė schema skirtųsi nuo, (a-dalies) parodytos schemos tik tuo, kad vietoj sinchroninio SR (SRC) trigerio būtų asinchroninis SR trigeris – bazinis SR trigeris. 12.3. Sinchroniniai JK trigeriai Minėjome, kad tarp JK trigerių išėjimų ir įėjimų būna sudarytas kryţminis grįţtamasis ryšys: tai yra trigerio įėjimas S arba kitas jį atitinkantis įėjimas sujungiamas su inversiniu trigerio išėjimu Q, o įėjimas R arba kitas jį atitinkantis įėjimas – su tiesioginiu trigerio išėjimu Q. Sinchroniniuose JK trigeriuose (angl. – gated J-K latch) grįţtamojo ryšio signalai nukreipiami į įėjimus pro laiko vartus. Šitaip sudarytos sinchroninio JK trigerio su baziniu SR trigeriu loginė ir funkcinė schemos bei trigerio grafinis ţymuo parodyti paveiksle. Trigerio įėjimas J (jump) pagal paskirtį atitinka SR trigerio įėjimą S, o įėji- mas K (keep) – įėjimą R. Tai, kad grįţtamasis ryšys yra kryţminis, vaizdţiau matyti iš trigerio funkcinės schemos. Išnagrinėję sinchroninio JK trigerio loginę schemą galime įsitikinti, kad JK trigeryje, kaip ir D trigeryje, bazinio trigerio įėjimų signalų derinys SR= 11 neįmanomas. C C D 1 S C R Q Q a D Q Q b 150 106 pav. Sinchroninio JK trigerio loginė schema (a),funkcinė schema (b) ir grafinis ţymuo (c) 12.5. Sinchroniniai T trigeriai Jau sakėme, kad T trigeris – tai JK trigeris, kuriame J=K=T. Sinchroninio T trigerio funkcinė schema ir grafinis ţymuo parodyti ţemiau pateiktame paveiksle. Šis trigeris dirba taip pat nestabiliai, kaip ir sinchroninis JK trigeris. 107 pav. Sinchroninio T trigerio funkcinė schema (a) ir grafinis ţymuo (b) K >1 & & J C >1 Q Q a J C K & & J K C S Q Q R b Q Q c T T C & & C S Q Q R a Q Q b 151 Pratimas Nr.6. Pasinaudojant LabVIEW 2010 programine įranga sukonstruoti RS trigerius ir išsiaiškinti bei patikrinti jų veikimą (riamentis pateiktu pavyzdţiu). RS trigerio Block diagrama 152 Front panelis (gaunamas galutinis vaizdinis rezultatas) 13. SIGNALŲ DUOMENŲ GENERAVIMAS IR JŲ ANALIZĖ LABVIEW TERPĖJE 13.1. NI ELVIS sistema NI ELVIS yra „National Instruments― sukurtas prietaisas, į kurį įeina LabVIEW parengti virtualūs instrumentai, multifunkcinės duomenų kaupimo bazės (DAQ - data acquisition) sistema ir prototipinė lenta. Duomenų kaupimas - tai duomenų - elektrinių signalų matavimo ir įrašymo procesas su tolimesne 153 įrašymo ir analizės galimybe. Duomenų kaupimas turi turėti analoginio ar skaitmeninio signalo kontrolės galimybę. 108 pav. NI ELVIS DAQ (multifunkcijos duomenų kaupimo bazė) sistemų pagalba registruojami, matuojami ir analizuojami fiziniai reiškiniai: - Šviesa, temperatūra, slėgis ir kiti skirtingų tipų signalai. NI ELVIS instrumentų pasirinkimas ypatingai platus, kuris suteikia galimybę greitai ir kokybiškai atlikti praktinius darbus. Keletas instrumentų, kurie buvo naudojami mano praktiniame darbe: - Bode Analyzer- analoginio signalo daţnių analizatorius; - Digital Multimeter (DMM)- skaitmeninis multimetras; - Oscilloscope (Scope)- oscifilografas, elektrinių signalų formos ir amplitudės matavimas. Įėjimas jungiamas prie BNC kontaktų. Analoginis ir skaitmeninis signalas. - Variable Power Supplies- reguliuojami nuo 0 iki -12 V ir nuo 0 iki +12 V šaltiniai 13.2. Standartinis relalių signalų įvedimas ir generavimas naudojant LabVIEW virtualius modulius 154 Kaip jau minėjau naudojantis LabVIEW programavimo terpe galima lengvai ir greitai suprogramuoti bet kokią norimą sistemą ne išimtis ir siganalų registravimo ir generavimo programų sukurimas. Su kuriomis galima lengvai tiek įvedinėti realius procesus ir juos fiksuoti bei kaupti atmintyje, tiek galima generuoti ir perduotį į išorinį interfeisą siganalus. Pirmiausia pradekime nuo signalų ivedimo programos kūrimo. Taigi vėlgi atsidarome Block programavimo langą ir jame funkcinės subpaletės lange susirandame virtualių modulių grupę Measurement I/O-DAQmx – Data Acquisition. 109 pav. Measurement I/O-DAQmx – Data Acquisition subpaletė 110 pav. Kurių funkcijų aprašymas pateiktas lentelėje. 27 lentelė. LabVIEW signalo fiksavimui skirtų virtualių modulių aparašymas Modulis Apibūdinimas 1. DAQmx Create Channel.vi: sukuria įvedimo/išvedimo kanalus, skirtus matuoti įtampą. Pasirenkamas įtampos intervalas: -10 - +10. Priskiriami fiziniai kanalai, šiuo atveju pasirinkti šeši fiziniai kanalai. 2. DAQmx Timing (Sample Clock).vi: leidţia pasirinkti tyrimo laiko nustatymus, t.y. diskretizavimo daţnį, tyrimo modelį 155 (pastovus/ribotas). 3. DAQmx Start Task.vi: uţduoties perėjimas į paleidimo būseną, skirtą pradėti matavimą ar generavimą. 4. DAQmx Write.vi: uţrašo biosignalą į uţdavinį, kuris turi nuo vieno iki n. skaičių analogo išvedimo kanalų. 5. DAQmx Clear Task. vi: tikrina visus i programą patenkančius signalus su programoje pasirinktais nustatymo kriterijais. 6. Write To Measurement File tai modulis, skirtas matavimo duomenų įrašymui tekstiniu (LVM) ar binariniu (TDMS) formatu. Pasinaudodami šiais modulias ir turėdami jau pradinius įgudţius mae turime sumodeliuoti tokio tipo pragramą kuri pateikta ţemiau esančiame paveiksle. Tačiau reikia nepamiršti kad ši subpaletė ir pati programa veiks tik tada jei bus prie Pc prijungras išorinis iterfeisas, šiuo atveju tai daugiafunkcinė darbinė stotelė NI-ELVIS. 111 pav. Signalų fiksiavimo virtuali programa 156 Uţfiksavus duomenis į failą duomenys reikia nusakityti, o nuskaičius galima atlikti įvairią jų statistinę analizę ir panašei. Paprasčiausia nuskaitymo programa pateikta ţemiau esančiame paveiksle. 112 pav. LabVIEW signalų nuskaitymo programos schema 28 lentelė. LabVIEW signalo nuskaitymo virtualių modulių aparašymas 1. Read from measurement file – tai modulis, kuris nuskaito duomenų seką iš failo: tekstinio duomenų nuskaitymas (.lvm) arba binarinis duomenų nuskaitymas (.tdm) formatu. Šis nuskaitymo vi. modulis suteikia galimybę duomenis siųsti į apdorojimo ir analizės programas. Šis modulis nuskaitė duomenis, pirmą stulpelį (laiką, s) leido paţymėti kaip laiko kanalą, ir nustatė, kad laiko duomenys 157 yra pirmame duomenų failo stulpelyje. 2. Papildomas LabVIEW nuskaitymo modulis, kuris naudojamas duomenis atvaizduoti grafiškai, kompiuterio monitoriuje. Kadangi jau signalus išmokome fiksuoti tai dabar reiktų išmokti ir juos generuoti. Todėl sekanti programa tai būtų virtualus signalo generatorius, kuris sugeba virtualų signa perduoti į realius NI Elvis išėjimo (AO) kanalus. Šio programos struktūra panaši kaip ir duomenų skaitymo ir į failą rašančios programos. Skiriasi tik tuo kad yra virtualių modulių išdėstymo seka kita, atsiranda vienas papildomas modulis tai virtaulus signalo generatorius 29 lentelė. LabVIEW virtualių modulių aparašymas Modulis Apibūdinimas 1. DAQmx Create Channel.vi: sukuria įvedimo/išvedimo kanalus, šiuo atvejų atpaţinti generuojamą signalą ir jį perduoti į realų AO išėjimo kanalą. Pasirenkamas įtampos intervalas: -10 - +10. Priskiriami fiziniai kanalai, šiuo atveju pasirinkti du fiziniai kanalai. 2. Virtualus signalo generatorius kuris savo viduje turi suprogramuota komandą kuri leidţia pasirinkti generaujamo signalo tipą, dydį, daţnį ir taip toliau. 3. DAQmx Timing (Sample Clock).vi: leidţia pasirinkti tyrimo laiko nustatymus, t.y. diskretizavimo daţnį, tyrimo modelį (pastovus/ribotas). 158 4. DAQmx Write.vi: uţrašo biosignalą į uţdavinį, kuris turi nuo vieno iki n. skaičių analogo išvedimo kanalų. 5. DAQmx Start Task.vi: uţduoties perėjimas į paleidimo būseną, skirtą pradėti matavimą ar generavimą. 6. DAQmx Is Task Done. vi: leidţia bet kurio momentu sustabdyti visą programą valbomas su SPOP vi. 7. DAQmx Clear Task. vi: tikrina visus i programą patenkančius signalus su programoje pasirinktais nustatymo kriterijais. 113 pav. Signalų generavimo virtuali programa 14. TINKAMO ANALITINIO METODO PASIRINKIMAS Vartotojai skirtingais būdais įtraukia analizę į savo programas. Yra tam tikros aplinkybės kurios padeda nustatyti geriausią būdą analizei atlikti. 14.1 „Inline“ ir „Offline“ analizė 159 „Inline― analizė reiškia, kad duomenys yra analizuojami toje pačioje taikomojoje programoje, kurioje jie buvo gauti. Šis analizės tipas yra naudojamas, kai dirbama su programomis, kuriose sprendimai turi būti priimami veikiant programai ir kuriose rezultatai yra tiesiogiai įtakojami taikomosios programos veikimo proceso, daţniausiai keičiant parametrus arba atliekant kokius nors veiksmus. Tokia analizė yra daţniausiai naudojama kontrolinėse programose. Naudojantis „inline― analize svarbu apsvarstyti gaunamų duomenų kiekį ir pasirinktos analizės rėţimą, kuris bus naudojamas duomenims apdoroti. Turi būti rasta tinkama pusiausvyra, nes duomenys gali apkrauti kompiuterio resursus ir turėti neigiamos įtakos taikomosios programos darbui. Kitas „inline― analizės pavyzdys būtu taikomosios programos, kuriose matavimų parametrai turi būti pritaikyti prie matuojamo signalo charakteristikų. Analizė naudojama tokiu atveju jei turi būti prijungti vienas ar daugiau signalų, kurių pokyčiai yra labai lėti išskyrus staigius didelio greičio duomenų srauto proverţius. Norint sumaţinti prisijungusių duomenų kieki, taikomoji programa turėtu greitai atpaţinti didelį duomenų priėmimo daţnio poreikį ir daţnį padidinti, o duomenų proverţiui pasibaigus - vėl sumaţinti. Matuodama ir analizuodama tam tikrus signalo aspektus programa gali prisitaikyti prie aplinkybių ir reikalui esant panaudoti reikiamus parametrus uţduočiai atlikti. Be šio, dar yra tūkstančiai pavyzdţiu kur taikomosioms programoms yra reikalingas tam tikras intelekto laipsnis, gebėjimas priimti sprendimus įvairiomis sąlygomis ir prisitaikomumas. Visi šie dalykai gali būti suteikiami įdiegiant analitinius algoritmus į taikomąsias programas. Sprendimai, priimami remiantis gaunamais duomenimis, ne visada yra priimami automatiniu būdu. Labai daţnai ţmonės, dalyvaujantis šiame procese, nori patikrinti programos veikimą ir nustatyti ar ji veikia taip kaip turėtų, ar kelias reikšmes reikia pakoreguoti. Taip pat nėra retas atvejis, kai vartotojai nori įsikelti duomenis iš failo ar duomenų bazės ir juos analizuoti ir keisti, daţniausiai pakeitimai turi būti vykdomi programai veikiant. Tokiu atveju taikomoji programa 160 turi susitvarkyti su duomenimis ateinančiai iš veikiančio proceso, jais manipuliuoti, supaprastinti, formatuoti ir išvesti duomenis naudingiausiu vartotojui būdu. Tada LabVIEW vartotojai gali pasinaudoti daugeliu vizualizacijos privalumų, kurie leis atvaizduoti duomenis patogiausiu būdu. LabVIEW siūlo analitinius ir matematinius šablonus, kurie be jokiu problemų dirba su duomenų kaupimo ir išvesties funkcijomis, kurios gali būti lengvai įterptos į bet kokią taikomąją programą. Be to, LabVIEW siūlo analitines programas „pont-by-point― uţduotims atlikti. Šios programos yra specialiai sukurtos atitikti „inline― analizės poreikius, realaus veikimo laiko taikomosiose programose. Vartotojai turėtų apsvarstyti tam tikrus aspektus prieš nusprendţiant ar „point-by-point― šablonas yra tinkamas darbui atlikti. „Point-by-point― analizė būtina, kai susiduriama su valdymo procesais kur yra atvaizduojami didelio greičio, deterministiniai, „point-by-point― duomenys. Bet kuriuo laiko momentu resursai yra skiriami realaus laiko duomenų gavimui. „Point-by-point― analizė pasidaro būtinybė kai duomenų gavimo daţnis ir valdymo ciklai yra padidinami. „Point-by-point― metodas supaprastina projektavimo, įgyvendinimo ir testavimo procesus, nes taikomosios programos duomenų srautas beveik sutampa su natūraliu, realaus pasaulio, procesų srautu, kurį taikomoji programa atvaizduoja ir kontroliuoja. 114 pav. Duomenų apdorojimo schema 161 Realaus laiko duomenų kaupimas ir analizės ir toliau reikalauja modernesnių ir stabilesnių taikomųjų programų. „Point-by-point― analizė yra moderni ir stabili, nes ji tiesiogiai siejasi su duomenų kaupimo ir analizės procesais. Naudojant šią analizę, duomenų kaupimo ir analizavimo procesai priartėja prie kontrolės punktų FPGA (programuojamų loginių elementų matrica) lustuose, DSP lustuose, įmontuotuose valdikliuose, taip pat specialiuose CPU ir ASIC. „Offline― taikomosios programos, norėdamos priimti sprendimus programos procese, daţniausiai nereikalauja rezultato gavimo realiuoju laiku. „Offline― analizės programoms reikia tik pakankamų skaičiavimo resursų. Pagrindinis tokių taikomųjų programų tikslas yra nustatyti prieţastis ir poveikį kintamųjų, veikiančių procesą koreliuojant įvairius duomenų rinkinius. Šios taikomosios programos daţniausiai reikalauja duomenų įkėlimo iš įprastų dvejetainių arba ASCII failų, ir komercinių duomenų bazių, tokių kaip „Oracle―, „Access― ir kitų QL/ODBC-palaikančių duomenų bazių. Kai duomenys jau yra įkelti i LabVIEW, vartotojai naudoja kelis, ar net šimtus, galimų analitinių šablonų, manipuliuoja duomenimis, ir išdėsto juos į specialų formatą, ataskaitai padaryti. LabVIEW aprūpina funkcijomis, kurios padės pasiekti bet kokį failo formatą ar duomenų bazę, be vargo prisijungti prie galingų ataskaitos išvedimo įrankių tokių kaip: „NI DIAdem―, „The Report Generation Toolkit― pritaikyto „Microsoft Office― programų paketui, taip pat leis naudoti naujausias duomenų dalinimosi technologijas tokias kaip: XML, Web-enabled data presentation ir ActiveX. 14.2. Programuojama ir interaktyvioji analizės Mokslininkai ir inţinieriai vartojantys LabVIEW programinį paketą yra susipaţinę su daugybe būdų, kuriais naudodamiesi jie gali išgauti duomenis šimtų prietaisų rūšių. Jie gamina taikomąsias programas, kurios atlieka „inline― analizę ir pateikia rezultatus veikiant programai. Be to, jie supranta, kad nepakanka išgauti duomenis ir juos naudoti vienkartiniam vizualizavimui programos veikimo 162 laikotarpiu. Vartotojai daţniausiai kaupia šimtus tūkstančių megabaitų duomenų savo kietuosiuose diskuose ir duomenų bazėse. Po daugybės, ar tik vieno, taikomosios programos paleidimo vartotojai išsitraukia informaciją norėdami priimti tam tikrus sprendimus, palyginti rezultatus, ar padaryti atitinkamus pakeitimus programos procesui, siekdami savo uţsibrėţto rezultato. Palyginti lengvai galima išgauti toki didelį duomenų kiekį, kuris greitai tampa sunkiai apdorojamas. Iš tikrųjų, naudojant greitą DAQ plokštę ir pakankamai kanalų, gali uţtrukti tik keletą milisekundţių sudaryti tūkstančius reikšmių. Ir nėra paprasta uţduotis išnagrinėti ir suprasti visus šiuos duomenis. Daţniausiai iš inţinierių ir mokslininkų yra reikalaujama atvaizduoti duomenis, sudaryti grafikus, ir galiausiai paremti bet kokius savo įvertinimus ir išvadas empiriniais duomenimis. Norėdami supaprastinti matavimų analizavimo procesą, LabVIEW programuotojai sukūrė taikomąsias programas, kurios suteikia dialogų langus ir sąsajas, kurias vartotojai gali naudoti, kad priklausomai nuo jų įvesties specifiniai analizavimo šablonai būtų naudojami bet kokiems duomenų rinkiniams. Sudarant tokio tipo taikomąsias programas, vartotojai gali nusistatyti tam tikro laipsnio interaktyvumą savo taikomojoje programoje. Norint, kad tai būtų efektyvu, programuotojas turi turėti daug informacijos ir ţinių apie analizavimo tipus, kuriais domisi konkretus vartotojas. Naudodami LabVIEW programini paketa vartotojai gali lengvai suspausti ir suformatuoti duomenis prieš patalpindami juos i kietąjį diską, todėl kai saugomi duomenys bus ištraukti iš kietojo disko tolesniems analizavimams, juos bus lengviau apdoroti. LabVIEW, taip pat, suteikia galimybę naudotis šimtais funkcijų ataskaitų sudarymui, remiantis rezultatais ir informacija, gautais iš įgytų duomenų. „National Instruments― siūlo dar ir papildomų įrankių, kurie yra visapusiškai integruoti į LabVIEW programinį paketą ir yra sukurti siekiant sustiprinti bendradarbiavimą su inţinieriais. „NI DIAdem― yra vienas iš šių įrankių. „NI 163 DIAdem― darbo aplinka yra lengvai naudojama įvairioms analizėms atlikti ir ataskaitoms generuoti naudojant didelius techninių duomenų tvarkymo pajėgumus. 164 14.3. Analizių kategorijos LabVIEW siūlo šimtus, jau paruoštų, analitinių funkcijų, kurios apima skirtingas, informacijos išgavimo iš gautų duomenų, sritis ir metodus. Vartotojai gali naudoti šias funkcijas tokios, kokios jos yra arba jas keisti, išplėsti, pritaikyti savo poreikiams. Šios funkcijos yra suskirstytos į šias grupes: Matavimo, Signalų apdorojimo, Matematikos, Vaizdų apdorojimo, Kontrolinės, Modeliavimo, ir Taikomosios srities. Matavimo funkcijos: - Amplitudės ir lygio - Daţnio (Spektrinė) analizės - Triukšmų ir iškraipymų - Impulsų ir moduliacijos - Signalų ir bangos formos generavimo - Laiko srities analizės - Tono matavimai Signalų apdorojimo funkcijos: - Skaitmeninių filtrų - Susukimo ir koreliacijos - Bendra laiko daţnio analizė (Signalų apdorojimo įrankių rinkinys) - Pavyzdţių atrankos/perrinkimo - Signalų generavimo - Aukštos skiriamosios gebos spektrinė analizė (Signalų apdorojimo įrankių rinkinys) - Transformacijos - Laiko srities - Banginė ir filtro banko sudarymo (Signalų apdorojimo įrankių rinkinys) - Langinė Matematinės funkcijos: 165 - Matematikos pagrindų - Kreivių ir duomenų modeliavimo - Diferencialinės lygtys - Interpoliacijos ir ekstrapoliacijos - Tiesinės algebros - Netiesinių sistemų - Optimizavimo - Šaknų paieškos - Specialiųjų funkcijų - Statistikos ir atsitiktinių procesų Vaizdų apdorojimo funkcijos: - Lašinė (Blob) analizė ir morfologija - Spalvos modelio pritaikymo - Filtrų - Aukšto lygio įrengimų vizualizacijos įrankių - Pustonių modelių pritaikymo - Vaizdo analizės - Vaizdo ir pikselių manipuliacijos - Vaizdo apdorojimo - Optinio pobūdţio atpaţinimo - Reikiamos srities įrankių Kontrolinės funkcijos: - „PID― ir „Fuzzy― kontrolės Modeliavimo funkcijos: - Modeliavimo sąsajos (Modeliavimo sąsajos įrankių rinkinys) Taikomosios srities funkcijos: - Įrengimų būklės stebėjimo (Nurodymų analizės įrankių rinkinys) 166 - Įrengimų vizualizacijos (IMAQ, Vision Builder) - Judėjimo kontrolės - Garso ir vibracijos (Garso ir vibracijos analizės įrankių rinkinys) 167 Literatūros sąrašas 1. http://www.ni.com/labview/ „National Instruments LabVIEW 2010― 2. http://sine.ni.com/nips/cds/print/p/lang/en/nid/207244 „National Instruments NI ELVIS― 3. Stanislovas Štaras, Raimundas Kirvaitis. Mikroelektronikos pagrindai: vadovėlis aukštųjų mokyklų studentams. Vilnius, Mokslo ir enciklopedijų l-kla, 1995, 289 p.: iliustr. 621.38(075.8) Št-08 4. Raimundas Kirvaitis. Loginės schemos: vadovėlis aukštosioms mokykloms. Vilnius, Enciklopedija, 1999, 255 p.: iliustr. 621.38.049.77(075.8) 5. Juozas Sveikata. Grandinių teorija: vadovėlis. Kauno technologijos universitetas, 2-asis leid. Kaunas, Technologija, 2001, 243 p.: ilustr. 621.3.011(075.8) 6. LabVIEW 8 student edition/ Robert H. Bishop. - Upper Saddle River: Pearson Prentice Hall, 2007, - xxiv, 619 p.: iliustr. + 1 kompakt. diskas. 004.9(075.8) Bi-386 7. Antanas Gurskas. Virtualieji instrumentai LabVIEW terpėje: vadovėlis. Vilniaus Gedimino technikos universitetas. Vilnius, Technika, 2010, 184 p.: iliustr. + 1 kompakt. diskas. 004.8(075.8) Gu-222 8. S. Borodinas, V. Batovrin, A. Romanov. LabVIEW elektronikos praktiniai darbai: metodinė priemonė. Vilniaus pedagoginio universiteto leidykla, Vilnius, 2009, 163 p.: iliustr. 9. Robert H. Bishop ,,Learning with LabVIEW 2009―. http://www.isbnlib.com/preview/0132141310/Learning-with-LabVIEW-2009. 10. A. Gurskas. „Virtualieji instrumentai LabVIEW terpėje―. http://www.ebooks.vgtu.lt/reader/virtualieji-instrumentai-labview-terpje. 168 11. Raimundas Kirvaitis, Romanas Martavičius. Analoginė elektronika: vadovėlis aukštųjų mokyklų studentams. Vilniaus Gedimino technikos universitetas. Vilnius, Technika, 2003, 335 p.: iliustr. 12. LabVIEW for everyone: graphical programming made easy and fun/ Jeffrey Travis, Jim Kring. - 3 rd ed. - Upper Saddle River: Prentice Hall, 2007, - xli, 981 p.: iliustr. + 1 kompakt. diskas. 13. G. Eidukevičius, A. Kajackas. Radioelektronikos pagrindai. D2. – V.: Mokslas, 1977. 14. http://zone.ni.com/reference/en-XX/help/371361E- 01/glang/boolean_functions/ 15. A. Lašas, V. Bartkevičius, R. Šurna ir kt. Pramoninė elektronika. D2: Impulsi¬nės bei skaitmeninės schemos ir energetiniai bei technologiniai įtaisai. – V.: Mokslas, 1991. – 256 p. 16. Miniotas D. Elektros grnadinių analizė. Vilnius: Technika, 2009. 259 p 17. Sveikata J. Elektriniu grandinių analizės pagrindai. - V.: AMMLRT, 1985. - 67 p 18. http://www.ni.com/pdf/manuals/372809b.pdf 19. V. Abraitis, E. Bareiša, R. Benisevičiūtė. Programuojamų lustų testavimo metodai // Elektronika ir elektrotechnika. Kaunas: Technologija, 2003. - Nr. 5(47). - P. 43-47.