VILNIAUS GEDIMINO TECHNIKOS UNIVERSITETAS ELEKTRONIKOS FAKULTETAS ELEKTRONINIŲ SISTEMŲ KATEDRA

Vytautas ARMINAS

MICROBLAZE PROGRAMINIO PROCESORIAUS ĮGYVENDINIMO TYRIMAS IMPLEMENTATION OF PROCESSOR MICROBLAZE

Magistro baigiamasis darbas

Informatikos inžinerijos studijų kryptis Informacinių elektroninių sistemų studijų programa, valstybinis kodas 62407T109 Signalų apdorojimo sistemų specializacija

Vilnius, 2010

VILNIAUS GEDIMINO TECHNIKOS UNIVERSITETAS ELEKTRONIKOS FAKULTETAS ELEKTRONINIŲ SISTEMŲ KATEDRA

TVIRTINU Katedros ved÷jas ______(parašas ) prof. habil. dr. R. Martavičius 2010 m. ______m÷n. ___ d.

Vytautas ARMINAS

MICROBLAZE PROGRAMINIO PROCESORIAUS ĮGYVENDINIMO TYRIMAS IMPLEMENTATION OF SOFTWARE PROCESSOR MICROBLAZE

Magistro baigiamasis darbas

Informatikos inžinerijos studijų kryptis Informacinių elektroninių sistemų studijų programa, valstybinis kodas 62407T109 Signalų apdorojimo sistemų specializacija

Vadovas prof. dr. D. Navakauskas ______(mokslinis vardas ir laipsnis, vardas, pavard÷ ) (parašas ) (data ) Konsultantas doc. dr. Z. Babickien÷ ______(mokslinis vardas ir laipsnis, vardas, pavard÷ ) (parašas ) (data )

Vilnius, 2010

Vilniaus Gedimino technikos universitetas ISBN ISSN Elektronikos fakultetas Egz. sk. 1 Elektroninių sistemų katedra Data 20100611

Informatikos inžinerijos studijų programos baigiamasis magistro darbas Pavadinimas: MicroBlaze programinio procesoriaus įgyvendinimo tyrimas Autorius: Vytautas Arminas Vadovas: prof. dr. Dalius Navakauskas

Kalba lietuvių Χ užsienio

Anotacija

MicroBlaze programinio procesoriaus įgyvendinimo tyrimas. Magistro baigiamasis darbas informatikos inžinerijos laipsniui. Vilniaus Gedimino technikos universitetas. Vilnius, 2010, 115 puslapių., 44 iliustracija., 12 lentelių, 65 bibliografiniai įrašai., 5 priedai. Magistro studijų baigiamajame darbe pateikiamas atliktas lauku programuojamų loginių matricų gamintojos Xilinx kompanijos MicroBlaze programinio procesoriaus tyrimas. Tyrimas vykdytas s÷kmingai baigtuose 2008 ir 2009 metais Lietuvos Valstybinio mokslo ir studijų fondo remtuose mokslininkų grupių projektuose. Baigiamajame darbe aprašytos MicroBlaze programinio procesoriaus pagrindu sukurtos dvi originalios įterptin÷s sistemos. Pirmoji įterptin÷ sistema įgyvendina optimizavimą skruzdžių kolonijomis ir yra skirta vaizdams apdoroti. Antroji įterptin÷ sistema atlieka lietuvių kalbos pavienių žodžių atpažinimą, tod÷l gali būti s÷kmingai taikoma įvairios paskirties prietaisams valdyti. Atlikti eksperimentai su įgyvendintais algoritmais, ištirtas jų našumas, aparatinių išteklių poreikis, įvertinta skirtingų lustų įtaka spartai. Įterptinių sistemų tyrimų rezultatai paskelbti dviejuose moksliniuose straipsniuose žurnale, cituojamame ISI WEB of Science duomenų baz÷je, dviejuose moksliniuose straipsniuose tarptautinių konferencijų medžiagose. Rezultatai viešinti vienoje respublikin÷je ir dviejose tarptautin÷se konferencijose.

Reikšminiai žodžiai: MicroBlaze , programinis procesorius, LPLM, lauku programuojama login÷ matrica, programuojama logika, optimizavimas skruzdžių kolonija, pavienių žodžių atpažinimas, dinaminis laiko skal÷s kraipymas.

3

Vilnius Gediminas Technical University ISBN ISSN Electronics faculty Copies No. 1…… Electronic Systems department Date 20100611

Informatic engineering study programme master thesis. Title: Implementation of Software Processor MicroBlaze Author: Vytautas Arminas Academic supervisor: prof. dr. Dalius Navakauskas

Thesis language X Lithuanian Foreign (English)

Annotation

Thesis consists of: 115 pages of text, 44 figures, 12 tables, 65 references and 5 appendices. Master thesis presents completed investigation of softcore processor MicroBlaze , available from Xilinx company–one of main producers of Field Programmable Gate Arrays. The scientific investigation was done in a framework of two successfully completed projects that in years 2008 and 2009 were supported by Lithuanian State Science and Studies Foundation. Development of two original embedded systems based on softcore processor MicroBlaze is described in Master thesis. Ant colony optimization technique is implemented in the first embedded system that is devoted for image processing. Lithuanian isolated word recognition is implemented in the second embedded system that can be used for remote voice control of various devices. All implemented algorithms are experimentally evaluated on the subject of performance, resource utilization and influence of different FPGA boards upon execution speed of embedded systems. Investigation results of embedded systems are publicized in two scientific articles published in journals that are indexed in ISI WEB of Science database and in two articles published in international conference proceedings. Results are also announced in one national and two international conferences.

Keywords: MicroBlaze , Soft Core Processor, FPGA, Field Programmable Gate Array, Programmable Logic, Ant Colony Optimization, Isolated Word Recognition, Dynamic Time Warping.

4

TURINYS Žymenys 9 Santrumpos 10 1. ĮVADAS 11 1.1. Darbo aktualumas ir tikslas ...... 11 1.2. Darbo uždaviniai ...... 12 1.3. Naudoti tyrimo ir analiz÷s metodai ...... 12 1.4. Darbo naujumas ir praktin÷ nauda ...... 13 1.5. Darbo struktūra ...... 14 2. LPLM PROGRAMINIŲ PROCESORIŲ ANALITINö APŽVALGA 15 2.1. Lauku programuojamos login÷s matricos ...... 15 2.2. Programiniai procesoriai ...... 22 2.3. MicroBlaze programinis procesorius ...... 27 2.4. Įterptin÷s sistemos programin÷ dalis ...... 30 2.5. Uždavinių formulavimas ...... 36 3. SKRUZDŽIŲ KOLONIJŲ OPTIMIZAVIMO ĮGYVENDINIMAS 38 3.1. SKO algoritmų įgyvendinimo apribojimai ...... 38 3.2. SKO algoritmų modifikacijos ...... 39 3.3. Algoritmų įgyvendinimas vienalusčiame įrenginyje ...... 40 3.4. Algoritmų įgyvendinimas daugialusčiame įrenginyje ...... 43 3.4.1. Perrinkimo metodo įgyvendinimo tyrimas ...... 44 3.4.2. SKO algoritmo įgyvendinimo tyrimas ...... 45 3.5. Skyriaus apibendrinimas ...... 47 4. LIETUVIŲ KALBOS PAVIENIŲ ŽODŽIŲ ATPAŽINIMO ĮGYVENDINIMAS 48 4.1. Lietuvių kalbos pavienių žodžių atpažinimo metodika ...... 48 4.2. LKA metodikos pritaikymas įgyvendinti LPLM įrenginyje ...... 51 4.2.1. LPLM testavimo modulis ir jo parinktys ...... 51 4.2.2. Atpažinimo sistemos architektūra ir jos apimtys ...... 52 4.2.3. Atpažinimo sistemos vykdomosios programos algoritmas ...... 55 4.2.4. Garso sistemos integravimas ...... 57 4.3. Slankiojo kablelio modulio integravimas ...... 58 4.4. Greitosios Furj÷ transformacijos modulio integravimas ...... 59 4.5. Papildomų aritmetinių modulių integravimas ...... 63 4.6. Logaritmo modulio integravimas ...... 65 4.7. Skyriaus apibendrinimas ...... 67 5. MICROBLAZE PROGRAMINIU PROCESORIUMI PAREMTŲ ĮGYVENDINIMŲ TYRIMO REZULTATAI 68 5.1. SKO įgyvendinimo LPLM tyrimai ...... 68 5.1.1. SKO algoritmo taikymas vaizdui segmentuoti ...... 68 5.1.2. MAXMIN skruzdžių sistemos taikymas vaizdui apdoroti ...... 71 5.1.3. Įgyvendintų algoritmų skaičiavimo tikslumas ...... 72 5.1.4. Įgyvendintų algoritmų skaičiavimo sparta ...... 73 5.2. LKA įgyvendinimo LPLM turimai ...... 74 5.2.1. Eksperimentų planas ir duomenys ...... 75 5.2.2. Atpažinimo tikslumo tyrimas ...... 76 5.2.3. Įgyvendinimo našumo tyrimas ...... 78 5.3. Skyriaus apibendrinimas ...... 80 6. Apibendrinimas. Išvados 81

[EF082.10LT] 7

Literatūra 83 PRIEDAI 88 A priedas. Straipsnio žurnale „Elektronika ir elektrotechnika Nr. 3(99) kopija“ ...... 88 B priedas. Straipsnio žurnale „Elektronika ir elektrotechnika Nr. 6(94) kopija“ ...... 94 C priedas. Straipsnio 33sios tarptautin÷s konferencijos ICSPETO 2010 darbų medžiagoje kopija ...... 98 D priedas. Straipsnio tarptautinio suvažiavimo SPW2010 darbų medžiagoje kopija ...... 103 E priedas. Pranešimo 12oje Lietuvos jaunųjų mokslininkų konferencijoje medžiaga ...... 109

8 [EF082.10LT] 2009–2010 M. M.

Žymenys

α skruzd÷s jautrumas feromonui c signalo kepstro vektorius d kvadratinis Euklido atstumas

DTE atstumas tarp dviejų vektorių

Em m ojo signalo energija

Esl energijos slenksčio vert÷ EDK Xilinx įterptin÷s sistemos kūrimo įrankis ELF dvejetainis vykdomasis kodas ISE Xilinx programinis paketas m kadro numeris

M E kadrų skaičius etaloniniame ištarime

M T kadrų skaičius testiniame ištarime MicroBlaze Xilinx programinis procesorius x signalo atskaita XPS Xilinx programavimo įrankis p tikimybinis skirstinys ρ feromono garavimo koeficientas τ feromono lygis ϕ lyginamų kadrų parinkimo funkcija VHDL aparatin÷ programavimo kalba w( n ) Hamingo lango vert÷

MICROBLAZE PROGRAMINIO PROCESORIAUS ĮGYVENDINIMO TYRIMAS 9 VGTU ELEKTRONIKOS FAKULTETAS

Santrumpos

AKAB atsitiktin÷s kreipties atminties blokas (angl. RAMB – Random Access Memory Block ) BAKA blokin÷ atsitiktin÷s kreipties atmintis (angl. BRAM – Block Random Access Memory ) BPĮI bendrosios paskirties įvestis (išvestis) (angl. GPIO – General Purpose Input Output ) CPĮ centrinis procesorinis įrenginys (angl. CPU – Central Processor Unit ) GFT greitoji Furj÷ transformacija (angl. FFT – Fast Fourier Transform ) GPM greita paprastoji magistral÷ (angl. FSL – Fast Simplex Link ) IN intelektin÷s nuosavyb÷s blokas (angl. IP Core – Intellectual Property Core ) ĮIB įvesties ir (ar) išvesties blokas (angl. IOB – Input/Output block ) ĮVR įrenginių valdymo registras (angl. DCR – Device Control Register ) KLB konfigūruojamas loginis blokas (angl. CLB – Configurable Logic Block ) LLM loginių ląstelių masyvas (angl. LCA – Logic Cell Array ) LPLM lauku programuojama login÷ matrica (angl. FPGA – FieldProgrammable Gate Array ) LPM lusto periferijos magistral÷ (angl. OPB – OnChip Peripheral Bus ) MMSS MAXMIN skruzdžių sistema PL paieškos lentel÷ (angl. LUT – LookUp Table ) PVM periferijos vidin÷ magistral÷ (angl. PLB – Peripheral Local Bus ) SAS spartinančiosios atminties sąsaja (angl. XCL – Xilinx Cache Link ) SATS speciali aparatinio testavimo sąsaja (angl. JTAG – Join Test Action Group ) SKM slankiojo kablelio modulis (angl. FPU – Floating Point Unit ) SKO optimizavimas skruzdžių kolonijomis (angl. ACO – Ant Colony Optimization ) SPIG specialios paskirties integrin÷ grandin÷ (angl. ASIC – ApplicationSpecific Integrated Circuit ) SPLL sud÷tingai programuojamas loginis lustas (angl. Complex Programmable Logic Device ) VAM vidin÷s atminties magistral÷ (angl. LMB – Local Memory Bus )

10 Vytautas ARMINAS 2009–2010 M. M.

1. ĮVADAS

1.1. Darbo aktualumas ir tikslas

Nuo 1985 m., kai prekyboje pasirod÷ pirmieji kompanijos Xilinx lauku programuojamų loginių matricų (LPLM) lustai XC2064, ši technologija iš esm÷s pakeit÷ požiūrį į skaitmenin÷s elektronikos projektavimą ir kūrimą. Sujungus dvi elektroninių įtaisų savybes specialios paskirties integrinių grandinių (SPIG) (angl. ASIC ) spartą su mikrovaldiklių lankstumu – LPLM atv÷r÷ kelią naujo tipo technologijos pritaikymui ir už÷m÷ SPIG bei skaitmeninių signalų procesorių (SSA) vietą. Elektronikos srityje yra įprasta priemones skirstyti į dvi grupes: aparatines ir programines. Aparatin÷ įranga, grįsta specialios paskirties integrin÷mis grandin÷mis, yra optimali laiko ir išteklių atžvilgiu tik vienai užduočiai, o jų gamyba, klaidų paieška yra ilga ir brangi. Programin÷ įranga leidžia keisti vykdomąsias funkcijas ir atlikti įvairias užduotis, tačiau stipriai atsilieka nuo SPIG sparta bei energijos ir aparatinių išteklių sąnaudomis. LPLM šiame kontekste yra revoliuciniai įrenginiai, nes juose suderintos aparatin÷s ir programin÷s įrangos naudingos savyb÷s. LPLM lustuose įgyvendinamos grandin÷s yra tarsi aparatin÷ įranga, kuri pasižymi kur kas mažesn÷mis energijos ir išteklių sąnaudomis bei yra spartesn÷ nei programin÷ įranga. Panašiai kaip ir kompiuterių aparatin÷je įrangoje, LPLM lustuose įgyvendinami skaičiavimai yra paskirstytieji (erdvinis išd÷stymas laukais), vienu metu atliekant milijonus operacijų. Tokios sistemos gali veikti šimtus kartų greičiau nei mikroprocesorin÷s. Kita vertus, LPLM grandin÷s yra perprogramuojamos ir leidžia įgyvendinti įvairias užduotis. LPLM perprogramavimas dažnai yra skirtas tiesiog ištaisyti veikimo klaidas ar papildyti sistemą naujomis savyb÷mis. Kita vertus, gali būti perkonfigūruojamas sistemos valdiklis, skirtas vykdyti naujoms užduotims, arba netgi perprogramuojamas visas mikrograndynas, suskirstant jį į mažesnes dalis, kai kiekviena iš jų tampa specialios paskirties lustu. LPLM priklauso elektrinių grandynų kategorijai, kuriuose galima keisti jų funkcionalumą ir ryšius, nes jos yra sudarytos iš konfigūruojamų loginių elementų, tarpusavyje sujungtų konfigūruojamomis jungiklių matricomis. LPLM įrenginių programavimo procesą spartina programinių procesorių taikymas. Vienas iš populiariausių kompanijos Xilinx programinių procesorių yra MicroBlaze . Nors šio procesoriaus taikymo sritis labai plati, tačiau tokiose dalykin÷se srityse, kaip mašinų mokymas ar kalbos atpažinimas, jis mažai naudotas. Optimizavimas skruzdžių kolonijomis (SKO) yra viena iš mašinų mokymo srities šakų, s÷kmingai taikoma telekomunikacijoje, transporte ir internete sprendžiant sud÷tingus maršrutizavimo ar daugiakriterinio optimizavimo uždavinius. Tai palyginti jauna mokslo šaka, tod÷l dar n÷ra išsamiai išnagrin÷ta, kokiu būdu ir kokius skruzdžių kolonijų optimizavimo algoritmus tikslinga įgyvendinti LPLM įrenginiuose.

MICROBLAZE PROGRAMINIO PROCESORIAUS ĮGYVENDINIMO TYRIMAS 11 VGTU ELEKTRONIKOS FAKULTETAS

Lietuvių kalbos atpažinimo (LKA) sistemų kūrimo darbai yra prioritetiniai. Šiuo metu didžiausias d÷mesys yra koncentruojamas ties patikimų, didel÷s apimties žodynų sudarymu ir programin÷mis priemon÷mis grįstų daugelio kalb÷tojų šnekos atpažinimo sistemų kūrimu. Tuo tarpu, kadangi tyrimai šia kryptimi vykdomi pakankamai senai ir s÷kmingai, jau sudarytos prielaidos kurti lietuvių kalbos pavienių žodžių atpažinimo sistemas. Prototipai programinių priemonių lietuvių kalbos pavieniams žodžiams atpažinti jau yra, tuo tarpu šių atpažinimo sistemų įgyvendintų LPLM įrenginiuose dar n÷ra. SKO ir LKA metodų įgyvendinimo būdai įterptin÷se sistemose yra mažai nagrin÷ti, n÷ra žinoma kuriuos algoritmus ir kaip tikslinga įgyvendinti, siekiant sparčios ir tikslios sistemos. Taigi šio darbo tikslas – ištirti MicroBlaze programinio procesoriaus įgyvendinimo originaliose įterptin÷se sistemose galimybes .

1.2. Darbo uždaviniai

Siekiant darbo tikslo buvo suformuoti šie uždaviniai: 1. Atlikti programiniais procesoriais paremtų įterptinių sistemų analitinę apžvalgą. 2. Taikant MicroBlaze programinį procesorių lauku programuojamų loginių matricų įrenginyje įgyvendinti pasirinktą skruzdžių kolonijų optimizavimo algoritmą. 3. Taikant MicroBlaze programinį procesorių lauku programuojamos login÷s matricos įrenginyje įgyvendinti Lietuvių kalbos pavienių žodžių atpažintuvą. 4. Ištirti sukurtąsias įterptines sistemas, įvertinti jų našumą ir pateikti MicroBlaze programinio procesoriaus taikymo rekomendacijas.

1.3. Naudoti tyrimo ir analiz÷s metodai

Darbe taikomos optimizavimo skruzdžių kolonijomis, vaizdų pirminio apdorojimo, vaizdų segmentavimo, pavienių žodžių atpažinimo ir dinaminio laiko skal÷s kraipymo teorijos. Tyrimai grindžiami literatūros analiz÷s, eksperimentin÷s analiz÷s, login÷s indukcijos, matematin÷s statistin÷s analiz÷s metodais ir programavimo žiniomis. Įterptin÷s sistemos kuriamos taikant C ir VHDL programavimo kalbas, naudojant specializuotas kompanijos Xilinx programines priemones: ISE , EDK ir MicroBlaze programinį procesorių. Tiriamos sistemos įgyvendinamos specializuota lauku programuojamų loginių matricų įranga:  daugialusčiu LPLM moduliu DN8000k10PSX (kompanija DiniGroup ),  ML402 (kompanija Xilinx ),  XUPV5 (kompanija Xilinx ). Tiriamiems vaizdams parengti naudojama MATLAB TM programa.

12 Vytautas ARMINAS 2009–2010 M. M.

1.4. Darbo naujumas ir praktin÷ nauda

Šiame darbe pirmą kartą įterptin÷se sistemose įgyvendintos ir ištirtos šios metodikos: 1. MAXMIN skruzdžių sistema grįstas vaizdų pirminis apdorojimas , leidęs automatizuoti pirminį vaizdų apdorojimą sparčiai parenkant reikiamą vaizdo apdorojimo operatorių seką (naudotas daugialustis LPLM modulis DN8000k10PSX); 2. vaizdų segmentavimas, taikant populiacijomis grįstą SKO algoritmą , leidžiantis tiksliau segmentuoti susiliejusių baltymų p÷dsakus dvimat÷s elektroforez÷s gelio vaizde (naudotas daugialustis LPLM modulis DN8000k10PSX); 3. dinaminiu laiko skal÷s kraipymu grįstas lietuvių kalbos pavienių žodžių atpažinimas , leidžiantis balsu valdyti prietaisus (naudoti LPLM moduliai ML402 ir XUPV5). Sukurta vaizdų pirminio apdorojimo įterptin÷ sistema yra bendrin÷s paskirties, nes tinkama sparčiam vaizdų apdorojimo operatorių sekos parinkimui. Vaizdų segmentavimo įterptin÷ sistema gali būti efektyviai taikoma išskirti objektus bespalviuose vaizduose, pvz.: medicinin÷se magnetinio rezonanso, rentgeno ar ultragarso nuotraukose, biocheminiuose dvimat÷s elektroforez÷s geliuose, tamsiu paros metu darytose fotonuotraukose ar filmuose. Lietuvių kalbos pavienių žodžių atpažinimo įterptin÷ sistema gali būti naudojamos komandomis valdyti įvairius įrenginius ar priemones, pvz.: mobiliuosius telefonus, delninius kompiuterius, kompiuterinius žaidimus, neįgaliesiems skirtus įrenginius, pagaliau išmaniuosius buities įrenginius bei apsaugos sistemas. Medicinoje ši įterptin÷ sistema gali pad÷ti kurtiems žmon÷ms suprasti kalbą naudojant garsastekstas keitiklį. Karin÷je srityje LKA įterptin÷ sistema gali būti taikoma orlaiviams valdyti ar triukšmingoje aplinkoje (tokioje kaip pvz. sraigtasparnis), palengvinti pilotų bendravimą. LKA įterptin÷ sistema yra svarbus žingsnis įgyvendinant pritaikomą itin plačiai mažų matmenų ir didel÷s spartos įrenginį. Darbe pateikiami daliniai rezultatai autoriui dalyvaujant dviejuose s÷kmingai įvykdytuose mokslininkų grupių projektuose, kuriuos r÷m÷ Lietuvos valstybinis mokslo ir studijų fondas:  Skruzdžių kolonijų optimizavimo įgyvendinimo lauku programuojamomis login÷mis matricomis tyrimas , 2008. Vadovas: prof. R. Martavičius. Reg. Nr.: T08127. Sut. Nr.: T 112/08. Sritis: Elektros ir elektronikos inžinerija (01T).  Lietuvių kalbos pavienių žodžių atpažinimo įgyvendinimas lauku programuojamomis login÷mis matricomis , 2009. Vadovas: prof. R. Martavičius. Reg. Nr.: T09152. Sut. Nr.: T106/09. Sritis: Elektros ir elektronikos inžinerija (01T). Įterptinių sistemų tyrimų rezultatai kartu su bendraautoriais paskelbti dviejuose moksliniuose straipsniuose [1, 2] žurnale, cituojamame ISI WEB of Science duomenų baz÷je, dviejuose moksliniuose straipsniuose [3, 4] tarptautinių konferencijų medžiagose. Rezultatai viešinti vienoje respublikin÷je ir dviejose tarptautin÷se konferencijose.

MICROBLAZE PROGRAMINIO PROCESORIAUS ĮGYVENDINIMO TYRIMAS 13 VGTU ELEKTRONIKOS FAKULTETAS

1.5. Darbo struktūra

Šis darbas yra suskirstytas į šešis pagrindinius skyrius. Įvade yra aprašomas darbo aktualumas ir tikslas. Įvardijami darbo tikslui pasiekti suformuoti uždaviniai, pateikiami darbo taikyti įgyvendinimo metodai: skruzdžių kolonijų optimizavimo ir lietuvių kalbos atpažinimo. Įvardijamos galimos sukurtų sistemų perspektyvos ir praktin÷ nauda. Antrajame skyriuje pateikta analitin÷ literatūros apžvalga. Čia išsamiai aprašoma LPLM technologija. Skyriuje pateikiamos struktūros yra būdingos Xilinx lustams, tačiau jos panašios į daugumą LPLM grandinių. Nuo bendrosios aparatin÷s dalies apžvalgos pereinama prie įterptinių mikroprocesorių. Aptariami daugelis praktiškai naudojamų LPLM programinių procesorių. Pagrindinis d÷mesys yra skiriamas Xilinx MicroBlaze programiniam procesoriui. Kadangi MicroBlaze sujungia aparatinę ir programinę dalis, 2.4 poskyryje aprašoma programin÷s dalies integracija, kuri naudojama visose darbe kurtose įterptin÷se sistemose. Trečiasis skyrius yra skirtas pirmojo naudoto metodo – optimizavimo skruzdžių kolonijomis įgyvendinimo – tyrimui. Skyriuje aprašomas metodas ir jo įgyvendinimas vienalust÷se ir daugialust÷se lauku programuojamose login÷se matricose. Ketvirtajame skyriuje pateikiamas antrasis metodas – lietuvių kalbos pavienių žodžių atpažinimas lauku programuojamose login÷se matricose. Skyrius susideda iš metodo apžvalgos bei visų metodo įgyvendinimo versijų, kiekvienoje pateikiant tam tikrus pakeitimus ir patobulinimą. Penktasis skyrius yra skirtas tirtų metodų gautiems rezultatams aptarti. Paskutiniame, šeštajame skyriuje, pateikiamos apibendrinamosios viso darbo išvados. Prieduose pateikiamos keturių straipsnių, iš kurių du yra paskelbti žurnale, kiti du tarptautinių konferencijų medžiagoje, ir respublikin÷s konferencijos darbų kopijos.

14 Vytautas ARMINAS 2009–2010 M. M.

2. LPLM PROGRAMINIŲ PROCESORIŲ ANALITINö APŽVALGA

Lauku programuojamos login÷s matricos LPLM (angl. Field Programable Gate Array – FPGA ) tai viena iš įterptinių sistemų rūšių. LPLM pranašumas prieš daugumą elektrinių grandynų yra jų lankstumas ir universalumas grįstas išskirtine grandynų architektūra. LPLM – tai puslaidininkių elementų (pvz., trigerių, multiplekserių ar sumatorių) laukas, tarpusavyje sujungiamų perprogramuojamais loginiais ryšiais [5]. Šios savyb÷s išskiria LPLM iš kitų elektroninių prietaisų kaip sistemą, leidžiančią įgyvendinti įvairaus tipo uždavinius, sukuriant sud÷tingus loginius grandynus. Login÷ms sąsajoms tarp vidinių LPLM blokų sudaryti bei grandynams įgyvendinti yra skirtos techninio lygmens programavimo kalbos VHDL ir Verilog . Perprogramuojama logika leidžia projektuotojams nebrangiai modeliuoti schemas įgyvendinant jas viena nedidele sistema. Nors LPLM yra universalus sprendimas, tačiau našumu, elementų matmenimis jos neatsilieka nuo SPIG tipo mikrograndynų. LPLM lustams programuoti Xilinx kompanija yra išleidusi priemonių rinkinį ISE Design Suite . Tai programinis paketas, kuriame yra du pagrindiniai įrankiai: ISE bei XPS . Naudojantis šiuo paketu yra sukuriamas visos matricos valdiklis – MicroBlaze programinis procesorius [6, 7, 8], skirtas veikti Virtex bei Spartan šeimų LPLM lustuose. Programinio procesoriaus taikymas iš esm÷s keičia požiūrį į įterptin÷s sistemos kūrimą. MicroBlaze yra visos sistemos valdantysis blokas, įgyvendintas kaip 32 bitų RISC procesorius su papildomais spartinimo bei optimizavimo blokais. MicroBlaze vykdo instrukcijas, reaguoja į pertrauktis bei valdo išorinę LPLM periferiją. Jis integruoja įvairius VHDL kodo blokus (dažniausiai tai intelektin÷s nuosavyb÷s – IN (angl . intellectual property IP ) moduliai), naudodamasis XPS įrankio sugeneruotomis bibliotekomis. MicroBlaze programinis procesorius yra taip pat atskiras IN modulis (angl. core ), aprašytas VHDL programavimo kalba, tačiau generuojamas automatin÷mis priemon÷mis. Nors programinis procesorius naudoja gana daug LPLM aparatinių išteklių, jo taikymas yra būtinas siekiant: valdyti periferijos komunikacijas, suderinti IN modulių signalus, užtikrinti algoritmo eigos valdymą ir jo metu atliekamų matematinių operacijų vykdymą.

2.1. Lauku programuojamos login÷s matricos

Aptarkime lauku programuojamų loginių matricų technologiją, detaliau apžvelkime LPLM architektūrą bei veikimo ypatyb÷s. LPLM yra programuojamos kintančios logikos ir maršrutizuojamos struktūros rinkinys [9]. D÷l to programuojamos login÷s matricos gali būti laikomos kaip tarpin÷ grandis tarp programiškai ir techniškai orientuotų įrenginių. Naudojant modernią programinę įrangą (projektavimo įrankių rinkinį), elektriniai grandynai gali būti labai greitai modeliuojami ir įdiegiami į LPLM lustą. Taip

MICROBLAZE PROGRAMINIO PROCESORIAUS ĮGYVENDINIMO TYRIMAS 15 VGTU ELEKTRONIKOS FAKULTETAS išvengiama didelių kaštų, kurie neišvengiami kuriant įprastas grandines, taip pat atsiranda galimyb÷ labai greitai pataisyti projekto klaidas. Sukonfigūravus elektrinę schemą LPLM integrin÷je grandin÷je, login÷ matrica yra perjungiama į operacinį režimą. Šio režimo principas yra aparatin÷s struktūros (elektrin÷s schemos) modifikavimas lygiagrečiam ir konvejeriniam apdorojimui [10]. Esant dideliam instrukcijų srautui procesoriuje ši modifikacija ženkliai sutrumpina schemos veikimo laiką. D÷l specialios LPLM architektūros bei modernių elektrinių grandynų įgyvendinimo įrankių sistemos projektavimas tampa lengvesnis, o būtini pakeitimai įvykdomi greitai. LPLM yra tinkamos ne vien tik schemotechniniams prototipams, tačiau gali būti pakaitalu standartinei logikai ir loginių elementų masyvams mažame ir vidutiniame tūryje. Vis d÷lto, jų aukštas lankstumo lygis reikalauja papildomo komunikavimo ir maršrutizavimo, kurie savo ruožtu padidina grandin÷s delsą. Siekiant ženkliai padidinti greitaveiką bandoma kelti taktinį dažnį, tačiau tai didina energijos sąnaudas. Perversmas šioje srityje žadamas naujausia 28 nm technologija (angl. High K Metal Gate ), pagal kurią po tranzistoriaus užtūros metaliniu elektrodu panaudojamas didel÷s dielektrin÷s skvarbos izoliacinis sluoksnis. Šioje technologijoje dielektrikas silicio dioksidas bei metalai yra pakeisti į naujus medžiagos hafnio junginius [11, 12]. Supaprastintai LPLM yra sudaryta iš trijų svarbiausių konfigūruojamų elementų (2.1 pav.):  konfigūruojamų loginių blokų (KLB) (angl. Configurable Logic Blocks ) susidedančių iš pagrindinių funkcinių komponentų, skirtų realizuoti grandyno logikai ir registrams;  įvesties ir (ar) išvesties blokų (angl. Input/Output blocks ) siejančių maršrutizuojančią grandinę bei lusto išorinius prievadus;  jungiančiosios grandies, susidedančios iš horizontalių ir vertikalių daugiasluoksnių takelių kanalų ir konfigūruojamų jungiklių, leidžiančių loginiams blokams būti sujungtiems į kompleksinę skaičiavimo struktūrą.

Lusto riba Į/I B Į/I B Į/I B Į/I B

KLB KLB KLB KLB

Įvestis/išvesties blokas

KLB KLB KLB KLB Lokalieji ryšiai

KLB KLB KLB KLB Globalieji ryšiai

Jungiančioji matrica KLB KLB KLB KLB

2.1 pav . Supaprastinta LPLM struktūra

16 Vytautas ARMINAS 2009–2010 M. M.

2.2 pav . Bendra login÷s matricos struktūra

Paprastai KLB yra sudarytas iš dviejų ar trijų paieškos lentelių (PL) (angl. Look Up Table LUT ) ir dviejų trigerių (angl. flipflop ). Kiekviena paieškos lentel÷ gali būti sukonfigūruota bet kokiai Bulio (angl. boolean ) funkcijai su trimis arba keturiais įvesties signalais. Kita vertus, PL gali būti naudojama kaip maža 16 bitų duomenų operatyvioji atmintis. Atsižvelgiant į atitinkamą prietaisą, LPLM lustų masyve gali būti įdiegti papildomi atminties elementai, tranzistorin÷ logika, daugybą vykdančios grandin÷s ar netgi RISC (angl. Reduced Instruction Set Computer ) mikroprocesorius. Horizontalios ir vertikalios jungtys yra konfigūruojamos ir sudaro ryšius vien tik tarp konfigūruojamų loginių blokų arba tarp konfigūracinių loginių ir įvesties ir (ar) išvesties blokų (2.2 pav.). Globalios skirtingų ilgių

2.3 pav . Konfigūruojamas loginis blokas

MICROBLAZE PROGRAMINIO PROCESORIAUS ĮGYVENDINIMO TYRIMAS 17 VGTU ELEKTRONIKOS FAKULTETAS

(a) sumažintas (b) padidintas

2.4 pav . Loginių ląstelių masyvas magistral÷s sujungia komponentus, esančius dideliais atstumais vienas nuo kito, tuo tarpu lokalios magistral÷s galimos tik tiesiogin÷s – tarp kaimyninių komponentų. Naudotojo nustatomos jungtys tarp magistral÷s linijų gali būti sukuriamos bet kuriose maršrutizuojančiose matricose arba specialiai programuojamuose susiejančiuose taškuose (angl. Programmable Interconnect Point PIP ). Lauku programuojama login÷ matrica yra konfigūruojamas bei programuojamas puslaidininkinis įtaisas arba specialus integrinis grandynas. Jis susideda iš programuojamų loginių komponenčių KLB (2.3 pav.). LPLM yra perkonfigūruojamas sujungiant KLB blokus tarpusavy. KLB (tik Virtex LPLM) susideda iš dviejų dalių (angl. slices ). Šiose dalyse gali būti fiziškai įgyvendinamos tokios login÷s operacijos kaip IR, ARBA, NE, sud÷tis moduliu du ir pan. Be to, kiekvienoje dalyje yra atminties elementas – trigeris, kuris gali būti panaudojamas kombinatorin÷je logikoje. Kombinatorin÷ logika dažniausiai vaizduojama paieškos lentel÷mis. Tai reiškia, kad vienoje mažoje atminties srityje yra saugoma į÷jimo vert÷ kiekvienam būviui, nuo kurios priklauso iš÷jimo vert÷. Paieškos lentel÷s atminties blokas gali būti panaudotas kaip sinchroninis poslinkio registras, atminties blokas arba kaip aritmetin÷s funkcijos dalis. Visas programuojamas laukas yra įgyvendintas matricos pavidalu (2.4 pav.). Bet kokie komponentai gali būti užprogramuojami panaudojus loginius elementus IR, ARBA, NEARBA, NE ir NEIR. Jie gali būti taip pat sujungti į elektrinį grandyną, tokį kaip koderis, dekoderis arba matematin÷s funkcijos. 2.4 pav. (a) ir 2.4 pav. (b) yra pavaizduotas loginių ląstelių masyvas (angl. Logic Cell Array ). Į÷jimo ir (ar) iš÷jimo blokai yra skirti ryšiams su išore, t. y. turi tiesioginius išorinius kontaktus. Šie blokai yra sujungti su išvadais, esančiais LPLM procesoriaus korpuse. Taip pat jie gali būti pritaikomi skirtingos įtampos elementams ( TTL arba CMOS technologijoms). Programuojamos login÷s matricos yra taktuojamos labai tikslaus dažnio sinchroimpulsais (generuojamais sisteminio laikrodžio), nes jos veikia sinchroniniu režimu. Papildomai konfigūruojant integruotus elementus

18 Vytautas ARMINAS 2009–2010 M. M.

(a) luste (b) struktūra

2.5 pav . Blokin÷ atsitiktin÷s kreipties atmintis dažnį galima padvigubinti (nuskaitant takto abu frontus – priekinį ir galinį), sumažinti arba pakeisti signalo fazę. Daugelyje LPLM lustų yra integruota papildomų greitų elementų, tokių kaip skaitmeninių signalų apdorojimo moduliai ar blokin÷ atsitiktin÷s kreipties atmintis (BAKA) (angl. Block Random Access Memory BRAM ) (2.5 pav.), kuri yra įvairiapusiškai konfigūruojama, adaptyviai pritaikoma skirtingo tipo, dydžio ir bitų pločio duomenims. 2.5 pav. (a) pavaizduota globali login÷s matricos struktūra, susidedanti iš jau aptartų konfigūruojamų loginių blokų bei vidin÷s blokin÷s atminties BAKA. Žodis blokas šiame kontekste naudojamas siekiant pabr÷žti šios atminties struktūrą. Ji, kaip ir visa LPLM architektūra yra sudaryta iš mažesnių elementų sukuriant didesnį funkcinį bloką. BAKA sudaryta iš keturių 16 384 bitų atminties elementų (kodinis pavadinimas RAM16_Sn ). Atsitiktin÷s kreipties atmintin÷s blokas yra konfigūruojamas atminties modulis, prijungiamas prie įvairių BAKA sąsajos valdiklių. BAKA bloko struktūrinis HDL kodo modelis yra gaunamas Xilinx EDK projektavimo priemon÷mis [13], veikiančiomis remiantis BAKA sąsajos valdiklio intelektin÷s nuosavyb÷s modulių konfigūravimu. Visus BAKA bloko parametrus suskaičiuoja ir automatiškai prijungia Xilinx EDK priemon÷s Platgen (angl. Hardware Platform Generator subcomponent of the Xilinx® Platform Studio technology) bei Simgen (angl. Simulation Model Generation tool ). BAKA blokai yra skirti saugoti konfigūravimo parametrams: atminties adresų sričiai, duomenų pločiui, architektūros tipui ir leidžiamų perrašyti bitų numeriams. Abu šio atminties bloko išvadai: išvadas A bei išvadas B – gali būti prijungti prie nepriklausomų BAKA sąsajos valdiklių:  vidin÷s atminties magistral÷s;  lusto vidin÷s magistral÷s;

MICROBLAZE PROGRAMINIO PROCESORIAUS ĮGYVENDINIMO TYRIMAS 19 VGTU ELEKTRONIKOS FAKULTETAS

 procesoriaus vidin÷s magistral÷s;  lusto vidin÷s atminties (angl. OnChip Memory ). BAKA blokas yra modelis, kuris įgyvendina kelių atsitiktin÷s kreipties atminties blokų (AKAB) bendrąją struktūrą. Šie blokin÷s atminties elementai pasižymi šiomis savyb÷mis:  kiekvienas elementas yra 4 KB, arba 16 KB dydžio, priklausomai nuo architektūros;  adresų srities ir apdorojamų duomenų pločio sandauga lemia reikalingų bitų skaičių;  įgyvendinami AKAB elementai gali būti sukonfigūruojami taip, kad tur÷tų 32 bitų sąsają. Taigi 64 bitų sąsajai reikia mažiausiai dviejų lygiagrečiai sujungtų BAKA elementų (primityvų); ankstesn÷je nei Virtex 4 architektūroje AKAB elementai vienam prievadui tur÷jo tik vieną rašymo leidimą. Taigi jeigu baito rašymui reik÷tų 32 bitų duomenų prievado, tokiai architektūrai sukurti prireiktų mažiausiai keturių AKAB elementų 2.5 pav.(b). Ši vidin÷ lusto atmintis yra organizuota nuosekliai, be to, ji gali būti užprogramuojama nenaudojant nei vienos paieškos lentel÷s, nes BAKA blokai yra atskirti nuo konfigūruojamų loginių blokų. Taigi iš pažiūros paprasta struktūra yra labai naudinga praktiniam pritaikymui. Paieškos lentel÷s su papildoma logika dažnai panaudojamos įgyvendinti sparčiai atminčiai. PL yra duomenų struktūra, dažniausiai asociatyvusis masyvas, kuris sud÷tingus veiksmus pakeičia į kreipimąsi į duomenų struktūrą bei pačių duomenų pa÷mimą. Tai paspartina operacijų vykdymą ir sumažina laiko išteklius. Kadangi duomenų pa÷mimas, kreipiantis indeksais į paieškos lentelę vykdomas mažos vert÷s duomenų tipais, taip yra taupoma atmintis. Pavyzdžiui, Virtex 5 procesoriai turi paieškos lenteles su šešiais į÷jimais. Įgyvendinus tam tikros funkcijos logiką paieškos lentel÷je ir padavus įvesties signalą yra išrenkama atitinkama ląstel÷ (išvesties signalas). Vienoje ląstel÷je gali būti įgyvendinti tokie elementai:  du 6 IR;  keturi 2 IR;  6 du į vieną multiplekseriai;  trigeris su asinchroniniu nustatymu ir nunulinimo kontrole. Aptarti aparatiniai elementai yra perprogramuojami specialiomis techninio lygmens kalbomis, tokiomis kaip VHDL ar Verilog . Populiariausia yra VHDL , tod÷l toliau šiame poskyryje aptariami schemotechninio projektavimo etapai programuojant LPLM. VHDL (angl. Very high speed integrated circuit Hardware Description Language ) – tai programavimo kalba, skirta integrinių grandynų projektavimui [14, 15, 16]. VHDL kalba yra gerai standartizuota [17] ir pastoviai tobulinama. Pagrindiniai etapai, kuriuos apima VHDL kalba atliekamas grandyno projektavimas [18], pateikti 2.6 pav. Projektavimo aplinkoje (pvz. Xilinx ISE ) yra aprašoma schema, algoritmas ar funkcijos (priklausomai nuo požiūrio į projektą). Tai pradinis integrinio grandyno įgyvendinimo etapas. Siekiant gauti kuo didesnį našumą aprašomas prototipas

20 Vytautas ARMINAS 2009–2010 M. M. keičiamas į registrų lygį, kur kiekviena kodo dalis yra padalinama į saugojimo arba į apdorojimo sritis. Žemiausias LPLM lygis yra loginių elementų. Tai elementariausios funkcijos, iš kurių sudaromos login÷s schemos. Taigi kitas etapas yra schemos pateikimas iš registrų į loginių elementų lygį. Šiame etape elementai yra išd÷stomi fiziškai pagal LPLM žem÷lapį. Po to gautas kodas (struktūra) iš esm÷s yra tinkama įk÷limui į LPLM lustą. VHDL kalba aprašoma, kaip įgyvendinti konkretų loginį grandyną LPLM įrenginyje. Problemos atsiranda tada, kai sintez÷s įrankis, keičiantis VHDL kodo išraiškas į žemesnio lygio loginių elementų seką, nesugeba to atlikti. Taigi programos atitikimas VHDL standartui negarantuoja jos įgyvendinamumo. Kiekvieno LPLM įrenginio gamintojas siūlo savo sintez÷s įrankį, pritaikytą konkrečiai LPLM serijai. Slankiojo kablelio operacijos ir duomenų tipai yra įgyvendinti VHDL standarte, tam sukuriant specialiąsias bibliotekas. Sukūrus programą, kuri taikys slankiojo kablelio aritmetiką, atlikti bandymus (simuliavimą) kompiuteryje pavyks, tačiau įgyvendinti šios programos LPLM su Xilinx XST sintezavimo įrankiu [19] nepavyks, nes slankiojo kablelio grandynai n÷ra sintezuojami. Tam reikalingos papildomos nestandartin÷s bibliotekos. Kitas veiksnys dažnai sunkinantis darbus programuojant VHDL kalba yra LPLM įrenginio integravimas į aplinkinį grandyną. Šiam veiksmui atlikti reikia detalių žinių apie duomenų įvesties ir išvesties grandynus, prijungtus prie LPLM (projektavimo metu nurodomi konkretūs LPLM kontaktai ir jų ryšys su išore), taip pat projektuotojas turi rūpintis duomenų kaitos su išoriniais įrenginiais protokolo teisingumu. Pagrindinis VHDL kalbos privalumas yra universalumas ir, d÷ka pakankamai žemo programavimo lygmes, sintezuojami mažesn÷s apimties ir didel÷s veikimo spartos grandynai.

2.6 pav . Integrinio grandyno įgyvendinimo VHDL programavimo kalba etapai

MICROBLAZE PROGRAMINIO PROCESORIAUS ĮGYVENDINIMO TYRIMAS 21 VGTU ELEKTRONIKOS FAKULTETAS

Visos sistemos įgyvendinimas vien tik VHDL programavimo kalba yra teoriškai įmanomas, tačiau reikalaujantis pernelyg daug laiko ir ekspertinių žinių. Vis d÷lto, skaidant algoritmą į blokus, kai kurias dalis galima įgyvendinti aparatiniame lygmenyje. Tam tikrų standartinių SSA priemonių branduolių generavimą [20] atlieka Xilinx įrankis Xilinx Core Generator . Parinkus konkretaus įrenginio konfigūracijos parametrus yra sugeneruojamas to prietaiso veikimą atspindintis VHDL kodas. Toliau sugeneruotas intelektin÷s nuosavyb÷s branduolys yra integruojamas į MicroBlaze sistemos branduolį programiškai prijungiant prie procesoriaus per pasirinktą magistralę. Sukurtas IN modulis veikia kaip savarankiška sistema, naudodama atskirą sisteminį taktavimo laikrodį, nepriklausomai nuo viso likusio programinio procesoriaus. Taigi LPLM architektūra, pasižyminti universalumu, gali būti pritaikoma įvairiems SSA uždaviniams spręsti: nuo paprastų loginių operacijų iki sud÷tingų matematinių algoritmų ar įtaisų įgyvendinimo. Žinoma, kiekvieno skirtingo LPLM lusto konfigūracija yra savita ir dalinai orientuota tam tikrai sričiai, tačiau matricinis pagrindinių elementų d÷stymas leidžia LPLM pritaikyti itin plačiai.

2.2. Programiniai procesoriai

Aptarkime populiariausius įterptinius procesorius, tarpusavyje besiskiriančius paskirtimi, architektūra ir kitais elementais. Įterptiniai procesoriai skirstomi į dvi kategorijas: programinius bei aparatinius. Aparatinių mikroprocesorių yra nedaug – tai, pavyzdžiui, Xilinx PowerPC ar Atmel FPSLIX AVR . Programiniai mikroprocesoriai yra sąlyginai pigesni, lankstesni ir naudojami žymiai plačiau. 2.1 lentel÷je pateiktas programinių įterptinių procesorių sąrašas. Kompanijos Xilinx paprasčiausias programinis procesorius yra PicoBlaze . Tai našus 8 bitų architektūros mikrovaldiklis, skirtas Spartan ir Virtex šeimų LPLM lustams. PicoBlaze architektūra yra panaši į daugumos mikrovaldiklių, tačiau yra specialiai sukurta Xilinx LPLM lustams. Tiek PicoBlaze , tiek MicroBlaze procesoriai yra vadinami programiniais, kadangi jie yra sintezuojami iš HDL kodo ir naudoja LPLM programuojamus loginius bei sąsajų (angl. routine resources ) elementus, priešingai nei PowerPC (angl. Performance Optimization With Enhanced RISC – Performance PPC ) aparatiniu procesoriumi, įdiegtu į FX klas÷s Virtex lustus. Vis d÷lto, nepriklausomai programinis ar aparatinis tai procesorius, jų įgyvendinimas yra labai panašus. Procesoriai PowerPC kompanijos Xilinx LPLM FX klas÷s lustuose yra įdiegti fiziškai gamybos metu. Projektuojant sistemą FX lustuose PowerPC įterptiniai procesoriai neprivalo būti naudojami, tačiau jų išdiegimas yra neįmanomas. Likusieji lustai ( SX , LX ir t. t.) savyje integruoto aparatinio procesoriaus neturi, tod÷l PowerPC alternatyva šiuose LPLM yra programinis (virtualus) procesorius. Tokių procesorių viename luste teoriškai naudoti galima daug, praktiškai tai riboja

22 Vytautas ARMINAS 2009–2010 M. M. loginių elementų matricos ištekliai. Keleto programinių procesorių panaudojimas viename luste dažnai yra labai naudinga savyb÷ projektuojant sud÷tingas ir greitas sistemas. PicoBlaze (8 bitų) susideda iš dviejų dalių: procesoriaus branduolio (veikiančio Ken Champan – žmogaus, suprojektavusio PicoBlaze programuojamos būvio mašinos pagrindu) ir programos atminties, iš kurios gaunamo procesoriaus branduoliui reikiamos instrukcijos (2.7 pav.). Procesoriaus branduolys negali rašyti instrukcijų į atmintį, tod÷l naudojama skaitymo režimu veikianti atmintis. Praktiškai tokia sistema yra sudaryta iš dviejų VHDL bylų, naudojamų PicoBlaze procesoriaus kūrimui. Procesoriaus branduolys užima 96 LPLM sudedamuosius elementus, tuo tarpu atmintis gali būti iš esm÷s bet kokia (tik skaitoma), tačiau naudojama blokin÷ atsitiktin÷s kreipties atmintis.

2.1 lentel÷. Įterptiniai programiniai procesoriai

Bitų Konvejerio fazių CPĮ branduolys Architektūra skaičius skaičius T1 branduolys SPARC-v9 64 6

LEON3 SPARC-v8 32 7

LEON2 SPARC-v8 32 5

OpenRISC 1200 OpenRISC 1200 32 5

MicroBlaze MicroBlaze 32 3, 5

aeMB MicroBlaze 32 3

OpenFire MicroBlaze 32 3

NIOS II/f NIOS II 32 6

NIOS II/s NIOS II 32 5

NIOS II/e NIOS II 32 N÷ra

LatticeMicro32 LatticeMicro32 32 6

Cortex-M1 ARMv6 32 3

DSPuva16 DSPuva16 16 N÷ra

PicoBlaze PicoBlaze 8 N÷ra

PicoBlaze PicoBlaze 8 N÷ra

LatticeMicro8 LatticeMicro8 8 N÷ra

MICROBLAZE PROGRAMINIO PROCESORIAUS ĮGYVENDINIMO TYRIMAS 23 VGTU ELEKTRONIKOS FAKULTETAS

2.7 pav. PicoBlaze sistemos blokin÷ schema

Kur kas tobulesni ir praktikoje žymiai dažniau naudojami yra 32 bitų programiniai procesoriai. LPLM lyder÷s kompanijos Xilinx ir Altera savo moduliams programuoti naudoja atitinkamai MicroBlaze ir NIOS2 programinius procesorius. Taigi MicroBlaze yra virtualus programinis procesorius, sudarytas iš kodo blokų, vadinamų branduoliais (angl. cores ). Ši technologija leidžia vienoje projektuojamoje sistemoje naudoti kelis MicroBlaze ir įvairią vidinę bei išorinę periferijas. MicroBlaze procesoriuje yra įdiegti 32 bitų bendrosios paskirties registrai. Naudojamos 32 bitų instrukcijos su trimis operandais bei veikiančios dviem adresavimo režimais. 32 bitų instrukcijų bei duomenų magistral÷s yra atskirtos ir atitinka IBM kompanijos LPM bei PVM magistralių specifikaciją. Duomenys perduodami taip pat 32 bitų magistrale. MicroBlaze naudoja lygiagretų konvejerį, kuris padalytas į tris fazes: pernašos, dekodavimo bei įvykdymo. Kiekvienai fazei atlikti reikalingas vienas taktinio dažnio impulsas, tod÷l kiekvienai instrukcijas įvykdyti reikalingi trys impulsai (neskaičiuojant v÷linimo ar laukimo). Kiekviena faz÷ aktyvi kiekvieno impulso metu. Taigi trys instrukcijos gali būti vykdomos tuo pačiu metu, vykdant tik vieną kiekvienoje iš konvejerio fazių. Spartan 3A DSP lustuose įdiegti MicroBlaze procesoriai veikia maksimaliu 105 MHz dažniu bei atlieka 125 milijonus instrukcijų per sekundę (MIPS); Virtex 5 šeimos lustuose MicroBlaze yra kur kas našesni: maksimalus taktinis dažnis yra 233 MHz, našumas – 280 MIPS. Šios išvardintos savyb÷s atitinka įprasto RISC procesoriaus architektūrą, veikiančią Harvardo stiliumi. Instrukcijų ir duomenų magistral÷s duomenys yra prieinami lusto vidin÷je bei išorin÷je atmintyse. Standartin÷ periferija yra prijungiama IBM CoreConnect standarto magistrale, lemiančia MicroBlaze lankstumą ir įvairiapusį daugkartinį panaudojimą. Aparatiniai procesoriai PowerPC Xilinx LPLM veikia kaip 32 bitų RISC CPĮ blokas ir yra skirti atlikti spartaus veikimo programas. Šiuose procesoriuose yra taip pat įdiegta integruoto

24 Vytautas ARMINAS 2009–2010 M. M.

Vidin÷s atminties instrukcijų blokas

Instrukcijų Perdavimo ir PowerPC spartinančioji dekodavimo procesorius atmintis (16 KB) blokas

Atminties Sinchronizavimo kontrol÷s ir derinimo įrenginys įrenginys

Duomenų spartinančioji Įvykdymo blokas atmintis (16 KB) SATS Instrukcijų sekos Procesoriaus vidin÷ magistral÷

Vidin÷s atminties duomenų blokas

2.8 pav. PowerPC procesoriaus struktūra branduolio apdorojimo savyb÷ (angl. coprocessing ), tai leidžia spręsti optimizavimo problemas. LPLM mikrograndynuose būna įdiegti dviejų tipų PowerPC procesoriai: 405 Virtex II Pro bei Virtex 4 FX ir 440 Virtex 5 FXT lustuose. Juose yra integruotas penkių fazių konvejeris, atskiros duomenų bei instrukcijų magistral÷s, speciali aparatin÷ testavimo sąsaja SATS (angl. Join Test Action Group ), FIFO kanalas, keli sinchronizavimo ir atminties valdymo įrenginiai. PowerPC 405 veikia maksimaliu 450 MHz dažniu ir atlieka virš 700 MIPS. PowerPC 440 veikia maksimaliu 550 MHz dažniu bei atlieka virš 1100 MIPS. Juose palaikomi sud÷tingi CPĮ bei pagalbinio maitinimo įrenginio valdikliai ir didel÷s spartos skersinis jungiklis (angl. crossbar switch ). Skersinis jungiklis palaiko 128 bitų pralaidumo sąsają ir taškas taškas sąsają. Integruotas tiesiogin÷s kreipties atminties kanalas, paskirtąja atminties sąsaja ir procesoriaus vidine magistrale minimizuoja loginių elementų naudojimą, sumažina sistemos v÷linimą ir optimizuoja veikimą. PowerPC procesoriaus blokin÷ schema pateikta 2.8 pav. Kompanija Altera savo LPLM lustams naudoja tik vieną 32 bitų programinį procesorių NIOS (angl. National Institute of Open Schooling ). Šių programinių procesorių yra trys tipai:  greiti (tipas f). Jie optimizuoti maksimaliai greitaveikai, naudoja šešių fazių konvejerį, vieną instrukciją įvykdo per vieną ciklą, turi atskiras instrukcijų bei duomenų spartinančiąsias atmintis. Juos integruotas atminties valdymo įrenginys, atmintis apsaugos įrenginys, aparatin÷s dauginimo, dalybos bei pernašos operacijos;  standartiniai (tipas s). Tai kompromisinis sprendimas, turintis penkių fazių konvejerį, vieną instrukciją atliekantis per vieną ciklą. Turi tik instrukcijų spartinančiąją atmintį, aparatines dauginimo, dalybos bei pernašos operacijas;

MICROBLAZE PROGRAMINIO PROCESORIAUS ĮGYVENDINIMO TYRIMAS 25 VGTU ELEKTRONIKOS FAKULTETAS

 ekonomiški (tipas e). Šio tipo NIOS2 mikroprocesoriai naudoja mažiausiai išteklių, neveikia konvejerio režimu, vieną instrukciją įvykdo per šešis ciklus; juose n÷ra įdiegti aritmetiniai blokai. Pagal naudojamų išteklių kiekį bei instrukcijų vykdymo spartą NIOS2 branduoliai (išskyrus ekonominius) yra palyginami su MicroBlaze. Sparčiausiuose Altera LPLM lustuose NIOS2 apibūdinamas tokiais parametrais: Stratix IV luste veikiant 340 MHz taktiniu dažniu, instrukcijų skaičius yra 47 MIPS, veikiant 290 MHz taktiniu dažniu įvykdo 343 MIPS. Be min÷tų Xilinx ir Altera kompanijų procesorių itin sparti yra atvirojo kodo 64 bitų sistema OpenSPARC . Šios sistemos architektūra yra pati sparčiausia iš visų min÷tų, tačiau OpenSPARC suderint tik su keliais Virtex 4 ir Virtex 5 LPLM lustais. 2.9 pav. pavaizduota OpenSPARC T1 branduolio vieta bendroje sistemoje. Kadangi OpenSPARC kol kas yra pritaikomi tik Xilinx šeimos lustams, šios programin÷s sistemos pagrindas yra procesorius MicroBlaze , kuris su OpenSPARC sudaro sąsają per standartinę greitą paprastą magistralę (GPM). Branduolys S1 ( 2.1 lentel÷) yra supaprastina UltraSPARC T1 versija, kadangi pastaroji yra pernelyg didel÷ įgyvendinant ją visą LPLM luste. S1 sudarytas tik iš vieno CPĮ ( UltraSPARC T2 jų turi aštuonis), skersinio jungiklio ir papildomo išsišakojimo atminties (angl. wishbone ) valdiklio. Nors S1 branduoliui įgyvendinti reikia 3700060000 Virtex 5 paieškos lentelių, ir d÷l to jis daugumai LPLM lustų yra per didelis, vis d÷lto tai yra kol kas vienintelis 64 bitų CPĮ, skirtas LPLM. Kitos, mažiau populiarūs programiniai procesoriai yra:  LEON3/LEON2. Tai atvirojo kodo SPARCv8 32 bitų sistema, sukurta kompanijos Aeroflex Gaisler . Šie mikroprocesoriai veikia konvejeriniu režimu, turi slankiojo kablelio įrenginį, naudoja 3500 paieškos lentelių Virtex 4 lustuose, tod÷l tinka praktiniam LPLM pritaikymui.  OpenRISC 1200. Tai 32 bitų atvirojo kodo mikroprocesorius, sukurtas OpenCores.org bendruomen÷s narių. Šis branduolys naudoja penkių fazių konvejerį ir turi nuosavas instrukcijas. valdiklis CCX2MB

2.9 pav. OpenSPARC sistemos struktūra

26 Vytautas ARMINAS 2009–2010 M. M.

 LatticeMicro32/LatticeMicro8 . Tai 32 bitų arba 8 bitų atvirojo kodo RISC architektūros CPĮ, sukurtas kompanijos Lattice Semiconductors . Sistema visiškai nesuderinama su Xilinx ir Altera LPLM, juose n÷ra integruoto slankiojo kablelio įrenginio;  Cortex-M1 . Tai 32 bitų ARMv6 architektūros bei firmos Actel CPĮ, skirtas LPLM lustams. Cortex-M1 puikiai suderinami su Xilinx ir Altera LPLM. ARM (angl. Advanced RISC Machine ) yra itin populiarūs RISC architektūros lustai, skirti sistemoms, kurios turi naudoti mažai energijos. Be to, ARM lustuose įgyvendinamos kai kurios operacin÷s sistemos Linux arba Windows CE . Kol kas Xilinx LPLM neturi integracijos su ARM Cortex-M1 procesoriais, tačiau yra pasirašyta abipusio bendradarbiavimo sutartis, kuri leidžia tik÷tis greitu metu išvysti naują ARM IN modulį, specialiai skirtą MicroBlaze . Tai atvertų galimybes lengviau suderinti su Xilinx LPLM tokius įrenginius kaip bevielio ryšio valdiklius, saugumo įrenginius ar vaizdo spartintuvus.

2.3. MicroBlaze programinis procesorius

MicroBlaze yra įterptinis programinis procesorius [21], operuojantis 32 bitų duomenimis. Tai programų paketo Xilinx Embedded Development Kit (EDK ) sudedamoji dalis. Eksperimentų atlikimo metu buvo naudota Xilinx EDK 11.4 versija. Darbe naudoti Xilinx moduliai ML402 bei XUPV5LX110T yra įtraukti į Xilinx EDK programų paketo saugyklą. Taigi toliau aptarsime procesus, susijusius su MicroBlaze programiniu procesoriumi. Išsamiau nagrin÷sime sujungtųjų branduolių (angl. CoreConnect ) [22] magistralę, kurios pagrindu veikia MicroBlaze ir PowerPC programiniai procesoriai. MicroBlaze programinio procesoriaus naudojimas iš esm÷s palengvina LPLM projektavimo darbus, tačiau jo architektūra, kurios pagrindą sudaro sujungtųjų branduolių architektūra [23], yra pakankamai sud÷tinga (2.10 pav.). Sujungtųjų branduolių architektūrą sukūr÷ korporacija IBM . Šios

2.10 pav . Sujungtųjų branduolių magistral÷s architektūra

MICROBLAZE PROGRAMINIO PROCESORIAUS ĮGYVENDINIMO TYRIMAS 27 VGTU ELEKTRONIKOS FAKULTETAS architektūros pagrindas yra procesorių bei išorinių periferijos branduolių integravimas vienoje sistemoje kartu su kita standartizuota produkcija ir įprastomis vienalust÷mis sistemomis (angl. System on a Chip ). D÷l sujungtųjų branduolių magistral÷s įvairiapusiškumo galima sujungti standartinius vienalusčių sistemų modelius, sugeneruotus kaip branduolius pagal sujungtųjų branduolių specifikaciją. Tod÷l ši metodika palengvina vienalusčių sistemų, reikalingų darbo tikslams, integravimą į vientisą programinį procesorių. Sujungtųjų branduolių magistral÷s architektūra vienalusčių įrenginių modeliavime yra standartin÷ sistema ir daugelio įtaisų, tokių, kaip IBM Blue Logic Core Library ar LPLM, pagrindas. Ši architektūra sudaryta iš procesoriaus vidin÷s magistral÷s (PVM) (angl. Processor Local Bus PLB ), lusto vidin÷s magistral÷s (LVM) (angl. OnChip Peripheral Bus OPB ) [24], magistralių jungčių bei įrenginių valdymo registro (ĮVR) (angl. Device Control Register DCR ) magistral÷s. Duomenų mainai tarp periferijos ir procesoriaus magistralių vyksta minimaliu 50 MHz dažniu. Darbe buvo naudojamas 100 MHz ir 125 MHz taktiniai dažniai. L÷tesn÷s periferijos branduoliai yra prijungti prie lusto vidin÷s magistral÷s, ir tai l÷tina duomenų perdavimą į procesoriaus vidinę magistralę. Sujungtųjų branduolių architektūros įrenginiuose duomenų mainai vyksta iki 2,9 GB/s sparta (183 MHz taktiniu dažniu) [25]. Tai lemia naudojamos 128 bitų magistral÷s plotis. Lusto vidin÷ magistral÷ yra skirta lengviasniam integriniame grandyne esančių papildomų įrenginių sujungimui. Šioje magistral÷je yra įdiegtas bendrosios paskirties skirtingų išorinių įrenginių suderinamumo modulis. LPM yra visiškai sinchronin÷, funkcionuoja nepriklausomai nuo skirtingų magistral÷s hierarchijos lygių. Ji n÷ra skirta tiesiogiai prisijungti prie procesoriaus branduolio. Procesorius šioje magistral÷je gali valdyti antrinius išorinius įrenginius per procesoriaus vidin÷s magistral÷s tiltą, kuris yra taip pat atskiras branduolys. Valdantieji (angl. Master ) LPM išoriniai įrenginiai gali sąveikauti su atmintimi per procesoriaus vidinę magistralę PVM tiltu – atskiru branduoliu. 2.11 pav. pateikta integriniame grandyne esančios magistral÷s struktūra, kuri sudaro sąsają tarp procesoriaus branduolio ir kitų išorinių prietaisų, susidedančių iš valdančių ir valdomų procesoriaus vidin÷s magistral÷s ir lusto vidin÷s magistral÷s įrenginių. Procesoriaus vidin÷ magistral÷ sparti, tod÷l yra skirta sąveikauti su atmintimi per magistral÷s sąsajos blokus. 2.11 pav. pateikti du magistral÷s sąsajos blokai: išorinis periferijos valdiklis ir atminties valdiklis – yra PVM valdomieji įrenginiai (angl. Slaves ). Procesoriaus branduolys turi dvi pirmines PVM jungtis – vieną instrukcijų, kitą duomenų mainams su spartinančiąja atmintimi. Taip pat prie procesoriaus vidin÷s magistral÷s yra prijungtas tiesiogin÷s kreipties į atmintį (angl. Direct Memory Access ) valdiklis, kuris yra PVM magistral÷s valdantysis įrenginys, naudojamas sparčiam programos duomenų perdavimui.

28 Vytautas ARMINAS 2009–2010 M. M.

2.11 pav . Lusto vidin÷s magistral÷s ryšiai

L÷tesnio veikimo periferija (tokia kaip LPM valdantieji, valdomieji įrenginiai ir kita vidin÷ periferija) yra prijungta prie lusto vidin÷s magistral÷s. Tam, kad būtų įgyvendintas duomenų perdavimas tarp PVM valdančiųjų ir LPM valdomųjų įrenginių, tarp PVM ir LPM blokų yra įrengtas duomenų mainų tiltas. Duomenų iš PVM į LPM tiltas yra valdomasis įtaisas procesoriaus vidin÷je magistral÷je, tačiau lusto vidin÷je magistral÷je jis yra valdantysis. Duomenų tiltas tarp LPM ir PVM skirtas duomenų mainams tarp PVM valdančiojo ir LPM valdomojo įrenginių. Tuo tarpu duomenų tiltas iš PVM į LPM yra valdomasis LPM ir valdantysis PVM blokas. Be to, PVM palaiko tiesiogin÷s kreipties į atmintį valdančiuosius įrenginius. Įrenginių kontrol÷s registras, visų pirma, skirtas sąveikauti su skirtingų PVM ir LPM valdančių ir valdomų įrenginių būkl÷s bei kontrol÷s registrais. Įrenginių kontrol÷s registro magistral÷s architektūra leidžia duomenis perduoti nepriklausomai nuo PVM ir LPM mainų. Vidin÷s atminties magistral÷s (VAM) (angl. Local Memory Bus LMB ) elemento – blokin÷s atsitiktin÷s kreipties atminties – sąsajos valdiklis yra modulis, prijungtas prie vienos VAM magistral÷s. Jame yra integruotas VAM magistral÷s protokolas. Leistinas bet koks prieigos dydis, neviršijantis VAM duomenų magistral÷s pločio. Vidin÷s atminties magistral÷s BAKA sąsajos valdiklis – tai ryšys tarp VAM ir BAKA bloko periferijos. BAKA atminties posistem÷ susideda iš valdiklio kartu su konkrečiais BAKA komponentais, kurie yra integruoti į šio bloko periferiją. Programinio procesoriaus terminijoje VAM blokas naudojamas kaip vidin÷s atminties magistral÷s Xilinx LPLM procesoriaus sistemų tarpusavio sąsaja. VAM yra greita vidin÷ magistral÷, sujungianti MicroBlaze instrukcijų ir duomenų kanalus su periferija – BAKA. Ši sistema operacijas vykdo 125 MHz taktiniu dažniu ir turi atskiras duomenų skaitymo bei rašymo magistrales [26].

MICROBLAZE PROGRAMINIO PROCESORIAUS ĮGYVENDINIMO TYRIMAS 29 VGTU ELEKTRONIKOS FAKULTETAS

2.12 pav . MicroBlaze sistema, naudojanti dvi vidines atminties magistrales

Aptartos sistemos struktūrin÷ schema MicroBlaze procesoriui pateikta 2.12 pav.

2.4. Įterptin÷s sistemos programin÷ dalis

Perprogramuojamoje logikoje aparatin÷ ir programin÷ dalys yra itin glaudžiai susijusios, projektavimo metu netgi sunku apibr÷žti šių dalių sritis. Šiame poskyryje apžvelgiama LPLM sistemos programin÷ dalis kuriama remiantis Xilinx įrankiais. Programa XPS projekto kompiliavimo pabaigoje sukuria dvejetainį failą download.bit , kuris į LPLM modulį yra įkeliamas įrankiu iMPACT arba paketiniame režime (angl. Batch mode ). Programa XPS kodo įk÷limui naudoja komandų seką, aprašytą faile etc/download.cmd . Min÷tas failas download.bit – tai dvejetainis kodas, kuriame yra saugoma sistemos aparatin÷ konfigūracija ir vykdomojo kodo ( ELF ) atvaizdas. ELF (angl. Executable and Linkable Format File ) yra dvejetainis duomenų failas, kuriame saugomas vykdomasis CPĮ kodo atvaizdas, paruoštas tiesioginiam veikimui procesoriuje (išsamiau apie ELF formatą skaitykite toliau šiame poskyryje). Atlikus aparatin÷s dalies generavimą yra sukuriamas dvejetainis konfigūracijos failas system.bit , kuris dar n÷ra inicijuotas. Taigi sujungus aparatinę ( system.bit ) dalį su programiniu kodu ( ELF ) gaunamas vienas failas ( download.bit ), įkeliamas į LPLM lustą ir paruoštas vykdymui. Tokią konfigūracin÷s bylos kūrimo eigą vaizduoja 2.13 pav. Programin÷ projekto dalis yra ELF byla, sujungianti aparatin÷s dalies bibliotekas bei naudotojo failus į vieną struktūrą. Įvairiose kompiuterin÷se sistemose, įskaitant mikrovaldiklius bei programuojamas logines matricas, vykdomosios programos kodui struktūrizuoti naudojamas specialus formatas ELF (angl. Executable and Linking Formats ), reglamentuojamas pagal Tool Interface standartą. ELF yra bendras standartas vykdomosioms programoms, objektiniams kodams, bendroms bibliotekoms bei

30 Vytautas ARMINAS 2009–2010 M. M.

2.13 pav. Programin÷s kodo dalies įgyvendinimo etapas

IN moduliams. LPLM šį standartą per÷m÷ iš Unix sistemai skirtos versijos. Glaudi sąsaja su Unix sistema yra apskritai daugumoje Xilinx ar Altera kompanijų taikomųjų programų. ELF formatas yra labai lankstus ir nesusietas su konkrečia procesorių architektūra. Taigi tiek bendros paskirties procesoriams, tiek LPLM lustams ELF išlaiko bendrą struktūrą. Kam reikalingas min÷tas kodo struktūrizavimas? Įprastai tarp kodo vidinių funkcijų ir kitų išorinių funkcijų vyksta tarpusavio kreipimaisi ir duomenų mainai. Šios išorin÷s funkcijos bei duomenys gali būti saugomi laikinoje vietoje, kuri kompiliatoriui n÷ra žinoma. Taip atsitikus kompiliatorius nežinomam atminties adresui paskiria laisvą vietą atmintyje. Pavyzdžiui, C programavimo kalboje kintamasis „ int “ apibr÷žtas viename faile, bet į jį kreipiamasi iš kompiliuojamo failo. Kompiliatorius tuomet generuos instrukciją „įkelti iš atminties“, ir taip kintamasis bus įkeltas iš atminties į procesoriaus registrą. Šiai operacijai atlikti reikalingas kintamojo „ int “ adresas. Kol kompiliatorius nežino tikrosios saugomo kintamojo vietos atmintyje, naudojama laikai paskyra (angl. placeholder ). Taigi sąsajos kūrimo priemon÷s (angl. linker ) užduotis yra nustatyti šį adresą. Tokia operacija vadinama adreso išskyrimu. Sąsajos kūrimo priemon÷ surenka visus sukompiliuotus failus, patalpina juos į naudotojo nurodytą atmintį ir užpildo laikinąsias paskyras. Sąsajos kūrimo komandos saugomos min÷tame ELF faile. Šis failas susideda iš vienos antrašt÷s ir programos duomenų. Programos duomenys sudaryti iš:  programos antrašt÷s lentel÷s, aprašančios segmentus;  sekcijos antrašt÷s lentel÷s, aprašančios sekcijas;  duomenų, nurodomų programos arba sekcijos antraščių lentel÷se. Segmentuose yra saugoma informacija, būtina programos kodo vykdymui, tuo tarpu sekcijose yra svarbūs sąsajų bei kodo dalių išsaugojimo nurodytoje atmintyje duomenys. Kiekvienas programos baitas priskiriamas vienai sekcijai. Tokios kelios sekcijos yra sujungiamos ir sudaro

MICROBLAZE PROGRAMINIO PROCESORIAUS ĮGYVENDINIMO TYRIMAS 31 VGTU ELEKTRONIKOS FAKULTETAS

2.14 pav . Programos vykdymo ir sąsajos formato struktūra segmentą. Grafiškai ELF failo struktūra pateikta 2.14 pav. Pilnas ELF failas yra gaunamas sujungus įvesties sekcijas iš objektinių failų (. o tipo). Žemiau yra detaliau paaiškintos visos MicroBlaze programiniame projekte naudojamos sekcijos:  .text : šioje sekcijoje saugoma programos vykdomosios instrukcijos. Joje yra žym÷s x (vykdomasis), r (tik skaitomas) ir i (inicijuojamas). Tai reiškia, jog ši sekcija gali būti priskirta iniciavimui skaitymo režimu veikiančiai atminčiai, kuri uri būti pasiekiama iš procesoriaus magistrale;  .rodata : šioje sekcijoje saugomi tik skaitomi duomenys. Joje yra dvi žym÷s: r (tik skaitomas) ir i (inicijuojamas). Ji gali būti pasiekiama iš tik skaitomos atminties;  .sdata2 : ši sekcija yra panaši į sekciją . rodata . Tačiau šioje saugomi maži (mažesni nei 8 baitų) skaitomi duomenys. Visi duomenys sekcijoje .sdata2 yra pasiekiami paviene instrukcija. Norint kompiliatoriui nurodyti kitokį duomenų dydį, kurie patektų į šią sekciją, naudojama parinkti –G. Sekcija turi dvi žymes: skaitymo ( r) ir iniciavimo (i);  .data : šioje sekcijoje saugomi duomenys turi perrašymo bei skaitomo ( w) ir iniciavimo (i) žymes. Sekcija turi būti įkeliama į atsitiktin÷s kreipties atmintį ir negali būti naudojama tik skaitomoje atmintyje;  .sdata : šioje sekcijoje saugomi maži (mažesni nei 8 baitų) perrašomi bei skaitomi duomenys. Visi duomenys sekcijoje . sdata2 yra pasiekiami paviene instrukcija. Norint kompiliatoriui nurodyti kitokį duomenų dydį, kurie patektų į šią sekciją, naudojama parinkti – G. Sekcija turi dvi žymes, įkeliamas į atsitiktin÷s kreipties atmintį: perrašymo (w) ir iniciavimo (i);  .sbss : ši sekcija turi (ne) inicijuotus mažesnius nei 8 baitų duomenis. Sekcija turi žymę perrašymo žymę ( w) ir yra rašoma į atsitiktin÷s kreipties atmintį;  .bss : ši sekcija turi (ne) inicijuotus duomenis. Programos stack ir heap dalys yra įkeliamos į šią sekciją. Ji turi žymę perrašymo žymę (w) ir yra rašoma į atsitiktin÷s kreipties atmint;

32 Vytautas ARMINAS 2009–2010 M. M.

 .heap : ši sekcija turi neinicijuotus duomenis, naudojamus kaip globalus programos heap blokas. Paprogram÷, dinamiškai lokalizuojanti atmintį, taip pat nukreipiama į šią sekciją. Ji saugoma atsitiktin÷s kreipties atmintyje;  .stack : ši sekcija turi neinicijuotus duomenis, naudojamus kaip globalus programos stack blokas. Ši sekcija atmintyje išd÷stoma iš karto po . heap sekcijos. Kai kuriose sąsajos kūrimo paprogram÷se sekcijos . heap ir . stack yra sujungiamos kartu į sekciją, vadinamą .bss_stack ;  .init : šioje sekcijoje saugomas programavimo kalbos iniciavimo kodas. Žym÷s yra tokios pat kaip ir sekcijos . text . Saugoma tik skaitomoje atmintyje;  .fini : tai panaši sekcija į . init , tačiau joje saugomas programavimo kalbos išvalymo kodas;  .ctors : šioje sekcijoje saugomas funkcijų, kurios turi būti taikomos programos starto metu, sąrašas. Žym÷s tokios pat kaip sekcijoje . data . Ji yra rašoma į atsitiktin÷s kreipties atmintį;  .dtors : šioje sekcijoje saugomas funkcijų, kurios turi būti taikomos programos pabaigos metu, sąrašas. Žym÷s tokios pat kaip sekcijoje . data . Ji yra rašoma į atsitiktin÷s kreipties atmintį;  .got2./go : šioje sekcijoje yra saugomos rodykl÷s į programos duomenis. Žym÷s tokios pat kaip sekcijoje . data . Ji yra rašoma į atsitiktin÷s kreipties atmintį;  .eh_frame : šioje sekcijoje saugoma kadrų manipuliavimo informacija, naudojama išimčių tvarkymui. Žym÷s tokios pat kaip sekcijoje . rodata . Ji yra rašoma į tik skaitomą atmintį. Pagrindiniai ir dažniausiai pasitaikantys kodo tipai (segmentai), sukuriami GCC kompiliatoriaus, yra . bss , . data , . rodata ir . text . 2.2 programos kode matyti, kokiam segmentui priskiriama kiekviena eilut÷. Analizuojant pateiktą pavyzdį matyti, jog blokas DATA negali būti įkeliamas į tik skaitomą atmintį, nes programa tiesiog neveiks. Kita programinių elementų grup÷ yra įkrovos ir vektorių sekcijos (angl. Boot and Vector Sections ). Ši grup÷ yra saugoma programos kodo pradžioje pradedant nuliniu adresu ir kiekvienam vektoriui skiriant po kelis bitus. Jau aptartas Reset vektorius yra pirmasis 8 bitų kodas. Žemiau pateiktas visų vektorių sąrašas:

2.2 Programos kodas. Programos segmentų demonstracija #include #include int duomenu_masyvas[5] = {0,1,2,3,4};//DATA const int masyvas_konst[5]={5,6,7,8,9}; //RODATA int main(){ int k; //BSS k = k * 2; //TEXT printf("%d\n", duomenu_masyvas[3]);//TEXT duomenu_masyvas[3] = masyvas_konst[3];//TEXT printf("%d\n", duomenu_masyvas[3]);//TEXT return 0; }

MICROBLAZE PROGRAMINIO PROCESORIAUS ĮGYVENDINIMO TYRIMAS 33 VGTU ELEKTRONIKOS FAKULTETAS

 .vectors.reset (8 bitai): sistemos nustatymo į pradžios būseną vektorius;  .vectors.sw_exception (2 bitai): programinio kodo išimčių vektorius;  .vectors.interrupt (10 bitų): pertraukčių vektorius;  .vectors.hw_exception (2 bitai): aparatinių išimčių vektorius. Įterptin÷s sistemos programin÷s dalies komponentai, kurie turi būti paleidžiami iš sparčios atsitiktin÷s kreipties atminties (tai gali būti blokin÷ RAM , SDRAM bei SRAM ), gali būti inicijuojami naudojant pirmin÷s įkelties paprogramę arba System ACE technologiją. Šio metodo principas yra paprastas: į pastoviąją Flash atmintį yra įkeliamas dvejetainis failas, susidedantis iš LPLM konfigūracijos bei vykdomosios pagrindin÷s programos. Pastovioji Flash atmintis yra l÷ta ir yra netinkama vykdomosioms procesoriaus operacijoms saugoti. Naudojant pirmin÷s įkelties paprogramę kodas įkeliamas į spartesnę RAM atmintį ir vykdomas iš jos. Pirmin÷s įkelties paprogram÷ yra nedidel÷s apimties kodas, saugomas programin÷s atminties dalyje. Įkelties paprogram÷ yra įvykdoma iš karto procesoriui palikus Reset būseną. Taigi pirmin÷s įkelties paprogram÷ nustato registrus ir kopijuoja pagrindinę vykdomąją programą tolimesniam vykdymui. Atlikus pagrindin÷s programos kopijavimą, paprogram÷ jį paleidžia vykdyti parenkant pradin÷s paleisties sritį. Įkelties paprogram÷s vykdymo metu visos pertrauktys yra išjungiamos. Pertraukčių kontrolę atlieka pagrindin÷ programa. Šis trumpai aptartas procesas yra iliustruotas 2.15 pav. Jame pavaizduota dvi sistemos įkrovos struktūros. Kompanijos Xilinx (analogiškai ir kitų LPLM gamintojų) moduliuose yra naudojamos kelių tipų pastoviosios Flash bei sparčios atmintys. LPLM lusto konfigūracijos ir vykdomosios programos įk÷limas į spartesnę atmintį yra tas pats. Blokin÷ atminties maksimalus dydis yra kilobaitų eil÷s (maksimalus dydis yra 64 KB), tod÷l sud÷tingesnei programai saugoti tenka naudoti

0x0 Nustatymo vektorius Pagrindin÷ programa LPLM konfigūracija

Pirmin÷s įkelties programa Programos pagrindin÷ Reset 1 dalis Programos pradžia Ne Ar nustatyta? Nepastovus kodas 2 3 Taip Vartotojo duomenys Savaiminis Įkrovos programos programavimas kodas 0xFFFFFFF

(a) algoritmas (b) kodo sekcijos

2.15 pav. Pirmin÷s įkelties paprogram÷

34 Vytautas ARMINAS 2009–2010 M. M.

Specifikacija/ Architektūra

RTL projektavimas ir optimizavimas

RTL simuliacija

Sintezavimo Sintezavimas optimizavimas

Patalpinimo ir Patalpinimas ir trasavimo trasavimas optimizavimas

Statinis sinchronizavimas ir veikimo analiz÷

Įrenginio programavimas ir derinimas 2.16 pav. Įterptin÷s sistemos įgyvendinimo etapas SRAM arba SDRAM atmintis. Skirtingi kodo sektoriai gali būti saugomi skirtingose atmintyse. Parinktis priklauso nuo poreikių, siekiamos spartos ir kitų veiksnių. 2.15 pav. (a) įkelties programos bloke yra sąlyga, nuo kurios rezultato priklauso bus vykdomas užprogramavimas ar tiesioginis kreipimasis į programą. 2.15 pav. (b) pavaizduoti programos atminties blokai ir etapai pereinant nuo vieno į kitą sritį:  iš karto po Reset signalo vykdymą perima įkelties paprogram÷ ir peršoka į atminties sritį, kuris egzistuoja įkelties kodas. Įkelties kodas į sparčią atmintį įrašo pagrindin÷s programos duomenis (nuskaitydama iš Flash atminties arba kitokio išorin÷s sąsajos įrenginio);  atliekamas duomenų įrašymas į programos atmintį;  vykdymas yra perkeliamas į pirmą reguliarios programos instrukciją. Šiame poskyryje buvo aptarta programuojamų loginių matricų projekto programin÷ dalis, detaliai pateikti praktiškai naudojami metodai. Apibendrinant aparatin÷s bei programin÷s dalių projektavimo žingsnius, 2.16 pav. yra pateikiama schema, būdinga daugumai populiarių LPLM [27]. Visiškai veikiančiam projektui įgyvendinti praeinami pagrindiniai septyni etapai:  projektavimo priemon÷mis (pvz., ISE Design Suite ) sukuriama įterptin÷ sistema – aprašoma pilna architektūra bei programin÷ dalys;  sukurta sistema yra projektuojama tranzistoriniame (angl. RTL ) lygmenyje;

MICROBLAZE PROGRAMINIO PROCESORIAUS ĮGYVENDINIMO TYRIMAS 35 VGTU ELEKTRONIKOS FAKULTETAS

 atliekama sistemos veikimo simuliacija tranzistoriniame lygmenyje;  sintezavimo metu konceptualus HDL kodas yra verčiamas į loginį arba fizinį silicio įrenginio atitikmenį. ISE priemon÷ sintezuoja kartu VHDL ir Verilog kodą;  talpinimo ir trasavimo metu sintezuotas kodas yra fiziškai taikomas LPLM luste, komutuojamo matricos jungtys, Slice moduliai;  statinio sinchronizavimo ir veikimo analiz÷s etapas yra skirtas projekto optimizavimui, HDL prototipo kuo palankesniam įgyvendinimui fiziniame luste. Dažniausiai optimizavimas yra ilgas grįžtamasis procesas, tod÷l 2.16 pav. pavaizduotos grįžtamosios jungtys į RTL optimizavimo etapą;  paskutiniame etape yra gaunama sistemos vaizdas ( download.bit failas Xilinx atveju), kuris įkeliamas į lustą.

2.5. Uždavinių formulavimas

Dabartiniai programuojami mikrograndynai yra itin spartūs ir savo paj÷gumu (netgi nekalbant apie algoritmų vykdymo lygiagretinimo galimybes) prilygsta bendrosios paskirties mikroprocesoriams, tod÷l LPLM gali būti tiriami įgyvendinant juose praktikoje pritaikomus algoritmus (metodus). Įgyvendinimo tikslams pasiekti pasirinkti pasaulin÷s LPLM lyder÷s kompanijos Xilinx moduliai. Xilinx gaminami lustai yra konkurencingi dabartin÷je rinkoje, su aparatine įranga yra pateikiamas platus programin÷s įrangos asortimentas. Renkantis konkretų testavimų modulį vienas iš pačių svarbiausių parametrų yra LPLM greitis, kurį lemia architektūros sudedamieji elementai. Kiekvienas LPLM lustas yra pažym÷tas kodiniu pavadinimu, kuriame yra pateiktas spartos indeksas. Kompanijos Altera LPLM arba Xilinx SPLL lustuose greičio indeksas (angl. speed grade ) nurodo signalo v÷linimą, tuo tarpu Xilinx LPLM šis parametras vertinamas kitu masteliu, ir kuo jis didesnis, tuo mikrograndynas spartesnis. Projekte pasirinkti vidutin÷s klas÷s moduliai su Virtex 4 (ML402) ir Virtex 5 (XUPV5) lustais. Naudojant kelis modulius tam pačiam metodui įgyvendinti išplečiama tyrimų sritis. Įgyvendinant programuojamų loginių matricų projektus neatsiejama dalis yra schemotechninio lygmens aprašymo kalba, tod÷l projekte siekiama tam tikrą algoritmo sritį įgyvendinti VHDL kalba – sukurti atskirtą IN modulį (pasirinkta VHDL kalba, nes ji labiausiai paplitusi Europoje). Šiame skyriuje detaliai pateikta programinių LPLM mikroprocesorių analiz÷. Didžiausias d÷mesys yra skiriamas kompanijos Xilinx produktui – MicroBlaze . Pasirinktas programinis procesorius d÷l šių priežasčių:  MicroBlaze yra lankstus, spartus ir nuolatos tobulinamas intelektin÷s nuosavyb÷s modulis;  rinkoje yra sukurta daugyb÷ IN modulių, kurie skirti būtent MicroBlaze procesoriui;

36 Vytautas ARMINAS 2009–2010 M. M.

 rinkoje yra sukūrta produktų, leidžiančių LPLM įterptinę sistemą įgyvendinti įvairiomis priemon÷mis, pavyzdžiui, remiantis Impulse SystemC projektas yra kuriamas adaptuota C kalba, taip pat projektą galima realizuoti schemotechniniais blokais ( LabView arba System Generator – integracija su MATLAB TM ) ir pan.;  MicroBlaze yra integruojamas su kitais savarankiškais procesoriniais moduliais, tokiais kaip OpenSPARC , prie standartin÷s MicroBlaze konfigūracijos galima prijungti modernią operacinę sistemą uClinux (specialiai Xilinx yra skirta Petalinux ). Taigi pasirinktuose LPLM moduliuose ir remiantis MicroBlaze koncepcija siekiama įgyvendinti du skirtingus metodus: optimizavimo skruzdžių kolonijomis algoritmą ir lietuvių kalbos pavienių žodžių atpažinimo sistemą. Visa sistemoms reikalinga išorin÷ ir vidin÷ periferija turi būti prijungta prie MicroBlaze mikroprocesoriaus. Projekte turi būti panaudotos pagrindin÷s MicroBlaze magistral÷s: VAM (instrukcijų ir duomenų mainams), PVM (periferijos sąsajai), GPM (spartaus ryšio sukūrimui), LPM (senesnių IN modulių prijungimui). Programinis kodas, atsižvelgiant į patikimumą ir lankstumą, rašomas C programavimo kalba ir įgyvendinamas MicroBlaze standartin÷je operacin÷je sistemoje. Įvertinus programinio kodo apimtis, turi būti sukurtas specialus ELF failas, kurio sekcijos talpinamos pakankamai didel÷se operatyviosiose atmintyse. Įrankiu XPS sukurti konfigūracinę bylą, automatiškai įkeliamą iš tam tikros Flash atminties (CF ar kitų) į LPLM lustą. Tolimesni nagrin÷jamų metodų tobulinimai gali būti vykdomi MicroBlaze integruojant su išpl÷stiniais moduliais ar min÷tais trečiųjų šalių produktais. SKO ir LKA metodus įmanoma įgyvendinti Petalinux aplinkoje, kurios vaidmuo būtų kaip standartin÷s operacin÷s sistemos, vykdančio instrukcijas ir besikreipiančios į išorinius IN modulius. Žymus sistemos veikimo paspartinimas įmanomas prijungus OpenSPARC modulį prie MicroBlaze XUPV5 įrenginio. Papildomų garso apdorojimo (pvz., filtravimo) blokų įgyvendinimas ir integravimas su MicroBlaze procesoriumi galimas System Generator priemone, integruojant paketą MATLAB TM .

MICROBLAZE PROGRAMINIO PROCESORIAUS ĮGYVENDINIMO TYRIMAS 37 VGTU ELEKTRONIKOS FAKULTETAS

3. SKRUZDŽIŲ KOLONIJŲ OPTIMIZAVIMO ĮGYVENDINIMAS

Skruzdžių kolonijų optimizavimas (SKO) – tai mokslo sritis, tirianti dirbtines sistemas, pagrįstas skruzdžių kolonijų elgsena gamtoje. SKO naudojamas sprendžiant diskrečiojo optimizavimo problemas. D÷l antrajame skyriuje min÷tų lankstumo ir spartos savybių SKO metodikai įgyvendinti pasirinkta LPLM technologija. Pirmasis taikomasis darbas sujungęs lauku programuojamų loginių matricų technologiją su skruzdžių kolonijų optimizavimo algoritmais spaudoje pasirod÷ tik 2005 m. Tiriamaisiais darbais yra parodytas dirbtinių neuronų tinklų bei genetinių algoritmų tinkamumas juos įgyvendinti perprogramuojamuose įrenginiuose. Tuo tarpu dar n÷ra išsamiai išnagrin÷ta, kokiu būdu ir kokius skruzdžių kolonijų optimizavimo algoritmus tikslinga įgyvendinti lauku programuojamų loginių matricų technologija, siekiant ženkliai paspartinti tokias sistemas. Taigi šios darbo dalies uždavinys ištirti skruzdžių kolonijų optimizavimo algoritmų įgyvendinimo vienalust÷mis ir daugialust÷mis [28] lauku programuojamomis login÷mis matricomis būdus ir galimybes. Įgyvendinant šį uždavinį siekta nustatyti, kiek tikslingas skruzdžių kolonijų optimizavimo algoritmų, taikomų vaizdams apdoroti įgyvendinimas, min÷ta skaitmeninių sistemų kūrimo technologija. Šiame skyriuje pateikti rezultatai gauti 2008 m. vykdant Valstybinio mokslo ir studijų fondo remiamą mokslininkų grupių projektą „Skruzdžių kolonijų optimizavimo įgyvendinimo lauko programuojamomis login÷mis matricomis tyrimas“ [29] bei moksliniame straipsnyje žurnale [1] cituojameme ISE Web of Since duomenų baz÷je.

3.1. SKO algoritmų įgyvendinimo apribojimai

Taikant skruzdžių kolonijų optimizavimo algoritmą programuojamai logikai, pirmiausia reikia įvertinti būsimos architektūros apribojimus [30]. Šie apribojimai yra susiję su skaičiavimo, operatyviosios atminties, įvesties ir išvesties ištekliais, kintamųjų tipais bei informacijos paskirstymu. Pats greičiausias ir paprasčiausias sprendimas yra LPLM luste įgyvendinti feromono matricą. Remiantis šiuo požiūriu kiekvienam statin÷s feromono matricos elementui yra išskiriamas reikiamas operatyviosios atminties kiekis. Skruzdžių jud÷jimas įgyvendinamas sud÷tingoje konvejeriniu principu procesoriaus valdomoje matricoje (angl. systolic fashion ). Galiausiai kiekviena skruzd÷ užima tą matricos eilutę, kuri atitinka tikrąjį sprendimą. Akivaizdu, kad toks sprendimas pareikalautų per daug išteklių, reikalingų visos sistemos įgyvendinimui (išteklių poreikis did÷ja kvadratiniu d÷sniu did÷jant skruzdžių kiekiui). Skruzdžių kolonijų optimizavimo algoritmų įgyvendinimą LPLM įrenginiuose apsunkina žemiau teikiami veiksniai:

38 Vytautas ARMINAS 2009–2010 M. M.

1. Feromono vert÷ms ir atsitiktiniams skaičiams saugoti reikalingas slankiojo kablelio formatas. Toks pateikimas netinka perprogramuojamos logikos įgyvendinimui ( HDL programinei įrangai). 2. Garavimui ir euristin÷s informacijos integravimui reikia daugybos operacijų. LPLM esantys skaičiavimo ištekliai neefektyviai palaiko daugybos grandžių įgyvendinimą. Daugybos blokai daugumoje Xilinx LPLM lustų sukonstruojami iš juos sudarančių 46 į÷jimų konfigūruojamų loginių blokų.

3. Norint veiksmus atlikti remiantis tikimybiniu skirstiniu pij , skaičiuojama sandaugos rezultato skaitiklyje priešd÷lin÷ suma (angl. prefix sum ) kaip vis dar neparinktas įrašas parinkimo aib÷je S . Tod÷l turi būti paskirta n ciklų priešd÷linei sumai apskaičiuoti – po vieną ciklą feromono matricos eilutei. Reikalingos vietos suradimas ir laiko sąnaudų numatymas yra gana sud÷tingi uždaviniai programuojamoms login÷ms matricoms. Kadangi šie veiksniai riboja LPLM taikymą, tenka ieškoti specialių SKO algoritmo modifikacijų.

3.2. SKO algoritmų modifikacijos

Populiacijomis grįsto optimizavimo skruzdžių kolonijomis (POSK) algoritme feromono informacija saugoma netiesiogiai – populiacijoje. Taigi šio algoritmo įgyvendinimas LPLM, remiantis n× k dydžio sveikųjų skaičių matrica, yra tinkamesnis už įprastą SKO algoritmą [31]. SKO algoritme kiekvienam skruzd÷s sprendimui turi būti apskaičiuojamas tikimybinis skirstinys. Nuosekliai veikiančioje įrangoje šiai operacijai reikia O( n ) daugybos ir sud÷ties žingsnių. Pritaikius algoritmą technin÷je įrangoje skaičiavimus vykdančioje lygiagrečiai, darbo laikas sutrump÷ja iki O(log n ) žingsnių. Taikant POSK algoritmą, priešingai nei SKO būde, nebūtina skaičiuoti priešd÷linę sumą (šis veiksmas ilgai užtrunka). POSK algoritme skruzdžių sprendimai yra išreiškiami kaip k +1 galimos diskrečios feromono vert÷s. Laiko sąnaudos gali būti sumažintos iki O( k ) paprastų žingsnių. Pažym÷tina, kad k įprastai yra mažas dydis, nes eksperimentiškai įrodyta, kad populiacijos dydis tur÷tų būti intervale 1≤k ≤ 8 . Kiekvienai skruzdei suformuotos n dydžio užduoties sprendimui reikia O( nk ) žingsnių laiko. Pavyzdžiui, procesoriuje, nuosekliai vykdančiame instrukcijas, naudojant SKO algoritmą, skruzd÷s uždavinio sprendimas užtruktų O( n 2 ) žingsnių laiko. D÷l LPLM lygiagretumo, šia įranga vykdant m skruzdžių sprendimus reik÷tų O( nk ) žingsnių laiko, o nuosekliai dirbančiam procesoriui – O( mn 2 ) .

MICROBLAZE PROGRAMINIO PROCESORIAUS ĮGYVENDINIMO TYRIMAS 39 VGTU ELEKTRONIKOS FAKULTETAS

3.3. Algoritmų įgyvendinimas vienalusčiame įrenginyje

2.3 poskyryje aptarta SKO įgyvendinimui pasirinkto MicroBlaze programinio procesoriaus architektūra. Pirmasis svarbus žingsnis yra originalių programinių blokų tarpusavio komutacija procesoriaus vidine bei išorine magistral÷mis. Antrasis žingsnis, sukonfigūravus programinį procesorių, yra MicroBlaze sujungimas su išeities kodu rašomu C programavimo kalba. Šiam žingsniui skirta Data2MEM programa (dalis Xilinx EDK programų paketo). Data2MEM [32] yra bazin÷ duomenų keitimo priemon÷. Ji pakeičia ištisus duomenų fragmentus į Virtex serijos lustų blokin÷s atminties moduliams reikiamos iniciacijos įrašus. Data2MEM programa automatizuoja šių duomenų paskirstymą sud÷tin÷je fizin÷je blokin÷je atmintyje, kuri sudaro vientisą loginę duomenų sritį. Be to, ji reguliuoja centrinio procesorinio įrenginio procedūrų įterpimus į 4–8 baitų magistral÷s liniją. Xilinx kompanijos Virtex serijos lustai yra kuriami integruojant 32 bitų centrinį procesorinį įrenginį viename luste. Data2MEM programa sukurta patogiam centrinio procesorinio įrenginio atvaizdo įgyvendinimui LPLM bitų seka. Šios programos vykdymas iš blokin÷s atminties adresų srities leidžia:  LPLM ir CPĮ projektuotojams sumažinti žingsnių skaičių, reikalingą galutiniam rezultatui pasiekti;  tikrindama įgyvendinimo rezultatus arba fiksuodama kodo patikrinimo problemas, mažina signalų delsą;  priklausomai nuo programos, vieną procesą įgyvendina vienu arba keliais žingsniais;  sujungia dviejų skirtingų rūšių projektavimo metodus į vieną visumą. Atlikus pakeitimą gaunama dvejetainiu kodu parašyta byla (angl. Bit Stream ), skirta įdiegti į LPLM įrenginį. Data2MEM programa tiesiogiai pakeičia blokin÷s atminties bit bylas be papildomos Xilinx programin÷s įrangos pagalbos. Min÷tos bit bylos yra generuojamos Xilinx ISE arba Xilinx EDK programin÷mis priemon÷mis. Data2MEM turi kelias bit bylų testavimo priemones. Data2MEM programa, sujungia kelias konfigūracines bylas ( elf , drf , mem , bit ir bmm ), kuriose nurodomi skirtingų tipų parametrai, lemiantys adresų sritis, registrų panaudojimą, kintamųjų apdorojimo savybes ir kitus žingsnius. Sugeneruojama viena byla iš galimų keturių tipų bylų: bit , v, vhd arba mem . MicroBlaze programinio procesoriaus kūrimo priemone tiesiogiai gaunamas dvejetainis kodas, o Data2MEM programa šią bylą sujungia su kitomis konfigūracin÷mis bylomis ir taip sugeneruojamas galutinis kodas, skirtas įdiegti LPLM modulyje. Dirbant su Xilinx ISE programa, naudojamos VHDL bylos. Tai – paprasto teksto bylos, kurias sugeneruoja Data2MEM programa. VHDL bylose yra saugoma bitų vektorių informacija, skirta blokin÷s atminties nustatymui. Aptarkime centrinio procesorinio įrenginio programin÷s ir LPLM technologin÷s pus÷s sujungimo į vientisą sistemą procesą. 3.1 pav. iliustruoja centrinio procesorinio įrenginio (CPĮ)

40 Vytautas ARMINAS 2009–2010 M. M. programinio kodo, pateikto C ( c byla) arba asemblerio ( s byla) kalbomis, naudojimas. Šios bylos yra kompiliuojamos į o tipo (angl. output ) sujungimų bylą. Bylos o tipo yra sujungiamos kartu su o tipo sukompiliuotomis bibliotekomis į vieną vykdomąjį kodo atvaizdą. Sujungimo procesui yra naudojamos map bylos, kurios nurodo absoliučių adresų sričių išd÷stymus. Tai pasiekiama išd÷stant vykdomąjį kodą sistemin÷s atminties nurodyto adreso srityje. Segmentų išd÷stymo proceso pabaigoje gaunama elf arba drf byla. Bylos elf turinys gali būti tiesiogiai įdiegiamas į LPLM per SATS arba užprogramuojamas Flash tipo atmintyje (angl. boot flash ). Kita drf byla – yra įdiegiama LPLM naudojant simbolinio derinimo programą (pavyzdžiui, iPROMPT ). LPLM logika yra suformuota taip, kad CPĮ adresų užklausos būtų paverčiamos į fizinį blokin÷s atminties rinkinį. Blokin÷s atminties įgyvendinimo savyb÷s:  blokin÷ atmintis formuojama fiksuotojo dydžio, tačiau CPĮ adresų sričiai gali prireikti daugiau bitų negu tai įgyvendinta viename atminties bloke, tod÷l įgyvendinti reikiamai CPĮ adresų sričiai tenka logiškai grupuoti kelis BAKA blokus;  centrinio procesorinio įrenginio duomenys yra išd÷stomi BAKA atminties srityje taip, kad atitiktų tiesioginę CPĮ adresavimo struktūrą;  kiekvienas magistral÷s bitas yra adresuojamas;  atminties žem÷lapio dydis bei individualios BAKA grup÷s išd÷stymas turi įtakos kreipties į blokinę atmintį trukmei;  Virtex4 procesoriuose BAKA praplečiama maksimaliai iki 32 KB.

3.1 pav . MicroBlaze programinio procesoriaus įgyvendinimo žingsniai

MICROBLAZE PROGRAMINIO PROCESORIAUS ĮGYVENDINIMO TYRIMAS 41 VGTU ELEKTRONIKOS FAKULTETAS

Darbe įgyvendintų įterptinių sistemų konfigūracinių bylų kūrimas grindžiamas aptartomis priemon÷mis. Tiek Xilinx ML402, tiek daugialusčiame DiniGroup DN8000K10PSX moduliuose yra integruoti Virtex 4 kartos MPML įrenginiai, leidžiantys įgyvendinti MicroBlaze programinį procesorių. Pagrindinis skirtumas programuojant šiuos modulius atsiskleidžia kuriant dvejetainį kodą ir jį įkeliant į MPML įrenginį. LPLM įgyvendinant SKO algoritmą, duomenų įvestimi buvo pasirinkta Compact Flash (CF ) kortel÷. Joje įrašomas bmp formato vaizdas, kurį MicroBlaze programinis procesorius nuskaito ir įkelia į DDR atmintį. Toliau su turimais duomenimis vykdomi skaičiavimai, o gautas rezultatas įrašomas į naują bmp bylą. Duomenų nuskaitymo bei jų apdorojimo operacijos yra išvedamos VGA ekrane, integruotame į modulį LCD displ÷juje ir per RS232 prievadą. MicroBlaze programinis procesorius įkeliamas dviem būdais: tiesiogiai per SATS arba generuojant ace bylą. Sugeneruota byla yra MicroBlaze programinis procesorius, įgyvendinantis instrukcijų vykdymą ir naudotojo sąsają. ace byla įkeliama į CF kortelę nurodžius išsid÷stymo grandinę (angl. JTAG chain ) LPLM modulyje. Konkrečiai ML402 tai atrodo taip: PC4 , System ACE, Platform Flash , LPLM, SPLL ir išpl÷timas (3.2 pav.). Tai reiškia, jog įjungus ML402 duomenys skaitomi pirmiausia iš PC4 jungties, v÷liau iš CF kortel÷s System ACE , Platform Flash , LPLM, sud÷tingai programuojamo loginio lusto (SPLL) ir tik po to kreipiamasi į išpl÷timo prievadą. 3.1 programos kode pateiktas programinio procesoriaus programos generavimas, vykdomas iš CF atminties kortel÷s. Čia taikoma komandų aplinka xmd bei funkcin÷ byla genace.tcl , kurios parametrus nurodant sukuriamas failas rev0.ace . Taigi pagrindinis duomenų įvesties ir išvesties elementas yra CF atminties kortel÷. Šiame etape

3.1 Programos kodas. Vykdomojo kodo paleidimas ML402 modulyje xmd tcl genace.tcl jprog hw implementation/download.bit ace rev0.ace board ml402 target mdm elf microblaze_0/code/image_vga.elf data start_address 0x000000 PC4

3.2 pav . Modulio ML402 programuojamų lustų grandin÷

42 Vytautas ARMINAS 2009–2010 M. M.

įkeliamas MicroBlaze programinis procesorius ir apdorojamos bmp bylos. Deja, d÷l formatų nesutapimo teko taikyti MATLAB TM programą, kuria buvo parašytas 3.2 programos kodas, skirtas įvesties ir išvesties bylas tinkamai paruošti apdorojimui bei atvaizdavimui. 3.1 lentel÷je pateikti vaizdų apdorojimo POSK algoritmu rezultatai – apdorojimo laiko priklausomyb÷ nuo iteracijų skaičiaus. Nežiūrint į tai, kad did÷jant iteracijų skaičiui, ilg÷ja apdorojimo laikas, esant mažam iteracijų skaičiui apdorojimo laiko trukm÷s išlieka panašios. Šiuo atveju viso apdorojimo trukm÷s didžiąją dalį užima pirminis vaizdo apdorojimas. Labai padid÷jus iteracijų skaičiui, visą apdorojimo trukmę lemia optimizavimas skruzdžių kolonijomis.

3.1 lentel÷. Vaizdų apdorojimo POSK algoritmu rezultatai

Iteracijų skaičius Vykdymo trukm÷, ms

10 18

20 23

500 44

1000 58

2000 111

3000 165

3.2 Programos kodas . Vaizdin÷s bylos formatų keitimas txt=imread('input.bmp'); % nuskaitoma byla unt=uint32(txt); % keitimas į 32 bitus failas=fopen('input1.txt','w'); % atidaroma byla rašymui fwrite(failas, unt,'uint32'); % duomenys įrašomi į bylą fclose(failas); % byla uždaroma inpfile=fopen('output.txt', 'r'); % byla atidaroma skaitymui A=fread(inpfile, [30, 40], 'uint32'); % byla nuskaitoma image(A); % pateikiami nuskaityti duomenys imwrite(A, 'output.bmp'); % bmp byla įrašoma fclose(inpfile); % išvesties byla uždaroma

3.4. Algoritmų įgyvendinimas daugialusčiame įrenginyje

Šios dalies eksperimentai vykdyti kompanijos DiniGroup daugialusčiame DN8000K10PSX modulyje su trimis Virtex4 LPLM lustais. Rezultatai gauti šiame modulyje esančiame LX110 tipo LPLM luste. Darbo vykdymo metu nustatytos DN8000K10PSX modulio dinamin÷s atminties valdiklio problemos neleido tinkamai į LPLM įrenginį įd÷ti vaizdų ir jų apdorojimo programų. Taigi alternatyviam vertinimui parinktas ir mažam atminties kiekiui pritaikytas SKO algoritmas,

MICROBLAZE PROGRAMINIO PROCESORIAUS ĮGYVENDINIMO TYRIMAS 43 VGTU ELEKTRONIKOS FAKULTETAS skirtas keliaujančio prekeivio problemai spręsti [33, 34, 35, 36]. Penktajame skyriuje parodoma, kad šis parinkimas n÷ra atsitiktinis. Siekiant objektyviai palyginti SKO algoritmą su perrinkimo metodu, įgyvendinti ir ištirti abu metodai.

3.4.1. Perrinkimo metodo įgyvendinimo tyrimas

Žinoma, kad sprendžiant keliaujančio prekeivio kombinatorinį uždavinį, galimų sprendimų kiekis priklauso nuo miestų skaičiaus n . Tuomet galimų kombinacijų skaičius, tarus, kad prekeivis visada išeina iš to paties miesto bei gali tik vieną kartą aplankyti konkretų miestą, lygus (n −1) ! . Perrinkimo metodas garantuoja geriausią sprendinį, nes patikrinama kiekvienas kombinacija. Taikant SKO algoritmą, geriausias sprendimas negaunamas, tod÷l šis algoritmas taikomas esant dideliam miestų skaičiui, kai perrinkimo metodo taikyti d÷l didelių laiko sąnaudų negalima. Siekiant palyginti abu būdus, jie buvo įgyvendinti. Perrinkimo metodo LPLM įgyvendinimo tyrimo rezultatai pateikti 3.2 lentel÷je. Matyti, kad pradedant nuo 11 miestų problemos, kombinacijų skaičius išauga iki apytiksliai 33 tūkstančių, o skaičiavimo laikas siekia apie 9,2 val. Neturint galimyb÷s patikrinti algoritmo našumo didesniam miestų skaičiui, turimi duomenys buvo ekstrapoliuojami (tyrimo duomenys 3.3 pav. pateikti logaritminiame mastelyje). Matyti, kad 13 miestų problemai išspręsti, reik÷tų skaičiuoti apie 15 metų, o tai jau yra pakankamai svarus argumentas ieškoti kitų sprendimo būdų.

3.2 lentel÷. Perrinkimo metodo LPLM įgyvendinimo tyrimo rezultatai*

Kombina Trum Laikas, Miestų Kombinacijų Trum Miestų Laikas, cijų piausias s kiekis skaičius piausias kiekis s skaičius atstumas atstumas 8 5,04E+03 8,0000 2 15 8,72E+10 15,4142 1,61E+10

9 4,03E+04 9,4142 52 16 1,31E+12 16,0000 4,03E+11

10 3,63E+05 10,0000 1,32E+03 17 2,09E+13 17,4142 1,01E+13

11 3,63E+06 11,4142 3,33E+04 18 3,56E+14 18,0000 2,54E+14

12 3,99E+07 12,0000 1,02E+06 19 6,40E+15 19,4142 6,37E+15

13 4,79E+08 13,4142 2,55E+07 20 1,22E+17 20,0000 1,60E+17

14 6,23E+09 14,0000 6,40E+08 21 2,43E+18 21,4142 4,02E+18

* – žalsvu fonu pažym÷tos vert÷s gautos ekstrapoliuojant.

44 Vytautas ARMINAS 2009–2010 M. M.

3.3 pav. Perrinkimo algoritmo laiko priklausomyb÷ nuo miestų skaičiaus

3.4.2. SKO algoritmo įgyvendinimo tyrimas

Taikant SKO algoritmą keliaujančio prekeivio problemai spręsti, svarbu parinkti tinkamas pradines sąlygas – tai padidina tikimybę rasti optimalų sprendimą. Remiantis pripažintomis rekomendacijomis [37], parinkta: skruzd÷s jautrumas feromonui α =1 ; skruzd÷s jautrumas euristiniai informacijai β = 2 (sprendžiamo uždavinio atveju, tai atstumas tarp miestų); pradinis feromono lygis τ (0) = 0,2 ; skruzdžių kiekis N ir feromono garavimo koeficientas ρ didinamas priklausomai nuo miestų skaičiaus. Leidžiant po vieną skruzdę iš pradinio miesto, feromonas buvo atnaujinamas, atsižvelgiant į rasto kelio ilgį. Po kiekvieno eksperimento, geriausias kelias įrašytas, o feromono vert÷s gražintos į pradines. Kiekvienam miestui atlikta po 1 000 eksperimentų (rezultatai pateikti į 3.3 lentel÷je).

3.4 pav. SKO algoritmo skruzdžių skaičiaus ir skaičiavimo trukm÷s priklausomyb÷s nuo miestų skaičiaus

MICROBLAZE PROGRAMINIO PROCESORIAUS ĮGYVENDINIMO TYRIMAS 45 VGTU ELEKTRONIKOS FAKULTETAS

3.3 lentel÷s duomenys pateikti 3.4 pav. ir 3.5 pav. Remiantis 3.4 pav. galima teigti, kad:  did÷jant miestų skaičiui ir esant pastoviam skruzdžių skaičiui, SKO algoritmo skaičiavimų trukm÷ tiesiškai priklauso nuo miestų skaičiaus;  SKO algoritmo skaičiavimų trukm÷ tiesiškai priklauso nuo skruzdžių skaičiaus.

3.3 lentel÷. Optimizavimo skruzdžių kolonija įgyvendinimo tyrimo rezultatai

Miestų Skruzd. Atstumo Geriausias Blogiausias Standartin÷ Feromono Laikas, skaičius skaičius vidurkis atstumas atstumas nuokrypa garavimas s 14 6 19,18 14,00 24,39 1,516 0,5 23

15 7 20,56 15,41 25,11 1,538 0,6 58

16 9 21,52 16,00 25,83 1,696 0,6 84

17 16 22,47 17,41 26,97 1,625 0,6 161

18 16 23,40 18,00 28,48 1,722 0,6 190

19 16 24,79 19,41 29,14 1,668 0,7 210

20 16 27,31 20,00 33,64 1,888 0,8 232

21 23 27,47 21,41 32,17 1,791 0,8 357

22 24 28,29 22,00 33,36 1,875 0,8 421

23 24 29,86 23,41 35,87 1,888 0,8 463

24 25 31,11 24,00 37,74 1,911 0,8 526

25 28 31,61 25,41 37,21 1,935 0,8 638

Atstumo vidurkis Geriausias atstumas Blogiausias atstumas Std. nuokrypis 40 3,0 35 2,8 2,6 30 2,4 25 2,2 20 2,0 1,8

Atstumas 15 1,6 10 1,4 Standartinis nuokrypis Standartinis 5 1,2 0 1,0 14 15 16 17 18 19 20 21 22 23 24 25 Miestų skaičius

3.5 pav. SKO algoritmo sprendimų kokyb÷s įvertinimo rezultatai

46 Vytautas ARMINAS 2009–2010 M. M.

Didelis eksperimentų kiekis, leidžia fiksuoti eksperimentų statistiką: geriausius ir blogiausius sprendinius, sprendinio vidurkius ir standartinį nuokrypį (žr. 3.5 pav.). Standartinis nuokrypis gali būti naudojamas sprendinio kokybei įvertinti – kai nuokrypis tampa lygiu nuliui, stochastinis algoritmas tampa determinuotu. Standartinio nuokrypio vert÷ gali būti maža d÷l kelių priežasčių: 1. Sprendžiamam uždaviniui taikyta per didel÷ skruzdžių kolonija – sprendinių vidurkis labai arti arba sutampa su geriausiu sprendiniu. 2. Parinkti prasti skruzdžių kolonijos parametrai – skruzdžių kolonija dažnai „užstringa“ tame pačiame (lokalaus minimumo) sprendinyje. Did÷janti standartinio nuokrypio vert÷, rodo algoritmo efektyvumo maž÷jimą – sprendinio paieška tampa visiškai atsitiktin÷, t. y., algoritmo sprendimams euristin÷ ir feromono informacija turi mažą arba visai neturi įtakos: 1. Sprendžiamam uždaviniui taikyta per maža skruzdžių kolonija – sprendinių vidurkis toli nuo geriausio sprendimo. 2. Parinkti prasti skruzdžių kolonijos parametrai – kolonija nesugeba ieškoti greta geresnių sprendimų.

3.5. Skyriaus apibendrinimas

1. Aptarus skruzdžių kolonijų optimizavimo algoritmų įgyvendinimo apribojimus, pasirinkta modifikacija – populiacijomis grįsto optimizavimo skruzdžių kolonijomis algoritmas. Šis algoritmas įgyvendintas vienalusčiame Xilinx ML402 LPLM modulyje, taikant MicroBlaze programinį procesorių. Ištirta populiacijomis grįsto optimizavimo skruzdžių kolonijomis algoritmo įgyvendinimo sparta taikant šį algoritmą vaizdui apdoroti. Šio algoritmo vykdymo laikas beveik tiesiškai priklauso nuo iteracijų skaičiaus. Netiesiškumas pastebimas esant mažom iteracijų skaičiui, nes pagrindines laiko sąnaudas lemia pirminis apdorojimas. 2. Siekiant patvirtinti skruzdžių kolonijų optimizavimo algoritmo efektyvumą, DiniGroup daugialusčiame DN8000K10PSX LPLM modulyje įgyvendinti keliaujančio prekeivio uždavinį sprendžiantis perrinkimo metodas ir SKO algoritmas. Ištyrus šių algoritmų spartą, aptarti įgyvendinto SKO algoritmo sprendimų charakteristikų ir sprendinio kokyb÷s sąryšiai. Įgyvendinus šią sistemą nustatyta, jog SKO algoritmo vykdymo trukm÷ tiesiškai priklauso tiek nuo miestų, tiek nuo skruzdžių skaičiaus. Be to, vienas svarbiausių vertinimo parametrų yra standartinis nuokrypis, kuris, esant 1425 miestams kinta ribose tarp 1,52.

MICROBLAZE PROGRAMINIO PROCESORIAUS ĮGYVENDINIMO TYRIMAS 47 VGTU ELEKTRONIKOS FAKULTETAS

4. LIETUVIŲ KALBOS PAVIENIŲ ŽODŽIŲ ATPAŽINIMO ĮGYVENDINIMAS

Šiame skyriuje pateikiami autoriaus darbai 2009 m. vykdant Valstybinio mokslo ir studijų fondo remiamą mokslininkų grup÷s projektą „Lietuvių kalbos pavienių žodžių atpažinimo įgyvendinimas lauku programuojamomis login÷mis matricomis“ [38] ir jų metu gauti rezultatai įgyvendinant LPLM penkias lietuvių kalbos pavienių žodžių atpažinimo (LKA) sistemos versijas (ALFA, BETA, GAMA, DELTA ir EPSILION). Detaliai aptariama pasirinkta LKA metodika, parodoma, kaip ji pritaikoma MicroBlaze programinio procesoriaus pagrindu veikiančiame LPLM įrenginyje, pagrįsime papildomo – slankiojo kablelio – modulio integravimu. V÷liau pateikiami atpažinimo tikslumo ir įgyvendinimo našumo tyrimų rezultatai, kurie viešinti mokslin÷se publikacijose [2, 3] ir pranešimuose dviejose tarptautin÷se konferencijose [3, 4].

4.1. Lietuvių kalbos pavienių žodžių atpažinimo metodika

Lietuvių kalbos pavienių žodžių atpažinimo sistemai įgyvendinti taikyta pavyzdžių palyginimo metodika – nagrin÷jamasis (testinis) ištarimas paeiliui lyginamas su etaloniniais ištarimais taip bandant nustatyti panašiausią etaloną [39]. Detaliai aptarkime 4.1 pav. pateiktą įgyvendintos LKA sistemos metodikos blokinę schemą. Pradžia. Ištarimai. Kalbos atpažinimo procesas prasideda nuo ištarimų įvedimo į sistemą. Suskirstymas į kadrus. Kalbos signalas savo prigimtimi yra nestacionarus. Kadangi dauguma signalų apdorojimo metodų yra sukurti remiantis prielaida apie signalo stacionarumą, tenka garantuoti nagrin÷jamo signalo stacionarumą. Kalbos technologijose signalo stacionarumas garantuojamas apdorojant trumpas, tarpusavyje persiklojančias signalo atkarpas – kadrus. Nedidel÷ signalo atkarpa savo savyb÷mis gaunama pseudostacionari, o kadrų persiklojimas užtikrina signalo kitimo per tam tikrą laiką įvertinimą. Darbe panaudotas 256 signalo atskaitų ilgio kadras su 128 atskaitų postūmiu. Žodžio ribų nustatymas. Įvedami ištarimų įrašai turi tylos atkarpas, tod÷l signale reikia nustatyti žodžio ribas. Šiam tikslui naudotas energijos slenksčio metodas. Jo esm÷ – taikant iš anksto nustatytą slenksčio vertę rasti žodžio pradžią ir pabaigą kaip signalo vietas, kuriose energija viršija slenksčio vertę. Žodžio pradžia nustatoma signalą nagrin÷jant nuo pradžios, pabaiga – nagrin÷jant nuo signalo pabaigos. Signalo m ojo kadro energija skaičiuojama taip

N −1 1 2 Em = ∑ x() n , (4.1) N n=0

48 Vytautas ARMINAS 2009–2010 M. M.

Pradžia

Ištarimai

Suskirstymas į kadrus

Žodžio ribų nustatymas

Dauginimas iš lango funkcijos

Požymių išskyrimas

Palyginimas Žodynas

Žodis

Pabaiga

4.1 pav. Lietuvių kalbos pavienių žodžių atpažinimo metodikos blokin÷ schema čia: N – signalo kadro ilgis atskaitomis; x( n ) – n oji signalo atskaita. Energijos slenksčio vert÷ gaunama:

Esl =β ⋅ max ( E m ) , (4.2) M

čia: M – kadrų skaičius signale; β – energijos slenksčio koeficientas, žodžio pradžios paieškos atveju lygus 0,05, o žodžio pabaigos atveju – 0,07. Tolimesniam apdorojimui pateikiami tik signalo kadrai, patenkantys į nustatytąsias žodžio ribas. Dauginimas iš lango funkcijos. Lango funkcijos paskirtis – sumažinti signalo trūkių įtaką spektro skaičiavimams. Kalbos atpažinimo srityje d÷l įgyvendinimo paprastumo ir efektyvumo dažniausiai naudojamas Hamingo (angl. Hamming ) langas [40]. Hamingo lango vert÷s apskaičiuojamos taip:

2π n  w( n )= 0,54 − 0,46 ⋅ cos   , (4.3) N −1 

MICROBLAZE PROGRAMINIO PROCESORIAUS ĮGYVENDINIMO TYRIMAS 49 VGTU ELEKTRONIKOS FAKULTETAS

čia: n – lango atskaitos numeris; N – lango ilgis, lygus signalo kadro ilgiui. Požymių išskyrimas. Šiame etape atliekama signalo analiz÷ siekiant išskirti charakteringus duomenis, atspindinčius lingvistinį signalo turinį – požymius. Sistemoje įdiegta kalbos signalo kepstro analiz÷ [41]. Signalo kepstras apskaičiuojamas:

1 c= GFT() lg GFT( x ) , (4.4) N

čia: c – signalo kepstro vektorius; N – kadro ilgis atskaitomis; GFT(i ) – greitosios Furj÷ transformacijos operacija; i – modulio operacija; x – signalo verčių vektorius.

Atliekama 12tos eil÷s analiz÷, t. y., požymių vektorius formuojamas iš pirmųjų 12 kepstro verčių. Signalo analiz÷ atliekama kiekvienam kadrui taip gaunant požymių vektorių seką. Žodynas. Žodyne saugomos etalonin÷s vektorių sekos: poromis surašyti ištarimą atitinkantys požymių ir tekstin÷s žym÷s vektoriai. Fiziškai žodynas įgyvendintas dvejetain÷s bylos formatu. Palyginimas. Kitas žingsnis po požymių išskyrimo – gautųjų požymių palyginimas su etaloniniais požymiais. Ištarimams (požymių vektorių sekų pavidalu) palyginti parinktas dinaminio laiko skal÷s kraipymo (DLK) metodas [42]. Metodas ir jo algoritmas n÷ra naujas, tačiau s÷kmingai taikomas ir šiais laikais [43, 44, 45]. Šį pasirinkimą nul÷m÷ svarbios priežastys:  Ribotas sistemos žodynas. Kadangi sistema yra kuriamos tik pavieniams žodžiams atpažinti, jos žodynas yra santykinai nedidelis (keli šimtai žodžių). Vadinasi tokiam žodynui klasifikuoti nereikia taikyti ypatingai sud÷tingų klasifikatorių, tad DLK metodas yra tinkamas.  Nedidelis mokymo duomenų kiekis. DLK metodas nereikalauja didelio mokymo duomenų kiekio žodynui sudaryti, tod÷l tai leidžia greitai išmokyti LKA sistemą.  Taikomi įprasti skaičiavimai. Dinaminio laiko skal÷s kraipymo metodas – tai algoritmas, sudarytas iš paprastų matematinių operacijų, tod÷l jis lengviau įgyvendinamas aparatin÷mis priemon÷mis. DLK metodo esm÷ – palyginti vektorių sekas, atstumus skaičiuojant tarp tarpusavyje panašiausių vektorių, darant prielaidą, kad panašiausi vektoriai atstovauja to paties lingvistinio turinio kadrus. Vektorių sekų panašumas išreiškiamas vadinamuoju atstumu:

MT 1 … DTE =∑d()ϕ () ijj , , = 1, 2, , M E , (4.5) M T i=1

čia: M T ir M E – kadrų skaičius atitinkamai testiniame ir etaloniniame ištarime; d(ϕ (i , j )) – kvadratinis Euklido atstumas tarp i ojo testinio ir j ojo etaloninio vektorių; ϕ(i ) – lyginamų kadrų parinkimo funkcija.

50 Vytautas ARMINAS 2009–2010 M. M.

Žodis. Pabaiga. Atlikus testinio ištarimo palyginimą su visais žodyne saugomais ištarimais kaip atpažinimo rezultatas išrenkamas etaloninio ištarimo, pasižyminčio mažiausiu atstumu, tekstin÷ žym÷. Ši žym÷ ir yra pateikiama kaip atpažintasis žodis.

4.2. LKA metodikos pritaikymas įgyvendinti LPLM įrenginyje

4.2.1. LPLM testavimo modulis ir jo parinktys

Lietuvių kalbos pavienių žodžių atpažinimo sistemos įgyvendinimui parinkta Xilinx kompanijos ML402 testavimo modulis su Virtex 4 šeimos XC4VSX35 lustu. Šis lustas sudarytas iš 128 × 48 dydžio LPLM, su 55 296 log÷mis ląstel÷mis, 24 576 programuojamais (angl. slice ) blokais, 18 KB talpos RAM tipo 320 atminties blokais. SX35 tipo lustuose yra integruoti specialūs skaitmeninių signalų apdorojimo XtremeDSP programuojami blokai, veikiantys 500 MHz taktiniu dažniu [46]. Jie susideda iš 18 × 18 bitų sujungtųjų daugiklių, sumatorių bei 48 bitų kaupiklių. Kiekvienas daugiklis bei kaupiklis gali būti naudojamas nepriklausomai. Kaip matysime toliau, XtremeDSP blokai buvo taikyti VHDL IN modulių spartai padidinti. Naudotas XC4VSX35 lustas turi 512 XtremeDSP blokų. Prie ML402 modulyje esančio lusto yra prijungta įvairi standartin÷ periferija. Kuriamoje LKA sistemoje naudota:  Flash tipo 32 MB atminties kortel÷ – saugoti apdorojamas bylas;  RS 232 nuoseklusis prievadas – vykdyti standartinį duomenų įvedimą bei išvedimą;  šviesos diodai – rodyti algoritmo veikimo būsenas;  mygtukai – valdyti vykdomą algoritmą;  LCD dviejų eilučių displ÷jus – tarpiniams duomenims bei rezultatams išvesti. MicroBlaze procesorius SX35 luste veikia 100 MHz taktiniu dažniu, kuris gali būti didinamas su tam tikromis išlygomis. Be to, procesoriui gali būti parinkta 64 KB laikinoji (angl. cash ) atmintis, kurią priimta vadinti luste integruota atmintimi (angl. OnChip Memory ). Xilinx kompanijos ML402 testavimo modulis gali būti programuojamas keliais būdais. Didel÷s apimties programoms, tokioms kaip Linux , VxWorks ar UBoot , įkelti į išorinę atmintį yra naudojama ace tipo byla, kuri programą įkelia iš CF Flash tipo kortel÷s. Kaip matysime toliau, kuriant LKA sistemą buvo išbandyti keli įk÷limo būdai. Kadangi ace bylos įk÷limas iš Flash kortel÷s nereikalauja asmeninio kompiuterio, LPLM grįsta sistema tampa autonomiška. Be pagrindin÷s programos yra naudojama bootloop programa. Pagrindin÷s programos įk÷limo į atmintį metu, bootloop užima procesorių ir taip neleidžia jam patekti į nestabilumo būseną. Įkrovimo programa bootloop yra įkeliama į BAKA atmintį ir ten ji yra paleidžiama. LKA sistemos derinimo metu buvo naudojamas sistemos programavimas SATS prievadu. Sąlyginai nedidel÷ms programoms testuoti tai yra tinkamas metodas, nes be reikalo yra

MICROBLAZE PROGRAMINIO PROCESORIAUS ĮGYVENDINIMO TYRIMAS 51 VGTU ELEKTRONIKOS FAKULTETAS neperrašin÷jama Flash atmintis, derinimas vyksta tiesiogiai siunčiant komandas iš asmeninio kompiuterio ir gaunant atsaką iš LPLM įrenginio.

4.2.2. Atpažinimo sistemos architektūra ir jos apimtys

Aptarkime MicroBlaze programinio procesoriaus pagrindu sukurtą LKA sistemos architektūrą (žr. 4.2 pav. pateiktoje dviejų LKA sistemos LPLM įgyvendinimų apibendrintoje struktūroje ALFA versiją) detaliai išnagrin÷dami taikytus intelektin÷s nuosavyb÷s modulius (IN sud÷tinius blokus) ir jais panaudojamus ML402 testavimo modulyje esančio XC4VSX35 lusto išteklius. MicroBlaze , būdamas pagrindiniu IN moduliu (angl. IP core ), veikia kaip valdantysis (angl. master ) įrenginys – valdo visas pagrindines magistrales, duomenų ir instrukcijų sąsajas su blokine atmintimi. Procesorius su vidine BAKA atmintimi yra sujungtas per vidin÷s atminties magistralę (VAM), kuri skirta duomenų ir instrukcijų tarpusavio mainams. Visa išorin÷ periferija yra sujungta su procesoriumi per bendrosios paskirties periferijos magistralę (PVM). Visi panaudoti įrenginiai yra valdomi (angl. slave ) procesoriaus. Šiems išoriniams įrenginiams valdyti yra skirti atitinkami IN moduliai. Šviesos diodams, mygtukams, LCD ekranui valdyti

PROCESORIUS IVAM BAKA MicroBlaze

DVAM PORTA PORTB

Debug Išplėstinis blokas SKM blokas (BETA) MPMC Module sąsaja PVM DDR SDRAM 64 MB

PVM valdomi IN blokai

GPIO GPIO GPIO GPIO LED 4 bitai LED būsena Mygtukai LCD ekranas

MCH EMC SysACE UART lite SRAM Compact RS232 UART 1 MB Flash

TIMER 1 TIMER 2 TIMER 3

4.2 pav. LKA sistemos dviejų LPLM įgyvendinimų apibendrinta struktūra: ALFA įgyvendinimas – blokai pateikti ištisine linija; BETA įgyvendinimas – blokai pateikti ištisine ir punktyrine linijomis

52 Vytautas ARMINAS 2009–2010 M. M. naudojamas bendrosios paskirties įvesties bei išvesties IN modulis ( GPIO ). Pagal kiekvieno įrenginio poreikius parenkamas naudojamų bitų skaičius, išskiriama atminties sritis. Visiems GPIO įrenginiams pakanka 64 KB atminties talpos. LPLM sąsajai su asmeniniu kompiuteriu įgyvendinti skirtas IN modulis – RS 232 UART . SRAM statinei atminčiai valdyti skirtas išorin÷s atminties valdiklis ( EMC ), DDR SDRAM valdo daugelio išvadų atminties kontroleris ( MPMC ). Pagrindin÷ programa, žodynai, tiriamieji žodžiai yra saugomi CF Flash atminties kortel÷je. Ją valdo specialus IN modulis SysACE CompactFlash . Paskutinis PVM magistral÷s įrenginys – tai laikmačio IN modulis ( XPS timer ). Laikmačio modulis skirtas LCD ekranui valdyti bei tam tikrų programinio kodo vietų vykdymo laikui matuoti. Be min÷tų IN modulių yra naudojami sisteminio dažnio generatoriaus ( clock generator ), procesoriaus perkrovos ( processor system reset ) bei SRAM atminties magistral÷s šakojimo ( SRAM Utility Bus Split ) moduliai.

4.1 lentel÷. Skirtingais IN moduliais naudojami XC4VSX35 lusto ištekliai

IN modulis Programuojamų blokų sk. Registrų sk. Paieškos lentelių sk.

Clock Generator 3 5 2

System Reset 34 34 20

Push Button Position 55 69 53

LED 4 bit 66 80 56

LEDs Position 69 86 60

LCD 77 98 68

Debug Module 120 118 122

RS232 UART 125 130 122

SysACE 167 195 133

PVM magistral ÷ 188 91 260

XPS Timer 277 298 378

XPS EMC 718 724 608

MPMC 1 708 1 871 1 417

MicroBlaze 2 656 1 981 3 262

Visos programin÷s dalys saugomos DDR SDRAM atmintyje. 4.1 lentel÷je yra pateiktos naudojamų XC4VSX35 lusto išteklių apimtys atskirai kiekvienam iš 14 pagrindinių IN modulių.

MICROBLAZE PROGRAMINIO PROCESORIAUS ĮGYVENDINIMO TYRIMAS 53 VGTU ELEKTRONIKOS FAKULTETAS

MicroBlaze yra sud÷tingiausias įrenginys sistemoje, tod÷l jis naudoja didžiausią kiekį programuojamų blokų – 2 656 vnt. (42 % nuo visų naudotų). Antrasis pagal sud÷tingumą yra atminties įrenginių valdiklis ( MPMC ), kuris naudoja 1 708 programuojamus blokus (27 % nuo visų naudotų). Likę 12 įrenginių kartu naudoja 1 899 programuojamus blokus (31 % nuo visų naudotų). Panašiai pasiskirstę registrų ir paieškos lentelių naudojimo skaičiai. 4.2 lentel÷je yra pateikiamas pagrindiniais IN moduliais naudojamų XC4VSX35 lusto išteklių detalizavimas pagal rūšis. Matyti, jog LKA sistema naudoja vidutiniškai 20 % LPLM išteklių. Kadangi prie procesoriaus MicroBlaze yra prijungta įvairi išorin÷ periferija, iš kurios didžiąją dalį sudaro įvesties bei išvesties įrenginiai, įvesties išvesties blokų naudojimas yra didžiausias – 39 %.

4.2 lentel÷. Pagrindinių XC4VSX35 lusto išteklių naudojimas

Išteklių rūšis Viso, sk. Panaudota, sk. Panaudota, %

Programuojami registrai 30 720 5 773 18

4 į÷jimų PL 30 720 6 592 21

Programuojami blokai 15 360 5 478 35

Įvesties išvesties blokai 448 178 39

BUFG 32 5 15

FIFO16/RAMB16s 192 37 19

DSP48 192 7 3

DCM_ADV 8 1 12

BSCAN_VIRTEX4 4 1 25

IDELAYCTRL 16 2 12

Paieškos lentel÷ (angl. LookUp Table – LUT ) įgyvendinama PL bloke yra svarbiausias elementas loginei struktūrai įgyvendinti. Kiekvienas PL gali įgyvendinti reikiamą 4 į÷jimų loginę funkciją. Taikant multiplekserį ir du PL, galima įgyvendinti 5 į÷jimų loginę funkciją. Kita vertus, PL gali būti taikomas įgyvendinti paskirstytą (angl. distributed ) ar blokinę RAM tipo atmintį bei poslinkio registrą. Kiekvienas konfigūruojamas blokas susideda iš dviejų programuojamų blokų, pastarieji turi po du keturių į÷jimų PL, pernašos ir kontrol÷s logiką bei du registrus. Be to, taip yra sukuriami du trijų būvių buferiai, susieti su kiekvienu KLB, ir yra prieinami visų KLB iš÷jimų. LKA sistemoje išnaudojama virš penktadalio PL – pagrindinių LPLM elementų.

54 Vytautas ARMINAS 2009–2010 M. M.

Kitos 4.2 lentel÷je išvardintos išteklių rūšys apibūdina papildomas IN modulių savybes, naudojamas spartinimui. DCM_ADV išskirtinai naudojamas sisteminio laikrodžio blokui [47]. BUFG – tai globalaus laikrodžio buferis. BSCAN_VIRTEX4 [48] blokas skirtas SATS arba Debug moduliui palaikyti. IDELAYCTRL [49] skirtas v÷linimams, Reset blokui. Skaitmeninių signalų apdorojimui spartinti Xilinx naudoja DSP48 blokus [50]. MicroBlaze procesorius DSP48 blokus naudoja tada, kuomet yra aktyvuojami tam tikri procesoriaus ir IN modulių parametrai, apie kuriuos bus kalbama 4.3 poskyryje. Apibendrinant galima teigti, kad LKA sistemai įgyvendinti pasirinktas LPLM testinis modulis ir jo ištekliai neapriboja sistemos išpl÷timo ir tobulinimo galimybių.

4.2.3. Atpažinimo sistemos vykdomosios programos algoritmas

Praeitame poskyryje buvo gana detaliai aptartas LKA sistemos LPLM įgyvendinimas iš programuojamos aparatin÷s pus÷s (angl. softcore ). Kitas požiūris į perprogramuojama logika paremtą sistemą yra jos programin÷ pus÷ – vykdomasis kodas. MicroBlaze , būdamas intelektin÷s nuosavyb÷s branduoliu, tuo pačiu yra procesorius, kuris vykdo C programinį kodą. LKA sistemos vykdomosios programos, kurtos XPS programinio paketo dalimi SDK , algoritmas pateiktas 4.3 pav. Aptarkime algoritmą detaliau. MicroBlaze procesorius pradeda vykdyti programinį kodą vos tik bootloader paprogram÷ iš CF Flash tipo kortel÷s įkelia ace tipo bylą. ace byla yra sukompiliuota XPS sistemos. Joje saugoma XPS projekto aparatin÷s bei programin÷s dalys, tai reiškia, jog procesoriaus architektūra (download.bit byla) bei programinis kodas ( executable.elf byla) yra sujungti tarpusavy. ace byla yra įkeliama į LPLM lustą, ir sukonfigūruotas LPLM lustas pradeda darbą Žodynas yra generuojamas asmeniniu kompiuteriu. Sukurtoje byloje yra kiekvieno žodžio požymiai, žodžio ilgis bei pats žodis ( char formato). Žodžių požymiai yra slankiojo kablelio tipo, tai yra kiekvienas skaičius užima 4 KB. Tačiau standartin÷ MicroBlaze funkcija, kuri nuskaito bylas iš CF Flash kortel÷s, gali nuskaityti duomenų tik po 1 KB. Taigi asmeniniu kompiuteriu generuojamas žodynas buvo kurtas littleendian formatu, o v÷liau, nuskaitant vykdomojoje programoje ir panaudojus sumos bei poslinkio operacijas, sukomponuotas į 4 KB formatą. Žodynas yra nuskaitomas vieną kartą, įkeliamas į dinaminę atmintį ir saugomas visą programos vykdomo laiką (kol nebus atliktas sistemos pradinis nustatymas). Sistema laukia mygtuko START paspaudimo. Kai tik jis paspaudžiamas, programa iš CF Flash kortel÷s nuskaito wav formato bylą – ištartą žodį. Nuskaitytam žodžiui išskiriami požymiai ir jie išsaugomi dinamin÷je atmintyje. Tai atlikusi sistema vykdo palyginimo operaciją. Jos metu nuskaityti žodyno duomenys yra lyginami su išskirtais ( wav bylos). Atlikus atpažinimą naudotojui pateikiamas rezultatas dviem būdais: dviejų eilučių LCD ekrane bei RS 232 UART konsol÷je. Be

MICROBLAZE PROGRAMINIO PROCESORIAUS ĮGYVENDINIMO TYRIMAS 55 VGTU ELEKTRONIKOS FAKULTETAS galutinio rezultato yra pateikiami tarpiniai skaičiavimų laikai bei vykdomos operacijos. Baigusi žodžio atpažinimą sistema laukia naudotojo įvesties – tikrinama STOP mygtuko būsena. Jeigu jis paspaudžiamas, nutraukiamas darbas. Jeigu mygtukas lieka nepaspaustas, sistema grįžta į žodžių nuskaitymo etapą, čia vykdomas kito pagal numeraciją žodžio atpažinimas. MicroBlaze programinis procesorius C programinį kodą vykdo tokiu pačiu principu kaip ir eilinis asmeninio kompiuterio procesorius. Iš vykdančiosios programos procesorius gauna instrukcijas, kurias vieną po kitos vykdo nuosekliai. MicroBlaze procesorius taip pat taiko konvejerinio apdorojimo principą, kuris paspartina operacijų atlikimo laiką. Tačiau tai iš esm÷s yra tas pats nuoseklusis apdorojimas su tam tikrais paspartinimais. Taigi šiuo požiūriu MicroBlaze yra bendrosios paskirties procesorius. C programiniame kode visi racionalūs skaičiai yra pakeičiami į slankiojo kablelio formatą (float tipą). Keitimo operacija eikvoja sąlyginai nemažai laiko, tačiau kito sprendimo n÷ra, norint operuoti tokio tipo duomenimis. Duomenų tipai keičiami taikant standartines math.h bibliotekos funkcijas.

Pradžia

Žodynas

0 START=1 START

1 Ištarimo nuskaitymas

Atpažinimas

Žodis

0 STOP=1 STOP

1 Pabaiga

4.3 pav. LKA sistemos vykdomosios programos algoritmas

56 Vytautas ARMINAS 2009–2010 M. M.

Žodžių atpažinimo sistema vykdomajame C kode naudoja rodykles į didelius slankiojo kablelio masyvus (dažnai nuo dešimčių kilobaitų iki megabaitų eil÷s). XPS kompiliatorius, žinodamas vien tik nuorodą į tokio dydžio masyvą, nesugeba tinkamai paskirstyti atminties išteklių, nes rodykl÷ netvarko statin÷s atminties vietos. Kitos rodykl÷s deklaravimo bei kreipimosi metu įvyksta duomenų persiklojimas, kas visiškai sugriauna programos veikimą, tarpiniai rezultatai prarandami. Ši spraga buvo apeita sukuriant konstantas, kurios yra nuorodos į dinamin÷s atminties DDR SDRAM adresų sritį. Kiekvienai rodyklei, kuri rodo į didesnę nei dešimčių kilobaitų eil÷s adresų sritį, buvo priskirta nauja konstanta ir taip išvengta persiklojimo. 64 MB dinamin÷s atminties visiškai pakako žodžių atpažinimo sistemos tarpinių duomenų saugojimui.

4.2.4. Garso sistemos integravimas

Siekiant išpl÷sti LKA sistemos galimybes atpažinti gyvai ištartus žodžius buvo panaudotas dar vienas IN modulis – AC'97 koderis. Šis koderis yra sukurtas kompanijos Xilinx , tačiau yra pritaikytas seno tipo LPM magistralei, Pradedant programos XPS 10 versija tiesiogin÷ MicroBlaze ir LPM magistral÷s sąsaja buvo panaikinta, visi išoriniai įrenginiai yra jungiami tik per PVM arba GPM magistrales. Kaip jau buvo min÷ta, įgyvendinant garso sistemą ML402 arba XUPV5 testavimų plokšt÷se, reikalingas HDL AC'97 koderio IN modulis, nes šios abi plokšt÷s turi sąsają su mikrograndynu AD1981B, AC'97 SoundMAX® Codec. MicroBlaze ir prie LPM magistral÷s koderio prijungimui naudojamas iš PVM į LPM tiltas ( PLBv48_OPB_bridge ). Papildomi trys garso sistemai reikalingi IN moduliai (AC'97 valdiklis, LPM magistral÷ ir tiltas) išnaudoja tik 455 trigerius ir 569 paieškos lenteles. Paleidus LPLM įrenginį su garso sistema yra užkraunamas koderis, tuomet per terminalą yra

4.4 pav . Garso sistemos integravimas į LKA sistemą

MICROBLAZE PROGRAMINIO PROCESORIAUS ĮGYVENDINIMO TYRIMAS 57 VGTU ELEKTRONIKOS FAKULTETAS pranešama apie pasirengimo nuskaityti garsą būseną. Nurodytą laiko tarpą (trumpiau nei vieną sekundę, nes tiek trunka ištarti neilgą žodį) įjungiamas garso signalo rašymas iš mikrofono į DDR operatyviąją atmintį. Nuskaityti duomenys toliau yra apdorojami kaip įprasta garsin÷ byla (be informacinių laukų). 4.4 pav. pateikta LKA sistemos prototipas su garso integravimu. Ši schema yra bendra visoms LKA įgyvendintoms versijoms, nes išorinių magistralių įrenginiai yra pažym÷ti bendrais pavadinimais. Tamsesniame paveikslo fone yra išskirti garso sistemai reikalingi blokai (įrenginiai).

4.3. Slankiojo kablelio modulio integravimas

MicroBlaze procesorius turi keletą parametrų, kuriuos parinkus aktyvuojami papildomi aparatiniai ištekliai, darantys įtaką programin÷s dalies veikimo spartai. LKA sistemos vykdomoji programa veikia su slankiojo kablelio skaičiais, o šiuo formatu matematinių operacijų vykdymas l÷tina algoritmą. Tokie aritmetiniai veiksmai kaip šaknies traukimas, laipsnio k÷limas, trigonometrin÷s operacijos gali būti atliekami specialiu slankiojo kablelio moduliu – SKM (angl. Floating Point Unit – FPU ) [51]. C programavimo kalboje SKM vykdo aritmetines operacijas su slankiuoju kableliu tuomet, kai deklaruojamos atitinkamos funkcijos (žr. 4.3 lentelę) [52, 53]. XPS programa turi dvi SKM modulio pasirinkimo galimybes: bazinis arba išpl÷stinis. LKA sistemos BETA versijos LPLM įgyvendinime taikytas išpl÷stinis SKM modulis (žr. 4.2 pav.), o tai XC4VSX35 luste papildomai pareikalavo 1 600 PL ir 4 DSP48 blokų.

4.3 lentel÷. Svarbiausių matematines operacijas vykdančių funkcijų suvestin÷

Matematin÷ operacija Įprasta funkcija SKM bloko funkcija

Kvadratin÷ šaknis sqrt( ) sqrtf( )

K÷limas laipsniu pow( ) powf( )

Triginometrin÷s funkcijos sin( ), cos( ), tan( ) sinf( ), cosf( ), tanf( )

Logaritmas log( ) logf( )

Eksponent÷ exp( ) expf( )

Absoliučios reikšm÷s fabs( ) fabsf( ) funkcija

Panašiai kaip ir asmeniniuose kompiuteriuose, SKM modulis yra atskiras mikrograndynas, skirtas vykdyti tik siauros srities (slankiojo kablelio) operacijas. LPLM atveju SKM modulis yra konfigūruojamas sistemos derinimo metu. Virtex4 šeimos SX35 lusto operacijų vykdymo greičio indeksas yra 10, tod÷l SKM modulis operacijas atlieka 233 MHz dažniu.

58 Vytautas ARMINAS 2009–2010 M. M.

LKA sistemos valdančioje programoje yra naudojamos 4.3 lentel÷je išvardintos funkcijos. SKM modulio taikymas paspartina tų kodo fragmentų, kuriuose naudojamos šios funkcijos, atlikimą. Pavyzdžiui: kepstrin÷s analiz÷s dalyje naudojama logf( ) funkcija; palyginimo metu absoliučiąją vertę skaičiuoja absf( ) funkcija. Palyginamieji matematinių operacijų spartos tyrimo rezultatai pateikti 4.4 lentel÷je. Rezultatai gauti kiekvieną tiriamą operaciją vykdant po 100 kartų dviejose LKA sistemos įgyvendinimuose: remiantis tik MicroBlaze procesoriumi (ALFA versija) ir MicroBlaze procesoriumi su SKM moduliu (BETA versija). Laikas skaičiuotas remiantis IN modulio Timer parodymais.

4.4 lentel÷. Aritmetinių operacijų trukm÷s palyginamieji rezultatai

Trukm÷ be Trukm÷ su Pagreit÷jimas, Operacija SKM, s SKM, s kartais Kvadratin÷ šaknis 11 695 34 344,00

K÷limas laipsniu 134 406 76 619 1,75

sin funkcija 249 750 186 883 1,34

cos funkcija 252 851 188 723 1,34

tan funkcija 321 936 217 757 1,48

Absoliuti reikšm÷ 172 778 147 525 1,17

Eksponent÷ 90 754 27 437 3,31

Logaritmas 96 826 36 268 2,67

Remiantis gautais rezultatais galima teigti, kad SKM modulio taikymas LKA sistemoje yra tikslingas, nes paspartina skaičiavimus. Iš visų taikomų matematinių operacijų, SKM modulio spartinančioji įtaka didžiausia kvadratin÷s šaknies traukimo operacijai.

4.4. Greitosios Furj÷ transformacijos modulio integravimas

Šiame poskyryje glaustai pateiktas Greitosios Furj÷ transformacijos (GFT) modulio integravimas į sukurtą bei veikiančią lietuvių pavienių žodžių atpažinimo sistemą. Sistemos struktūra su prijungtu GFT moduliu yra pateikta 4.5 pav. Glaustai apžvelkime kiekvieną iš čia pavaizduotų elementų. Viską bendrai apima schemotechninis įrenginys – Xilinx ML402 testavimo modulis. Tai sud÷tingas daugiasluoksnis elektroninis įrenginys, turintis įvairią išorinę periferiją, prijungtą prie centrinio LPLM – XC4VSX35 lusto. Šiame luste įgyvendintas specializuotas MicroBlaze

MICROBLAZE PROGRAMINIO PROCESORIAUS ĮGYVENDINIMO TYRIMAS 59 VGTU ELEKTRONIKOS FAKULTETAS

4.5 pav. LKA sistemos LPLM įgyvendinimo su GFT moduliu schema (GAMA versija) procesorius, įvairūs IN moduliai bei juos su procesoriumi jungiančios magistral÷s. MicroBlaze procesoriaus sąsajas su IN moduliais atlieka dvi skirtingo tipo magistral÷s: GPM ir PVM. Tai du visiškai skirtingi būdai prijungti papildomiems įrenginiams. PVM magistral÷ naudota prijungti šiems valdikliams:  bendrosios paskirties įvesties išvesties įrenginių;  išorin÷s atminties;  UART įrenginio;  SysACE Flash tipo atminties kortel÷s. GPM magistral÷ – tai 32 bitų pločio FIFO registrų pagrindu veikianti magistral÷, turinti min÷tus buferius įeinantiems ir išeinantiems duomenims saugoti. GPM magistral÷s veikimo pagrindas paremtas principu „pirmas į÷jo, pirmas iš÷jo“, kas garantuoja sparčiausią veikimą. GPM magistral÷ gali būti naudojama dvipusiam duomenų jud÷jimui, tačiau valdymo paprastumo d÷lei duomenų mainai tarp MicroBlaze ir GFT buvo organizuoti dvejomis GPM magistral÷mis, kiekvienoje iš jų atliekant vienpusius duomenų mainus. MicroBlaze procesorius turi galimybe dirbti išvis su 16 GPM magistralių. Taigi MicroBlaze procesorius per dvi sparčias GPM magistrales sąveikauja su valdikliu, kuris prijungia GFT intelektin÷s nuosavyb÷s modulį. GFT IN modulis generuotas naudojant Xilinx ISE Design Suite paketo papildomą programa Core Generator . LKA sistemoje naudojama XFFT v6.0 GFT modulio versija.  GFT IN modulio konfigūraciniai parametrai:  taktinis dažnis – 100 MHz;

60 Vytautas ARMINAS 2009–2010 M. M.

 duomenų tipas – slankiojo kablelio, viengubo tikslumo;  algoritmas – Radix 2 Burst I/O;  transformacijos tipas – tiesioginis;  GFT vykdymo eil÷ – 256 skaičiai;  maksimalus DSP48 blokų panaudojimas. Vienas iš svarbiausių GFT modulio nustatymų yra algoritmo tipas. LKA sistemoje taikytas Radix 2 algoritmu veikiantis IN modulis. Jo veikimo blokin÷ schema pateikia 4.6 pav. Radix 2 algoritmas naudoja standartinį Butterfly metodą, kuris sugeneruotas trigonometrinių konstantų koeficientus skaito iš ROM tipo atminties, o duomenis gauna iš į÷jimo per du RAM tipo atminties blokus. Lygiagrečiai iš GPM magistral÷s pateikiami duomenys multiplekseriais yra pateikiami nuosekliai į Radix 2 IN bloką. Svarbus sistemos elementas yra GFT modulio valdiklis. Kompanija Xilinx yra realizavusi grupę IN modulių, tačiau valdikliai jiems n÷ra sukurti arba viešai neplatinami. LKA sistemoje GFT valdiklis yra tarpin÷ grandis tarp GPM magistral÷s bei GFT modulio. Jis originaliai įgyvendintas VHDL programavimo kalba, valdiklį aprašant būvių diagrama (4.7 pav.). Taigi GFT valdiklio būvių automatą sudaro 12 būsenų:  Reset – nustatymo būsena. Sistema į šią būseną patenka iš karto, kai tik GPM magistral÷ generuoja aukštą FSL_Rst signalą. Startavus LKA sistemai, FSL_Rst signalas (kaip ir kiti Reset signalai) vieną sisteminio laikrodžio taktą nustatomas aukštam lygiui. GFT valdiklis nulina visus signalus bei GFT IN modulio reikšmes. Iš nustatymo būsenos kito takto metu pereinama į iniciavimo būseną;  Initialization – iniciavimo būsena. Šioje būsenoje penkių taktų metu nustatomi trys svarbūs GFT IN modulio parametrai: NFFT – 256 (Furj÷ transformacijos eil÷), FWD_INV – tiesiogin÷ (transformacijos tipas) bei START signalas, parodantis GFT modulio darbo pradžią. Penkto takto metu iniciavimo būsenoje pereinama į laukimo būseną; MUX Komutatorius Komutatorius MUX MUX

4.6 pav. GFT IN modulio veikimo blokin÷ schema

MICROBLAZE PROGRAMINIO PROCESORIAUS ĮGYVENDINIMO TYRIMAS 61 VGTU ELEKTRONIKOS FAKULTETAS

4.7 pav. Greitosios Furj÷ transformacijos valdiklio būvių mašina  Idle – laukimo būsena. Laukimo bei iniciavimo būsenose po START signalo yra įgyvendinta trijų taktų pauz÷, kuri reikalinga prieš pasiunčiant į÷jimo duomenis į GFT modulį. Kai tik FSL_S_EXISTS signalas, nustatomas MicroBlaze procesoriaus, tampa aukštas (tai indikuoja, jog GPM magistral÷je yra atsiųstas 32 bitų skaičius), pereinama į duomenų nuskaitymo būvį. CE signalas laukimo metu yra nustatomas į nulį, kad nuskaitomų žodžių indeksas nekistų;  Read_Inputs – į÷jimų skaitymo būsena. Šiame būvyje iš laikinojo duomenų registro duomenys persiunčiami GFT moduliui bei nustatomas aukštas CE signalo lygis. Jeigu dar n÷ra nuskaityta 256 skaičių; v÷l grįžtama į laukimo būseną, kurioje tikrinami nauji duomenys. Kita vertus, jeigu visi 256 žodžiai nuskaityti ir FSL_S_EXISTS signalas yra aukštas, pakeičiama sistemos būsena į skaitymo pabaigos būseną;  End_of_Read – skaitymo pabaigos būsena. Čia į GFT modulio į÷jimą pasiunčiamas paskutinis skaičius. Ši būsena sukurta tam, jog nebūtų praleistas paskutinis skaičius ir būtų išeinama iš duomenų nuskaitymo ciklo. Kito takto metu būsena pakeičiama į GFT skaičiavimo;  Calculate_FFT – GFT skaičiavimo būsena. Tai pats svarbiausias greitosios Furj÷ transformacijos vykdymo etapas. Jo metu yra vykdoma pati transformacija. Jai prad÷ti būtinos kelios sąlygos. Visų pirma CE signalas nustatomas į aukštą lygį, ir XN_INDEX bei XK_INDEX turi būti pasiekę NFFT vertę. Šiame būvyje pasiliekama tol, kol EDONE bei DV signalai tampa aukšto lygio. Pastarieji signalai parodo tai, jog skaičiavimai s÷kmingai atlikti. GFT modulis apskaičiavęs transformaciją savo vidiniuose buferiuose laiko išvesties duomenis: realiąją ir menamąją dalis. LKA metodikoje naudojama absoliuti vert÷, tai reiškia, jog būtina kiekvieną iš dalių pakelti kvadratu, sud÷ti bei ištraukti šaknį.

62 Vytautas ARMINAS 2009–2010 M. M.

Galutiniame rezultate gaunamas vienas slankiojo kablelio tipo skaičius. Taigi pereinama į rašymo į daugiklius būseną;  Write_to_Mutlipliers – rašymo į daugiklius būsena. Ši būsena yra nuoroda į kitą aritmetinį IN modulį, atliekantį kvadrato k÷limo operaciją. Daugybos metu kvadratu pakeliamos tiek realioji dalis, tiek menamoji. Iš šios būsenos pareinama iš rašymo į sumavimo būseną, kai tik RDY signalai, išsiunčiami šių IN modulių, tampa aukšto lygmens;  Write_to_Adder – rašymo į sumatorių būsena. Ši būsena yra analogiška daugybos būsenai, tik joje naudojamas vienas sud÷ties modulis. Sud÷jus pereinama prie šaknies traukimo būsenos;  Write_to_Sqrt – rašymo į šaknies traukimo bloką būsena. Traukti kvadratinei šakniai reikalingas vienas skaičius, taigi šio IN modulio struktūra kiek paprastesn÷ už prieš tai buvusių. Įvykdžius šią operaciją būvis pakinta į iš÷jimų rašymo būvį;  Write_Outputs – iš÷jimų rašymo būsena. Rašant iš÷jimus į GPM magistralę tikrinamos dvi sąlygos: ar magistral÷ n÷ra pilna ( FSL_M_FULL signalas lygus nuliui) bei ar visi duomenys išvesti. Jeigu ne visi duomenys išvesti, grįžtama į rašymo į daugiklius būseną FSL_M_WRITE (kontrolinis signalas rodantis rašymo operaciją) nustatant į aukštą lygį, kitu atveju būvis keičiamas į rašymo pabaigos;  End_of_Write – rašymo pabaigos būsena. Ši būsena skirta tam, kad būtų išeita iš rašymo ciklo ir pereita į paskutinį būvį – galutinio nustatymo;  Reset_State – galutinio nustatymo būsena. Šiame būvyje ištrinami visi registrai, sistema grąžinama į iniciavimo etapą. Taip GFT IN modulis parengiamas pakartotiniam naudojimui.

4.5. Papildomų aritmetinių modulių integravimas

Šiame poskyryje glaustai pateiksime papildomų aritmetinių IN modulių integravimą į sukurtą bei veikiančią lietuvių kalbos pavienių žodžių atpažinimo sistemos GAMA versiją (žr. 4.8 pav.). Aritmetinių IN modulių integravimo principas yra panašus į GFT modulio integravimą, t. y., MicroBlaze procesoriaus struktūra yra papildoma GPM magistrale komutuojančia atitinkamus IN blokus, o valdančioje programoje daugiausiai laiko naudojančios aritmetin÷s operacijos pakeičiamos makrokomandomis, valdančiomis atitinkančius aritmetinius IN modulius. 4.8 pav. pateikta schema nuo 4.5 pav. schemos skiriasi papildomais aritmetinių IN modulių (valdiklių ir įrenginių) blokais bei GPM magistral÷mis. Siekiant neapkrauti schemos pasikartojančiomis struktūromis, kiekvienas iš aritmetinių modulių nedetalizuotas. Iš viso yra prijungti keturi slankiojo kablelio operacijų IN moduliai:  šaknies traukimo,

MICROBLAZE PROGRAMINIO PROCESORIAUS ĮGYVENDINIMO TYRIMAS 63 VGTU ELEKTRONIKOS FAKULTETAS

 dviejų skaičių daugiklio,  daliklio,  sumatoriaus. Visų keturių IN modulių komunikacijos procesus su magistrale vykdo originalūs VHDL kalba parašyti valdikliai. Trijuose iš šių valdiklių (sumatoriuje, daugiklyje bei daliklyje) yra panaudoti į÷jimo duomenų registrai. Toks sprendimas būtinas, nes vieno ciklo metu programin÷ sistemos dalis siunčia vieną 32 bitų skaičių GPM magistrale, kurios plotis taip pat tik 32 bitai. Tuo tarpu min÷ti moduliai operuoja dviem slankiojo kablelio skaičiais (32 bitų ilgio), tad aritmetin÷ operacija įvykdoma tik tada, kai du į÷jimo skaičiai yra nuskaityti. Aritmetinių IN modulių operacijas valdo būvių automatai. Taupant vietą, kaip pavyzdį pateiksime ir aptarsime tik dalybos IN modulio būvių automato schemą (4.9 pav.).

4.8 pav. LKA sistemos LPLM įgyvendinimo su aritmetiniais IN moduliais schema (DELTA versija)

4.9 pav. Dalybos modulio būvių mašina

64 Vytautas ARMINAS 2009–2010 M. M.

LKA sistemos starto metu yra įvykdomas visų įrenginių pradinis nustatymas ( Reset ). GPM magistrale MicroBlaze procesorius taip pat siunčia kontrolinį signalą FSL_Rst . Analogiškai GFT bloko veikimui ir reakcijai į magistral÷s signalus veikia ir aritmetiniai įrenginiai. Vos tik sistema startuoja, o procesorius vykdo užprogramuotas instrukcijas, įrenginiai, prijungti prie GPM magistral÷s yra nustatomi. Šis impulsas lieka aukštame lygyje vieną taktą. Kito takto metu aritmetinių IN modulių valdiklis tikrina sisteminio laikrodžio kylantį frontą ir, jeigu sąlyga yra tenkinama, patenkama į pradinę į÷jimų skaitymo būseną ( Read_Inputs ). Joje visiems keturiems IN moduliams: sumatoriui, at÷mikliui, daugikliui ir dalikliui, nuskaitomi du į÷jimai, naudojami kaip aritmetinio veiksmo operandai. Nuskaitoma tik esant aukštam FSL_S_EXISTS signalui, rodančiam, jog valdomajam moduliui yra siunčiama informacija. Dviejų skaičių nuskaitymą valdo signalas count , kuriam įgijus vertę 1 pereinama į į÷jimų rašymo būseną ( Write_Inputs ). Šioje būsenoje vienu metu į aritmetinį IN modulį siunčiami nuskaityti operandai bei nustatomas signalas fpu_operation_nd į aukštą lygį, kuris praneša, jog reikia prad÷ti duomenų apdorojimą. Kito takto metu pereinama į skaičiavimo būvį ( Calculate ). Aritmetiniai IN moduliai, atlikę operaciją, išsiunčia iš÷jimo signalą fpu_rdy , kuris tikrinamas valdiklyje, ir jeigu jis yra aukštas, pereinama į rezultato rašymo būvį ( Write_Outputs ). Šioje būsenoje vienu metu nustatomas signalas FSL_M_Write , rodantis, jog į valdantįjį modulį bus rašoma informacija, bei į FSL_M_Data paduodamas skaičiavimo rezultatas. Be to, iš÷jimas rašomas tik tuomet, jeigu valdančiojo modulio buferis n÷ra perpildytas, tai yra į FIFO modulį galima siųsti duomenis. Signalas, kuris apibūdina buferio perpildymą yra FSL_M_FULL . Atitikus šią sąlygą kito takto metu grįžtama į pradinę būseną Read_Inputs , čia laukiama naujų duomenų. Šitaip įgyvendinta būvių diagrama garantuoja MicroBlaze procesoriaus bei aritmetinių IN modulių sinchronizaciją. Be to, tai leidžia modulius naudoti pakartotinai ap÷jus būvių diagramos ciklą. Būvių proceso metu yra lygiagrečiai valdomas FSL_S_Read signalo kitimas. Šis signalas nustatomas į aukštą lygį, kai būvis yra į÷jimų skaitymo bei valdomam moduliui egzistuoja duomenys, kitu atveju jis yra lygus nuliui. Toliau buvo bandoma prijungti CORDIC v3 IN modulį, sukonfigūruotą skaičiuoti kvadratinei šakniai. Tyrimų metu buvo atrasta modulio programin÷ klaida: slankiojo kablelio aritmetin÷s operacijos prad÷davo veikti tik padavus didesnę nei 0x40000 (šešioliktainę) vertę. Informaciją apie klaidą buvo perduota Xilinx Webcase Support personalui, kuris ją ištais÷ CORDIC v4 versijoje. Deja, turima ISE 10.1.3 programos licencija neleido šio modulio taikyti (CORDIC v4 gali būti naudojamas pradedant nuo ISE 11.2 versijos).

4.6. Logaritmo modulio integravimas

Šiame poskyryje yra aptariama LKA sistemos modifikacija, pavadinta EPSILION versija. Išskirtinis šios versijos elementas yra aparatinis logaritmo modulis. Skaičiuojant garso signalo

MICROBLAZE PROGRAMINIO PROCESORIAUS ĮGYVENDINIMO TYRIMAS 65 VGTU ELEKTRONIKOS FAKULTETAS kepstrą yra vykdoma GFT, skaičiuojamas logaritmas ir dar kartą GFT. Ankstesn÷se sistemos versijose logaritmo operacija buvo vykdoma programiniu būdu, spartinant SKM moduliu. Tačiau d÷l papildomų duomenų mainų tarp operatyviosios atminties ir aparatinio IN modulio buvo sugaištama santykinai daug laiko. Siekiant to išvengti du GFT bei logaritmo IN modulis buvo integruoti į vieną bendrą IN bloką. Gautos LKA sistemos schema pateikta 4.10 pav. Čia matyti trys atskiri blokai: IEEE754-FP keitiklis, LOG blokas ir FP-IEEE754 keitiklis. Abu keitikliai reikalingi slankiojo kablelio ir IEEE754 standartų suderinimui. 4.11 pav. yra pavaizduota sistemos būvių diagrama. Ji buvo išpl÷sta iš pirmin÷s GFT būvių diagramos (BETA versijos). Ši būvių diagrama vaizduoja visos kepstrin÷s analiz÷s skaičiavimo etapus. Svarbiausi viršutinio VHDL modelio elementai yra GFT IN blokas, keturi slankiojo kablelio operatoriai (sumatorius, du daugikliai ir šaknies traukimo modulis). Papildomi komponentai, skirti logaritmo operacijai skaičiuoti buvo paimti iš slankiojo kablelio bibliotekos [54, 55, 56], sukurtos kompanijos ENS Lyon . Min÷tas logaritmo IN modulis (taip pat ir kiti FPLibrary bibliotekos elementai) veikia 34 bitų standartu. Programinis procesorius MicroBlaze yra 32 bitų įrenginys, veikiantis pagal IEEE754 standartą. Taigi abiejų formatų suderinimui yra naudojami keitikliai. 4.10 pav. pateiktoje schemoje n÷ra pavaizduoti papildomi FIFO IN moduliai, integruoti tarp GFT ir keitiklių. FIFO moduliai naudojami duomenų laikinam saugojimui. Prieš panaudojant šiuos modulius duomenys buvo saugomi VHDL kalba aprašomuose masyvuose. Šiems masyvams nepavyko priskirti laikinųjų nulinių verčių, tod÷l stimuliatorius sugeneruodavo v÷linimo elementus neapibr÷žtoms masyvų vert÷ms. Taip buvo išnaudojami visi LPLM aparatiniai ištekliai tačiau FIFO IN moduliai šią problemą išsprend÷.

4.10 pav. LKA sistemos su aparatiniu logaritmo bloku schema (EPSILION versija)

66 Vytautas ARMINAS 2009–2010 M. M.

Initialization2 Last_From_Log Calculate_LOG Last_Into_LOG nr_of_log_writes=0

count=’100' nr_of_log_writes!=0 log_count=’100’ Into_LOG Idle2 nr_of_log_writes=0 nr_of_log_writes!=0

Read_Inputs2 End_Of_Read2 From_LOG Last_To_Array

nr_of_reads=’0' nr_of_reads=’1’ Kita nr_of_writes!=’0'& fpu_sqrt_rdy=’1’ ir nr_of_writes_fft1=0 nr_of_reads=’0' nr_of_writes_fft1!=0 Read_Inputs1 End_of_Read1 Cal_FFT2 Write_To_Sqrt

Kita dv=’1' dv=’0' FSL_S_EXISTS=’1' FSL_S_EXISTS=’1' fpu_add_rdy=’1’ ir Kita fpu_mult_rdy1=’1' ir calculated_fft2=’0' fpu_mult_rdy2=’1' Reset=’0' Write_to_Multipli Idle1 Cal_FFT1 dv=’1' Write_to_Adder ers

nr_of_writes_fft2!=’0’ ir fpu_add_rdy=’1’ ir Reset count=’100' FSL_M_FULL=’0' calculated_fft2=’1' FSL_M_FULL=’0' nr_of_writes_fft2=0 Reset=’1' Initialization1 Reset_State End_Of_Write Write_Outputs Write_To_Sqrt2 fpu_sqrt_rdy=’1’ Kita Kita 4.11 pav. Kepstro skaičiavimo su aparatiniu logaritmo bloku būvių diagrama

Būvių diagrama (4.11 pav.) susideda iš dviejų panašių ciklų, atliekančių GFT skaičiavimą (įskaitant duomenų įvedimą, skaičiavimą bei išvedimą). Tarp GFT skaičiavimo vykdomi skaičių pakeitimai ir logaritmo skaičiavimas. Rezultatas yra pradinio garsinio signalo kepstras.

4.7. Skyriaus apibendrinimas

Šiame skyriuje aptartas darbe panaudotas žodžių atpažinimo metodas su dinamin÷s laiko skal÷s kraipymo algoritmu, skirtu žodžių palyginimui. D÷l sąlyginai paprastų matematinių skaičiavimų ir neilgo vykdymo laiko, DLK metodas, remiantis teorin÷mis prielaidomis ir praktikoje įgyvendintais projektais [57], yra tinkamas įgyvendinti LPLM įrenginyje. 1. LKA sistemai įgyvendinti pasirinkti Xilinx moduliai ML402 ir XUPV5 (LKA sistemos įgyvendinimai XUPV5 modulyje pateikti C ir D prieduose). Šiuose moduliuose yra integruota įvairi periferija; LPLM lustų išteklių pakanka visos LKA sistemos įgyvendinimui. 2. Darbe minimos penkios įterptinių sistemų versijos, kurias apžvelgiant nuo žemiausios pateikiami rezultatų pagerinimai, siekiantys šimtus kartų. Visos penkios sistemos paremtos programiniu procesoriumi MicroBlaze . Paskutin÷ (EPSILION) versija yra pati sparčiausia sistema su sud÷tingiausiu darbe naudotu kepstro skaičiavimo IN moduliu. 3. Siekiant LKA sistemą patobulinti taip, jog apdorojimo laikas būtų kiek įmanoma trumpesnis, algoritmas tolimesn÷se versijose turi būti maksimaliai perrašytas VHDL kalba. L÷čiausia algoritmo vieta yra iš wav bylos išskirto kepstro ir etalonų palyginimas, tod÷l šią vietą perrašius aparatiniame lygmenyje, būtų priart÷ta prie realaus laiko sistemos.

MICROBLAZE PROGRAMINIO PROCESORIAUS ĮGYVENDINIMO TYRIMAS 67 VGTU ELEKTRONIKOS FAKULTETAS

5. MICROBLAZE PROGRAMINIU PROCESORIUMI PAREMTŲ ĮGYVENDINIMŲ TYRIMO REZULTATAI

Šiame skyriuje pateikiami MicroBlaze programiniu procesoriumi paremtų SKO ir LKA įterptinių sistemų tyrimo rezultatai, pristatomi LPLM moduliai, kuriuose buvo atliekami eksperimentai. Pateikiami daliniai rezultatai autoriui dalyvaujant dviejuose s÷kmingai įvykdytuose mokslininkų grupių projektuose [29, 38], kuriuos r÷m÷ Lietuvos valstybinis mokslo ir studijų fondas. SKO ir LKA sistemų tyrimų rezultatai paskelbti moksliniuose straipsniuose [1, 2] žurnale, cituojamame ISI WEB of Science duomenų baz÷je. LKA sistemos rezultatai paskelbti dviejuose moksliniuose straipsniuose [3, 4] tarptautinių konferencijų medžiagose. Rezultatai viešinti vienoje respublikin÷je ir dviejose tarptautin÷se konferencijose.

5.1. SKO įgyvendinimo LPLM tyrimai

Šiame poskyryje pateikiami pagrindiniai skruzdžių kolonijų optimizavimo algoritmų pritaikymo ir algoritmų našumo įvertinimo darbai bei jų metu gauti rezultatai. Pristatomas SKO algoritmo pritaikymas vaizdams segmentuoti ir MAXMIN skruzdžių sistemos pritaikymas pirminiam vaizdų apdorojimui. Pateikiami įgyvendintų metodų našumo tyrimo rezultatai, vertinamas atliekamų skaičiavimų tikslumas ir sparta, priklausomyb÷ nuo kalb÷tojo. Pirminio vaizdų apdorojimo ir vaizdų segmentavimo įterptin÷s sistemos sukurtos ir pritaikytos daugialusčiame LPLM modulyje DiniGroup DN8000K10PSX. Šis įrenginys pateiktas 5.1 pav.

5.1.1. SKO algoritmo taikymas vaizdui segmentuoti

Darbe buvo nagrin÷tas ir įgyvendintas skurdžių kolonijų optimizavimo algoritmo [58] taikymas proteomikoje naudojamų dvimat÷s elektroforez÷s gelių vaizdams segmentuoti [59, 60]. Algoritmo

5.1 pav . SKO įgyvendinimas daugialusčiame LPLM modulyje DN8000K10PSX

68 Vytautas ARMINAS 2009–2010 M. M.

(a) pradinis vaizdas (b) galutinis vaizdas

5.2 pav. Dirbtinių vaizdų taikymo atliekant segmentavimą SKO algoritmu iliustracija pirminio modelio id÷ja pasiūlyta Bocchi Ballerini ir Häsler [14], o populiacijos kontrol÷s modelis sukurtas Fernandes, Ramos ir Rosa [61]. R. Laptik ir D. Navakausko sukurtas SKO algoritmas vaizdui segmentuoti [62]. Šis algoritmas yra naujas tuo, jog jame yra siūloma skruzdes priskirti skirtingoms kolonijoms, taip pat yra taikomas skruzdžių varžymasis d÷l feromono. Vienas iš sud÷tingiausių eksperimento etapų yra tinkamų ir geriausius rezultatus duodančių SKO algoritmo parametrų parinkimas. Parinkus optimaliausius parametrus, kurie garantuotų geriausią susiliejusių objektų išskyrimą, sistema gali būti naudojama realiems vaizdams segmentuoti. Eksperimentų metu SKO algoritmo, skirto vaizdams segmentuoti, parametrai (5.1 lentel÷je pažym÷ti tamsesniu fonu) parinkti, naudojant dirbtinius vaizdus (5.2 pav.). Šie dirbtiniai vaizdai – tai dvimat÷s elektroforezes gelių atitikmenys, kuriuose vaizduojamas įprastas kelių objektų susiliejimas.

5.1 lentel÷. Vaizdui segmentuoti skirto SKO algoritmo parametrai

Popu Skruzd. Jautru Ferom. Jautru Skruzd. Skruzd. Feromono liacijos repro mas jautr. mas energija ferom. garavimas dydis dukcija ferom. riba gradientui

S, % N N α N β N δ N η N p N K N

10 0 0,05 4 0,0125 4 2,0 4 0,1 5 0,05 5 0,5 4 0,0005 4

20 2 0,06 6 0,0250 6 2,5 5 0,2 6 0,06 5 1,0 5 0,0010 6

30 5 0,07 6 0,0350 4 3,0 4 0,3 4 0,07 6 1,5 6 0,0015 5

40 5 0,08 4 0,0500 3 3,5 6 0,4 4 0,08 5 2,0 5 0,0020 4

50 3 0,10 5 – – 4,0 4 – – 0,09 4 3,0 4 0,0005 4

MICROBLAZE PROGRAMINIO PROCESORIAUS ĮGYVENDINIMO TYRIMAS 69 VGTU ELEKTRONIKOS FAKULTETAS

5.3 pav. Stabdymo kriterijaus radimas svyruojant skruzdžių populiacijos dydžiui

Vaizdų segmentavimui gauti palankiausi parametrai tarpusavy atskiria sulietas d÷mes. Vienas svarbiausių žingsnių yra nustatyti tinkamiausią iteracijų skaičių, kuris lemia skruzdžių populiacijos dydį. Jeigu iteracijų per mažai, vaizdas pernelyg segmentuotas, jeigu per daug – populiacijos išnyksta, o vaizdas tampa vienos spalvos. Vykdant tyrimus pasiūlytas originalus, skruzdžių populiacijos dydžio svyravimų steb÷jimu grįstas, vaizdo segmentavimo proceso stabdymo kriterijus (5.3 pav.). Pagal šį kriterijų parenkamas tinkamas iteracijų skaičius. Gautos SKO algoritmo parametrų vert÷s taikytos realių dvimat÷s elektroforez÷s gelio vaizdo fragmentams segmentuoti (5.4 pav.). Šiuose paveiksluose pateiktas pradinis d÷mių vaizdas ir jo kitimas vykdant segmentavimą SKO algoritmų ir didinant iteracijų skaičių. Pasiektas 67 % geresnis vaizdo segmentavimo rezultatas lyginant su segmentavimu, taikant slenksčio funkciją.

(a) (b) (c)

(d) (e) (f) 5.4 pav. Dvimat÷s elektroforez÷s gelių vaizdų segmentavimo rezultatų vaizdai: a) pirminis; b) 2 iteracijų; c) 25 iteracijų; d) 100 iteracijų; e) 2 500 iteracijų; f) galutinis

70 Vytautas ARMINAS 2009–2010 M. M.

5.1.2. MAXMIN skruzdžių sistemos taikymas vaizdui apdoroti

Nagrin÷tas MAXMIN skruzdžių sistemos (MMSS) [63, 64] taikymas vaizdų pirminiame apdorojime. Pirminį vaizdų apdorojimą dažnai sudaro seka vaizdo apdorojimo operatorių su juos tinkamai nustatančiais parametrais. Žinoma, kad vaizdo apdorojimo operatorių sekoje operatoriai gali kartotis ir, kad sekos ilgis yra baigtinis. Taigi remiamasi keliaujančio prekeivio uždavinio modelio analogija su vaizdų pirminiu apdorojimu. Algoritmai išbandyti su dirbtiniais vaizdais. Pasiūlytos euristin÷s informacijos, sekos ilgio ribojimo, lokalios paieškos ir skruzdžių pradinio d÷stymo procedūrų standartinio MMSS algoritmo patobulinimai. Pasiūlyti ir ištirti du MAXMIN skruzdžių sistemų skruzdžių pradinio d÷stymo algoritmai. Pirmas algoritmas (MMSS M1) d÷sto skruzdes remiantis feromono kiekiu, o antras algoritmas (MMSS M2) – parinktu perkeliamų skruzdžių kiekiu. Eksperimentiškai nustatyta, kad geriausi rezultatai gaunami antruoju metodu perkeliant 20 % visų skruzdžių. Kaip iteracijų skaičius priklauso nuo pirminio vaizdo apdorojimo operatorių skaičiaus, atliekant paiešką tarp 85 operatorių

5.5 pav. Iteracijų skaičiaus priklausomyb÷s nuo operatorių skaičiaus

5.6 pav. Išbarstymo pokyčio įvertinimas did÷jant sprendinio ilgiui

MICROBLAZE PROGRAMINIO PROCESORIAUS ĮGYVENDINIMO TYRIMAS 71 VGTU ELEKTRONIKOS FAKULTETAS ir taikant įvairius metodus pateikta 5.5 pav. Matyti, kad MMAS grįsti algoritmai sprendimą randa žymiai greičiau nei taikant perrinkimo metodą. Remiantis 5.6 ir 5.7 pav. pateiktais eksperimentų rezultatais galima teigti, kad MMSS M1 algoritmas efektyviai didina MMSS konvergavimo greitį – sprendiniui su 6 vaizdo apdorojimo operatoriais gautas 30 % greičio padid÷jimas. Vertinant sprendimo kokybę matyti, kad MMSS M2 algoritmas pasižym÷jo 7 % kokyb÷s pablog÷jimu – sprendiniui su 5 vaizdo apdorojimo operatoriais, ir net 25 % kokyb÷s pablog÷jimu – sprendiniui su 6 vaizdo apdorojimo operatoriais. Tačiau tai geriau, nei taikyti standartinį MMSS algoritmą, kurio taikymo metu sprendiniui su 6 vaizdo apdorojimo operatoriais kokyb÷ pablog÷ja 49 %. Galima pasteb÷ti ir tai, kad MMSS M2 algoritmo rezultatai mažiau išsibarstę lyginant su MMSS ir MMSS M1 algoritmais.

5.1.3. Įgyvendintų algoritmų skaičiavimo tikslumas

Vertinant stochastiniu MonteKarlo metodu grįstą skaičiaus π vert÷s apskaičiavimo algoritmo ir skruzdžių kolonijų optimizavimo algoritmo skaičiavimo tikslumą, šie algoritmai buvo įgyvendinti naudojant viengubo ir dvigubo tikslumo skaičių formatus. Eksperimentų rezultatai abiejų algoritmų atvejais nesiskyr÷. Tai sąlygojo taikomo atsitiktinių skaičių generatoriaus veiksmų tikslumas, kuris buvo viengubas, t. y., slankiojo kablelio skaičiaus ilgis siek÷ 4 baitus (32 bitus). Šiuo formatu

−38 38 galima išreikšti skaičius 1,175549⋅ 10 , 3,40282 ⋅ 10  ribose, kiekvieną iš jų pateikiant dešimčia reikšminių skaitmenų [65]. Taikant skaičiaus π vert÷s apskaičiavimo algoritmą, pakako 5 reikšminių skaitmenų, o vykdant SKO algoritmą pakako 6 reikšminių skaitmenų. Tiriamų algoritmų įgyvendinimas dvigubo tikslumo skaičių formatais, kai galima operuoti 17 reikšminių skaitmenų, n÷ra tikslingas, nes taikytas MicroBlaze programinis procesorius yra 32 bitų. Taikant skaičiaus π vert÷s apskaičiavimo algoritmą, pakako 5 reikšminių skaitmenų, o vykdant SKO algoritmą pakako 6 reikšminių skaitmenų. Tiriamų algoritmų įgyvendinimas dvigubo tikslumo

5.7 pav. Sprendinio kokyb÷s įvertinimas

72 Vytautas ARMINAS 2009–2010 M. M. skaičių formatais, kai galima operuoti 17 reikšminių skaitmenų, n÷ra tikslingas, nes taikytas MicroBlaze programinis procesorius yra 32 bitų.

5.1.4. Įgyvendintų algoritmų skaičiavimo sparta

MicroBlaze programinis procesoriaus branduolys turi specialius programinius modulius skirtus skaičiavimams spartinti, tačiau kiekvienas iš jų papildomai reikalauja LPLM išteklių. Trumpai aptarkime taikytus modulius:  Postūmio modulis – skirtas bitų postūmiams į kairę ir į dešinę su perk÷limu ar be jo atlikti. Šio modulio taikymas turi paspartinti programos vykdymą.  Komparatoriaus modulis – leidžia greitinti (ypač kai lyginamos eilut÷s) logines palyginimo operacijas.  Daliklio modulis –greitina sveikųjų skaičių dalybą.  Slankiojo kablelio modulis (SKM) – skirtas greitinti darbą su viengubo tikslumo slankiojo kablelio skaičiais. Paprastas modulis vykdo sud÷ties, atimties, daugybos, dalybos bei sulyginimo operacijas su slankiojo kablelio skaičiais. Išpl÷stas modulis papildomai atlieka keitimą iš sveikųjų skaičių į slankiojo kablelio skaičius ir atvirkščiai, greitina kvadratin÷s šaknies traukimą. Deja, modulis reikalauja daug LPLM išteklių.  Procesoriaus būsenos registro modulis – greitina darbą su būsenos registru atskirais bitais.  Daugybos modulis – greitina sveikųjų skaičių daugybos veiksmą. Šis modulis gali būti taikomas su 32 bitų ar 64 bitų skaičiais. Modulis nereikalauja daug LPLM išteklių.

5.2 lentel÷ . MicroBlaze programinio procesoriaus sparta naudojant įvairius modulius

Su Su Tik Su 32 bitų Su 64 bitų Algoritmas paprastu išpl÷stu branduolys daugintuvu daugintuvu SKM SKM Perrinkimas 54 53,0 53 53,5 Neveikia

SKO 57 33,4 Klaidos 43,0 Neveikia Su Su paprastu Su Su postūmio būsenos Su SKM ir Algoritmas dalybos moduliu registro komparatoriumi 32 bitų moduliu mod. daugintuvu Perrinkimas Neveikia 54,0 54,0 54,0 52,0

SKO Neveikia 57,0 57,0 57,0 23,0

Ištirta MicroBlaze programinio procesoriaus branduolio panaudotų modulių įtaka keliaujančio prekeivio uždavinio skaičiavimo rezultatams, tam taikant perrinkimo metodą ir SKO algoritmą.

MICROBLAZE PROGRAMINIO PROCESORIAUS ĮGYVENDINIMO TYRIMAS 73 VGTU ELEKTRONIKOS FAKULTETAS

a) perrinkimo algoritmas b) SKO algoritmas

5.8 pav. Įvairių įgyvendinimų LPLM sparta

Perrinkimo metodas tirtas 9 miestų kombinatoriniam uždaviniui spręsti, o SKO algoritmas – 14 miestų uždaviniui spręsti. Tokios apimties uždavinių sprendimo trukm÷, taikant abu algoritmus, buvo beveik vienoda. Eksperimentų, vykdytų naudojant viengubo tikslumo slankiojo kablelio duomenų tipą, rezultatai pateikti 5.2 lentel÷je. Iš pateiktų 5.2 lentel÷je rezultatų matyti, kad papildomų modulių naudojimas nevienodai įtakoja skaičiavimų spartą, o kai kurių modulių panaudojimas netgi yra netinkamas. Matyti, kad dalybos modulis nepadidino greičio, o paprasto slankiojo kablelio modulis SKO algoritmo atveju padidino spartą net 70 %. Kitas modulis paspartinęs skaičiavimus yra 32 bitų sveikųjų skaičių daugintuvas. Taikant šį modulį SKO algoritmo įgyvendinime, skaičiavimai paspart÷jo 32 %. Remiantis šio tyrimo rezultatais įgyvendinant SKO algoritmą nuspręsta kartu naudoti paprastą SKM ir 32 bitų daugintuvą. Tai net 140 % padidino šio algoritmo greitį. Analizuojant tirtų algoritmų spartos rezultatus (5.8 pav.), galima pasteb÷ti, kad greičio prieaugis maž÷ja ir nusistovi ties tam tikra riba. Perrinkimo metodo atveju riba yra 9 %, o SKO algoritmo atveju – 94 %. Iš pradžių manyta, kad šią ribą lemia kompiliatoriaus optimizavimo mechanizmas, tačiau jį atjungus, našumų skirtumas krito tik 8 %, taigi ši prielaida buvo paneigta. Staigus našumo prieaugio kritimas, sud÷ting÷jant uždaviniui, kai padid÷ja apdorojamų vienu metu duomenų kiekis, panašus į spartinančiosios atminties perpildymą. Daroma prielaida, kad sud÷ting÷jant uždaviniui, procesoriaus spartinančioji atmintis nesugeba sutalpinti reikalingų apdorojimui duomenų, d÷l to pastebimas našumo kritimas, nes tenka kreiptis į atmintį duomenims gauti.

5.2. LKA įgyvendinimo LPLM turimai

LKA sistemos įgyvendintos LPLM darbingumui nustatyti buvo atlikti lietuvių kalbos pavienių žodžių atpažinimo eksperimentai. Buvo sukurtos specializuotos įterptin÷s sistemos su jose

74 Vytautas ARMINAS 2009–2010 M. M.

įgyvendintu žodžių atpažintuvu, o eksperimentai su jomis buvo atliekami dviejuose Xilinx LPLM maketuose: ML402 (5.9 pav.) ir XUPV5 (5.10 pav.). Skyriuje aptariamos dvi pagrindin÷s eksperimentų kryptys: tikslumo ir spartos tyrimai. Tikslumas tiriamas sistemą mokant priklausomu ir nepriklausomu nuo kalb÷tojo žodynais. Sparta vertinama skaičiuojant algoritmo atskirų pagrindinių funkcijų vykdymo laiką. D priede (tarptautin÷s konferencijos SPW2010 darbų kopijoje) pateikti palyginamieji abiejų maketų eksperimentų rezultatai.

5.2.1. Eksperimentų planas ir duomenys

LKA sistema buvo tiriama dviem režimais: 1. Priklausomo nuo kalb÷tojo (PK) – sistema gali atpažinti tik ją mokusio asmens kalbą; 2. Nepriklausomo nuo kalb÷tojo (NK) – sistema mokoma ir testuojama su skirtingų kalb÷tojų įrašais. Tuo tikslu eksperimentuose buvo sudarytos ir taikytos dvi įrašytų ištarimų baz÷s, kiekvienoje kurių buvo po 1 000 ištarimų. Pirmąją įrašų bazę sudar÷ vieno asmens (vyro) įrašyti žodžiai. Baz÷je buvo 10 sesijų po 100 žodžių (įvairūs daiktavardžiai, skaitvardžiai, veiksmažodžių bendratys). Šie įrašai buvo panaudoti PK atpažinimo eksperimentuose. Antrąją įrašų bazę sudar÷ 10 kalb÷tojų (5 vyrų ir 5 moterų) įrašyti ištarimai – kiekvieno

5.9 pav . LKA įgyvendinimas LPLM makete Xilinx ML402

MICROBLAZE PROGRAMINIO PROCESORIAUS ĮGYVENDINIMO TYRIMAS 75 VGTU ELEKTRONIKOS FAKULTETAS

5.10 pav . LKA įgyvendinimas LPLM makete Xilinx XUPV5 kalb÷tojo 10 sesijų po 10 žodžių (skaičiai nuo 0 iki 9). Jie panaudoti NK atpažinimui testuoti. Ištarimų baz÷se naudotos impulsin÷s moduliacijos tipo garso bylos ( wav ), su 16 bitų, 1 kanalo, 11 kHz diskretizacijos dažnio įrašo kokybe. Eksperimentų metu tirti du atpažinimo sistemos darbingumo parametrai: atpažinimo tikslumas (informacinis parametras) ir įgyvendinimo našumas (vertinamasis parametras).

5.2.2. Atpažinimo tikslumo tyrimas

Tyrimams naudota BETA sistema – grįsta MicroBlaze procesoriumi su išpl÷stiniu SKM moduliu. LKA sistemos atpažinimo tikslumas tirtas abiems – priklausomo ir nepriklausomo nuo kalb÷tojo atpažinimo – atvejais. Atpažinimo tikslumas vertintas procentine teisingai atpažintų žodžių išraiška. Priklausomo nuo kalb÷tojo atpažinimo atveju LKA sistemai apmokinti buvo panaudotos pirmosios 6 sesijos (iš viso 600 žodžių), testavimui likusios 4 sesijos (400 žodžių). Atpažinimo tikslumo rezultatai pateikiami kiekvienai sesijai atskirai 5.11 pav. Kaip matome, atpažinimo tikslumas skirtingoms ištarimų sesijoms yra daugmaž vienodas, tesiskiria 4 %. Tai liudija apie stabilų atpažinimo procesą.

76 Vytautas ARMINAS 2009–2010 M. M.

100%

95% 92% 92% 90% 90% 88% 88%

85%

80%

75% Tikslumas % Tikslumas 70%

65%

60% 1 2 3 4 Vidurkis Sesijos

5.11 pav. Priklausomo nuo kalb÷tojo atpažinimo individualūs ir vidutinis tikslumai

100% 83% 80% 74% 72% 63% 60%

40% Tikslumas % Tikslumas 24% 20%

0% 1 2 3 4 Vidurkis Sesijos

5.12 pav. Nepriklausomo nuo kalb÷tojo atpažinimo individualūs ir vidutinis tikslumai

Nepriklausomo nuo kalb÷tojo atpažinimas vykdytas naudojant 6 kalb÷tojų (3 vyrų ir 3 moterų) 10 sesijų įrašus (iš viso 600 žodžių), testuojant likusių 4 kalb÷tojų įrašais (400 žodžių). Individualūs kiekvieno kalb÷tojo ir vidutinis atpažinimo tikslumo rezultatai pateikiami 5.12 pav. Šiuo atveju gautas 63,3 % vidutinis atpažinimo tikslumas n÷ra didelis. Tačiau panagrin÷jus individualius kalb÷tojų atpažinimo rezultatus matome, jog ypač blogai atpažinti pirmojo kalb÷tojo ištarimai. Kitų trijų kalb÷tojų vidutinis atpažinimo tikslumas siekia 76,3 %. Netikslus pirmojo kalb÷tojo ištarimų atpažinimas gali būti paaiškintas naudojamos požymių sistemos nesugeb÷jimu tinkamai išskirti kalbos signalo lingvistinį turinį nepriklausomai nuo kalbančiojo. Galimi šios problemos sprendimo būdai – požymių sistemos gerinimas, kitos požymių sistemos pasirinkimas. Gauti priklausomo ir nepriklausomo nuo kalb÷tojo atvejais atpažinimo tikslumo tyrimo rezultatai rodo, kad LKA sistema įgyvendinta LPLM geba atpažinti lietuvių kalbos pavienius žodžius. Šio darbo tikslas n÷ra atpažinimo tikslumo gerinimas, tod÷l šia kryptimi galimi patobulinimai nebuvo vykdomi.

MICROBLAZE PROGRAMINIO PROCESORIAUS ĮGYVENDINIMO TYRIMAS 77 VGTU ELEKTRONIKOS FAKULTETAS

5.2.3. Įgyvendinimo našumo tyrimas

Šio eksperimento tikslas – išmatuoti atskirų atpažinimo proceso etapų vykdymo laiką, bei nustatyti atpažinimo proceso našumo padid÷jimą, į sistemą įdiegus slankiojo kablelio modulį (SKM). Tuo tikslu nagrin÷ti abu LKA sistemos LPLM įgyvendinimai: ALFA versija – paremta tik MicroBlaze procesoriumi ir BETA versija – paremta MicroBlaze procesoriumi su SKM moduliu. Eksperimentui buvo pasirinktas nepriklausomas nuo kalb÷tojo atpažinimas. Sistemai apmokinti panaudotos 6 kalb÷tojų (3 vyrų ir 3 moterų) 5 sesijos (iš viso 300 žodžių), testuoti – po likusių 4 kalb÷tojų vieną sesiją (40 žodžių). Pirmiausia vertinta SKM įtaka atpažinimo proceso spartai. Steb÷jimui pasirinkti keturi atpažinimo proceso etapai: ištarimo nuskaitymas; žodžio ribų nustatymas; požymių išskyrimas; požymių palyginimas. Šie etapai yra svarbiausi atpažinimo proceso ir turi didžiausią įtaką viso proceso trukmei. Eksperimento metu fiksuotas vidutinis laikas, reikalingas vienam žodžiui apdoroti konkrečiame etape. Vidutin÷ trukm÷ gauta fiksuojant viso proceso trukmę ir ją dalijant iš nagrin÷tų žodžių skaičiaus. 5.3 lentel÷je pateikti atskirų atpažinimo proceso etapų vykdymo trukm÷ abiems įgyvendinimams. Taip pat pateikiamas santykinis pagreit÷jimas, išreiškiamas skaičiavimo trukm÷s sutrump÷jimu.

5.3 lentel÷. SKM modulio įtaka atpažinimo proceso ir jo atskirų etapų trukm÷ms

Santykinis Etapas Vykdymo laikas, s pagreit÷jimas Ištarimo nuskaitymas 1,2 1,2 1,0

Žodžio ribų nustatymas 17,1 0,2 85,5

Požymių išskyrimas 539,5 39,7 13,6

Požymių palyginimas 1084,0 29,4 36,9

Bendras 1641,8 70,5 23,3

Matyti, kad slankiojo kablelio modulio taikymas leido pagreitinti atpažinimo procesą apie 23 kartus ir vidutinį žodžio atpažinimo laiką sumažinti nuo 1 642 s iki 71 s. Beje, skirtingus etapus SKM modulis paspartino nevienodai. Ryškiausias paspart÷jimas užfiksuotas žodžio ribų nustatymo etape, SKM paspartino šį procesą net virš 85 kartus. Tą galima būtų paaiškinti dideliu slankiojo kablelio operacijų skaičiumi žodžio ribų nustatymo algoritme. Palyginimo procesas pagreit÷jo beveik 37 kartus, o požymių išskyrimas virš 13 kartų. Tai irgi atspindi slankiojo kablelio operacijų

78 Vytautas ARMINAS 2009–2010 M. M. skaičių kiekviename etape. Kaip matyti, požymių išskyrimo etape slankiojo kablelio operacijų skaičius yra mažiausias. Ištarimo nuskaitymo iš bylos laikas kaip ir reik÷jo tik÷tis – nepakito. 5.4 lentel÷je pateikta santykin÷s atpažinimo proceso etapų trukm÷s išraiškos, nurodančios kiekvieno steb÷to etapo įtaką bendrai skaičiavimų trukmei.

5.4 lentel÷. Santykin÷s atpažinimo proceso etapų trukm÷s

Santykin÷ trukm÷, % Etapas ALFA BETA

Ištarimo nuskaitymas 0,1 1,8

Žodžio ribų nustatymas 1,0 0,3

Požymių išskyrimas 32,9 56,4

Požymių palyginimas 66,0 41,5

Bendras 100,0 100,0

Matyti, kad LKA sistemos LPLM įgyvendinime be SKM (ALFA) didžiausią laiko dalį užimdavo požymių palyginimo procesas (net 66 % viso laiko). Įdiegus SKM šio proceso įtaka į viso proceso trukmę sumaž÷jo iki 41,5 %. Tuo tarpu požymių išskyrimo etapo įtaka išaugo nuo 32,9 % iki 56,4 %. Kadangi požymių išskyrimo proceso sparta padid÷jo mažiausiai (5.3 lentel÷), šis etapas tapo vyraujančiu visame atpažinimo procese. Taigi pats pirmasis žingsnis trumpinant atpažinimo laiką – spartinti kalbos signalo analiz÷s etapą. Galimi šie spartos didinimo būdai:  Perprogramuojamų aparatinių komponentų naudojimas. Šis būdas tur÷tų būti prioritetinis, kadangi nereikalauja didelių algoritmo pakeitimų.  Nagrin÷jamų duomenų apimties mažinimas. Naudojama 11 kHz diskretizavimo dažnio įrašų kokyb÷ lemia didelius nagrin÷jamų duomenų kiekius. Įvertinus tai, kad kalbos signalo spektras yra pakankamai ribotas ir siekia 3–4 kHz, diskretizavimo dažnį galima būtų sumažinti iki 6–8 kHz taip sumažinant garso duomenų kiekį. Be to, aukštųjų dažnių srities pašalinimas leistų išvengti kai kurių triukšmų įtakos ir taip tik÷tis atpažinimo tikslumo padid÷jimo.  Lygiagreti skaičiavimo operacijų organizacija. Šis procesas tur÷tų būti atliekamas visiškai išnaudojus aukščiau min÷tų būdų galimybes, kadangi reikalauja esminių algoritmo pertvarkymų. Tie patys samprotavimai būtų taikytini ir kitam didžiąją atpažinimo laiko dalį užimančiam etapui – palyginimui.

MICROBLAZE PROGRAMINIO PROCESORIAUS ĮGYVENDINIMO TYRIMAS 79 VGTU ELEKTRONIKOS FAKULTETAS

5.3. Skyriaus apibendrinimas

1. Vykdant skruzdžių kolonijų optimizavimo algoritmų pritaikymą vaizdams segmentuoti: a) sukurtas originalus SKO algoritmas vaizdui segmentuoti ir ištirtas jo tinkamumas dvimat÷s elektroforez÷s gelių vaizdams segmentuoti; b) pasiūlytas originalus, skruzdžių populiacijos dydžio svyravimų steb÷jimu grįstas, vaizdo segmentavimo proceso stabdymo kriterijus; c) pasiūlyti ir ištirti du MAXMIN skruzdžių sistemų skruzdžių pradinio d÷stymo algoritmai. 2. Įvertintas stochastinio MonteKarlo metodu pagrįsto skaičiaus π vert÷s apskaičiavimo algoritmo ir skruzdžių kolonijų optimizavimo algoritmo našumas: skaičiavimo tikslumas ir sparta. Eksperimentiškai parodyta, kad tinkamiausias SKO algoritmo įgyvendinimas LPLM įrenginyje turi: a) naudoti viengubo tikslumo skaičių formatą; b) taikyti MicroBlaze programinį procesorių; c) naudoti šio branduolio paprastą slankiojo kablelio modulį ir 32 bitų daugintuvą. 3. Suformuluota LKA metodika pritaikyta ir įgyvendinta LPLM įrenginyje (gauta LKA sistemos bazin÷ – ALFA versija). Taikytas Xilinx kompanijos ML402 testavimo modulis su Virtex 4 šeimos XC4VSX35 lustu, kurio ištekliai neapriboja sistemos išpl÷timo, tobulinimo ir tyrimo galimybių. 4. Atpažinimo metodika įgyvendinta LPLM taikant Xilinx programinį paketą ISE Design Suite. XPS modulio įrankiais EDK bei SDK sukurti atitinkamai sistemos architektūros bei vykdomojo C programinio kodo struktūros, sujungtos MicroBlaze programiniame procesoriuje. 5. Siekiant pagerinti LKA sistemos įgyvendinimo LPLM ALFA versijos spartą, prijungtas išpl÷stas slankiojo kablelio modulis SKM (gauta LKA sistemos BETA versija). Šis modulis sutrumpino visų slankiojo kablelio operacijų atlikimo laiką, iš kurių kvadratin÷s šaknies traukimo operacija paspart÷jo labiausiai (virš 340 kartų). 6. Tirtas sistemos tikslumas atpažįstant lietuvių kalbos pavienius žodžius. Gauti priklausomo (90 %) ir nepriklausomo (63,3 %) nuo kalb÷tojo tyrimų rezultatai, kurie pagrindžia LKA sistemos, įgyvendintos LPLM, geb÷jimą atpažinti lietuvių kalbos pavienius žodžius.

80 Vytautas ARMINAS 2009–2010 M. M.

6. APIBENDRINIMAS. IŠVADOS

Magistro baigiamojo darbo tikslas pasiektas visapusiškai ištyrus MicroBlaze programinio procesoriaus įgyvendinimo originaliose įterptin÷se sistemose galimybes. Gauti šie mokslinei ir eksperimentinei pl÷trai svarbūs rezultatai: 1. Daugialusčiame lauku programuojamų loginių matricų įrenginyje pirmą kartą įgyvendinta populiacijomis grįsta optimizavimo skruzdžių kolonijomis įterptin÷ sistema, kurios eksperimentinių tyrimų išdavoje: a) sukurtas originalus SKO algoritmas vaizdui segmentuoti; b) pasiūlytas originalus, skruzdžių populiacijos dydžio svyravimų steb÷jimu grįstas, vaizdo segmentavimo proceso stabdymo kriterijus; c) pasiūlyti ir ištirti du MAXMIN skruzdžių sistemų skruzdžių pradinio d÷stymo algoritmai; d) nustatyta, kad populiacijomis grįsto optimizavimo skruzdžių kolonijomis algoritmo vykdomo laikas, esant 30 × 40 taškų dydžio vaizdams, yra milisekundžių eil÷s, o jo priklausomyb÷ nuo iteracijų skaičiaus yra beveik tiesin÷. 2. Lauku programuojamų loginių matricų įrenginyje pirmą kartą įgyvendinta dinaminiu laiko skal÷s kraipymu grįsta lietuvių kalbos pavienių žodžių atpažinimo įterptin÷ sistema, kurios penkių prototipų eksperimentinių tyrimų su ML402 ir XUPV5 moduliais išdavoje: a) parodyta MicroBlaze intelektin÷s nuosavyb÷s branduolio, išpl÷sto slankiojo kablelio ir greitosios Furj÷ transformacijos intelektin÷s nuosavyb÷s modulių taikymo bei 6 kHz diskretizavimo dažnio garsyno naudojimo svarba; b) sukurtas kepstrin÷s analiz÷s intelektin÷s nuosavyb÷s modulis, kuris kalbos signalo kadro apdorojimą vykdo 29 kartus greičiau nei įprasta MicroBlaze procesoriaus programa; c) nustatyti pirminiai priklausomo (virš 92 %) ir nepriklausomo (virš 63 %) nuo kalb÷tojo tyrimų atvejais lietuvių kalbos pavienių žodžių atpažinimo tikslumo įterptin÷je sistemoje rezultatai; d) daugiau nei 100 kartų paspartinta lietuvių kalbos pavienių žodžių atpažinimo įterptin÷ sistema ir pasiekta 15,7 s vidutin÷ vieno žodžio atpažinimo trukm÷. 3. Parengtos šios MicroBlaze programinio procesoriaus taikymo, kuriant įterptines sistemas, rekomendacijos : a) siekiant spartos, tikslinga naudoti Virtex serijos lustus; b) rekomenduojama pasikartojančias matematines operacijas rašyti VHDL programavimo kalba, taikant programinio paketo Xilinx ISE Design Suite įrankio Core Generator generuojamus aparatinius IN modulius;

MICROBLAZE PROGRAMINIO PROCESORIAUS ĮGYVENDINIMO TYRIMAS 81 VGTU ELEKTRONIKOS FAKULTETAS

c) norint atskirų funkcijų vykdymą paskirstyti tarp keleto lustų, tikslinga MicroBlaze programinių procesorių sąveiką įgyvendinti naudojant XPS Mailbox intelektin÷s nuosavyb÷s modulį; d) siekiant spartos, tikslinga taikyti išpl÷sto slankiojo kablelio intelektin÷s nuosavyb÷s modulį ir Floating Point Library funkcijų biblioteką; e) rekomenduojama eksperimentiškai ištirti kiekvieno Xilinx Core Generator FPO aritmetinio intelektin÷s nuosavyb÷s modulio taikymo efektyvumą konkrečiai kuriamai įterptinei sistemai; f) greitajai Furj÷ analizei atlikti rekomenduojama taikyti Radix 4 algoritmu grįstą Xilinx Core Generator FFT intelektin÷s nuosavyb÷s modulį, duomenų mainus vykdant GPM magistrale; g) greitai lauku programuojamų loginių matricų prieigai prie kietajame diske saugomų duomenų įgyvendinti rekomenduojama taikyti 64 bitų 66 MHz spartos PCIX jungtį, leidžiančią pasiekti 532 MB/s duomenų kaitos spartą; h) greitai apdorojamų duomenų įvesčiai į lauku programuojamą loginę matricą taikytina sukompiliuota ace formato konfigūracin÷ byla, įkraunama į operatyviąją atmintį paleisties metu.

82 Vytautas ARMINAS 2009–2010 M. M.

Literatūra

1. Laptik, R.; Arminas, V.; Navakauskas, D. 2009. Ant System Implementation using Microblaze: Some Preliminary Results on Efficiency Study, IEEE 6(94): 2730. ISSN 13921215. doi: Kaunas: Technologija. 2. Tamulevičius, G.; Arminas, V.; Ivanovas, E.; Navakauskas, D. 2010. Hardware accelerated FPGA implementation of Lithuanian isolated word recognition system, Electronics and Electrical Engineering 3(99): 5762. ISSN 13921215. doi: Kaunas: Technologija. 3. Navakauskas, D.; Tamulevičius, G.; Arminas, V.; Ivanovas, E.; Martavičius, R. 2010. Efficiency of initial FPGA implementation of Lithuanian isolated word recognition system, in Proceedings of the XXXIII International Conference on Fundamentals of Electrotechnics and Circuit Theory . Gliwice Ustron. Poland: Silesian University of Technology, 5. ISBN 9788385940326. 4. Arminas, V.; Tamulevičius, G.; Navakauskas, D.; Ivanovas, E. 2010. Acceleration of feature extraction for FPGA based , in Proceedings of Signal Processing Workshop of 18th International Conference on Microwave, Radar and Wireless Communications MIKON2010 June 14 16. Vilnius, 6. 5. Almeida, M.; Sklyarov, V.; Skliarova, I.; Pimentel, B. 2005. Design tools for reconfigurable embedded systems, in Embedded Software and Systems, 2005. Second International Conference on : INSPEC, 18. ISBN 0769525121. 6. You, K.; Lim, H.; Wonyong, S. 2006. Architectural Design and Implementation of an FPGA Softcore Based Speech Recognition System, in SystemonChip for RealTime Applications , 2007. Cairo: INSPEC, 5055. ISBN 1424408989. 7. Xilinx 2009. MicroBlaze soft processor core [interaktyvus] [žiūr÷ta 2009 m. liepos 9 d.]. Prieiga per internetą: . 8. Ehiliar, A.; Karlstrom, P.; Liu, D. 2008. A high performance microprocessor with DSP extensions optimized for Virtex4 FPGA, in Field Programmable Logic and Applications , 2008. Heidelberg: INSPEC, 599602. ISBN 9781424419609. 9. Soumar, A.; Ito, H. 2000. Testing approach within FPGAbased fault tolerant systems, in Proceedings of the Ninth Asian . Taipei. Taiwan: INSPEC, 411416. ISBN 0769508871. 10. Wee, C. M.; Sutton, P. R.; Bergmann, N. W.; Williams, J. A. 2006. Multi Stream Cipher Architecture for Reconfigurable SystemonChip, in Field Programmable Logic and Applications , 2007. Madrid. Spain, 14. ISBN 142440312X. 11. Abermann, S. 2008. Highk/Metalgate Devices for Future CMOS Technology . Saarbrücken, Germany: VDM Verlag. 180 p. ISBN 9783836465298 12. De Vos, J.; Luc, H.; Marc, D.; Katia, D.; Dirk, W. 2006. A scalable Stacked Gate NOR/NAND Flash Technology compatible with highk and metal gates for sub 45nm generations, in 2006 IEEE International Conference , 14. ISBN 142440097X.

MICROBLAZE PROGRAMINIO PROCESORIAUS ĮGYVENDINIMO TYRIMAS 83 VGTU ELEKTRONIKOS FAKULTETAS

13. Gonzalez, I.; GomezArribas, F. J. 2006. Ciphering algorithms in MicroBlazebased embedded systems, Computer and Digital Techniques 153(2): 8792. ISSN 13502387. 14. Bocchi, L.; Ballerini, L.; Heassler, S. 2005. A new evolutionary algorithm for image segmentation, Springer 3449: 264273. ISSN 03029743. 15. Brown, S.; Vranesic, Z. G. 2005. Fundamentals of Digital Logic with VHDL Design . New Orleans, USA: McGrawHill Higher Education. 933 p. ISBN 9780071287654. 16. Projektavimo aplinkos ISE mokomoji medžiaga [interaktyvus]. 2008. Xilinx Inc. [žiūr÷ta 2008 m. gruodžio 10 d.]. Prieiga per internetą: . 17. IEEE 1997. IEEE Standard VHDL Synthesis Packages, in IEEE Computer Society , 2002. ISBN 07381 09894. 18. Reese, B. 1992. Use of VHDL synthesis in an advanced digital design source, in Southeastcon '92 Proceedings , 1215 Apr 1992 2. Birmingham. UK: INSPEC, 509512. ISBN 0780304942. 19. XST produkto puslapis [interaktyvus]. 2008. Xilinx Inc. [žiūr÷ta 2008 m. gruodžio 10 d.]. Prieiga per internetą: . 20. Ferrandi, F.; Ferrara, G.; Palazzo, R.; Rana, V.; Santambrogio, M. D. 2006. VHDL to FPGA automatic IPCore generation: a case study on Xilinx design flow, in Parallel and DIstributed Processing Symhosium , 2006. Rhodes Island: INSPEC, 14. ISBN 1424400546. 21. Lazányi, J. 2005. Instruction set extension using MicroBlaze processor, in Field Programmable Logic and Applications August 2426. Tampere. Finland, 729730. ISBN 0780393627. 22. Hofmann, R.; Drerup, B. 2002. Next generation CoreConnect TM processor local bus architecture, in ASIC/SOC Conference , 2003. Rochester. USA, 221225. ISBN 0780374940. 23. Magnusson, P. 2004. Evaluating Xilinx MicroBlaze for Network SoC Application : Masters's Thesis. Lulea University of Technology. Lulea: EISLAB. 67 p. 24. Rissa, T.; Donlin, A.; Luk, W. 2005. Evaluation of SystemC modeling of reconfigurable embedded systems, Design, Automation and Test in Europe 3: 253258. ISSN 15301591. 25. CoreConnect Technology [interaktyvus]. 2008. Xilinx Inc. [žiūr÷ta 2008 m. spalio 25 d.]. Prieiga per internetą: . 26. Lysecky, R.; Vahid, F. 2005. A study of the speedups and copetitiveness of FPGA soft processor cores using dynamic hardware/software partitioning, in Design, Automation and Test in Europe , 2005. Munich. Germany, 1823. ISBN 0769522882. 27. Kilts, S. 2007. Advanced FPGA Design. Architecture, Implementation and Optimization . NewYork, USA: IEEE. 336 p. ISBN 9780470054376. 28. Xu, S.; PollittSmith, H. 2008. A MultiMicroBlaze Based SOC Systems: From SystemC Modeling to FPGA Prototyping, in The 19th IEEE/IFIP International Symposium . Monterey. USA, 121127. ISBN 10746005. 29. Martavičius, R.; Navakauskas, D.; Laptik, R.; Arminas, V. 2008. Skruzdžių kolonijų optimizavimo įgyvendinimo lauko programuojamomis login÷mis matricomis tyrimas : Mokslininkų grup÷s projekto

84 Vytautas ARMINAS 2009–2010 M. M.

baigiamoji ataskaita. Vilniaus Gedimino technikos universitetas. Vilnius: Valstybinis studijų fondas. 34 p. 30. Bruneel, K.; Abouelella, F.; Stroobandt, D. 2009. Automatically mapping applications to a self reconfiguring platform, in Design, Automation & Test in Europ Conference & Exhibition, 2009. Nice. France, 964969. ISBN 9781424437818. 31. Guntsch, M.; Middendorf, M. 2002. Applying Population Based ACE to Dynamic Optimization Problems, in Ant Algorithms Brussels. Belgium, 111122. 32. Data2MEM documentation [interaktyvus]. 2008. Xilinx Inc. [žiūr÷ta 2008 m. lapkričio 16 d.]. Prieiga per internetą: . 33. Dorigo, M.; Stuetzle, T. 2004. Ant Colony Optimization . Cambridge: Physica Verlag. 305 p. ISBN 0 262042193. 34. Fogel, D. B. 1997. The Advantages of Evolutionary , in Biocomputing and emergent computation 1. Skovde, Sweden: World Scientific Press, 111. 35. Fogel, D. B. 2006. Evolutionary Computation: Toward a New Philosophy of Machine Intelligence : Wiley–IEEE Press. 296 p. ISBN 9780471669517. 36. Schrijver, A. 2005. On the history of combinatorial optimization (till 1960) : Handbook of Discrete Optimization. Amsterdam, Netherlands. 37. Dorigo, M.; Maniezzo, V.; Colorni, A. 1996. The Ant System: Optimization by a colony of coopering agents, IEEE Transactions on Systems, Man, and Cybernetics 26(1): 113. 38. Martavičius, R.; Navakauskas, D.; Tamulevičius, G.; Ivanovas, E.; Arminas, V. 2009. Lietuvių kalbos pavienių žodžių atpažinimo įgyvendinimas lauku programuojamomis login÷mis matricomis : Mokslininkų grup÷s projekto baigiamoji ataskaita. Vilniaus Gedimino technikos universitetas. Vilnius: Valstybinis studijų fondas. 58 p. 39. Tamulevičius, G. 2008. Pavienių žodžių atpažinimo sistemų kūrimas : Daktaro disertacija. Vilniaus Gedimino technikos universitetas. Vilnius. 130 p. 40. Rabiner, L. R.; Schafer, R. W. 1978. Digital Processing of Speech Signals New Jersey: PrenticeHall. 512 p. ISBN 9780132136037. 41. Oppenheim, A. V.; Schafer, R. W.; Stockham, T. G. 1968. Nonlinear filtering of multiplied and convolved signals, in Proceedings of the IEEE , 164–1291. 42. Sakoe, H.; Chiba, S. 1978. Dynamic programming algorithm optimization for spoken word recognition, IEEE Transactions on Acoustic, Speech, and Signal Processing 26(1): 43–49. ISSN 00963518 43. Wachter, M. D. et al. 2007. Templatebased continuous speech recognition, IEEE Transactions on Acoustics, Speech, and Signal Processing 4(15): 1377–1390. ISSN 15587916 44. Nair, N. U.; Sreenivas, T. V. 2008. Multipattern dynamic time warping for automatic speech recognition, in Proceedings of IEEE TENCON . Hyderabad, 16. 45. Kim, C.; Seo, K. D. 2005. DTWbased recognition algorithm for handheld consumer devices, IEEE Transactions on Consumer Electronics 51(2): 699–709. ISSN 00983063.

MICROBLAZE PROGRAMINIO PROCESORIAUS ĮGYVENDINIMO TYRIMAS 85 VGTU ELEKTRONIKOS FAKULTETAS

46. Xilinx 2009. Product Specification. Radiationtolerant Virtex4 QProV family overview [interaktyvus] [žiūr÷ta 2009 m. spalio 19 d.]. Prieiga per internetą: . 47. Xilinx 2009. Digital clock manager with advanced futures [interaktyvus] [žiūr÷ta 2009 m. rugs÷jo 24 d.]. Prieiga per internetą: . 48. Xilinx 2009. Provides access to the BSCAN sites on Virtex4 devices [interaktyvus] [žiūr÷ta 2009 m. rugs÷jo 24 d.]. Prieiga per internetą: . 49. Xilinx 2009. IDELAY volume control [interaktyvus] [žiūr÷ta 2009 m. rugs÷jo 24 d.]. Prieiga per internetą: . 50. Xilinx 2009. Designing with DSP48 blocks using precision synthesis [interaktyvus] [žiūr÷ta 2009 m. lapkričio 3 d.]. Prieiga per internetą: . 51. Kadlec, J.; Bartosinski, R.; Danek, M. 2007. Accelerating MicroBlaze Floating Point Operations, in Field Programmable Logic and Applications , 2007. Amsterdam: INSPEC, 621624. ISBN 97814244 10606. 52. Xilinx, I. 2009. Product specification, FloatingPoint Unit [interaktyvus] [žiūr÷ta 2009 m. lapkričio 26 d.]. Prieiga per internetą: . 53. Bruce, R.; Devlin, M.; Marshall, S. 2007. An Elementary Transcendental Function Core Library for , in Proceedings of the Third Annual Reconfigurable Systems Summer Institute . Urbana, Illinois, 19. 54. A VHDL Library of Parametrisable FloatingPoint and LNS Operators for FPGA [interaktyvus]. 2006. ENS de Lyon [žiūr÷ta 2010 m. balandžio 29 d.]. Prieiga per internetą: . 55. Detrey, J.; Dinechin, F. 2007. FloatingPoint Trigonometric Functions for FPGAs, in Field Programmable Logic and Applications , 2729 Aug. 2007. Amsterdam. Netherlands, 2934. ISBN 978 1424410606. 56. Collange, S.; Detrey, J.; Dinechin, F. 2006. Floating Point or LNS: Choosing the Right Arithmetic on an Application Basis, in Digital System Design: Architectures, Methods and Tools . Dubrovnik. Croatia, 197203. ISBN 0769526098. 57. Lim, H.; You, K.; Sung, W. 2006. Design and Implementation of Speech Recognition on a Softcore Based FPGA, in Acoustics, Speech and Signal Processing , 2006 3. Toulouse. France, 10441047. ISBN 142440469X. 58. Dorigo, M.; Birattari, M.; T., S. 2006. Ant Colony Optimization. Artificial Ants as a Computational Intelligence Technique, IRIDA Technical Report Series 1(4): 2839.

86 Vytautas ARMINAS 2009–2010 M. M.

59. Matuzevičius, D.; Navakauskas, D. 2005. Investigation of Segmentation Methods for Proteomics, Electronics and Electrical Engineering 44(247): 335–341. 60. Serackis, A.; Matuzevičius, D.; Navakauskas, D. 2006. Reconstruction of Protein Spots Using DSP Modules, Proceedings of 29th International Conference on Fundamentals of Electrotechnics and Circuit Theory 2: 573–576. 61. Fernandes, C.; Ramos, V.; Rosa, A. C. 2005. SelfRegulated Artificial Ant Colonies on Digital Image Habitats, International Journal of Lateral Computing 1(2): 18. ISSN 0973208X. 62. Laptik, R.; Navakauskas, D. 2007. Application of Ant Colony Optimization for Image Segmentation, Electronics and Electrical Engineering 8(80): 13–18. ISSN 13921215. 63. Stützle, T.; Hoos, H. 1996. Improving the Ant System: A Detailed Report on the MAXMIN Ant System, in Technical report AIDA9612 . Darmstadt. Germany. 64. Stützle, T.; Hoos, H. H. 1996. The MAXMIN Ant System and local search for the traveling salesman problem, in Proceedings of the 1997 IEEE International Conference on Evolutionary Computation (ICEC’97) . Piscataway, NJ: IEEE Press, 309–314. 65. Society, I. C. (1985). IEEE Standard for Binary FloatingPoint Arithmetic. IEEE Std 7541985 : 30.

MICROBLAZE PROGRAMINIO PROCESORIAUS ĮGYVENDINIMO TYRIMAS 87 VGTU ELEKTRONIKOS FAKULTETAS

PRIEDAI

A priedas. Straipsnio žurnale „Elektronika ir elektrotechnika Nr. 3(99) kopija“

88 Vytautas ARMINAS 2009–2010 M. M.

MICROBLAZE PROGRAMINIO PROCESORIAUS ĮGYVENDINIMO TYRIMAS 89 VGTU ELEKTRONIKOS FAKULTETAS

90 Vytautas ARMINAS 2009–2010 M. M.

MICROBLAZE PROGRAMINIO PROCESORIAUS ĮGYVENDINIMO TYRIMAS 91 VGTU ELEKTRONIKOS FAKULTETAS

92 Vytautas ARMINAS 2009–2010 M. M.

MICROBLAZE PROGRAMINIO PROCESORIAUS ĮGYVENDINIMO TYRIMAS 93 VGTU ELEKTRONIKOS FAKULTETAS

B priedas. Straipsnio žurnale „Elektronika ir elektrotechnika Nr. 6(94) kopija“

94 Vytautas ARMINAS 2009–2010 M. M.

MICROBLAZE PROGRAMINIO PROCESORIAUS ĮGYVENDINIMO TYRIMAS 95 VGTU ELEKTRONIKOS FAKULTETAS

96 Vytautas ARMINAS 2009–2010 M. M.

MICROBLAZE PROGRAMINIO PROCESORIAUS ĮGYVENDINIMO TYRIMAS 97 VGTU ELEKTRONIKOS FAKULTETAS

C priedas. Straipsnio 33sios tarptautin÷s konferencijos ICSPETO 2010 darbų medžiagoje kopija

98 Vytautas ARMINAS 2009–2010 M. M.

MICROBLAZE PROGRAMINIO PROCESORIAUS ĮGYVENDINIMO TYRIMAS 99 VGTU ELEKTRONIKOS FAKULTETAS

100 Vytautas ARMINAS 2009–2010 M. M.

MICROBLAZE PROGRAMINIO PROCESORIAUS ĮGYVENDINIMO TYRIMAS 101 VGTU ELEKTRONIKOS FAKULTETAS

102 Vytautas ARMINAS 2009–2010 M. M.

D priedas. Straipsnio tarptautinio suvažiavimo SPW2010 darbų medžiagoje kopija

MICROBLAZE PROGRAMINIO PROCESORIAUS ĮGYVENDINIMO TYRIMAS 103 VGTU ELEKTRONIKOS FAKULTETAS

104 Vytautas ARMINAS 2009–2010 M. M.

MICROBLAZE PROGRAMINIO PROCESORIAUS ĮGYVENDINIMO TYRIMAS 105 VGTU ELEKTRONIKOS FAKULTETAS

106 Vytautas ARMINAS 2009–2010 M. M.

MICROBLAZE PROGRAMINIO PROCESORIAUS ĮGYVENDINIMO TYRIMAS 107 VGTU ELEKTRONIKOS FAKULTETAS

108 Vytautas ARMINAS 2009–2010 M. M.

E priedas. Pranešimo 12oje Lietuvos jaunųjų mokslininkų konferencijoje medžiaga

MICROBLAZE PROGRAMINIO PROCESORIAUS ĮGYVENDINIMO TYRIMAS 109 VGTU ELEKTRONIKOS FAKULTETAS

110 Vytautas ARMINAS 2009–2010 M. M.

MICROBLAZE PROGRAMINIO PROCESORIAUS ĮGYVENDINIMO TYRIMAS 111 VGTU ELEKTRONIKOS FAKULTETAS

112 Vytautas ARMINAS 2009–2010 M. M.

MICROBLAZE PROGRAMINIO PROCESORIAUS ĮGYVENDINIMO TYRIMAS 113 VGTU ELEKTRONIKOS FAKULTETAS

114 Vytautas ARMINAS 2009–2010 M. M.

MICROBLAZE PROGRAMINIO PROCESORIAUS ĮGYVENDINIMO TYRIMAS 115