EUROPOS SĄJUNGA
2004-2006m. Bendrojo programavimo dokumento 2 prioriteto 5 priemonė „Žmogiškųjų išteklių kokybės gerinimas mokslinių tyrimų ir inovacijų srityje“
Projektas Fizinių mokslų II ir III studijų pakopų pertvarka, jas pritaikant prioritetinių MTEP sričių vystymui Projekto numeris BPD2004-ESF-2.5.0-03-05/0012
Vyksmų puslaidininkiniuose įtaisuose skaitmeninis modeliavimas
Parengė A. Poškus
Vilnius 2006-2008
Turinys Įvadas..............................................................................................................................................1 1. Puslaidininkinių įtaisų skaitmeninio modeliavimo teorinis pagrindas.................................2 1.1. Pagrindinės lygtys.....................................................................................................................2 1.2. Dreifo ir difuzijos modelis........................................................................................................3 1.3. Energijos slėniai. Atvirkštinė gardelė.......................................................................................4 1.4. Fononai.....................................................................................................................................7 2. Krūvininkų sklaida....................................................................................................................9 2.1. Kvantinė krūvininkų sklaidos teorija........................................................................................9 2.2. Joninė priemaišinė sklaida......................................................................................................11 2.3. Fononinė sklaida.....................................................................................................................16 2.3.1. Nepolinė sklaida akustiniais fononais..........................................................................16 2.3.2. Nepolinė sklaida optiniais fononais.............................................................................18 2.3.3. Tarpslėnė sklaida..........................................................................................................19 2.3.4. Polinė sklaida optiniais fononais.................................................................................20 3. Viendalelis Monte Karlo metodas..........................................................................................22 3.1. Viendalelės Monte Karlo programos struktūra.......................................................................22 3.2. Lėkio trukmės skaičiavimas. Dreifo proceso modeliavimas..................................................23 3.3. Sklaidos proceso modeliavimas..............................................................................................24 4. Puslaidininkinių įtaisų modeliavimas Monte Karlo metodu...............................................27 4.1. Daugiadalelis Monte Karlo metodas.......................................................................................27 4.2. Pagrindinės puslaidininkinio įtaiso modeliavimo Monte Karlo metodu ypatybės.................29 4.3. Superdalelė..............................................................................................................................30 4.4. Puslaidininkinio įtaiso geometrijos apibrėžimas....................................................................30 4.5. Dalelių išėjimo pro kontaktus ir atspindžio nuo laisvojo paviršiaus modeliavimas ..............31 4.6. Elektrinių kontaktų modeliavimas..........................................................................................32 4.6.1. Šotkio kontakto energijos juostų diagrama..................................................................32 4.6.2. Nuskurdinimo artinys Šotkio kontaktui.......................................................................34 4.6.3. Šotkio kontaktas, esant išorinei įtampai......................................................................38 4.6.4.Paviršinių gaudyklių įtaka Šotkio kontakto savybėms.................................................38 4.6.5.Ominių ir Šotkio kontaktų modeliavimas Monte Karlo metodu..................................41 4.7. Erdvinio krūvio tankio skaičiavimas Monte Karlo programoje.............................................41 4.8. Puasono lygties sprendimas ir lauko stiprio skaičiavimas baigtinių skirtumų metodu..........43 4.9. Laiko žingsnio Δt ir koordinatinio tinklo žingsnių Δx, Δy pasirinkimas................................45 4.10. Naujų dalelių kūrimas. Įtaiso voltamperinių charakteristikų skaičiavimas..........................46 4.11. Puslaidininkinio įtaiso Monte Karlo modeliavimo programos struktūrinė schema..............47 Priedas A. Viendalelė Monte Karlo programa MonteCarlo3.dll....................................................52 A.1. Bendros pastabos apie viendalelio Monte Karlo metodo programos sudarymą............52 A.2. Viendalelės Monte Karlo programos MonteCarlo3.dll struktūra...................................55 A.3. Pagrindinių paprogramių antraštės................................................................................59 Priedas B. Puslaidininkinio įtaiso Monte Karlo modeliavimo programa MonteCarlo5.dll...........64 B.1. Pagrindiniai pakeitimai, lyginant su viendalele programa MonteCarlo3.dll.................64 B.2. Pagrindinių paprogramių antraštės.................................................................................64 Priedas C. Programavimo C kalba pradmenys..............................................................................68
2 C.1. Duomenų tipai................................................................................................................68 C.2. Operacijos......................................................................................................................70 C.3. Operatoriai......................................................................................................................71 C.4. Kai kurios matematinės funkcijos..................................................................................73 Priedas D. Bendros žinios apie laboratorinių darbų atlikimo tvarką.............................................74 Laboratorinių darbų užduotys...................................................................................................77 Literatūra........................................................................................................................................98
Įvadas Šio dalyko tema – puslaidininkinių įtaisų skaitmeninis modeliavimas, tiksliau, elektros srovės ir elektrinio lauko pasiskirstymo įtaiso tūryje skaičiavimo skaitmeniniai metodai. Puslaidininkinių įtaisų (pvz., diodo arba tranzistoriaus) teorinėje analizėje yra įprasta elektros srovę aprašyti taip pat, kaip skystį, t.y., kaip ištisinę aplinką. Nors toks artinys kartais duoda pakankamai tikslius rezultatus, tačiau jis nėra tikslus, nes tikrovėje elektros srovę sąlygoja daugelio atskirų dalelių (elektronų ir skylių) judėjimas įtaiso tūryje. Todėl tikslus teorinis įtaiso aprašymas gali būti gautas, tik išsprendus Bolcmano kinetinę lygtį ir Maksvelio lygtis. Tačiau tos lygtys bendruoju atveju yra pernelyg sudėtingos, kad jas būtų įmanoma išspręsti tiksliai. Todėl jų sprendimas remiasi kai kuriom supaprastinančiom prielaidom. Tai yra vadinamieji „dreifo ir difuzijos“ bei „hidrodinaminis“ modeliai. Šių modelių tinkamumas yra ribotas, ir šiuolaikiniams puslaidininkiniams įtaisams jie netinka. Laimei, egzistuoja netiesioginis šio uždavinio sprendimo būdas, kuris nereikalauja jokių išankstinių prielaidų ir supaprastinimų. Tas metodas – tai vadinamasis Monte Karlo metodas. Monte Karlo modeliavimo esmė yra ta, kad kiekviena dalele yra „sekama“ nuo jos atsiradimo (t.y., generavimo arba įėjimo į įtaisą) iki išnykimo (t.y., rekombinavimo arba išėjimo iš įtaiso). Šio proceso metu kiekviena dalelė patiria daug sklaidos įvykių. Laisvo lėkio laiko intervalai tarp sklaidos momentų yra atsitiktiniai (jie apskaičiuojami, naudojant atsitiktinių skaičių generatorių). Konkretus sklaidos tipas bei dalelės judėjimo kryptis po sklaidos taip pat pasirenkami atsitiktinai. Todėl dalelių judėjimo trajektorijos yra netvarkios (chaotiškos). Tokiu būdu apskaičiavus daugelio dalelių trajektorijas, tampa įmanoma sumodeliuoti įtaiso charakteristikas. Nors, taikant Monte Karlo metodą, nėra naudojama Bolcmano kinetinė lygtis, tačiau Monte Karlo modeliavimo rezultatas yra Bolcmano kinetinės lygties ir Maksvelio lygčių sprendinys, kuris yra tuo tikslesnis, kuo didesnis apskaičiuotų trajektorijų skaičius. Taigi, galima teigti, kad Monte Karlo metodas yra netiesioginis Bolcmano kinetinės lygties ir Maksvelio lygčių sprendimo metodas. Monte Karlo metodas tinka, modeliuojant ir stacionariąją (nepriklausančią nuo laiko), ir nestacionariąją (kintančią laike) įtaiso būseną. Kadangi šis modeliavimas remiasi „pirmaisiais principais“, tai, naudojant Monte Karlo metodą, tampa įmanoma sukurti pilną įtaiso veikimo vaizdą, iki pačių smulkiausių detalių. Galima teigti, kad šis metodas „imituoja gamtą“. Terminą „Monte Karlo metodas“ XX a. penktajame dešimtmetyje išpopuliarino keli fizikai ir matematikai, kurie dirbo vadinamajam „Manheteno projektui“ („Manhattan Project“), kurio tikslas buvo pirmosios atominės bombos sukūrimas. Vienas iš jų buvo italų fizikas Enrikas Fermis. Jis naudojo atsitiktinius skaičius, skaičiuodamas neutronų judėjimo kryptį, skilus urano branduoliui. Kadangi Monte Karlo metodas reikalauja intensyvių skaičiavimų, tai jo populiarumas visada buvo susijęs su kompiuterių greitaeigiškumu. Didėjant kompiuterių pajėgumams, palaipsniui augo ir šiuo metodu sprendžiamų uždavinių skaičius, ir jo vartotojų skaičius. Šiuo metu paprastų puslaidininkinių struktūrų modeliavimui Monte Karlo metodu jau nėra reikalingi superkompiuteriai; tokius uždavinius galima spręsti ir personaliniu kompiuteriu. Prieš aptariant patį Monte Karlo metodą, pateiksime kelis kietojo kūno fizikos teiginius, kurie sudaro puslaidininkinių įtaisų skaitmeninio modeliavimo pagrindą.
2 1. Puslaidininkinių įtaisų skaitmeninio modeliavimo teorinis pagrindas 1.1. Pagrindinės lygtys Kaip minėta „Įvade“, puslaidininkinio įtaiso pilnąjį teorinį aprašymą sudaro Maksvelio lygtys ir Bolcmano kinetinė lygtis. Maksvelio lygtys nusako jėgas, kurios veikia kiekvieną krūvininką, o Bolcmano kinetinė lygtis nusako daugelio dalelių sistemos statistinių savybių kitimą laike dėl minėtųjų jėgų ir dėl sklaidos. Maksvelio lygtis, kuri yra svarbiausia puslaidininkinių įtaisų aprašymui, yra ši: D ; (1.1.1) čia D yra elektrinės slinkties vektorius, ρ yra elektros krūvio erdvinis tankis, o yra diferencialinis operatorius „nabla“, kuris apibrėžiamas šitaip: ex ey ez ; x y z čia x, y ir z yra Dekarto koordinatės, o ex, ey ir ez yra atitinkami vienetiniai vektoriai (vektorinius fizikinius dydžius žymėsime pastorintu pasvirusiu šriftu, o skaliarinius fizikinius dydžius žymėsime normalaus storio pasvirusiu šriftu). Žymuo „ ∙ D“ reiškia vektorių ir D skaliarinę sandaugą, kuri yra lygi vektoriaus D divergencijai (ji dar žymima šitaip: „div D“). Izotropinėje medžiagoje sąryšis tarp elektrinės slinkties ir elektrinio lauko stiprio vektorių yra toks: D 0 E ; (1.1.2) −12 čia ε yra medžiagos dielektrinė skvarba, ε0 yra elektrinė konstanta (ε0 = 8,854 ∙ 10 F/m), o E yra elektrinio lauko stiprio vektorius. Jeigu ε nepriklauso nuo koordinačių, tada, įrašę (1.1.2) į (1.1.1), gauname tokią lygtį: E . (1.1.3) 0 Žinome, kad elektrinio lauko stipris E yra lygus elektrostatinio (skaliarinio) potencialo φ gradientui: E . (1.1.4) Įrašę (1.1.4) į (1.1.3), gauname vadinamąją Puasono lygtį: 2 . (1.1.5) 0 Teoriškai aprašant daugelio dalelių sistemą, reikia naudoti statistinius analizės metodus, t.y., vietoj atskirų dalelių judėjimo reikia nagrinėti tų dalelių statistinio skirstinio kitimą. Skirstinį nusako vadinamasis tikimybės tankis f(r, p, t). Tai yra dalelės spindulio vektoriaus r, impulso (judesio kiekio) vektoriaus p ir laiko t funkcija, kurios prasmė yra tokia: dydis f(r, p, t) d3r d3p yra lygus tikimybei, kad atsitiktinai pasirinktos dalelės spindulys vektorius yra koordinačių erdvės tūrio elemente d3r, kuriam priklauso taškas r, o jos impulso vektorius yra impulsų erdvės tūrio elemente d3p, kuriam priklauso taškas p. Kvantinėje mechanikoje įrodoma, kad apibrėžto impulso p dalelė yra plokščioji banga, kurios bangos vektorius k susijęs su p tokiu sąryšiu: p hk ; (1.1.6) čia yra redukuotoji Planko konstanta. Todėl toliau laikysime, kad tikimybės tankis yra kintamųjų r, k ir t funkcija: f(r, k, t). Šią funkciją nusako Bolcmano kinetinė lygtis: df 1 p f v f k f ; (1.1.7) dt h t t coll čia v yra dalelės greičio vektorius, o k yra operatorius , kuris veikia tik bangos vektoriaus komponentes. Išsiaiškinsime šios lygties dešiniosios pusės atskirų dėmenų prasmę. Pirmasis dėmuo (−v ∙ f) atspindi tikimybės tankio f kitimą dėl dalelių sistemos masės centro tiesaus ir
3 tolygaus judėjimo (toks judėjimas būtų stebimas, jeigu nebūtų išorinių jėgų ir jeigu dalelės nesąveikautų tarpusavyje). Antrasis dėmuo (–(1/ )∙∂ p/∂t∙ kf) atspindi f kitimą dėl jėgų, kurios suteikia dalelėms pagreitį, t.y., dėl Lorenco jėgos, kurią sąlygoja elektrinis ir magnetinis laukai: p q (E v B ) ; (1.1.8) t čia q yra dalelės elektros krūvis, B yra magnetinės indukcijos vektorius, o v × B yra vektorių v ir B vektorinė sandauga. Minėtieji elektrinis ir magnetinis laukai gali būti ir išoriniai (sukurti išorinių šaltinių), ir lokaliniai (dėl dalelių tarpusavio toliasiekės sąveikos). Trečiasis dėmuo (∂f/∂t|coll) atspindi staigius funkcijos f pokyčius dėl dalelių sklaidos (indeksas „coll“ kilo iš angliško žodžio „collisions“ – „susidūrimai“). Šį dėmenį galima išreikšti šitaip: f [ f (r , k , t )W ( k , k ) f (r , k , t )W (k , k )] ; (1.1.9) t coll k čia W(k, k') yra dalelės sklaidos iš būsenos k į būseną k' tikimybė per laiko vienetą. Pirmasis dėmuo laužtiniuose skliaustuose nusako būsenos k dalelių skaičiaus augimą dėl sklaidos iš visų kitų būsenų k', o antrasis dėmuo nusako būsenos k dalelių skaičiaus mažėjimą dėl sklaidos į visas kitas būsenas k'. Ši sklaida gali būti laikoma akimirksnine. 1.2. Dreifo ir difuzijos modelis Dauguma puslaidininkinių įtaisų modelių, kurie naudojami praktikoje, yra pagrįsti aukščiau minėtųjų pagrindinių lygčių (t.y., Bolcmano kinetinės lygties ir Maksvelio lygčių) apytiksliais sprendiniais. Vienas iš šių modelių yra vadinamasis dreifo ir difuzijos modelis. Pagrindinės šio modelio lygtys – tai elektronų ir skylių tolydumo lygtys: n 1 Gn Rn jn , (1.2.1a) t e p 1 G p Rp j p ; (1.2.1b) t e čia n ir p yra elektronų ir skylių koncentracijos, Gn ir Gp yra elektronų ir skylių generacijos spartos, Rn ir Rp yra elektronų ir skylių rekombinacijos spartos, o jn ir jp yra elektronų ir skylių srovių tankiai. Generacijos sparta – tai per laiko vienetą tūrio vienete generuojamų krūvininkų skaičius, o rekombinacijos sparta – tai per laiko vienetą tūrio vienete rekombinuojančių krūvininkų skaičius. Srovių tankiai yra išreiškiami šiomis lygybėmis: jn enn E eDnn , (1.2.2a) j p ep p E eD p p ; (1.2.2b) čia E yra elektrinio lauko stiprio vektorius, μn ir μp yra elektronų ir skylių judriai, o Dn ir Dp yra elektronų ir skylių difuzijos koeficientai. Difuzijos koeficientai susiję su atitinkamais judriais pagal Einšteino sąryšį: kT Dn B n , (1.2.3a) e kT Dp B p ; (1.2.3b) e čia kB yra Bolcmano konstanta, o T yra absoliučioji temperatūra. Viena iš šio modelio prielaidų yra ta, kad krūvininkų greičiai „reaguoja“ į elektrinio lauko stiprio pokyčius akimirksniu ir kad krūvininkų greitis vienareikšmiškai priklauso nuo to lauko. Tačiau elektronai turi nenulinę masę; tai reiškia, kad jiems būdinga tam tikra inercija. Vadinasi, pakitus elektrinio lauko stipriui, praeina tam tikras laiko tarpas, kol elektronų greitis nusistovi. Pvz., galio arsenide elektronas gali nueiti maždaug 0,5 μm, kol jo greičio skirstinys nusistovi. Silicyje šis atstumas yra mažesnis (maždaug 0,2 μm) dėl mažesnio elektronų judrio. Taigi, dreifo ir difuzijos modelis yra nepakankamai tikslus, jeigu puslaidininkinio įtaiso
4 matmenys yra dešimtųjų mikrono dalių eilės. Tačiau didelių įtaisų atveju (dešimčių mikronų eilės arba didesnių), kai atstumai, kuriuose pasireiškia nestacionarioji krūvininkų pernaša, yra žymiai mažesni už įtaiso matmenis, šis dreifo ir difuzijos modelio trūkumas neturi didelės reikšmės. Todėl dreifo ir difuzijos modelis iki šiol yra plačiai naudojamas. Kita dreifo ir difuzijos modelio ypatybė yra ta, kad jis negali aprašyti krūvininkų greičių pasiskirstymo, nes, pagal šį modelį, išoriniame lauke visi vienarūšiai krūvininkai juda vienodu greičiu, kuris lygus dreifo greičiui. Taigi, dreifo ir difuzijos modelis negali teisingai aprašyti šiluminių triukšmų ir kitų reiškinių, kurie susiję su krūvininkų greičių statistiniu „išsibarstymu“. Monte Karlo metodas neturi minėtųjų trūkumų. 1.3. Energijos slėniai. Atvirkštinė gardelė Kaip žinoma iš kietojo kūno elektronikos kurso, idealiojo kristalo vienelektroninės Šrėdingerio lygties h Hˆ (0) (1.3.1) i t pilnoji ortogonalioji sprendinių sistema – tai Blocho bangos k (r , t ) k (r ) exp iEk t / h , (1.3.2a)
k (r ) uk (r ) exp(i(k r )) , (1.3.2b) kur uk(r) yra periodinė spindulio vektoriaus r funkcija, kurios periodiškumas yra toks pats, kaip kristalo gardelės periodiškumas, k yra elektrono bangos vektorius, o Ek yra elektrono energija. Elektrono judėjimo būseną nusako Blocho bangos vektorius k. Indeksas „k“ energijos žymenyje „Ek“ nurodo, kad elektrono energija yra bangos vektoriaus funkcija. Visuose pagrindiniuose puslaidininkiuose (Ge, Si, GaAs ir InP) elektronų energijos priklausomybė nuo k yra sudėtinga daugiareikšmė funkcija, kuri turi kelis minimumus ir maksimumus. Šios funkcijos verčių (energijų) visuma, kuri atitinka laisvąsias elektrono būsenas, sudaro vadinamąją laidumo juostą, o energijų visuma, kuri atitinka kovalentiniuose cheminiuose ryšiuose dalyvaujančių elektronų būsenas, sudaro valentinę juostą. Skirtingų energijos lygmenų užpildą kiekvienoje iš šių juostų nusako vadinamoji Fermio ir Dirako funkcija: f (E)
1 E EF ; 1 exp kBT
(1.3.3)
čia EF yra Fermio energija. Akivaizdu, kad energijos lygmenų užpilda sparčiai mažėja, augant energijai E. Todėl dažnai galima laikyti, kad visi elektronai yra susitelkę laidumo juostos minimumuose, o visos skylės yra susitelkusios valentinės juostos maksimumuose. Tokiais atvejais pakanka žinoti tik funkcijos Ek pavidalą laidumo juostos minimumų aplinkoje ir valentinės juostos maksimumų aplinkoje. Laidumo juostos minimumai ir valentinės juostos maksimumai vadinami energijos slėniais. Žinome, kad ekstremumo aplinkoje bet kuri funkcija yra apytiksliai kvadratinė (t.y., proporcinga argumento nuokrypio nuo minimumo taško kvadratui). Izotropinio slėnio atveju tai reiškia, kad energijos slėnyje izoenerginiai paviršiai yra apytiksliai sferiniai. Tada krūvininko kinetinės energijos priklausomybė nuo bangos vektoriaus yra parabolinė: h2 k 2 ; (1.3.4) Ek 2 m* čia m* yra krūvininko efektinė masė ekstremumo aplinkoje, o bangos vektorius k atskaitomas nuo ekstremumo taško. Tačiau dažnai tokia aproksimacija yra nepriimtina. Tada izotropinio energijos slėnio neparaboliškumą nusako neparaboliškumo koeficientas α: h2 k 2 (1.3.5) Ek (1 Ek ) ( Ek ) . 2 m*
5
(b)
(a)
1 pav. Si ir Ge (a) bei GaAs ir InP (b) kristalų gardelių elementarieji narveliai
Energijos slėnių padėtys k erdvėje yra susijusios su kristalo simetrija. Pagrindinių puslaidininkių (Si, Ge, GaAs ir InP) Bravė gardelė yra kubinė paviršiuje centruota, o jos bazę sudaro du atomai. Vienas atomas yra gardelės mazge, o kitas pasislinkęs pirmojo atžvilgiu išilgai narvelio pagrindinės įstrižainės 1/4 jos ilgio (žr. 1 pav.). Bet kuriai kristalo gardelei k erdvėje galima sudaryti vadinamąją atvirkštinę gardelę. Atvirkštinės gardelės primityvusis narvelis sudaromas šitaip. Jeigu tiesioginės gardelės primityviojo narvelio briaunas nusako vektoriai a1, a2 ir a3, tada atvirkštinės gardelės primityviojo narvelio briaunas nusako vektoriai 2π( a2 a3 ) 2π( a3 a1 ) 2π( a1 a2 ) b1 , b2 , b3 ; (1.3.6) V0 V0 V0 čia V0 yra tiesioginės gardelės primityviojo narvelio tūris, o laužtiniai skliaustai žymi vektorinę sandaugą. Atvirkštinės gardelės mazgai yra išsidėstę taškuose, kuriuos atitinka šie bangos vektoriai: 3
g gi bi ;
(1.3.7)
i 1
čia gi (i = 1, 2, 3) yra bet kokie sveikieji skaičiai. Jeigu tiesioginė gardelė yra kubinė (kaip Ge, Si, GaAs ir InP atvejais), tada atvirkštinė gardelė taip pat yra kubinė. Aukščiau apibrėžtieji vektoriai g – tai atvirkštinės gardelės transliacijos vektoriai (transliacijos vektorius – tai vektorius, kuriuo lygiagrečiai paslinkus begalinę gardelė, galutinė gardelės padėtis yra neatskiriama nuo pradinės). k erdvės taškai, kurie skiriasi atvirkštinės gardelės transliacijos vektoriais, yra lygiaverčiai. Todėl visos fiziškai skirtingos elektrono būsenos yra sutelktos atvirkštinės gardelės pirmojoje Brijueno zonoje. Pirmoji Brijueno zona sudaroma, sujungus atvirkštinės gardelės mazgą g = 0 su artimiausiais mazgais ir per kiekvienos tokiu būdu gautos atkarpos vidurį nubrėžus jai statmeną plokštumą. Pirmoji Brijueno zona – tai šių plokštumų gaubiama erdvės sritis. Jos pavidalas Ge, Si, GaAs ir InP atveju yra toks, kaip pavaizduota 2 pav. Be 2 pav. Ge, Si, GaAs ir InP kristalų to, 2 pav. pavaizduotos pirmosios Brijueno zonos gardelių pirmoji Brijueno zona simetrijos ašys: ketvirtosios eilės [100] (2 pav. ši ašis pažymėta Δ), antrosios eilės ašis [110] (Σ) ir trečiosios eilės ašis [111] (Λ). Brijueno zonos centras (k = 0) žymimas Γ. Taškai, kuriuose ašys Δ, Σ ir Λ kerta Brijueno zonos paviršių žymimi, atitinkamai, X, K ir L (žr. 2 pav.). Atstumas nuo taško Γ iki taško X lygus 2π/a, kur a yra kristalo (tiesioginės) gardelės konstanta, t.y., 1 pav. pavaizduotojo Bravė narvelio briaunos ilgis.
6 Energijos slėniai yra taškuose Γ, L ir X. Žinynuose dažniausiai pateikiama elektrono energijos priklausomybė nuo banginio vektoriaus absoliutinės vertės, kai de Broilio bangos sklidimo kryptis yra lygiagreti kuriai nors iš dviejų aukščiausios eilės simetrijos ašių: Δ ir Λ. Pvz., 3 pav. pavaizduoti energijos slėniai GaAs atveju. Viršutinės kreivės (su minimumu taške Γ) atitinka laidumo juostą, o apatinės kreivės (su maksimumu taške Γ) – valentinę juostą. Kaip matome, ir laidumo, ir valentinė juosta turi keletą šakų. T.y., laidumo juostoje egzistuoja kelių rūšių elektronai, o valentinėje juostoje egzistuoja kelių rūšių skylės. Tačiau apytiksliuose praktiniuose skaičiavimuose galima kai kurių šakų nepaisyti arba skirtingas šakas apjungti į vieną. Pvz., jeigu skirtingų laidumo juostos šakų energijos skirtumas yra žymiai didesnis už kT, tada, pagal Fermio ir Dirako pasiskirstymo funkciją (1.3.3), didžioji dauguma elektronų užims kvantines būsenas, kurios atitinka žemesniąją šaką, todėl aukštesniųjų šakų galima nepaisyti. Pvz., modeliuojant laisvojo elektrono judėjimą GaAs, dažnai pakanka atsižvelgti tik į mažiausios energijos laidumo juostos šaką, 3 pav. GaAs energijos juostų schema kurios slėniai 3 pav. pažymėti Γ6, L1 ir X1. Skaičiuojant kvantinių šuolių iš pradinės būsenos į daugelį galimų galutinių būsenų tikimybes, reikia skaičiuoti integralus galutinių būsenų atžvilgiu. Integruoti įprasta energijos atžvilgiu. Tokių integralų pointegralinėje funkcijoje yra daugiklis, kuris vadinamas būsenų energiniu tankiu. Tai yra kvantinių būsenų skaičius, kuris tenka vienetiniam energijos intervalui ir vienetiniam tūriui. Apskaičiuosime būsenų tankio priklausomybę nuo krūvininko energijos Ek. Kvantinėje mechanikoje įrodoma, kad laisvosios dalelės būsenų tankis konfigūracinėje erdvėje yra 1/h3; čia h yra Planko konstanta (h = 2π ). [Čia turimos omenyje tik erdvinio judėjimo būsenos, t.y., nepaisoma dalelių sukinio.] Taigi, būsenų skaičius konfigūracinės erdvės tūrio elemente d3r d3p yra lygus d3r d3p/h3. Kadangi p = k, tai būsenų skaičius spindulių vektorių ir bangos vektorių erdvės tūrio elemente d3r d3k yra d3r d3k/(2π)3. Vadinasi, būsenų skaičius kristalo tūrio vienete ir bangos vektorių erdvės tūrio elemente d3k yra d3k/(2π)3. Kadangi energija priklauso tik nuo bangos vektoriaus modulio (bangos skaičiaus) k, tai naudosime sferinio sluoksnio pavidalo tūrio elementą. Jeigu to sluoksnio spindulys yra k, o storis dk, tada jo tūris yra d3k = 4πk2dk. Būsenų energinis tankis N(Ek) yra lygus būsenų skaičius tame tūrio elemente ir atitinkamo energijos pokyčio dEk santykiui: 1 dk N ( Ek ) 4π [ k ( Ek )]2 . (1.3.8) 3 (2π) d Ek Taigi, skaičiuojant integralą visų galimųjų kvantinių būsenų atžvilgiu, integravimo kintamojo pakeitimas „k → Ek“ atliekamas pagal tokią taisyklę: k2dk → 2π2N(Ek)dEk. (1.3.9) Išreiškę bangos skaičių k iš (1.3.4) arba (1.3.5) ir įrašę į (1.3.8), gauname, kad parabolinės juostos atveju būsenų tankio priklausomybė nuo energijos yra tokio pavidalo: (2m* )3/ 2 Ek , (1.3.10) N ( Ek ) 4π 2 h3
7 o neparabolinės juostos atveju reikia naudoti bendresnę formulę: d ( Ek ) (2m* )3/ 2 (2m* )3/ 2 N ( Ek ) ( E ) (1 2 Ek ) Ek (1 Ek ) , (1.3.11) k 4π 2 h3 dEk 4π 2 h3 kur funkcija (Ek) apibrėžiama (1.3.5) sąryšiu (parabolinės juostos atveju (Ek) Ek, todėl formulė (1.3.11) virsta formule (1.3.10)). Reikia turėti omenyje, kad (1.3.10) ir (1.3.11) formulės nusako tik apibrėžtos sukinio projekcijos kvantinių būsenų tankį. Pilnutinis būsenų skaičius yra du kartus didesnis, nes kiekviename energijos lygmenyje gali būti du elektronai, kurių sukinių projekcijos (orientacijos) yra priešingos. (1.3.10) ir (1.3.11) reiškiniuose nėra daugiklio 2, nes vėliau tos formulės bus naudojamos, skaičiuojant sklaidos spartą, o sklaidos metu elektrono sukinio orientacija nesikeičia. Šalia juostų neparaboliškumo, reikia atsižvelgti ir į juostų anizotropiją. Paraboliniame anizotropiniame energijos slėnyje izoenerginiai paviršiai yra elipsoido formos. Tai reiškia, kad elektrono efektinę masę nusako trys vertės, kurių kiekviena atitinka vieną iš trijų elipsoido * * pagrindinių ašių: m x , m y ir m *z . Tačiau dažnai tokį elipsoidinį minimumą galima formaliai pakeisti sferiniu (izotropiniu) minimumu, kurio aplinkoje elektrono efektinė masė lygi būsenų * * * * 1/ 3 tankio efektinei masei md ( m x m y m z ) . Atitinkamai, energijos išraiškose (1.3.4) ir (1.3.5) bei būsenų tankio išraiškose (1.3.10) ir (1.3.11) vietoj m* reikia naudoti būsenų tankio efektinę masę. 1.4. Fononai Bet kokį N atomų sistemos virpamąjį judėjimą galimą išreikšti 3N normaliųjų virpesių (kitaip vadinamų normaliosiom modom) suma. Kiekvieną normalųjį virpesį galima laikyti atomų poslinkio plokščiąja banga, kuri sklinda kristalu, ir aprašyti kaip kvantinę kvazidalelę – fononą. Fononai, kaip ir kitos kvazidalelės, yra apibūdinami bangos vektoriumi k, dažniu ω ir energija. Fonono energija yra lygi jo dažnio ir Planko konstantos sandaugai: . Fononai klasifikuojami pagal atomų virpesių kryptį atžvilgiu bangos judėjimo krypties (išilginiai arba skersiniai) ir pagal tai, ar šių virpesių metu elementariojo narvelio masės centras juda (akustiniai fononai), ar nejuda (optiniai fononai). Aišku, kad optiniai fononai egzistuoja tik kristaluose, kurių Bravė narvelyje yra daugiau negu vienas atomas. Pagrindinių puslaidininkių (Si, Ge, GaAs ir InP) Bravė narvelyje yra 8 atomai (žr. 1 pav.). Fonono dažnio priklausomybė nuo jo bangos vektoriaus k vadinama dispersijos dėsniu. Fononų dispersijos dėsnis yra daugiareikšmė funkcija, t.y., jis turi keletą šakų. Kaip ir elektrono atveju, visos fiziškai skirtingos fonono bangos vektoriaus vertės yra sutelktos atvirkštinės gardelės pirmojoje Brijueno zonoje, kuri pavaizduota 2 pav. Žinynuose 4 pav. Fononų dispersijos dėsnis GaAs fononų dispersijos dėsnis dažniausiai pateikiamas trim grafikais, kristale kryptimi [100]. And X ašies kurie nusako fononų energijos priklausomybę nuo banginio atidėtas dydis ka/(2π); čia k yra bangos vektoriaus absoliutinės vertės, kai bangos sklidimo kryptis yra skaičius, o a yra gardelės konstanta lygiagreti kuriai nors iš trijų Brijueno zonos simetrijos ašių (2 pav. šios ašys pažymėtos Δ, Σ ir Λ). Pažymėjus atomų skaičių Bravė narvelyje raide p, šakų skaičius bendruoju atveju yra lygus 3p. Iš jų 3 atitinka akustinius fononus (2 atitinka skersinius, 1 – išilginius), o likusios 3p 3 atitinka optinius fononus (2p 2 atitinka skersinius, p 1 – išilginius). Tačiau dažniausiai dėl kristalo simetrijos kai kurios šakos sutampa arba yra
8 "uždraustos". Pvz., aukščiau minėtųjų puslaidininkių dispersijos dėsnis kryptimi [100] (Δ) turi tik keturias šakas (žr. 4 pav.) – TA (skersiniai akustiniai fononai), LA (išilginiai akustiniai fononai), TO (skersiniai optiniai fononai) ir LO (išilginiai optiniai fononai). Visoms akustinės šakoms būdinga tai, kad taške k = 0 fonono energija lygi nuliui, o kai k žymiai mažesnis už atvirkštinės gardelės konstantą, fonono energija proporcinga k (žr. 4 pav.). Visoms optinėms šakoms būdinga tai, kad fonono energija didžiausia taške k = 0, o energijos priklausomybė nuo k yra silpnesnė, negu akustinių šakų atveju (žr. 4 pav.). Todėl, skaitmeniškai modeliuojant sklaidą optiniais fononais, dažniausiai laikoma, kad optinio fonono energija yra konstanta, t.y., nepriklauso nuo k (tačiau skirtingų rūšių optinių fononų energijos gali būti skirtingos). Apibrėžtos rūšies ir apibrėžto bangos vektoriaus fononų vidutinį skaičių nusako Bozė ir Einšteino pasiskirstymo funkcija: 1 n( ) h ; (1.4.1) exp 1 kBT čia yra fononų dažnis, o n() yra duotosios rūšies fononų, kurių dažnis , skaičius.
9 2. Krūvininkų sklaida 2.1. Kvantinė krūvininkų sklaidos teorija Idealiajame kristale elektrono stacionariąsias būsenas nusako Blocho bangos (1.3.2). Tačiau realiųjų kristalų vienelektroninis hamiltonianas Hˆ skiriasi nuo idealiojo kristalo elektrono hamiltoniano Hˆ ( 0 ) . Šis skirtumas vadinamas trikdžiu. Hamiltoniano trikdį toliau žymėsime raide Hˆ ′ : (2.1.1) Hˆ = Hˆ ( 0 ) + Hˆ ′ . ˆ Trikdžio H ′ priežastis gali būti priemaišų atomai, kristalo gardelės virpesiai, elektronų tarpusavio sąveika, išorinis spinduliavimas ir kt. Pasikeitus hamiltonianui, pasikeičia ir jo tikrinės funkcijos, t.y., elektronų banginės funkcijos. Taigi, Blocho bangos, kuriomis aprašoma elektrono būsena, jau nėra tikslūs elektrono Šrėdingerio lygties sprendiniai. Tačiau, kadangi Blocho bangos (1.3.2) sudaro pilnąją ortogonaliąją sistemą, tai tiksliąją banginę funkciją Ψ(r,t) galima išreikšti Blocho bangų k (r , t ) tiesiniu dariniu: (r , t ) ck (t ) k (r , t ) . (2.1.2a) Vk
Čia indeksas “Vk” nurodo, kad sumuojama atžvilgiu visų skirtingų kvantinių būsenų. Koeficientų ck(t) priklausomybė nuo laiko reiškia, kad elektronas, kurio pradinė būsena buvo aprašoma Blocho banga k (r , t ) , po tam tikro laiko t atsiduria būsenoje, kurią aprašo Blocho bangų su įvairiais k' darinys: (r , t ) ck k (t ) k (r , t ) . (2.1.2b) Vk
Kitais žodžiais, egzistuoja tam tikra tikimybė, kad per laiką t įvyks elektrono kvantinis šuolis iš pradinės būsenos k į kažkurią iš daugelio galimų galutinių būsenų k'. Šie kvantiniai šuoliai vadinami elektronų sklaida. Turint omenyje banginės funkcijos statistinį aiškinimą ir remiantis formule (2.1.2b), galima teigti, kad šuolio k k' tikimybė per laiką t lygi |ckk' (t)|2. Šuolio d 2 tikimybė per laiko vienetą lygi išvestinei | ck k (t ) | , kurią žymėsime S(k, k'). dt t 0 Trikdžių teorija suformuluoja koeficientų ck→k'(t) bei jų laikinių išvestinių S(k, k') apytikslio skaičiavimo būdą, laikant, kad hamiltoniano trikdys Hˆ ′ yra pakankamai “mažas”, ir kartu suformuluoja šio “mažumo” kriterijų. Pagal trikdžių teoriją, koeficientai ck→k'(t) skaičiuojami nuosekliųjų artinių metodu. Jeigu trikdys yra harmoninė dažnio funkcija (pvz., ~sin(ωt)), tada jį galima išreikšti dviejų tokio pavidalo trikdžių suma: (2.1.3) Hˆ (r , t ) U (r ) exp(it ) Tokio trikdžio atveju pirmajame trikdžių teorijos artinyje gaunama, kad šuolio iš būsenos k į būseną k' tikimybė per laiko vienetą lygi [1, p. 29] 2π S (k , k ) | k | U | k |2 ( Ek Ek h ) ; (2.1.4) h čia k | U | k yra trikdžio amplitudės U(r) matricos elementas: k | U | k k* (r )U (r ) k ( r )d 3 r (2.1.5) V
(čia integruojama kristalo tūriu V). Šuolio tikimybės išraiškoje (2.1.4) matome, kad yra įmanomi tik šuoliai į būsenas, kurių energija tenkina sąlygą Ek Ek mh (2.1.6) (čia viršutinis ženklas atitinka viršutinį ženklą (2.1.3–4) formulėse). Tai yra energijos tvermės dėsnis: nors elektrono energija pasikeičia, tačiau pilnutinė energija, į kurią dar įeina ir trikdžių
10 šaltinio (pvz., elektromagnetinės spinduliuotės arba gardelės virpesių) energija, turi likti nepakitusi. Todėl elektrono energijos pokytis ( Ek Ek ) yra priešingas trikdžių šaltinio energijos pokyčiui ( h ). Įrašę Blocho bangų išraišką (1.3.2b) į trikdžio amplitudės matricinio elemento išraišką (2.1.5), gauname [1, p. 30] k | U | k U k k I (k , k ) ; (2.1.7) čia 1 U k k e i( k ,r )U (r , t )ei( k ,r ) d 3 r (2.1.8) VV (apatinis indeksas „k' k“ nusako bangos vektoriaus pokytį šuolio metu), o I(k,k') yra Blocho bangų sanklotos integralas: I (k , k ) uk* (r )uk (r )d 3r . (2.1.9) V
Sanklotos integralo reikšmė priklauso nuo funkcijos Ek pavidalo. Jeigu ši funkcija yra parabolinė, t.y., jeigu galioja (1.3.4), tada sanklotos integralas lygus vienetui ir k | U | k U k k (žr. (2.1.7)). Bendresniu atveju, kai funkcija Ek išreiškiama lygybe (1.3.5), sanklotos integralas skaičiuojamas pagal formulę [1, p. 31] | I (k , k ) |2 (ak ak ck ck cos ) 2 , (2.1.10) kur yra kampas tarp vektorių k ir k', o dydžiai ak ir ck yra skaičiuojami pagal formules 1/ 2
1/ 2
1 E ( k ) E ( k ) , ck (2.1.11) ak . 1 2E ( k ) 1 2E ( k ) Sklaidos sparta (sklaidos tikimybė per laiko vienetą) gaunama, sudėjus šuolių iš duotosios pradinės būsenos k į visas įmanomas galutines būsenas k' tikimybes (2.1.4). Vadinasi, sklaidos sparta yra lygi V W (k ) S (k , k )d 3k . (2.1.12) 3 (2π) Šį integra1ą patogiausia skaičiuoti sferinėse koordinatėse (k, θ , k ). Kampai θ ir apibrėžti 5 pav. Kampas θ vadinamas poliniu k 'z kampu, o kampas – azimutiniu kampu. Kampo θ galimosios vertės yra nuo 0 iki π, o kampo galimosios vertės yra nuo 0 iki 2π. k erdvės tūrio elementas sferinėse koordinatėse k' išreiškiamas šitaip: d 3k k 2 sin dk d d , (2.1.13) θ o (2.1.12) integralas išreiškiamas šitaip: 2π π V k 'y W (k ) d d sin dk k 2 S ( k , k ) . (2.1.14) 3 (2π) 0 0 0
Tačiau elektrono sklaidos tikimybė nepriklauso nuo , todėl k 'x integravimas kampo atžvilgiu pasireiškia tik pastoviu daugikliu 2π: 5 pav. Kampų θ ir prasmė. k – π V 2 W (k ) d sin d k k S ( k , k ) . (2.1.15) elektrono bangos vektorius prieš pat 0 (2π) 2 0 sklaidos įvykį, k' – bangos vektorius po sklaidos Įrašę (2.1.4) į (2.1.15), gauname π V W (k ) d sin dk k 2 | k | U | k |2 ( Ek Ek h ) . (2.1.16) 2πh 0 0
11 Visas aukščiau užrašytąsias formules galima naudoti ir stacionariojo trikdžio atveju: tada ω = 0. Iš (2.1.6) išplaukia, kad stacionariojo trikdžio atveju elektrono energija nesikeičia; gali pasikeisti tik bangos vektoriaus kryptis. Tokia sklaida vadinama tampriąja sklaida. Nuokrypiai nuo idealaus gardelės periodiškumo (t.y., hamiltoniano trikdžiai) gali būti įvairios prigimties. Dvi svarbiausios tokių nuokrypių rūšys yra priemaišų atomai ir gardelės virpesiai. Toliau laikysime, kad sklaida gali būti tik šių tipų: 1) joninė priemaišinė sklaida (šią sklaidą sąlygoja elektronų kuloninė sąveika su priemaišų jonais); 2) nepolinė sklaida akustiniais fononais (šią sklaidą sąlygoja energijos juostų kitimas erdvėje ir laike dėl išilginių akustinių bangų); 3) nepolinė sklaida optiniais fononais (šią sklaidą sąlygoja energijos juostų kitimas dėl optinių virpesių; ši sklaida gali būti tarpslėnė); 4) polinė sklaida optiniais fononais (šią sklaidą sukelia kintantis elektrinis laukas, kuris atsiranda, kintant gardelės narvelio dipoliniam momentui dėl išilginių optinių virpesių joniniuose puslaidininkiuose, pvz., GaAs, InP ir kt.). Daugumoje praktikoje sutinkamų atvejų pakanka atsižvelgti tik į aukščiau minėtuosius sklaidos tipus [2, p. 80]. Žemiau pateiktas smulkesnis tų sklaidos tipų aprašymas. 2.2. Joninė priemaišinė sklaida Daugelis puslaidininkinių įtaisų turi specialias sritis, kurios elgiasi kaip krūvininkų rezervuarai. Tų sričių pagrindinė paskirtis – krūvininkų generavimas arba jų pašalinimas dėl rekombinacijos. Tose srityse yra padidinta priemaišų (donorų arba akceptorių) koncentracija, todėl krūvininkai yra stipriai sklaidomi dėl sąveikos su priemaišų jonais. Šiuo atveju vienelektroninio hamiltoniano trikdys yra priemaišos jono elektrostatinio lauko potencialas. Apskaičiuosime šį potencialą. Laikysime, kad priemaišos jonas yra taškinis krūvininkas. Iš elektrostatikos žinoma, kad taškinio krūvio +Ze potencialas idealiame dielektrike yra 1 Ze (r ) ; (2.2.1) 4π 0 s r čia εs yra dielektriko dielektrinė skvarba, o r yra atstumas iki krūvininko. Tačiau puslaidininkyje yra laisvųjų krūvininkų, kurie dalinai ekranuoja priemaišos joną. Pvz., aplink teigiamąjį donoro joną padidėja laisvųjų elektronų koncentracija (žr. 6 pav.), todėl to jono efektinis krūvis
n
n0 ∆n
r =0
r
6 pav. Laisvųjų elektronų tankio padidėjimas aplink teigiamąjį joną
12 sumažėja. T.y., aplink donoro joną elektronų koncentracija n tampa didesnė už donorų jonų koncentraciją Nd, todėl atsiranda perteklinis neigiamas krūvis, kurio erdvinis tankis yra lygus − e∙Δn; čia Δn ≡ n − Nd. Vadinasi, pilnutinis erdvinio krūvio tankis (įskaičius dar ir paties teigiamojo jono krūvį) yra (r ) e( Z (r ) n) ; (2.2.2) čia Dirako δ funkcija δ(r) atspindi prielaidą, kad koordinačių pradžios taške r = 0 yra taškinis krūvis +Ze. Įrašę (2.2.2) į Puasono lygtį (1.1.5) ir pasinaudoję operatoriaus ∇ 2 (laplasiano) išraiška sferinėmis koordinatėmis, gauname tokią lygtį: 1 d 2 d e ( Z (r ) n(r )) . (2.2.3) r 2 r dr dr 0 s Aišku, kad šios lygties sprendinys priklauso nuo funkcijos Δn(r) pavidalo. Jeigu Δn(r) yra pakankamai mažas, tada galima naudoti klasikinę (Bolcmano) pasiskirstymo funkciją, todėl e en0 U n n0 exp ; (2.2.4) n0 n0 exp n0 k T k T k T B B B čia U = eφ yra elektrono potencinė energija, n0 yra pusiausviroji elektronų koncentracija toli nuo jono (praktikoje galima laikyti, kad n0 ≈ Nd) ir laikoma, kad |eφ| << kBT. Įrašę (2.2.4) į (2.2.3), gauname: 1 d 2 d Ze 2 (r ) ; (2.2.5) r qD 2 r dr dr 0 s čia qD yra vadinamasis atvirkštinis Debajaus ekranavimo nuotolis: e 2 n0 (2.2.6) 0 s kBT „Ekranavimo nuotolio“ sąvokos prasmė tampa aiški iš (2.2.5) lygties atskirojo sprendinio išraiškos: Ze (r ) e qD r . (2.2.7) 4π 0 s r Taigi, Debajaus ekranavimo nuotolis 1/qD – tai atstumas, kuriame priemaišinio jono lauko potencialas sumažėja e kartų, lyginant su to potencialo verte, kuri būtų gauta, jeigu nebūtų ekranavimo. Atitinkama elektrono potencinė energija (hamiltoniano trikdys) yra Ze 2 U (r ) e (r ) e qD r . (2.2.8) 4π 0 s r Dabar galima apskaičiuoti sklaidos, kurią sukelia tokio pavidalo trikdys, spartą. Tuo tikslu įrašome trikdžio išraišką (2.2.8) į trikdžio matricos elemento išraišką (2.1.8): 1 Ze 2 1 Ze 2 1 i( k , r ) 1 qD r i( k , r ) 3 k | U | k e e e d r ; (2.2.9) V 4π 0 s V r V 0 s | k k |2 qD2 čia laikoma, kad juostos yra parabolinės (todėl k | U | k U k k ). Įrašę (2.2.9) į šuolio k → k' tikimybės per laiko vienetą išraišką (2.1.4) ir atsižvelgę į tai, kad trikdys (2.2.8) yra stacionarusis (ω = 0), gauname qD
2
( Ek Ek ) 2π Ze 2 . (2.2.10) S (k , k ) h V 0 s (| k k |2 qD2 ) 2 Kadangi šiuo atveju elektrono energija sklaidos metu nepakinta, o elektrono bangos skaičius vienareikšmiškai susijęs su energija (žr. (1.3.4)), tai |k'| = |k| = k ir | k k |2 2k 2 (1 cos ) . (2.2.11)
13 Be to, kadangi apibrėžto bangos vektoriaus k elektronas yra banga, kuri pasiskirsčiusi visame kristalo tūryje, tai elektroną gali sklaidyti bet kuris iš kristale esančių priemaišinių jonų. Vadinasi, skaičiuojant pilnutinę sklaidos k → k' tikimybę, reikia padauginti reiškinį (2.2.10) iš visų kristale esančių priemaišinių jonų skaičiaus NjV; čia Nj yra jonų koncentracija. Tokiu būdu gauname: 2 4 ( Ek Ek ) 2π N j Z e S (k , k ) . (2.2.12) 2 2 2 h V 0 s [2k (1 cos ) qD2 ]2 Pilnutinė sklaidos sparta (nekonkretizuojant galutinės būsenos k') gaunama, įrašius (2.2.12) į (2.1.15): N jZ 2e4 π ( Ek Ek ) W (k ) d sin dk k 2 . (2.2.13) 2 2 2 2πh 0 s 0 [2 k (1 cos ) qD2 ]2 0 Atlikus integravimo kintamojo pakeitimą (1.3.9) ir pasinaudojus Dirako delta funkcijos savybėm, šis integralas įgyja tokį pavidalą: πN j Z 2 e 4 N ( Ek ) π sin d W (k ) . (2.2.14) 2 2 2 h 0 s [2k (1 cos ) qD2 ]2 0 Kadangi sin θ dθ = d(cos θ), tai pastarasis integralas lengvai apskaičiuojamas, atlikus integravimo kintamojo pakeitimą „θ → cos θ“. Tokiu būdu randame: 2πN j Z 2 e 4 N ( Ek ) 1 W (k ) 2 . (2.2.15) 2 2 h 0 s qD (4k 2 qD2 ) 7 pav. pavaizduota šios sklaidos spartos GaAs priklausomybė nuo Ek parabolinių juostų atveju (kai būsenų tankį nusako (1.3.10) formulė), laikant, kad n0 = Nj. Gali būti netikėtas tas faktas, kad sklaidos sparta mažėja, augant jonų koncentracijai Nj. Tai yra ypač akivaizdu mažų energijų srityje (žr. 7 pav.). Matematiniu požiūriu, taip yra dėl to, kad, esant mažoms k vertėms, (2.2.15) 2 2 2 trupmenos vardiklis yra apytiksliai proporcingas qD ~ n0 N j (žr. (2.2.6)), o skaitiklis yra proporcingas Nj. Tačiau šis sklaidos spartos mažėjimas nereiškia, kad, augant priemaišų koncentracijai, auga krūvininkų judris. Mat, krūvininkų judris yra proporcingas krūvininkų impulso vidutinei relaksacijos trukmei, o ši priklauso ne vien nuo sklaidos spartos, bet ir nuo sklaidos krypčių skirstinio (t.y., nuo vektorių k' krypčių skirstinio). Išreikšime šį skirstinį. Kaip minėta, sklaidos kryptį nusako du poliniai kampai θ ir (žr. 5 pav.). Vadinasi, norint pilnai aprašyti sklaidos krypčių pasiskirstymą, reikia žinoti du tikimybės tankius: kampo tikimybės tankį fφ(φ) ir kampo θ tikimybės tankį fθ(θ). Turint tuos tikimybės tankius, galėsime apskaičiuoti sklaidos į polinių kampų intervalą [θ; θ + d θ] ir į azimutinių kampų intervalą [φ; φ + dφ] spartas: dWθ(θ) = fθ(θ) dθ; (2.2.16a) dWφ(φ) = fφ(φ) dφ. (2.2.16b) Dabar suformuluosime bendrąją atsitiktinių skaičių generavimo taisyklę, kuri naudojama Monte Karlo modeliavimo programoje. Tarkime, a yra atsitiktinis dydis (pvz., sklaidos kampas), kurio vertę reikia generuoti. Yra žinomas to dydžio tikimybės tankis fa(a). Apibrėšime to dydžio pasiskirstymo funkciją Wa(a): tai yra santykinė dalis įvykių, kuriuose to dydžio vertė yra mažesnė už duotąją vertę a: a 1 Wa (a ) (2.2.17a) f a (a)da ; W amin čia amin yra mažiausioji įmanoma dydžio a vertė, W yra normavimo daliklis:
14
W
amax
f a (a )da ;
(2.2.17b)
J o n in ė s p r i e m a iš i n ė s s k l a id o s s p a r ta ( 1 /s )
amin
N j = 1 0 16 c m
−3
N j = 1 0 18 c m
−3
E l e k tr o n o e n e rg i j a ( e V ) 7 pav.
Joninės priemaišinės sklaidos spartos priklausomybė nuo elektrono energijos, esant dviem legiravimo laipsniams
čia amax yra didžiausioji įmanoma dydžio a vertė. Tada dydžio a atsitiktinės vertės turi būti skaičiuojamos pagal lygtį Wa (a ) r ; (2.2.18) čia r yra atsitiktinis skaičius, kuris tolygiai pasiskirstęs tarp 0 ir 1. Pritaikysime šią taisyklę kampų θ ir skaičiavimui. Kadangi visos azimutinio kampo vertės yra vienodai tikėtinos, šio kampo tikimybės tankis yra konstanta: 1 f ( ) . (2.2.19) 2π Akivaizdu, kad šiuo atveju lygtis (2.2.18) yra tokia: 2πr . (2.2.20) t.y., azimutinio kampo vertė gaunama, tiesiog padauginus atsitiktinio skaičiaus r, kuris tolygiai pasiskirstęs nuo 0 iki , reikšmę iš 2π. Polinio kampo θ tikimybės tankis – tai (2.2.14) reiškinio pointegralinis reiškinys (įskaitant ir pastovųjį daugiklį prieš integralą): πN j Z 2 e 4 N ( Ek ) sin f ( ) . (2.2.21) 2 2 2 h 0 s [2k (1 cos ) qD2 ]2 Normavimo daliklis šiuo atveju – tai pilnutinė sklaidos sparta W(k). Vadinasi, lygties (2.2.18) kairioji pusė – tai reiškinio (2.2.21) integralas nuo 0 iki θ, padalintas iš W(k). Tokiu būdu gauname:
15 (1 cos ) 1 (2k / qD ) 2
(2.2.22) r; 2+(1 cos )(2k / qD ) 2 čia r yra atsitiktinis skaičius, kuris tolygiai pasiskirstęs tarp 0 ir 1 (šis skaičius turi būti generuojamas nepriklausomai nuo atsitiktinio skaičiaus, kuris naudojamas, skaičiuojant kampą ). Lygties (2.2.22) sprendinys yra 2r cos 1 . (2.2.23) 1 (1 r )(2k / qD ) 2 Naudojantis polinio tankio tikimybės tankio išraiška (2.2.21), galima paaiškinti, kodėl, augant jonų koncentracijai Nj, judris mažėja, nors sklaidos sparta taip pat mažėja. Taip yra todėl, kad, augant Nj, didėja sklaidos dideliais kampais tikimybė. Tai akivaizdu 8 pav., kuriame pavaizduota funkcija fθ(θ) (čia laikoma, kad n0 = Nj). Matome, kad, esant didesnėms jonų koncentracijoms, kampų θ skirstinys yra platesnis. Vadinasi, nors sklaidos sparta W(k) yra mažesnė, tačiau vidutinis sklaidos įvykių skaičius, kuris reikalingas, kad elektronas „užmirštų“ savo judėjimo istoriją, taip pat yra mažesnis, ir pilnutinis efektas yra tas, kad, padidėjus Nj, vidutinė impulso relaksacijos trukmė sumažėja (vadinasi, judris taip pat sumažėja).
f θ( θ )
S k la id o s k am p as 8 pav. Sklaidos kampo θ tikimybės tankis, esant trims legiravimo laipsniams Šiame poskyryje gautosios sklaidos spartos išraiškos galioja tik parabolinių juostų artinyje. Laidumo juostos neparaboliškumas tampa svarbus, tik esant aukštai elektrono energijai. Tada joninės priemaišinės sklaidos vaidmuo yra žymiai mažesnis už kitų rūšių sklaidos vaidmenį [1, p. 235], todėl joninės priemaišinės sklaidos spartos išraiška neparabolinės juostos atvejui čia nepateikiama. Tačiau reikia turėti omenyje, kad neparabolinių juostų atveju būsenų tankis N(Ek), kuris įeina į (2.2.15) reiškinį, turi (2.2.15) būti skaičiuojamas pagal galioti, (1.3.11)kai formulę. Sklaidos spartos išraiška formulė nustoja elektronų koncentracija n0 yra žymiai mažesnė už jonizuotų priemaišų koncentraciją Nj. Tokia situacija yra galima, pvz., kompensuotame puslaidininkyje, kuriame teigiamųjų priemaišinių jonų (jonizuotų donorų) koncentracija yra apytiksliai lygi neigiamųjų priemaišinių jonų (jonizuotų akceptorių) koncentracijai. Tada efektas toks, lyg elektronai būtų perėję iš donorų į akceptorius, ir laisvųjų elektronų tankis n0 yra labai mažas. Kai n0 artėja į nulį, atvirkštinis Debajaus ekranavimo
16 nuotolis qD (2.2.6) taip pat artėja į nulį, todėl pagal (2.2.15) apskaičiuotoji sklaidos sparta artėja į begalybę. Siekiant išvengti tokios situacijos, galima dirbtinai apriboti joninės sklaidos spartą: jeigu pagal (2.2.15) formulę apskaičiuotoji vertė yra didesnė už 1014 s−1, tada laikoma, kad joninės sklaidos sparta lygi 1014 s−1. 2.3. Fononinė sklaida 2.3.1. Nepolinė sklaida akustiniais fononais Žinome, kad fononai yra kristalo gardelės virpesių kvantai. Gardelės jonų virpėjimas aplink jų pusiausvyros taškus sukelia momentinius energijos juostų pokyčius (žr. 9 pav.), kurie, savo ruožtu, sukelia elektronų sklaidą. Šiame poskyryje aptarsime tik sklaidą, kurią sukelia nepoliniai fononai, t.y., tokie fononai, kurie nėra susiję su gardelės kristalo dipolinio momento pokyčiais. Kubinės simetrijos kristaluose elektrono sąveika su akustiniais fononais įmanoma tik tada, kai fononai yra išilginiai. Vienelektroninio hamiltoniano trikdys (sąveikos potencialas), dėl kurio atsiranda sklaida išilginiais akustiniais fononais, yra tokio pavidalo [1, p. 41]: H (r , t ) d u(r , t ) . (2.3.1) Čia u(r,t) yra gardelės nuokrypis nuo pusiausvyros padėties taške r laiko momentu t, o d yra konstanta, kuri vadinama deformacijos potencialu. Žymėjimas u reiškia vektoriaus u divergenciją. Šalia deformacijos potencialo d, nepolinės sklaidos akustiniais fononais tikimybės skaičiavimui reikalingas medžiagos tamprumo koeficientas cL, kuris lemia išilginių garso bangų greitį vL [1, p. 41]: q c vL L . (2.3.2) q Atstumas Čia q yra fonono bangos skaičius, q yra fonono 9 pav. Energijos juostų dažnis, o yra medžiagos tankis. kitimas dėl kristalo gardelės Akustinių fononų atveju sklaidos iš deformavimo būsenos k į būseną k' tikimybė per laiko vienetą yra lygi [1, p. 43] π d2 q 2 S (k , k ) (nq 12 m 12 ) ( Ek Ek mhq ) ( k k mq ) ; (2.3.3) qqV čia q yra fonono bangos vektorius, o hq yra fonono energija. (2.3.3) reiškinyje ir tolimesniuose reiškiniuose viršutinis ženklas atitinka fonono sugertį (išnykimą), o apatinis ženklas atitinka fonono emisiją (atsiradimą). Taigi, kiekvienos rūšies fononai sąlygoja du sklaidos vyksmus, kurių tikimybės per laiko vienetą yra skirtingos: fononų sugertis ir fononų emisija. (2.3.3) reiškinyje nq yra duotosios būsenos fononų vidutinis skaičius (jį nusako Bozė ir Einšteino pasiskirstymo funkcija (1.4.1)). Pirmoji delta funkcija atspindi energijos tvermės dėsnį: jeigu elektronas sugeria būsenos q fononą, tada elektrono energija turi padidėti dydžiu hq , o jeigu fononas emituojamas, tada elektrono energija tuo pačiu dydžiu sumažėja: Ek Ek hq . (2.3.4) Antroji delta funkcija reiškinyje (2.3.3) atspindi impulso (judesio kiekio) tvermės dėsnį: jeigu elektronas sugeria būsenos q fononą, tada elektrono bangos vektrius pakinta dydžiu q, o jeigu fononas emituojamas, tada elektrono bangos vektrius pakinta dydžiu q:
17 k k q . (2.3.5) Parabolinių juostų atveju elektrono energiją galima išreikšti pagal (1.3.4). Įrašę tą išraišką į energijos tvermės dėsnį (2.3.4), gauname: h2 k 2 h2 k 2 (2.3.6) hq . 2 m* 2 m* Įrašę k' išraišką (2.3.5) į (2.3.6), gauname: h2 kq cos h2 q 2 (2.3.7) hq . m* 2m* Iš čia gaunama tokia sklaidos kampo θ kosinuso išraiška: 1 q h k cos m q . (2.3.8) 2 k Ek q Kambario temperatūroje akustinių fononų, kurie dalyvauja sklaidoje, energija yra žymiai mažesnė už kBT, todėl elektronų sąveiką su akustiniais fononais galima laikyti tampriąja (t.y., galima laikyti, kad elektrono energija sklaidos metu nekinta), o apibrėžtos būsenos akustinių fononų skaičių galima įvertinti pagal apytikslę formulę n( ) kBT / h (žr. (1.4.1)). Kadangi pastarasis skaičius yra žymiai didesnis už vienetą, tai nq ≈ nq + 1. Atlikus šiuos pakeitimus ir atsižvelgus į (2.3.2) bei (2.3.7), sklaidos tikimybės išraišką (2.3.3) galima perrašyti šitaip: π d2 kBT k q S (k , k ) cos ; (2.3.9) hcLV qEk 2k Kaip matome, vietoj dviejų delta funkcijų liko viena funkcija, nes nepriklausomuoju kintamuoju laikomas ne k', o q (atliktas integravimas k' atžvilgiu, esant fiksuotiems k ir q, todėl antroji delta funkcija (2.3.3) reiškinyje pakeista vienetu). Be to, prilyginus delta funkcijos argumentą nuliui, gaunamos mažiausioji ir didžiausioji įmanomos q vertės: qmin 0, (2.3.10) qmax 2k . Pilnutinė akustinės fononinės sklaidos sparta skaičiuojama pagal bendrąją formulę (2.1.12), tačiau šiuo atveju reikia integruoti q atžvilgiu: d2 kBT k 1 q V 3 W (k ) S ( k , k )d k cos d 3q . (2.3.11) 3 2 (2π) 8π hcL Ek q 2 k Suintegravus, gaunama tokia akustinės fononinės sklaidos spartos išraiška: 2π d2 kBT Wpar (k ) N ( Ek ) ; (2.3.12) hcL čia indeksas „par“ nusako, kad ši formulė galioja parabolinių juostų atveju. Čia N(Ek) skaičiuojamas pagal (1.3.10) formulę. Neparabolinių juostų atveju [1, p. 236] [1 ( Ek E (k0 ))]2 13 [ ( Ek E (k0 ))]2 2π d2 kBT W (k ) N ( Ek ) ; (2.3.13) hcL [1 2 ( Ek E (k0 ))]2 čia yra neparaboliškumo koeficientas, o būsenų tankis N(Ek) skaičiuojamas pagal (1.3.11) formulę. Akustinė fononinė sklaida yra izotropinė. Tai reiškia, kad azimutinis sklaidos kampas generuojamas pagal formulę (2.2.20), o polinis sklaidos kampas θ generuojamas pagal formulę cos θ = 1 2r; (2.3.14) čia r yra kitas atsitiktinis skaičius, kuris tolygiai pasiskirstęs tarp 0 ir 1. 10 pav. pavaizduota akustinės fononinės sklaidos spartos priklausomybė nuo elektrono energijos GaAs Γ slėnyje, esant dviems temperatūroms. Sklaidos spartos didėjimas, augant
18
A k u s ti n ė s f o n o n i n ė s s k l a i d o s s p a r ta ( 1 /s )
elektronų energijai, aiškinamas tuo, kad sklaidos sparta proporcinga būsenų tankiui N(Ek), kuris yra didėjant energijos funkcija.
E l e k tr o n o e n e rg i j a ( e V ) 10 pav. Akustinės fononinės sklaidos spartos priklausomybė nuo elektrono energijos 2.3.2. Nepolinė sklaida optiniais fononais Nors optinių virpesių atveju kaimyniniai kristalo atomai juda priešingom kryptim (o akustinių virpesių atveju jie juda ta pačia kryptimi), tačiau sklaida optiniais nepoliniai fononais gali būti analizuojama iš esmės tais pačiais metodais, kaip sklaida akustiniais nepoliniais fononais. Vienelektroninio hamiltoniano trikdys (sąveikos potencialas), dėl kurio atsiranda nepolinė sklaida optiniais fononais, yra tokio pavidalo [1, p. 46]: H (r , t ) Do u(r , t ) , (2.3.15) kur Do yra optinio deformacijos potencialo konstanta (vektorinis dydis, kurio dimensija yra eV/cm). Šiuo atveju, atlikus skaičiavimus, kurie analogiški praeitame poskyryje atliktiems skaičiavimams, gaunama tokia nepolinės optinės sklaidos iš būsenos k į būseną k' tikimybė per laiko vienetą išraiška [1, p. 47] h2 q 2 h2 kq cos πDo2 S (k , k ) (no 12 m 12 ) mho * * qoV m 2m čia no yra optinių fononų skaičius, o ωo yra jų dažnis. Tada parabolinės laidumo juostos atveju gaunama tokia nepolinės sklaidos optiniais fononais tikimybės per laiko vienetą išraiška [1, p. 48]:
19
Do2 [n(o ) 12 m 12 ]N ( Ek ho ) , (2.3.16) o kur o yra optinių fononų dažnis, o n(o) yra dažnio o ir apibrėžto bangos vektoriaus optinių fononų skaičius, kurį nusako Bozė ir Einšteino pasiskirstymo funkcija 1 n( ) h . (2.3.17) exp 1 kBT (2.3.16) formulėje viršutinis ženklas atitinka fonono absorbciją, o apatinis – fonono emisiją. (2.3.16) formulė galioja tik tada, kai kvantinio šuolio metu elektronas lieka tame pačiame slėnyje. Būsenų tankis N(Ek) skaičiuojamas pagal (1.3.10) formulę. Neparabolinės laidumo juostos atveju nepolinės optinės sklaidos slėnyje sparta lygi [1, p. 236] Do2 [n(o ) 12 m12 ] W (k ) N ( Ek ) F ( Ek , Ek ) , (2.3.18) o kur [1 ( Ek E (k0 ))][1 ( Ek E (k0 ))] F ( Ek , Ek ) . (2.3.19) [1 2 ( Ek E (k0 ))][1 2 ( Ek E (k0 ))] Čia yra duotojo slėnio neparaboliškumo koeficientas (žr. (1.3.5)), o E k E k . Formulėje (2.3.18) būsenų tankis N(Ek) skaičiuojamas pagal (1.3.11) formulę. Wpar (k )
2.3.3. Tarpslėnė sklaida Vykstant nepolinei sklaidai trumpabangiais optiniais arba akustiniais fononais, elektronas gali peršokti į kitą laidumo juostos slėnį. Pvz., elektronas gali peršokti iš slėnio (kuris yra Brijueno zonos centre) į kurį nors iš L slėnių (kurie išsidėstę 111 kryptimis ant Brijueno zonos krašto) arba į kurį nors iš X slėnių (kurie išsidėstę 100 kryptimis ant Brijueno zonos krašto). Tokia sklaida vadinama tarpslėne sklaida. Kubinės simetrijos puslaidininkiuose, jeigu pradinis slėnis nėra vienas iš L slėnių, nepolinė optinė fononinė sklaida visada yra tarpslėnė [1, p. 48]. Sąveikos potencialo, kuris nusako tarpslėnę sklaidą, pavidalas panašus į (2.3.15) [1, p. 49]: H (r , t ) Dij u(r , t ) , (2.3.20) kur Dij yra tarpslėnės deformacijos potencialas, kuris nusako tarpslėnės sklaidos intensyvumą. Atitinkama tarpslėnės sklaidos tikimybė per laiko vienetą parabolinės juostos atveju lygi [1, p. 49] πD 2 Z Wpar (k ) ij j [n(ij ) 12 m 12 ]N j ( Ek hij ) , (2.3.21) ij kur ij yra fononų dažnis arti Brijueno zonos krašto, Zj yra galimų ekvivalenčių galutinių slėnių skaičius, o Nj yra būsenų tankis galutiniame slėnyje. Bendruoju atveju Nj(Ek) išraiška skiriasi nuo N(Ek) išraiškos pradiniam slėniui (1.3.10) dviejų parametrų vertėmis: efektine mase m* ir energijos minimumo verte E(k0). Ekvivalenčiųjų galutinių slėnių skaičius Zj nustatomas, remiantis šuolio kryptimi ir šiais duomenimis: ekvivalenčių L slėnių skaičius Brijueno zonoje lygus 4, o ekvivalenčių X slėnių skaičius Brijueno zonoje lygus 3 [2, p. 86]. Tačiau kartais laikoma, kad ekvivalenčių X slėnių skaičius lygus 6, t.y., priešinguose Brijueno zonos kraštuose esantys slėniai, kurių padėtys skiriasi atvirkštinės gardelės transliacijos vektoriumi, yra laikomi skirtingais ekvivalenčiais slėniais [3]. Naudojant formulę (2.3.21), reikia atkreipti dėmesį, kad deformacijos potencialas Dij būtų apibrėžtas tam pačiam slėnių skaičiui Zj, kuris įeina į šią formulę [2, p. 96]. Pvz., jeigu žinyne Dij vertė apibrėžta X slėnių skaičiui Zj = 6, o formulėje (2.3.21) naudojamas Zj = 3, tada
20 žinyne pateiktąją Dij vertę reikia padauginti iš 2 . Šuoliai tarp ekvivalenčiųjų slėnių, kurie yra priešinguose Brijueno zonos kraštuose, vadinami g procesais, o kitų rūšių šuoliai tarp ekvivalenčiųjų slėnių vadinami f procesais arba h procesais, priklausomai nuo atstumo tarp pradinio ir galutinio slėnių [2, p. 87]. Neparabolinės laidumo juostos atveju tarpslėnės sklaidos sparta lygi [1, p. 236] πD 2 [n(ij ) 12 m 12 ] W (k ) ij Z j N j ( Ek ) Fij ( Ek , Ek ) , (2.3.22) ij [1 i ( Ek E (k0 ))][1 j ( Ek E (k0 ))] Fij ( Ek , Ek ) . (2.3.23) [1 2 i ( Ek E (k0 ))][1 2 j ( Ek E (k0 ))] Čia i ir j yra, atitinkamai, pradinio ir galutinio slėnių neparaboliškumo koeficientai, E ( k0 ) yra galutinio slėnio minimumo energija, o Ek Ek h . Būsenų tankis galutiniame slėnyje N j ( Ek ) skaičiuojamas pagal formulę (1.3.11). Tarpslėnės sklaidos atveju elektrono bangos vektoriaus pokytis yra artimas Brijueno zonos spinduliui. Tačiau elektrono judėjimo modeliavimui reikalingas tik k nuokrypis nuo k0 galutiniame slėnyje (žr. 3.3 poskyrį), kuris yra žymiai mažesnis už Brijueno zonos matmenis. 2.3.4. Polinė sklaida optiniais fononais Polinę fononinę sklaidą sukelia tik išilginiai fononai [1, p. 49] ir tik joniniuose puslaidininkiuose (pvz., GaAs). Polinė sklaida išilginiais akustiniais fononais (pjezoelektrinė sklaida) svarbi tik labai žemose temperatūrose ir labai grynuose puslaidininkiuose. Kambario temperatūroje pjezoelektrinės sklaidos galima nepaisyti. Polinės optinės fononinės sklaidos atveju vienelektroninio hamiltoniano trikdys yra (2.1.3) pavidalo, o jo amplitudė lygi U (r ) e E|| (r )dl , (2.3.24) kur E|| yra elektrinio lauko stipris, kurį sąlygoja kristalo gardelės elementariojo narvelio dipolinio momento kitimas, sklindant išilginei optinei deformacijos bangai, o l yra koordinatė bangos sklidimo kryptimi. Šį elektrinį lauką galima susieti su teigiamųjų ir neigiamųjų jonų reliatyviuoju poslinkiu u = u+ - u– (čia u+ žymi narvelio teigiamojo jono poslinkį, o u– – neigiamojo jono poslinkį): N e*u (r ) E|| (r ) , (2.3.25) V 0 kur N yra jonų porų skaičius, V yra kristalo tūris, yra dielektrinė skvarba optiniame diapazone (kai joninė poliarizacija jau nepasireiškia), u(r) = |u(r)|, o e* yra efektinis krūvis [1, p. 51]: 1/ 2
1
1 1 2 VM e = ε0 − , ω 0ε ∞ N ε∞ εs *
(2.3.26)
kur M yra teigiamojo ir neigiamojo jonų redukuotoji masė (1/M = 1/M+ + 1/M–), ω0 yra optinių fononų dažnis, o εs yra statinė dielektrinė skvarba. Įrašę (2.3.25) į (2.3.24) ir pasinaudoję tuo, kad plokščios bangos atveju u(r) = u0ei(q,r) = u0eiql (čia q yra fonono bangos vektorius, o q = |q|), gauname N e e* U (r ) i u (r ) . (2.3.27) V q 0 Parabolinės laidumo juostos atveju sklaidos poliniais optiniais fononais tikimybė per laiko vienetą lygi [1, p. 53]: q e20 | k k0 | W par (k ) [n(0 ) 12 m12 ]ln max , (2.3.28) 8 0 p Ek E (k0 ) qmin
21 kur ω0 yra optinių fononų dažnis (fononų energijos ir redukuotosios Planko konstantos santykis), 1/εp = 1/ε∞ - 1/εs, o qmax ir qmin yra fonono bangos skaičiaus q ribinės vertės: qmin qmax
1/ 2
h0 k 1 1 Ek E ( k0 )
,
1/ 2 h0 k 1 1 Ek E (k0 )
(2.3.29a) (2.3.29b)
(šios formulės išplaukia iš energijos ir impulso tvermės dėsnių). Formulėse (2.3.28) ir (2.3.29) viršutinis ženklas atitinka fonono absorbciją, o apatinis – fonono emisiją. Neparabolinės laidumo juostos atveju vietoj (2.3.28) gauname [1, p. 236] e 20 [n(0 ) 12 m 12 ] | k k0 | d ( Ek ) W (k ) F0 ( Ek , Ek ) , (2.3.30) 8π 0 p ( Ek ) dEk kur ( Ek ) ( Ek ) 1 F0 ( Ek , Ek ) A ln B . (2.3.31) C ( Ek ) ( Ek ) Čia Ek Ek h , funkciją (Ek) apibrėžia formulė (1.3.5) (kurioje energija Ek atskaitoma nuo minimumo energijos E(k0)), o koeficientai A, B ir C lygūs A {2(1 Ek )(1 Ek ) [ ( Ek ) ( Ek )]}2 , B 2 ( Ek ) ( Ek ){4(1 Ek )(1 Ek ) [ ( Ek ) ( Ek )]}, C 4(1 Ek )(1 Ek )(1 2Ek )(1 2Ek ), kur Ek yra elektrono energijos nuokrypis nuo energijos minimumo: Ek = Ek – E(k0).
22 3. Viendalelis Monte Karlo metodas 3.1. Viendalelės Monte Karlo programos struktūra Bet kokios puslaidininkinės struktūros elektrines savybes lemia didelio skaičiaus (milijonų arba daugiau) elektronų arba skylių judėjimas ir tarpusavio sąveika. Tačiau atskirais atvejais tokią daugelio sąveikaujančių dalelių sistemą galima aproksimuoti daugelio vienodų nepriklausomų dalelių sistema. Tada sistemos parametrus galima apskaičiuoti, nagrinėjant tik vienos dalelės judėjimą pakankamai ilgame laiko tarpe, o po to apskaičiavus mus dominančio dydžio (pvz., elektrono greičio, energijos, impulso) laikinį vidurkį. Tai yra pagrindinė viendalelio Monte Karlo metodo prielaida. Bendroji elektrono judėjimo modeliavimo viendaleliu Monte Karlo metodu tvarka yra tokia. Užduodami išorinio elektrinio lauko stipris ir pradinė elektrono būsena (erdvinės koordinatės ir bangos vektorius). Pasirenkamas pilnutinis elektrono judėjimo laikas tmax (pilnutinė modeliuojamojo proceso trukmė). Po to cikliškai atliekami šie keturi žingsniai: 1. Apskaičiuojami laisvojo lėkio trukmė ir sklaidos momentas tsc = t + τ (čia t yra einamasis laikas). 2. Apskaičiuojama elektrono būsena laisvojo lėkio pabaigoje. 3. Pasirenkamas sklaidos tipas. 4. Apskaičiuojamas elektrono bangos vektorius po sklaidos. Šie keturi žingsniai kartojami tol, kol proceso trukmė nepasiekia tmax. Taigi, viendalelės Monte Karlo programos supaprastinta struktūrinė schema yra tokia, kaip pavaizduota 16 pav. Pastaba: 16 pav. schemoje atskiri blokai išdėstyti taip, kad schemą būtų lengviau palyginti su daugiadalelės Monte Karlo programos schema (19 pav.). Norint rasti elektrono vidutinį dreifinį greitį v, reikia padalinti elektrono nueitą kelią lauko kryptimi (l) iš proceso trukmės. Kelią l galima nustatyti arba tiesiogiai (pagal elektrono koordinatę) arba pagal pilnutinį elektrinio lauko atliktą darbą A: l = A/(e|E|); čia e yra elektrono
P rad ž ia
tsc > tm ax
tsc = t + τ
T aip
t = tm ax
N e t= 0
A p sk aič iu o jam a laisv o jo lėk io tr u k m ė τ
t = tsc
A p sk aič iu o jam a e l e k tr o n o b ū s e n a p o sk laid o s
A p sk aič iu o jam a e l e k tr o n o b ū s e n a p o laisv o jo lėk io
P asiren k am as sk laid o s p ro c esas
T a ip
t < tm ax N e P ab a ig a
16 pav. Viendalelės Monte Karlo programos supaprastinta struktūrinė schema
23 krūvis, o |E| yra išorinio elektrinio lauko stipris. Darbas A randamas, sudėjus visus elektrono energijos pokyčius dreifo metu (t.y., tarpuose tarp visų sklaidos įvykių). Žinant vidutinį dreifinį greitį, judris apskaičiuojamas pagal formulę v . | E| Laisvojo lėkio trukmė, sklaidos tipas ir sklaidos kryptis, kurie nustatomi žingsniuose 1, 3 ir 4, yra atsitiktiniai dydžiai. Kiekvienas iš šių dydžių pasirenkamas, naudojant atsitiktinių skaičių generatorių. Tie skaičiai turi būti generuojami taip, kad skirtingų verčių pasikartojimo dažnis atitiktų to dydžio skirstinį. Aukščiau minėtieji žingsniai 1 ir 2 smulkiau aprašyti 3.2 poskyryje, o žingsniai 3 ir 4 – 3.3 poskyryje. 3.2. Lėkio trukmės skaičiavimas. Dreifo proceso modeliavimas Laisvojo lėkio trukmė priklauso nuo sklaidos tikimybės per laiko vienetą. Ši tikimybė lygi sumai tikimybių, kurios atitinka skirtingus sklaidos tipus (pvz., priemaišinė arba fononinė sklaida): n
W ( Ek ) W j ( Ek ) .
(3.2.1)
j 1
Čia indeksas j nusako sklaidos rūšį, o Ek yra elektrono, kurio bangos vektorius k, energija. Tikimybė per laiko vienetą, kad elektronas, kurio pradinis bangos vektorius yra k, judės be susidūrimų laiką τ, o po to bus išsklaidytas, yra lygi P ( ) W ( Ek ) exp W ( Ek )dt . (3.2.2) 0 Pagal bendrąją atsitiktinių skaičių generavimo taisyklę (žr. 2.2 poskyrį), lėkio trukmė turėtų būti skaičiuojama tokiu būdu: santykis P()/W(Ek) prilyginamas atsitiktiniam skaičiui, kuris tolygiai pasiskirstęs tarp 0 ir 1, o po to pagal (3.2.2) apskaičiuojama trukmė . Tačiau tam reikėtų apskaičiuoti integralą laužtiniuose skliaustuose. Šio integralo skaičiavimas yra sudėtingas, nes k (vadinasi, ir Ek) kinta laike, o W(Ek) priklausomybė nuo Ek yra sudėtinga. Sunkumų, kurie susiję su minėtojo integralo skaičiavimu, išvengiama tokiu būdu. Įvedamas naujas sklaidos tipas – „virtualioji sklaida“ (self-scattering), kurios metu elektrono būsena nepasikeičia ir kurios tikimybė per laiko vienetą W0(Ek) yra parinkta taip, kad naujoji pilnutinė sklaidos tikimybė per laiko vienetą nepriklausytų nuo energijos [1, p. 81]: n
n
j 1
j 0
W0 ( Ek ) W j ( Ek ) arba W j ( Ek ) ,
(3.2.3)
kur yra konstanta, kuri nusako naująją pilnutinę sklaidos tikimybę per laiko vienetą. Tada formulė (3.2.2) tampa žymiai paprastesnė: (3.2.4) P( ) e . Atitinkamai, lėkio trukmė skaičiuojama pagal formulę ln( r1 ) , (3.2.5) kur r1 yra atsitiktinis skaičius, kuris tolygiai pasiskirstęs tarp 0 ir 1. Konstantos vertė turi būti parinkta taip, kad visame tiriamajame energijų intervale ji būtų didesnė už tikrąją pilnąją tikimybę (3.2.1). Tačiau vertė turi būti kuo mažesnė, kad virtualiosios sklaidos įvykių dažnis būtų kuo mažesnis.
24 Laikysime, kad išorinis elektrinis laukas E, kuris veikia elektronus, erdvėje kinta žymiai lėčiau negu kristalo tarpatominis laukas. Tada elektrono bangos vektoriaus pokytis per laisvojo lėkio trukmę τ yra lygus eE k . (3.2.6) h 3.3. Sklaidos proceso modeliavimas Norint teisingai aprašyti sklaidos įtaką elektrono judėjimui, reikia žinoti diferencialinio sklaidos skerspjūvio priklausomybę nuo sklaidos kampo ir nuo elektrono būsenos. Tam reikia žinoti sklaidos tipą. Tarkime, kad egzistuoja n sklaidos tipų (neįskaitant virtualiosios sklaidos, kuri minėta 3.2 poskyryje). Tada sklaidos tipą elektrono lėkio pabaigoje galima pasirinkti, naudojant atsitiktinių skaičių generatorių ir funkcijas j(Ek), kurios apibrėžiamos šitaip [1, p. 84]: j
j ( Ek )
W ( E ) i 1
i
k
(j = 1, 2, …, n)
(3.3.1)
(konstanta apibrėžta 3.2 poskyryje). j-tojo tipo sklaida pasirenkama tuo atveju, jeigu atsitiktinis skaičius r2, kuris tolygiai pasiskirstęs tarp 0 ir 1, priklauso intervalui j 1 ( Ek ) r2 j ( Ek ) (j = 1, 2, …, n) (3.3.2) (čia laikoma, kad 0 = 0). Jeigu r2 > n, pasirenkama virtualioji sklaida, kurios metu elektrono judėjimo būsena nepakinta, t.y., sklaidos faktiškai nėra. Paprogramės, kuris pasirenka sklaidos tipą, struktūrinė schema galėtų būti tokia, kaip pavaizduota 17 pav. Pasirinkus sklaidos tipą, reikia apskaičiuoti elektrono bangos vektorių k’ po sklaidos. Šio vektoriaus absoliutinė vertė randama, naudojantis energijos tvermės dėsniu ir (1.3.4) arba (1.3.5) formule. Joninės sklaidos atveju elektrono energija nepakinta (nes jono kuloninis laukas yra stacionarus), o fononinės sklaidos atveju elektrono energija pakinta dydžiu, kuris lygus arba priešingas fonono energijai 0 , priklausomai nuo to, ar fononas buvo absorbuotas, ar emituotas: Ek Ek h0 . (3.3.3) Elektrono momentinis greitis (t.y., elektrono Blocho bangos grupinis greitis) lygus 1 dEk v . (3.3.4) h dk Įrašę energijos išraišką (1.3.4) arba (1.3.5) į (3.3.4) formulę, gauname, kad elektrono greitis priklauso tik nuo skirtumo k – k0 (o ne nuo pilnojo bangos vektoriaus k). Būsenų tankis (1.3.10) arba (1.3.11) ir įvairių rūšių sklaidos tikimybė taip pat priklauso tik nuo |k – k0| (žr. 2.2 ir 2.3 poskyrius). T.y., modeliuojant elektrono judėjimą, galima įsivaizduoti, kad visi laidumo juostos minimumai yra taške k = 0. Todėl toliau raide k arba k’ žymėsime bangos vektoriaus nuokrypį nuo pradinio arba galutinio energijos minimumo. Pagal (1.3.5), vektoriaus k’ absoliutinė vertė lygi 1 k 2m* ( Ek E ( k0 ))[1 ( Ek E (k0 ))] , (3.3.5) h kur E (k0 ) žymi galutinio slėnio minimumo tašką. Be absoliutinės vertės k’, reikia žinoti ir vektoriaus k’ kryptį. Sklaidos azimutinis kampas , kurį nusako vektoriaus k’ projekcija į statmeną k krypčiai plokštumą (žr. 5 pav.), yra tolygiai pasiskirstęs tarp 0 ir 2, t.y., jis skaičiuojamas pagal (2.2.20) formulę: 2πr3 ; (3.3.6)
25 čia r3 yra atsitiktinis skaičius, kurio galimos vertės tolygiai pasiskirsčiusios intervale nuo 0 iki 1. Sklaidos polinis kampas (t.y., kampas tarp vektorių k ir k‘) priklauso nuo sklaidos tipo. Kai elektroną išsklaido jonas, sklaidos polinis kampas θ randamas pagal formulę (2.2.23): Pradžia Atsitiktinio skaičiaus r2 generavimas Taip
r2 ≤ Λ1
φ ir θ skaičiavimas
Ne Taip
r2 ≤ Λ2
φ ir θ skaičiavimas
Ne
Taip
r2 ≤ Λn
φ ir θ skaičiavimas
Ne Pabaiga 17 pav. Sklaidos tipo pasirinkimo struktūrinė schema. cos 1
2r4 2
2k , 1 (1 r4 ) qD
(3.3.7)
o kai elektroną išsklaido polinis optinis fononas, kampas skaičiuojamas pagal formules [1, p. 55] r 1 f (1 2 f ) 4 , (3.3.8a) cos f f
2 ( Ek E (k0 ))( Ek E (k0 )) Ek E (k0 ) Ek E (k0 )
2
.
Čia r4 yra atsitiktinis skaičius, kurio vertės tolygiai pasiskirsčiusios intervale nuo 0 iki 1.
(3.3.8b)
26 Reikia turėti omenyje, kad formulėse (3.3.6), (3.3.7) ir (3.3.8a) kampų θ ir φ atskaitos kryptys yra susietos su vektoriaus k kryptimi (žr. 5 pav.). Tačiau k kryptis nuolat kinta dėl sklaidos. Kadangi modeliavimo metu siekiama rasti elektrono judėjimo kryptį laboratorinėje (nejudančioje) atskaitos sistemoje, tai po kiekvieno sklaidos įvykio elektrono bangos vektoriaus komponentes reikia perskaičiuoti, atliekant tokią koordinačių transformaciją [1, p. 93]: ky kxkz kx k ′ sinθ cosφ k x′ 2 k x + k y2 k k x2 + k y2 k − kx k ykz k y ′ k sin θ sin φ (3.3.9) k ′y = 2 . 2 2 2 k kx + k y k kx + ky 2 2 − k x + k y k z k′ 0 z k ′ cosθ k k Čia dydžiai kx, ky ir kz yra pradinio bangos vektoriaus k Dekarto komponentės laboratorinėje atskaitos sistemoje, dydžiai k ′ sin θ cos φ , k ′ sin θ sin φ ir k ′ cos θ – tai galutinio bangos vektoriaus k‘ Dekarto komponentės koordinačių sistemoje, kuri pavaizduota 5 pav. (k‘ = |k|), o dydžiai kx‘, ky‘ and kz‘ – tai bangos vektoriaus k‘ Dekarto komponentės laboratorinėje atskaitos sistemoje (t.y., jos skiriasi nuo Dekarto komponenčių, kurios pavaizduotos 5 pav., nors žymėjimai yra tie patys). Vykstant nepolinei fononinei sklaidai (kuri gali būti tarpslėnė), vektorius k’ yra pasiskirstęs izotropiškai [1, p. 45 ir p. 48]. T.y., kampas θ tarp k’ ir bet kokios fiksuotos krypties erdvėje turi būti skaičiuojamas pagal formulę cosθ = 1 − 2 r4 . (3.3.10) Šiuo atveju kampus φ ir θ patogiausia atskaityti nuo laboratorinės Dekarto koordinačių sistemos, kurioje apibrėžtos elektrono koordinatės, ašių X ir Z. Tada k x′ = k ′ sinθ cosφ , k ′y = k ′ sin θ sin φ , (3.3.11) k z′ = k ′ cosθ . Taigi, nepolinės sklaidos optiniais arba akustiniais fononais atveju koordinačių transformacijos atlikti nereikia.
27 4. Puslaidininkinių įtaisų modeliavimas Monte Karlo metodu 4.1. Daugiadalelis Monte Karlo metodas 3.1 poskyryje aprašytojo viendalelio Monte Karlo metodo trūkumai yra šie: 1. Kadangi viendaleliu Monte Karlo metodu modeliuojamas tik vieno krūvininko judėjimas, tai šis metodas netinka, aprašant reiškinius, kurie susiję su krūvininkų srautais, t.y., su krūvininkų ištekėjimu iš tam tikros erdvės srities arba įtekėjimu į ją. Tokių reiškinių pavyzdžiai yra krūvininkų difuzija ir erdvinio krūvio susidarymas dėl krūvininkų trūkumo („nuskurdinimas“) arba pertekliaus („akumuliacija“). 2. Kadangi viendalelis Monte Karlo metodas remiasi laikinių vidurkių skaičiavimu, tai šiuo metodu neįmanoma modeliuoti krūvininkų judėjimą apibūdinančių dydžių kitimo laike. Pvz., viendalelis metodas netinka, tiriant krūvininkų dreifinio greičio priklausomybę nuo laiko, krūvininkų energijos relaksaciją (t.y., „karštųjų“ krūvininkų termalizaciją), krūvininkų judėjimą kintamajame elektriniame lauke ir kt. Taigi, viendalelis Monte Karlo metodas netinka, modeliuojant puslaidininkinius įtaisus (pvz., diodus arba tranzistorius), nes visų puslaidininkinių įtaisų veikimui esminę įtaką turi juose susidarantys erdviniai krūviai. Norint modeliuoti šiuos erdvinius krūvius bei puslaidininkinių įtaisų laikines charakteristikas, reikia naudoti daugiadalelį Monte Karlo metodą. Daugiadalelio Monte Karlo metodo esmė yra ta, kad vienu metu modeliuojamas daugelio dalelių judėjimas. T.y., programa cikliškai „pereina“ per visas daleles. Šio ciklo periodą žymėsime Δt. 18 pav. grafiškai pavaizduota daugiadalelio Monte Karlo modeliavimo struktūrinė schema. Šioje schemoje laiko ašis nukreipta iš kairės į dešinę. Kiekviena horizontali ištisinė linija žymi vieną iš N dalelių. Žvaigždutės ant ištisinių linijų žymi sklaidos įvykius. Taigi, atkarpa tarp bet kurių dviejų gretimų žvaigždučių nusako dalelės laisvojo lėkio trukmę. Vertikalios punktyrinės linijos žymi laiko momentus, kai programa apskaičiuoja kiekvienos dalelės būseną. 19 pav. pavaizduota vienos (i-tosios) dalelės judėjimo tarp dviejų tokių momentų
1 2 3
∙ ∙ ∙ N
t 0 t−- Δ ∆t t
tt 0
t 0t ++ Δ ∆t t laik as
18 pav. Sklaidos įvykių ir dalelių būsenų skaičiavimo laiko momentai daugiadalelėje Monte Karlo programoje. Horizontalios ištisinės linijos atitinka skirtingas daleles. Žvaigždutės ant ištisinių linijų žymi atitinkamų dalelių sklaidos įvykius. Vertikalios punktyrinės linijos žymi dalelių būsenų skaičiavimo momentus.
t = t0
28
t = t0
tsc( i ) > t0 + ∆ t
tsc( i ) = t + τ
T a ip
t = t0 + ∆ t
N e A p sk aič iu o jam a laisv o jo lėk io tr u k m ė τ
t = tsc( i )
A p sk a ič iu o ja m a e l e k tr o n o b ū s e n a p o sk laid o s
A p sk a ič iu o ja m a e l e k tr o n o b ū s e n a p o laisv o jo lėk io
P asiren k am as sk laid o s p ro c esas
T a ip
t < t0 + ∆ t N e
19 pav. i-tosios dalelės judėjimo laiko tarpe nuo t0 iki t0 + Δt modeliavimo daugiadalelėje Monte Karlo programoje supaprastinta struktūrinė schema. Laikas t0 – tai ankstesniojo „persijungimo“ prie kitos dalelės momentas, o laikas t0 + Δt yra kito tokio „persijungimo“ momentas.
(nuo t0 iki t0 + Δt) modeliavimo struktūrinė schema. Matome, kad šiame laiko intervale kiekvienos dalelės judėjimas modeliuojamas iš esmės taip pat, kaip ir viendalelėje Monte Karlo programoje (plg. su 16 pav.). Yra tik du neesminiai skirtumai: 1) programiniame bloke, kuris pavaizduotas 19 pav., galutinio laiko momento vaidmenį atlieka ne viso modeliuojamojo proceso trukmė tmax, o laikas t0 + Δt, kai programa turės „persijungti“ prie kitos dalelės; 2) pradėjus vykdyti programinį bloką, kuris pavaizduotas 19 pav., i-tosios dalelės sklaidos (t.y., laisvojo lėkio pabaigos) momentas tsc(i) jau yra žinomas, todėl „įėjimas“ į modeliavimo ciklą yra ne ties laisvojo lėkio trukmės τ skaičiavimu (kaip 16 pav.), o ties sąlygos tsc > t0 + Δt tikrinimu. Akivaizdu, kad daugiadalelė programa turi vienu metu saugoti atmintyje visų dalelių sklaidos momentus tsc(i) (i = 1, 2, ..., N) ir visų dalelių einamąsias būsenas (t.y., bangos vektoriaus komponentes, energijos slėnį ir energiją to slėnio dugno atžvilgiu).
29
4.2. Pagrindinės puslaidininkinio įtaiso modeliavimo Monte Karlo metodu ypatybės Modeliuojant puslaidininkinį įtaisą, reikia atsižvelgti į du naujus reiškinius: 1. Kadangi puslaidininkinis įtaisas turi baigtinius matmenis, tai dalelių judėjimas yra apribotas erdvėje. Todėl tenka modeliuoti dalelės elgesį, kai ji atsiduria įtaiso krašte. Jeigu tame krašte nėra elektrinio kontakto, tada dalelė atsispindi nuo krašto. Jeigu tame krašte yra elektrinis kontaktas, tada dalelė išeina iš įtaiso (t.y., pilnutinis modeliuojamų dalelių skaičius N sumažėja vienetu). Be to, reikia modeliuoti ir dalelių įėjimą į įtaisą pro kontaktus, nes nuostoviojoje veikoje pilnutinis dalelių skaičius įtaiso viduje turi būti apytiksliai pastovus. 2. Elektrinio lauko stipris (ir potencialas) priklauso nuo krūvio pasiskirstymo įtaiso viduje. Vadinasi, iš vienos pusės, elektrinio lauko pasiskirstymas erdvėje valdo krūvininkų judėjimą, o iš kitos pusės, šis judėjimas gali sukurti erdvinį krūvį, kuris keičia elektrinį lauką. Taigi, tarp elektrinio lauko ir krūvininkų judėjimo yra grįžtamasis ryšys (jie priklauso vienas nuo kito). Tokiais atvejais elektrinis laukas vadinamas suderintiniu lauku („self-consistent field“). Potencialo priklausomybę nuo erdvinio krūvio tankio nusako Puasono lygtis ∂ 2ϕ ∂ 2ϕ ∂ 2ϕ ρ + 2 + 2 =− ; 2 ε 0ε ∂x ∂y ∂z
(4.2.1)
čia φ yra elektrinis potencialas, ρ yra erdvinio elektrinio krūvio tankis (C/m3), ε0 yra elektrinė konstanta, ε yra aplinkos dielektrinė skvarba, o x, y ir z yra Dekarto koordinatės. Minėtasis „grįžtamasis ryšys“ tarp elektrinio lauko stiprio ir krūvininkų pasiskirstymo realizuojamas, sprendžiant Puasono lygtį po kiekvieno Δt trukmės laiko žingsnio, t.y., laiko momentais, kurie atitinka vertikaliąsias punktyrines linijas 18 pav. Pvz., laiko momentu t0 apskaičiuojamas erdvinio krūvio tankio pasiskirstymas (naudojant visų elektronų koordinates tuo laiko momentu), ir išsprendžiama Puasono lygtis (t.y., randamas potencialo φ pasiskirstymas). Po to, modeliuojant krūvininkų judėjimą laiko tarpe nuo t0 iki t0 + Δt, laikoma, kad potencialo pasiskirstymas lieka pastovus. Taigi, laiko tarpe nuo t0 iki t0 + Δt krūvininkai juda stacionariame (tačiau nebūtinai vienalyčiame) elektriniame lauke, kuris atitinka krūvio pasiskirstymą, kuris egzistavo laiko momentu t0. Puasono lygtis sprendžiama baigtinių skirtumų metodu (smulkiau apie tai rašoma 4.8 poskyryje). Šių skaičiavimų trukmė labai priklauso nuo uždavinio dimensijos: trimatės Puasono lygties sprendimas trunka žymiai ilgiau, negu dvimatės arba vienmatės. Jeigu modeliavimas atliekamas personaliniu kompiuteriu, tada trimačių modelių panaudojimas užimtų pernelyg daug laiko. Todėl dažniau naudojami dvimačiai modeliai, kuriuose laikoma, kad viena iš elektrinio lauko vektoriaus Dekarto dedamųjų (pvz., z dedamoji) yra lygi nuliui. Tokiu atveju Puasono lygties (4.2.1) kairiojoje pusėje nelieka išvestinės z atžvilgiu: ∂ 2ϕ ∂ 2ϕ ρ + 2 =− ; 2 ε 0ε ∂x ∂y
(4.2.2)
Tokia prielaida yra leistina, jeigu modeliuojamojo įtaiso parametrai nepriklauso nuo z koordinatės, o jo matmenys Z kryptimi yra žymiai didesni už matmenis x ir y kryptimis. Tada visų krūvininkų sukuriamų laukų z dedamosios vidutiniškai kompensuoja viena kitą, ir pilnutinio elektrinio lauko z dedamoji yra artima nuliui beveik visame įtaiso tūryje. Toliau bus kalbama tik apie dvimatį Monte Karlo modeliavimą. Reikia turėti omenyje, kad čia žodis „dvimatis“ nusako tik Puasono lygties (4.2.2) dimensiją. Krūvininkų judėjimas įtaiso viduje lieka trimatis, nors kiekvieno krūvininko z koordinatė neturi jokios įtakos potencialui (ir elektrinio lauko stipriui). T.y., elektrinio lauko pasiskirstymas yra toks, lyg
30 kiekvienas krūvininkas būtų „ištemptas“ išilgai Z ašies į begalinio ilgio „siūlą“. Tačiau krūvininko energija priklauso nuo visų trijų bangos vektoriaus dedamųjų, todėl krūvininko bangos vektoriaus z dedamoji (kz) lieka tokia pati svarbi, kaip ir kitos dvi dedamosios (kx ir ky). 4.3. Superdalelė Integrinių grandinių elementų (diodų, tranzistorių ir kt.) tipiški matmenys yra mikronų arba dešimtųjų mikrono dalių eilės, o legiravimo laipsniai kinta nuo 1014 cm-3 iki 1020 cm-3 (legiravimu vadinamas priemaišų jonų įterpimas į puslaidininkį, siekiant pakeisti jo laidumo tipą ir dydį, o legiravimo laipsniu – priemaišinių jonų koncentracija). Tokiose pačiose ribose kinta ir laisvųjų krūvininkų koncentracijos. Remiantis šiais duomenim, galima apskaičiuoti tipišką laisvųjų krūvininkų skaičių puslaidininkiniame įtaise. Laikant, kad puslaidininkinio įtaiso plotis ir aukštis yra lygūs W = H = 1 μm, gylis lygus D = 10 μm, o legiravimo laipsnis (laisvųjų elektronų koncentracija) ND = 1017 cm-3, pilnutinis laisvųjų elektronų skaičius įtaise yra lygus Nel = ND ∙ W ∙ H ∙ D = 1,000,000. Atliekant Monte Karlo modeliavimą personaliniu kompiuteriu, toks modeliuojamų dalelių skaičius yra pernelyg didelis, nes modeliavimas truktų pernelyg ilgai. Tačiau nėra būtina modeliuoti visų elektronų judėjimą. Galima modeliuoti tik mažos dalies elektronų judėjimą – su sąlyga, kad tie elektronai yra išrinkti visiškai atsitiktinai. Atsitiktinio išrinkimo sąlyga yra reikalinga tam, kad neatsirastų sisteminės paklaidos, o būtų tik atsitiktinės paklaidos. Skaičiavimų atsitiktinės paklaidos („šratinis triukšmas“) yra atvirkščiai proporcingos šakniai iš modeliuojamų dalelių skaičiaus. Monte Karlo modeliavimo patirtis rodo, kad, pvz., Šotkio diodo arba lauko tranzistoriaus voltamperines charakteristikas galima sumodeliuoti pakankamai tiksliai, naudojant tik kelis tūkstančius dalelių. Tačiau, skaičiuojant erdvinio krūvio tankį ρ (kuris yra Puasono lygties (4.2.2) dešiniojoje pusėje), reikia naudoti tikrąją krūvininkų koncentraciją. Taigi, kiekviena išrinktoji dalelė atstoja Nel / Ndal elektronų; čia Nel yra tikrasis elektronų skaičius, o Ndal yra modeliuojamųjų dalelių skaičius. Todėl tokios dalelės vadinamos superdalelėmis. Toliau superdaleles vadinsime tiesiog „dalelėmis“. Santykį Nel / Ndal žymėsime Npp (indeksai pp yra kilę iš angliško termino „per particle“, kuris nurodo, kad turimas omenyje elektronų skaičius vienai modeliuojamai dalelei): N N pp = el. . (4.3.1) N dal. Skaičiuojant erdvinio krūvio tankį ρ, sprendžiant Puasono lygtį arba skaičiuojant elektros srovę, kuri teka elektrodais, kiekvienai dalelei reikia priskirti krūvį edal = eN pp . (4.3.2) Tačiau, modeliuojant atskiros dalelės laisvąjį lėkį ir sklaidą, reikia laikyti, kad jos krūvis yra lygus vieno elektrono krūviui e. 4.4. Puslaidininkinio įtaiso geometrijos apibrėžimas Modeliavimas prasideda nuo įtaiso geometrijos apibrėžimo. Paprasčiausiu atveju įtaiso geometrijos apibūdinimui pakanka šių duomenų: 1. Įtaiso matmenys – ilgis W, aukštis H ir gylis D. Ilgį matuosime x kryptimi, aukštį – y kryptimi, o gylį – z kryptimi. x ir y ašių kryptys parodytos 20 pav. z ašis nukreipta į brėžinio plokštumą. Įtaiso skerspjūvio, kuris pavaizduotas 20 pav., kairiojo viršutinio krašto koordinatės yra x = 0, y = 0. Kadangi modelis yra dvimatis, tai įtaiso matmenys z kryptimi (gylis D) neturi įtakos elektrinio lauko pasiskirstymui ir srovės tankiui. Tačiau pilnutinis krūvininkų skaičius įtaiso viduje yra proporcingas jo tūriui (taigi, ir įtaiso gyliui D). Vadinasi, įtaiso gylis D pasireiškia tik kaip pastovus daugiklis, skaičiuojant dydžius, kurie proporcingi pilnutiniam krūvininkų skaičiui įtaiso viduje (pvz, pilnutinę elektros srovę).
31 2. Skirtingo legiravimo laipsnio sričių padėtys įtaiso viduje. Paprasčiausia modeliuoti stačiakampio formos sritis, kurių kraštai lygiagretūs x ir y ašims. Tada, norint pilnai nusakyti priemaišų pasiskirstymą, reikia nurodyti pilnutinį legiravimo sričių skaičių, kiekvienos srities dviejų priešingų kampų koordinates (x1, y1 ir x2, y2), jonų koncentraciją kiekvienoje srityje ir priemaišinio jono krūvį. Paprasčiausiame puslaidininkiniame įtaise (rezistoriuje arba Šotkio diode) yra tik viena legiravimo sritis, kurios matmenys sutampa su viso įtaiso matmenimis (žr. 20 pav.). 3. Elektrodų padėtys. Laikysime, kad elektrodai gali būti tik ant viršutinio arba apatinio paviršiaus (t.y., plokštumose y = 0 ir y = H). Tada kiekvieno elektrodo padėčiai nusakyti pakanka nurodyti, ant kurio iš dviejų minėtųjų paviršių jis yra, ir to elektrodo kraštų x koordinates. 20 pav. atveju elektrodų kraštų x koordinatės sutampa su viso įtaiso kraštų x koordinatėm (x = 0 ir x = W). Vienintelis elektrodo parametras, kuris nėra susijęs su jo geometrija, yra kontaktinis potencialų skirtumas. Jį reikia nurodyti Šotkio kontaktams (žr. 4.6 ir 4.8 poskyrius). 0 W x I e l e k tr o d a s 0 C
H I I e l e k tro d a s y 20 pav. Puslaidininkinio rezistoriaus arba Šotkio diodo modelis ir koordinatinis tinklas. 4.5. Dalelių išėjimo pro kontaktus ir atspindžio nuo laisvojo paviršiaus modeliavimas Modeliuojant puslaidininkinį įtaisą Monte Karlo metodu, reikia nuolat tikrinti, ar dalelė neatsidūrė už modeliuojamojo įtaiso skerspjūvio ribų, t.y., erdvės srityse x < 0, y < 0, x > W arba y > H (žr. 20 pav.). Šis patikrinimas atliekamas kiekvieno dreifo pabaigoje, t.y., prieš pat sklaidos įvykį (18 pav. sklaidos įvykius žymi žvaigždutės) arba prieš persijungiant prie kitos dalelės (18 pav. šiuos persijungimus žymi vertikalios punktyrinės linijos). Jeigu galioja viena iš minėtųjų keturių nelygybių, tada reikia nustatyti, ar toje vietoje yra įtaiso laisvasis paviršius, ar elektrinis kontaktas. Jeigu x < 0 arba x > W, tai reiškia, kad toje vietoje yra laisvasis paviršius, nes kontaktai gali būti tik ant viršutinio arba apatinio paviršiaus. Jeigu y < 0 arba y > H, tada, norint nustatyti, ar ten yra laisvasis paviršius, reikia palyginti dalelės x koordinatę su tame paviršiuje esančių elektrodų kraštų koordinatėm. Jeigu toje vietoje, kur dalelė išėjo iš įtaiso, yra elektrodas, tada ta dalelė padaroma „neaktyvia“, t.y., su jas nustojama atlikti veiksmus, kurie pavaizduoti 19 pav. struktūrinėje schemoje. Pasibaigus einamajam Δt trukmės laiko žingsniui, ta dalelė visiškai pašalinama iš modelio, t.y., pilnutinis dalelių skaičius sumažinamas vienetu. Dalelės „aktyvumo“ indikatoriaus vaidmenį gali atlikti, pvz., energijos slėnio, kuriame yra dalelė, numeris. Jeigu Γ, L ir X slėniai žymimi numeriais 1, 2 ir 3, tada bet koks kitoks slėnio numeris galėtų reikšti, kad ta dalelė yra neaktyvi ir turi būti pašalinta iš modelio. Jeigu toje vietoje, kurioje dalelė išėjo iš įtaiso, yra laisvasis paviršius, tada dalelė grąžinama atgal į įtaiso tūrį, „atspindint“ ją nuo paviršiaus, pro kurį ji išėjo. Šį atspindį
0
0
W
X
32
0
W
X
0
(x’, y’)
(x, y)
H Y 21 pav. Dalelių atspindys nuo laisvojo paviršiaus ir išėjimas pro elektrodus. iliustruoja 21 pav. Šiame paveiksle viena dalelė atsispindi nuo įtaiso dešiniojo paviršiaus (x = W). Tos dalelės koordinatės ir banginio vektoriaus dedamosios po atspindžio skaičiuojamos tokiu būdu: x′ = W − ( x − W ) , y′ = y , z ′ = z ; (12.1a) k ′y = k y , k z′ = k z . k x′ = −k x , (12.1b) Kita 21 pav. pavaizduotoji dalelė išeina pro apatinį elektrodą. Ši dalelė turi būti pašalinta iš modelio. 4.6. Elektrinių kontaktų modeliavimas Kontaktai būna dviejų rūšių – ominiai ir užtvariniai. Užtvariniai kontaktai dar vadinami „Šotkio kontaktais“. Ominiai kontaktai sudaro sąlygas nekliudomam krūvininkų judėjimui iš kontakto medžiagos (metalo) į puslaidininkį arba atvirkščiai. Šotkio kontaktai sudaro potencinį barjerą, kurį turi įveikti krūvininkas, judėdamas tarp dviejų medžiagų. Nors fizikiniai reiškiniai, kurie vyksta ominiuose kontaktuose, yra nemažiau sudėtingi už fizikinius reiškinius, kurie vyksta Šotkio kontaktuose, tačiau puslaidininkinio įtaiso teoriniame modelyje ominio kontakto matematinis aprašymas yra žymiai paprastesnis, negu Šotkio kontakto (modeliavimo metu galima laikyti, kad ominio kontakto srityje nėra erdvinių elektrinių krūvių ir neatsiranda kontaktinis potencialų skirtumas). Todėl smulkiau aptarsime tik Šotkio kontaktą. Prieš aptariant elektrinių kontaktų modeliavimą Monte Karlo metodu, suformuluosime paprastą teorinį modelį, kuris leidžia numatyti pagrindines Šotkio kontaktų savybes. Šis modelis aprašytas 4.6.1 – 4.6.4 poskyriuose. 4.6.5 poskyryje paaiškinta, kokiu būdu ominiai ir Šotkio kontaktai įskaitomi puslaidininkinio įtaiso Monte Karlo modelyje. 4.6.1. Šotkio kontakto energijos juostų diagrama Šotkio kontakto elektrinėms savybėms suprasti patogu pasinaudoti energijos juostų diagrama. Puslaidininkinių įtaisų energijos juostų diagramose nurodomos šios trys energijos: 1) Fermio energija F (dar vadinama Fermio lygmeniu); 2) laidumo juostos apatinis kraštas Ec, 3) valentinės juostos viršutinis kraštas Ev. Be to, energijos juostų diagramose kartais pavaizduojamas ir vakuumo lygmuo – elektrono energija vakuume, prie pat puslaidininkio paviršiaus. Prieš sudarant Šotkio kontakto energijos juostų diagramą, naudinga prisiminti priežastis, dėl kurių energijos juostų diagramos yra dažnai naudojamos puslaidininkinių įtaisų veikimo analizei, ir kartu – kelias formules, kurios žinomos iš kietojo kūno elektronikos kurso.
33 Pagal energijos juostų kraštų Ec ir Ev kitimą erdvėje galima spręsti apie elektrinio potencialo φ pasiskirstymą: Ec = Ec0 – eφ, Ev = Ev0 – eφ, (4.6.1) čia Ec0 ir Ev0 yra juostų kraštai, kai elektrinis laukas yra lygus nuliui. Pagal skirtumą tarp Fermio energijos F ir juostų kraštų galima apskaičiuoti elektronų ir skylių tankius n ir p: F − Ec E −F n = N c exp , p = N v exp v ; (4.6.2) kT kT čia Nc ir Nv yra vadinamieji efektiniai būsenų tankiai laidumo ir valentinėje juostose. Žinant potencialą φ bei krūvininkų tankius n ir p, galima apskaičiuoti elektrinio lauko stiprį E = -dφ/dx, bei krūvininkų tankių gradientus dn/dx ir dp/dx (vienmačio modelio atveju). Žinant elektrinio lauko stiprį bei krūvininkų tankius ir jų gradientus, galima apskaičiuoti elektronų ir skylių srovių tankius: dn dp jn enn E eDn , j p ep p E eD p ; (4.6.3) dx dx čia pirmieji dėmenys nusako elektronų ir skylių dreifinių srovių tankius, o antrieji – elektronų ir skylių difuzinių srovių tankius (μn ir μp yra elektronų ir skylių judriai, o Dn ir Dp – difuzijos koeficientai). Kaip matome, pagal energijų Ec, Ev ir F priklausomybę nuo koordinatės galima apskaičiuoti visus puslaidininkinio įtaiso būseną nusakančius dydžius (krūvininkų koncentracijas ir srovių tankius). Šotkio kontakto energijos diagramos sudarymą iliustruoja 22 pav. Pradedame nuo izoliuotų medžiagų – metalo ir n tipo puslaidininkio. Kol tarp jų nėra kontakto, vidinio elektrinio lauko nėra (potencialas φ visur yra lygus nuliui), todėl, pagal (4.6.1), energijos juostos yra „plokščios“, kaip pavaizduota 22a pav. Akivaizdu, kad abiejų medžiagų Fermio energijos nesutampa. Tai reiškia, kad, sudarius elektrinį kontaktą tarp metalo ir puslaidininkio, sistema nebus termodinaminėje pusiausvyroje. [Fermio energijos fizikinė prasmė – tai vidutinis darbas, kurį reikia atlikti, norint padidinti elektronų skaičių puslaidininkyje vienetu. T.y., Fermio energija – tai elektronų sistemos cheminis potencialas, perskaičiuotas vienam elektronui. Termodinamikoje įrodoma, kad tuo atveju, kai sistema yra termodinaminėje pusiausvyroje (t.y., sistemoje nevyksta šilumos persiskirstymas, neteka elektros srovė, nėra difuzijos), sistemos cheminis potencialas yra vienodas visuose sistemos taškuose. Vadinasi, kai sistema yra termodinaminėje pusiausvyroje, Fermio energija turi būti vienoda visuose sistemos taškuose.] Sudarius kontaktą, prasidės elektronų apykaita tarp abiejų medžiagų. Elektronų srautas iš medžiagos su mažesniu išlaisvinimo darbu (t.y., su didesne Fermio energija) į medžiagą su didesniu išlaisvinimo darbu (t.y., su mažesne Fermio energija) bus didesnis už priešingos krypties elektronų srautą. 22 pav. atveju elektronų išlaisvinimo darbas puslaidininkyje yra mažesnis už jų išlaisvinimo darbą metale. Taigi, atsiras elektronų srautas iš puslaidininkio į metalą. Kadangi elektrono krūvis neigiamas, tai elektros srovės kryptis bus priešinga – iš metalo į puslaidininkį. Ši elektros srovė yra neelektrostatinės prigimties (t.y., ji nėra susijusi su elektriniu lauku). Dėl šios neelektrostatinės srovės puslaidininkis įgyja perteklinį teigiamą krūvį, o metalas – perteklinį neigiamą krūvį. Tai reiškia, kad metalo potencialas tampa mažesnis už puslaidininkio potencialą. T.y., atsiranda elektrinis laukas, kurio kryptis priešinga neelektrostatinės srovės krypčiai. Šis laukas lėtina elektronų perėjimą iš puslaidininkio į metalą, todėl krūvio persiskirstymas sulėtėja. Praėjus tam tikram laikui, krūvininkų persiskirstymas baigiasi, t.y., sistema atsiduria termodinaminėje pusiausvyroje. Šioje būsenoje Fermio lygmuo yra vienodas visuose taškuose, tačiau energijos juostos yra užlinkusios. Šio užlinkimo priežastis – minėtasis elektrinis laukas, t.y., potencialo kitimas erdvėje. Pagal (4.6.1), potencialo kitimas erdvėje reiškia, kad juostų kraštai taip pat priklauso nuo koordinatės („užlinksta“). Taip pat užlinksta ir visi kiti energijos lygmenys – tame tarpe ir vakuumo lygmuo. Šis laukas egzistuoja tik siauroje srityje arti kontakto. Toliau nuo kontakto elektrinis laukas lygus nuliui, t.y., energijos M e ta la s
n ti p o p u s la i d i n i n k i s
V ak u u m o ly g m u o
V ak u u m o ly g m u o
34
M e ta la s
n ti p o p u s la i d i n i n k i s
V ak u u m o ly g m u o
V ak u u m o ly g m u o A
A F
E F
m et
c0 p u sl
e |U
K
|
m et
a
E
V ak u u m o ly g m u o
F
b
p u sl
v0
d e |U
K
|
e |U
K
|
V ak u u m o ly g m u o
E F
E
c
v
22 pav.
Šotkio kontakto energijos juostų diagramos sudarymas. a – izoliuotų metalo ir n tipo puslaidininkio energijos juostos, b – Šotkio kontakto energijos juostų diagrama termodinaminėje pusiausvyroje. Amet ir Apusl yra elektrono išlaisvinimo darbai metale ir puslaidininkyje, F yra Fermio energija, UK yra kontaktinis potencialų skirtumas tarp metalo ir puslaidininkio, d yra nuskurdintojo sluoksnio juostos yra plokščios, o Fermio lygmuo yra tokiu pačiu atstumu nuo juostų kraštų, kaip ir izoliuotame puslaidininkyje (žr. 22b pav.). Juostų užlinkimo dydis yra proporcingas potencialų skirtumui tarp metalo ir puslaidininkio. Iš 22 pav. matyti, kad šis užlinkimas yra lygus skirtumui tarp Fermio lygmenų izoliuotose medžiagose. T.y., metalo ir puslaidininkio potencialų skirtumas termodinaminėje pusiausvyroje (kontaktinis potencialų skirtumas) lygus 1 U K met pusl ( Fmet Fpusl ) ; (4.6.4) e čia Fmet ir Fpusl yra Fermio energijos izoliuotuose metale ir puslaidininkyje (žr. 22a pav.), o φmet ir φpusl yra jų potencialai, sudarius sandūrą (čia turimi omenyje potencialai erdvės srityse, kuriose nėra erdvinio krūvio, t.y., pakankamai toli nuo kontakto). 4.6.2. Nuskurdinimo artinys Šotkio kontaktui Dabar aptarsime erdvinio elektrinio krūvio tankio, elektrinio lauko stiprio ir potencialo priklausomybes nuo koordinatės Šotkio kontakte termodinaminės pusiausvyros sąlygomis. Visų pirma reikia pastebėti, kad pilnutinis krūvis puslaidininkyje yra priešingas pilnutiniam krūviui metale, nes pilnutinis sandūros krūvis turi būti lygus nuliui. Metale elektronų būsenų tankis yra
35 toks didelis, kad visas perteklinis krūvis „sutelpa“ į vieną paviršinį atominį sluoksnį. Todėl galima laikyti, kad metale perteklinis krūvis yra ne tūrinis, o paviršinis (t.y., krūvio sluoksnio storį galima laikyti lygiu nuliui). Paviršinis krūvis apibūdinamas paviršiniu krūvio tankiu σ (matuojamas C/m2). Iš elektrostatikos kurso žinoma, kad paviršinio krūvio tankio σ sukuriamo elektrinio lauko stipris yra lygus σ Eσ = . (4.6.5) 2ε 0 ε (ši lygybė nesunkiai įrodoma, pasinaudojus Gauso teorema). Skaičiuojant pilnutinį elektrinio lauko stiprį, prie metalo paviršinio krūvio lauko (4.6.5) reikia pridėti puslaidininkyje egzistuojančio erdvinio krūvio sukuriamą elektrinį lauką. Pastarąjį lauką galima apskaičiuoti, naudojantis vadinamuoju nuskurdinimo artiniu, kuris aprašytas kitoje pastraipoje. Nesunku pastebėti, kad elektronų tankis priekontaktinėje puslaidininkio srityje, kurioje egzistuoja elektrinis laukas, turėtų būti žymiai mažesnis už krūvininkų tankį neutraliojoje puslaidininkio dalyje. Ši išvada išplaukia iš elektronų tankio n išraiškos (4.6.2). Kaip matyti 22b pav., kontakto plokštumoje Fermio lygmuo yra toliau nuo laidumo juostos krašto, negu puslaidininkio tūryje. Pagal (4.6.2), krūvininkų tankio natūraliojo logaritmo sumažėjimas yra lygus atstumo tarp Fermio lygmens ir laidumo juostos krašto padidėjimui (t.y., potencinio barjero aukščiui), padalintam iš kT. Antra vertus, minėtasis potencinio barjero aukštis yra lygus kontaktiniam potencialų skirtumui UK, padaugintam iš elementariojo krūvio e (žr. 22b pav.). Praktikoje e|UK| = (0.4 ÷ 0.9) eV [2, p. 182]. Turint omenyje, kad kambario temperatūroje kT ≈ 0.0254 eV, galima teigti, kad puslaidininkio elektronų tankio logaritmas prie pat kontakto yra dydžiu (0.4 ÷ 0.9) / 0.0254 = (16 ÷ 35) mažesnis, negu puslaidininkio tūryje. Tai atitinka elektronų tankio santykinį sumažėjimą e16 ÷ e35 = 107 ÷ 1015 kartų. Vadinasi, priekontaktinėje puslaidininkio srityje, kurioje egzistuoja elektrinis laukas, elektronų koncentracija yra keliom eilėm mažesnė už jų koncentraciją puslaidininkio tūryje. Todėl šis priekontaktinis sluoksnis vadinamas nuskurdintuoju sluoksniu. Žinome, kad elektrinio neutralumo sąlygomis legiruotame puslaidininkyje pagrindinių krūvininkų koncentracija yra praktiškai lygi priemaišinių atomų koncentracijai. Vadinasi, sumažėjus pagrindinių krūvininkų tankiui, atsiranda nesukompensuotasis priešingo ženklo erdvinis krūvis, kurį sukuria priemaišų jonai. Taigi, nuskurdintame sluoksnyje egzistuoja erdvinis elektrinis krūvis, kurio šaltiniai yra jonizuoti priemaišų atomai. n tipo puslaidininkyje tai yra teigiamieji donorų jonai. Kadangi nuskurdintame sluoksnyje šių atomų tankis yra žymiai didesnis už elektronų tankį, tai nepadarysime didelės klaidos, jeigu laikysime, kad nuskurdintame sluoksnyje iš viso nėra elektronų. Šis artėjimas vadinamas nuskurdinimo artiniu. Nors ši prielaida yra tik apytikslė ir ji negalioja nuskurdintojo sluoksnio viename krašte, tačiau ji leidžia pakankamai tiksliai teoriškai aprašyti pagrindines Šotkio kontakto savybes. Laikant, kad nuskurdintame sluoksnyje egzistuoja tik jonizuotų priemaišų krūvis, erdvinio krūvio tankio ρ (C/cm3) pasiskirstymas yra toks, kaip pavaizduota 23a pav. Čia taškas x = 0 atitinka kontakto plokštumą, o taškas x = d atitinka nuskurdintojo sluoksnio kraštą (d yra nuskurdintojo sluoksnio storis). Taigi, tolygaus legiravimo atveju erdvinio krūvio pasiskirstymą n tipo puslaidininkio Šotkio kontakte galima užrašyti šitaip: x < 0; 0 ρ ( x ) = σδ ( x) + eN D , 0 < x < d ; (4.6.6) 0 x > d. Čia pirmasis dėmuo atspindi neigiamąjį krūvį metale (kadangi tai yra paviršinis krūvis, o ne tūrinis krūvis, tai šiame dėmenyje yra Dirako delta funkcijos pavidalo daugiklis δ(x)). ND yra donorų tankis puslaidininkyje.
36 Žinant erdvinio krūvio pasiskirstymą, elektrinio lauko pasiskirstymą galima apskaičiuoti, išsprendus Puasono lygtį. Tačiau vienmačiu atveju egzistuoja vaizdesnis būdas. Jis remiasi tuo,
Nuskurdintasis sluoksnis
c)
23 pav.
Lauko stipris |E|
b)
Potencialas ϕ
a)
Krūvio tankisρ
Metalas
∆x
eND
0
0
koordinatė x
d
0
koordinatė x
d
|E|max
0 0
UK
Erdvinio elektrinio krūvio tankio (a), elektrinio lauko stiprio (b) ir potencialo (c) priklausomybė nuo koordinatės Šotkio kontakte nuskurdinimo artinyje. kad erdvinio krūvio sritį galima suskaidyti į daug plonų sluoksnių, o po to pilnutinį lauką skaičiuoti kaip sumą laukų, kuriuos sukuria visi tie sluoksniai. Kiekvienas sluoksnis elgiasi kaip plokštumoje pasiskirstęs paviršinis krūvis, ∆ kurio σ = tankis eN D ∆x ; (4.6.7) čia Δx yra sluoksnio storis (žr. 23a pav.). Šio paviršinio krūvio elektrinio lauko stiprį galima išreikšti (4.6.5) lygybe: eN D ∆σ ∆Eσ = = ∆x . 2ε 0 ε 2ε 0 ε Pastarąją lygybę galima užrašyti kaip elektrinio lauko ir koordinatės diferencialų sąryšį: eN D dEσ = dx . (4.6.8) 2ε 0ε Elektrinio lauko stipris laisvai pasirinktame taške x (žr. 23a pav.) yra lygus sumai metalo paviršinio krūvio lauko Eσ (4.6.5), srityje 0 < x1 < x esančio erdvinio krūvio lauko Ex1<x ir srityje x < x1 < d esančio erdvinio krūvio lauko Ex1>x. Skaičiuojant pastaruosius du laukus, reikia integruoti sąryšį (4.6.8). Be to, reikia atsižvelgti į tai, kai lauko Ex1<x kryptis yra priešinga laukų Eσ ir Ex1>x krypčiai. Todėl visuose taškuose, kurie yra nuskurdintajame sluoksnyje (0 < x < d), elektrinio lauko stipris yra: x d eN D eN D |σ | | σ | eN D | E ( x ) |=| Eσ | − | Ex1< x | + | Ex1> x |= −∫ dx1 + ∫ dx1 = + (d − 2 x) ; (4.6.9) 2ε 0 ε 0 2ε 0 ε 2ε 0 ε 2ε 0 ε 2ε 0 ε x
37 čia x1 yra integravimo kintamasis. Kadangi sistema visumoje yra neutrali, tai metalo paviršiuje esančio krūvio modulis turi būti lygus nuskurdintame sluoksnyje esančio krūvio moduliui, o ženklas turi būti priešingas. Vadinasi, σ = −eN D d . (4.6.10) Srityse x < 0 ir x > d elektrinis laukas yra lygus nuliui, nes pilnutinis krūvis į abi puses nuo kiekvieno tokio taško yra lygus nuliui. Taigi, įrašius (4.6.10) į (4.6.9), gaunama tokia elektrinio lauko stiprio priklausomybė nuo koordinatės Šotkio kontakte: 0, x < 0; eN D | E ( x ) |= (d − x), 0 < x < d ; (4.6.11) ε 0ε 0, x > d. Dabar rasime elektrinio lauko potencialą. Duotojo taško potencialas – tai elektrinio lauko stiprio integralas koordinatės atžvilgiu su minuso ženklu. Integruoti reikia nuo taško, kurio potencialą susitarta laikyti lygiu nuliui, iki duotojo taško x. Potencialą atskaitysime nuo puslaidininkio neutraliosios dalies potencialo. Tada visuose taškuose, kurių koordinatės tenkina sąlygą x > d, potencialas yra lygus nuliui. Vadinasi, integralo apatiniu rėžiu galima laikyti tašką x = d: x
d
d
x
ϕ ( x) = − ∫ E ( x)dx = ∫ E ( x)dx .
(4.6.12)
Įrašę elektrinio lauko stiprio išraišką (4.6.11) į (4.6.12), atsižvelgę į tai, kad aptariamuoju atveju E < 0 (laukas nukreiptas x mažėjimo kryptimi), ir suintegravę, gauname tokią potencialo priklausomybę nuo koordinatės: eN D d 2 , x < 0; − 2 ε ε 0 eN D ϕ ( x ) = − ( d − x) 2 , 0 < x < d ; (4.6.11) 2 ε ε 0 x > d. 0, Taip apibrėžus potencialo atskaitos tašką, potencialo φ vertė srityje x < 0 yra lygi aukščiau minėtam kontaktiniam potencialų skirtumui UK. Vadinasi, eN d 2 UK = − D . (4.6.12a) 2ε 0 ε Išreiškę d, gauname 2ε 0 ε d= |UK | . (4.6.12b) eN D Taigi, nuskurdintojo sluoksnio storis d yra tiesiog proporcingas kvadratinei šakniai iš kontaktinio potencialų skirtumo ir atvirkščiai proporcingas kvadratinei šakniai iš priemaišinių jonų koncentracijos ND. Reikia turėti omenyje, kad ši formulė galioja tik termodinaminėje pusiausvyroje. Esant išorinei įtampai U, prie kontaktinio potencialo UK reikia pridėti U (žr. (4.6.15) formulę). 22b pav. akivaizdu, kad elektrinis laukas yra stipriausias kontakto plokštumoje (x = 0). Iš (4.6.12b) ir (4.6.11) išplaukia tokia didžiausiojo elektrinio lauko stiprio išraiška: 2eN D |E|max = |UK | . (4.6.13) ε 0ε
38 4.6.3. Šotkio kontaktas, esant išorinei įtampai 22b pav. matome, kad Šotkio kontakte egzistuoja potencinis barjeras, kurį turi įveikti elektronai, kurie juda iš puslaidininkinio į metalą arba iš metalo į puslaidininkį. Termodinaminėje pusiausvyroje šio potencinio barjero aukštis iš puslaidininkio pusės yra lygus e|UK|, o iš metalo pusės barjero aukštis lygus e|UK| + (Ec0 – Fpusl); čia žymenys „Ec0“ ir „Fpusl“ turi tą pačią prasmę, kaip 22a pav. [Tikrovėje potencinio barjero aukštis yra šiek tiek mažesnis dėl puslaidininkio elektrono sąveikos su jo veidrodiniu atspindžiu metale, tačiau čia šis reiškinys nebus nagrinėjamas.] Potencinį barjerą įveikia tik tie elektronai, kurių energija didesnė už barjero „viršūnę“ (ji yra kontakto plokštumoje). Termodinaminėje pusiausvyroje tokių elektronų skaičius abiejose kontakto pusėse yra vienodas, todėl elektronų srautai iš puslaidininkio į metalą ir iš metalo į puslaidininkį yra vienodi ir pilnutinė elektronų srovė lygi nuliui (žr. 24a pav.). Dabar tarkime, kad prie kontakto prijungta išorinė įtampa. Priklausomai nuo įtampos poliarumo, skiriama tiesioginė įtampa (kai išorinės įtampos poliarumas yra priešingas kontaktinio potencialų skirtumo poliarumui) ir atgalinė įtampa (kai išorinės įtampos ir kontaktinio potencialų skirtumo poliarumai yra vienodi). Kadangi nuskurdintajame sluoksnyje elektronų koncentracija yra žymiai mažesnė, negu neutraliojoje puslaidininkio srityje ir metale, tai jo laidumas yra žymiai mažesnis už neutraliosios srities ir metalo laidumą (t.y., varža yra žymiai didesnė). Tai reiškia, kad didžioji išorinės įtampos dalis tenka nuskurdintajam sluoksniui (0 < x < d). Srityse x < 0 ir x > d įtampos kritimas yra mažas. Todėl, prijungus įtampą, šiose srityse elektrinis laukas yra labai silpnas (praktiškai lygus nuliui) ir energijos juostos lieka plokščios. Išorinė įtampa pasireiškia tuo, kad pasikeičia potencinio barjero aukštis iš puslaidininkio pusės: tiesioginės įtampos atveju jis sumažėja (24b pav.), o atgalinės įtampos atveju jis padidėja (24c pav.). Barjero aukštis iš metalo pusės beveik nepriklauso nuo įtampos. Iš Fermio ir Dirako funkcijos (2.3) išplaukia, kad galinčių įveikti potencinį barjerą elektronų skaičius eksponentiškai priklauso nuo barjero aukščio. Tiksliau, padidėjus barjero aukščiui dydžiu ΔE, galinčių jį įveikti elektronų skaičius sumažėja exp(ΔE/kT) karto. Vadinasi, išorinė įtampa keičia elektronų srautą iš puslaidininkio į metalą (tiesioginė įtampa tą srautą padidina, o atgalinė sumažina), tačiau beveik nekeičia elektronų srauto iš metalo į puslaidininkį. Todėl Šotkio kontaktu tekančios srovės priklausomybė nuo išorinės įtampos U yra tokio pavidalo: U I = I s exp − 1 ; (4.6.14) kT čia Is yra vadinamoji soties srovė, kuri nusako pastovų elektronų srautą iš metalo į puslaidininkį, o eksponentinis dėmuo nusako priklausantį nuo išorinės įtampos elektronų srautą iš puslaidininkio į metalą. Kadangi pilnutinį potencialų skirtumą tarp metalo ir puslaidininkio (UK + U) sąlygoja nuskurdintojo sluoksnio erdvinis krūvis, tai aišku, kad, kintant tam potencialų skirtumui, turi keistis ir nuskurdintojo sluoksnio krūvis. Kadangi erdvinio krūvio tankis nuskurdintame sluoksnyje yra pastovus (jis lygus eND), tai pilnutinis to sluoksnio krūvis gali pasikeisti, tik pakitus nuskurdintojo sluoksnio storiui d. Vadinasi, kintant išorinei įtampai U, keičiasi ir nuskurdintojo sluoksnio storis d. Šis sąryšis gaunamas iš (4.6.12b) lygybės, pakeitus kontaktinį potencialų skirtumą UK pilnutiniu potencialų skirtumu UK + U: d=
2ε 0 ε |UK +U | . eN D
(4.6.15)
4.6.4.Paviršinių gaudyklių įtaka Šotkio kontakto savybėms Aukščiau buvo teigiama, kad Šotkio kontakto potencinio barjero aukštis yra lygus metalo ir puslaidininkio išlaisvinimo darbų skirtumui. Tikrovėje taip nėra, nes puslaidininkio savybės kontakto plokštumoje skiriasi nuo puslaidininkio savybių tūryje. Kadangi puslaidininkio
39 paviršiuje esančių atomų cheminiai ryšiai nėra įsotinti (t.y., dalis ryšių yra „nutraukti“), tie atomai persitvarko ir paviršiaus elektroninė konfigūracija pasikeičia. Tai pasireiškia papildomų energijos lygmenų atsiradimu draustinėje juostoje (kadangi šie lygmenys yra lokalizuoti ant puslaidininkio paviršiaus, tai juos galima vadinti „paviršiniais“ lygmenimis). Be to, ant puslaidininkio paviršiaus gali nusėsti pašaliniai atomai (oksidavimasis ir adsorbcija), kurie taip
d
V ak u u m o ly g m u o
U
K
< 0, U = 0. e |U
K
|
e |U
K
|
V ak u u m o ly g m u o
F
a
E F
E V ak u u m o ly g m u o
d
v
U K < 0, U > 0. V ak u u m o ly g m u o
e |U K + U
|E F
F
b
E
V ak u u m o ly g m u o
c
c
v
d U
K
< 0, U < 0.
V ak u u m o ly g m u o
|
e |U K + U F
c 24 pav.
E F
E
c
v
Šotkio kontakto energijos juostų diagrama termodinaminėje pusiausvyroje
40
d
V ak u u m o ly g m u o
U
K
< 0, U = 0. e |U
K
|
e |U
K
|
V ak u u m o ly g m u o
F
a
E F
E V ak u u m o ly g m u o
d
v
U K < 0, U > 0. V ak u u m o ly g m u o
e |U K + U
|E F
F
b
E
V ak u u m o ly g m u o
c
c
v
d U
K
< 0, U < 0.
V ak u u m o ly g m u o
|
e |U K + U F
c 24 pav.
E F
E
c
v
Šotkio kontakto energijos juostų diagrama termodinaminėje pusiausvyroje (a), prijungus tiesioginę įtampą (b) ir prijungus atgalinę įtampą (c).
41 pat sukuria papildomas elektronines būsenas. Šie reiškiniai turi didelę įtaką kontaktiniam potencialų skirtumui UK. Patirtis rodo, kad metalo ir puslaidininkio potencialų skirtumas dažniausiai būna tarp -0.4 V ir -0.9 V, ir šis kontaktinis potencialų skirtumas priklauso nuo kontakto gamybos technologijos. 4.6.5.Ominių ir Šotkio kontaktų modeliavimas Monte Karlo metodu 4.5 poskyryje buvo aprašytas krūvininkų atspindys nuo laisvojo paviršiaus ir išėjimas pro kontaktus. Tačiau aišku, kad ši taisyklė nėra pakankama kontaktų modeliavimui, nes ji nieko nesako apie krūvininkų įėjimą į įtaisą. Šiuo požiūriu ominių kontaktų modeliavimas skiriasi nuo Šotkio kontaktų modeliavimo. Kadangi ominiai kontaktai praktiškai nesudaro jokių kliūčių krūvininkų judėjimui, tai realiuose įtaisuose pagrindinių krūvininkų trūkumas prie ominių kontaktų yra greitai pašalinamas, ekstrahuojant iš kontakto trūkstamus krūvininkus. Todėl ominiai kontaktai modeliuojami tokiu būdu: jeigu viename iš priekontaktinių narvelių (pvz., narvelyje, kuris 20 pav. pažymėtas raide C) elektronų skaičius yra mažesnis už teigiamųjų donoro jonų skaičių (t.y., jeigu egzistuoja perteklinis teigiamas krūvis), tada tame narvelyje „sukuriama“ tiek elektronų, kad vėl būtų atstatytas elektrinis neutralumas. Tų elektronų greičiai turi būti nukreipti į puslaidininkio tūrį (t.y., tolyn nuo kontakto). Tačiau, jeigu egzistuoja perteklinis neigiamas krūvis (t.y., jeigu elektronų yra daugiau, negu priemaišinių jonų), tada nebandoma atstatyti elektrinio neutralumo, nes pertekliniai elektronai gali būti vėl išsklaidyti atgal į puslaidininkio tūrį [2, p. 184 – 185]. Elektronų judėjimo pro Šotkio kontaktus paprasčiausias modelis yra toks: nėra atliekami jokie veiksmai, kurie susiję su elektrinio neutralumo atstatymu. T.y., nėra modeliuojamas elektronų įėjimas į puslaidininkį pro Šotkio kontaktą: toks kontaktas tik sugeria elektronus [1, p. 128 – 129]. Aišku, kad toks modelis netinka atgalinės srovės pro Šotkio kontaktą skaičiavimui, nes tą srovę sukuria elektronų injekcija iš metalo į puslaidininkį (žr. 24c pav.). Tačiau praktikoje atgalinė srovė būna labai maža ir turi labai silpną įtaką elektrinio krūvio tankio bei potencialo pasiskirstymui puslaidininkiniame įtaise. Todėl, modeliuojant krūvio ir potencialo pasiskirstymą, net ir toks paprastas Šotkio kontaktų aprašymas yra priimtinas. Jeigu prie Šotkio kontakto yra prijungta pakankamai didelė tiesioginė įtampa (|U| >> kT/e), tada eksponentinis dėmuo srovės išraiškoje (4.6.14) yra žymiai didesnis už atgalinę srovę Is (kuri, kaip minėta, nėra įskaitoma), todėl srovės stiprio santykinė paklaida dėl atgalinės srovės nepaisymo yra maža. Reikia turėti omenyje, kad, modeliuojant dalelių išėjimą ir įėjimą pro kontaktus, yra neišvengiami pilnutinio dalelių skaičiaus įtaiso tūryje statistiniai svyravimai, net jeigu įtaisas veikia stacionarioje veikoje. Tokios krūvininkų skaičiaus fliuktuacijos stebimos ir realiuose puslaidininkiniuose įtaisuose. 4.7. Erdvinio krūvio tankio skaičiavimas Monte Karlo programoje Sprendžiant Puasono lygtį (4.2.2), reikia žinoti erdvinio krūvio tankio ρ priklausomybę nuo koordinačių x ir y. Tiksliau, turi būti žinomi krūvio tankiai koordinatinio tinklo mazguose (t.y., taškuose, kuriuose susikerta 20 pav. pavaizduotosios vertikalios ir horizontalios koordinatinės linijos). Kad būtų lengviau aprašyti šių krūvio tankių skaičiavimo metodiką, sudarysime antrąjį koordinatinį tinklą, kuris pavaizduotas 25 pav. punktyrinėmis linijomis. Kaip matome, pagrindinio koordinatinio tinklo (kuris pažymėtas ištisinėmis linijomis ir kuris sudaromas taip, kaip parodyta 20 pav.) mazgai yra antrojo koordinatinio tinklo narvelių centrai. Kad būtų trumpiau, toliau „mazgais“ vadinsime tik ištisinių linijų sankirtos taškus, o „narveliais“ – tik punktyrinio tinklo narvelius. Taip apibrėžus narvelius, jų skaičius yra lygus mazgų skaičiui, tačiau narveliai yra nevienodo dydžio: kampinių narvelių tūris yra keturis kartus mažesnis už pilno narvelio tūrį, o paviršinių narvelių tūris yra du kartus mažesnis už pilno narvelio tūrį (žr. 25 pav.).
42 Laikysime, kad puslaidininkyje yra tik vieno tipo laisvieji krūvininkai – elektronai – ir tik vieno tipo priemaišos – teigiamieji donorų jonai. Tada krūvio tankis mazge (i, j) yra lygus
M a z g a s ( 1 ,1 )
M a z g a s ( i ,1 )
N a r v e l i s ( 1 ,1 )
N a r v e lis (i ,1 )
M a z g a s ( 1 ,j)
N a rv e lis (1 ,j)
M a z g a s ( i ,j )
N a r v e l i s ( i ,j)
25 pav. Koordinatinio tinklo mazgai ir narveliai.
ρ i , j = e( N Di , j − ni , j ) ; (4.7.1) čia NDi,j yra donorų koncentracija mazge (i, j), o ni,j yra elektronų koncentracija mazge (i, j). Kadangi donorų jonai yra nejudrūs, tai donorų koncentracija nepriklauso nuo laiko, tačiau ji gali priklausyti nuo koordinatės (jeigu legiravimas yra netolygus). Donorų pasiskirstymas užduodamas, apibrėžiant įtaiso geometriją (žr. 4.4 poskyrį). Paprasčiausiame rezistoriaus arba Šotkio diodo modelyje galima laikyti, kad puslaidininkis legiruotas tolygiai, t.y., donorų tankis yra vienodas visuose mazguose: NDi,j = ND = const. Elektronų koncentracijos kiekviename mazge (ni,j) gali būti skaičiuojamos dviem būdais: I būdas (artimiausio mazgo metodas). Naudojant šį metodą, elektronų koncentracija kiekviename mazge prilyginama vidutinei elektronų koncentracijai atitinkamame narvelyje. Tuo tikslu dalelių skaičius kiekviename narvelyje (Ni,j) padauginamas iš elektronų skaičiaus vienai dalelei Npp ir padalinamas iš narvelio tūrio. Narvelio tūris – tai narvelio skerspjūvio ploto (Δx∙Δy) ir įtaiso gylio D sandauga. Taigi, naudojant šį būdą, elektronų koncentracija mazge (i, j) yra lygi N pp ni , j = N i , j ; (4.7.2) ∆x ⋅ ∆y ⋅ D Kadangi dalelių skaičius dažniausiai būna gana mažas (iki kelių dešimčių tūkstančių dalelių visame įtaise, arba iki kelių dešimčių dalelių viename narvelyje), tai yra neišvengiami dideli statistiniai dalelių skaičiaus kiekviename narvelyje svyravimai. Siekiant sumažinti šių statistinių fliuktuacijų įtaką krūvio tankiui, naudojamas kitas elektronų koncentracijos skaičiavimo būdas, kuris aprašytas žemiau. II būdas („elektronų debesies“ metodas). Naudojant šį metodą, laikoma, kad kiekvienos dalelės krūvis yra tolygiai pasiskirstęs erdvės srityje, kurios matmenys Δx ∙ Δy ∙ D ir kurios centre yra ta dalelė. Tos srities skerspjūvis parodytas 26 pav. (patamsintas kvadratas; 26 pav. atveju galioja
43 lygybė Δx = Δy, tačiau tai nėra būtinoji sąlyga). Skaičiuojant elektronų koncentracijas mazguose,
∆x
∆y
∆x (i, j)
(i+ 1 , j)
D alelė
∆y
(i, j+ 1 )
(i+ 1 , j+ 1 )
26 pav. „Elektronų debesies“ metodas, skaičiuojant elektronų koncentracijas mazguose. Punktyrinės rodyklės rodo mazgus, kuriems priskiriamos dalelės krūvio dalys (keturi patamsinti stačiakampiai). laikoma, kad kiekvienos dalelės krūvis yra „išdalintas“ tarp keturių narvelių (26 pav. atveju tai yra narveliai (i, j), (i+1, j), (i, j+1) ir (i+1,j+1)). Kiekvienam iš tų narvelių tenkanti krūvio dalis yra lygi su dalele susietojo stačiakampio ploto daliai, kuri priklauso atitinkamam narveliui. Šios keturios dalys – tai sritys, į kurias tą stačiakampį dalina punktyrinės tiesės (žr 26 pav.). Punktyrinės rodyklės parodo atitinkamybę tarp tų keturių sričių ir mazgų, kuriuose skaičiuojamas erdvinio krūvio tankis. 4.8. Puasono lygties sprendimas ir lauko stiprio skaičiavimas baigtinių skirtumų metodu Puasono lygtis (4.2.2) dažniausiai sprendžiama baigtinių skirtumų metodu, kurio esmė yra ta, kad išvestinės yra pakeičiamos baigtinių skirtumų santykiais. Taikant šį metodą, antrosios išvestinės, kurios yra Puasono lygties kairiojoje pusėje, yra išreiškiamos šitaip: ϕ i +1, j − 2ϕ i , j + ϕ i −1, j ∂ϕ ≈ ; (4.8.1a) 2 ∂x x , y (∆x) 2 i j
ϕ i , j +1 − 2ϕ i , j + ϕ i , j −1 ∂ϕ ≈ ; 2 ∂y x , y (∆y ) 2 i j
(4.8.1b)
čia žymuo φi,j reiškia potencialo vertę taške, kurio koordinatės xi, yj (t.y., pirmasis indeksas prie „φ“ nusako mazgo numerį X kryptimi, o antrasis indeksas – mazgo numerį Y kryptimi). Įrašę (4.8.1a,b) į Puasono lygtį (4.2.2), gauname tiesinių algebrinių lygčių sistemą:
ϕ i +1, j − 2ϕ i , j + ϕ i −1, j ( ∆x )
2
+
ϕ i , j +1 − 2ϕ i , j + ϕ i , j −1 (∆y )
2
=−
ρ i, j ε 0ε
;
(4.8.2)
44 i = 1, 2, ..., K, j = 1, 2, ..., L, išskyrus mazgus prie elektrodų. Čia ρi,j yra erdvinio krūvio tankis mazge (i,j), K yra mazgų skaičius X kryptimi, o L yra mazgų skaičius Y kryptimi. Pilnutinis lygčių skaičius turi būti lygus nežinomųjų potencialų skaičiui. Šis skaičius yra šiek tiek mažesnis už pilnutinį mazgų skaičių KL, nes mazgų, kurie yra prie elektrodų, potencialai yra užduoti iš anksto (kiekvieno tokio mazgo potencialas yra lygus atitinkamo elektrodo potencialui). Kitais žodžiais, elektrodų potencialai naudojami kaip Puasono lygties kraštinės sąlygos. Todėl (4.8.2) lygtis reikia spręsti tik toms indeksų i ir j poroms, kurios atitinka vidinius mazgus arba mazgus, esančius įtaiso laisvajame paviršiuje. Čia reikia pastebėti, kad, norint teisingai sumodeliuoti 4.6 poskyryje aprašytąjį nuskurdinimo reiškinį prie Šotkio kontakto, į mazgų, kurie yra prie tokio kontakto, potencialą turi įeiti ir kontaktinis potencialų skirtumas UK. Tačiau yra žinoma, kad kontaktinis potencialų skirtumas negali būti tiesiogiai išmatuotas voltmetru (nes jį tiksliai kompensuoja neelektrostatinė elektrovaros jėga). Taigi, Šotkio kontakto potencialas, kurį „mato“ įtaiso elektronai, turi skirtis nuo to kontakto tiesiogiai matuojamo potencialo, kurį matytų eksperimentatorius. Pvz., jeigu duotasis kontaktas yra įžemintas, tada jo „išorinis“ potencialas lygus nuliui. Tačiau, jeigu tai yra Šotkio kontaktas, kurio UK = -0.7 V, tada, sprendžiant Puasono lygtį, reikia laikyti, kad visų mazgų, kurie yra ant to kontakto, potencialai yra lygūs -0.7 V. Dėl šios priežasties, užduodant Šotkio kontakto parametrus, kartu su 4.4 poskyryje minėtaisiais geometriniais parametrais reikia užduoti ir kontaktinį potencialų skirtumą UK. Lygčių (4.8.2) kairioji pusė priklauso tik nuo penkių kaimyninių mazgų potencialų: mazgo (i,j) ir keturių mazgų, kurie jį supa: (i–1, j), (i+1, j), (i, j–1), (i, j+1). Gali iškilti klausimas, ką reikia daryti tuo atveju, kai kuris nors iš pastarųjų keturių mazgų atsiduria įtaiso išorėje, t.y., kai kuris nors indeksas tampa lygus 0 arba pirmasis indeksas tampa lygus K+1 arba antrasis indeksas tampa lygus L+1 (taip atsitinka tada, kai mazgas (i, j) yra įtaiso laisvajame paviršiuje). Vienas iš galimų atsakymų yra „veidrodinio atspindžio“ artinys: galima laikyti, kad tokio „išorinio“ mazgo potencialas yra lygus jo veidrodinio atspindžio potencialui. Pvz., mazgo (0, j) potencialas lygus mazgo (2, j) potencialui (φ0,j = φ2,j), o mazgo (K+1, j) potencialas yra lygus mazgo (K–1, j) potencialui (φK+1,j = φK-1,j). Naudojantis aukščiau suformuluotomis taisyklėmis, galima vienareikšmiškai išspręsti tiesinių algebrinių lygčių sistemą (4.8.2), t.y., apskaičiuoti visų mazgų potencialus φi,j, kai yra žinomi krūvio tankiai tuose mazguose ρi,j (šių krūvio tankių skaičiavimas buvo aprašytas 4.7 poskyryje). Šią lygčių sistemą gali sudaryti iki kelių dešimčių tūkstančių lygčių (pvz., kai K = L = 100, lygčių skaičius yra artimas KL = 10000). Tokias dideles tiesinių algebrinių lygčių sistemas įprasta spręsti artutiniais metodais. Paprasčiausias iš šių metodų yra vadinamasis Gauso ir Zeidelio metodas (Gauss-Seidel method). Tai yra vienas iš iteracinių metodų, t.y., prie galutinio sprendinio artėjama nuosekliais „žingsniais“ (iteracijom). Kiekvieno žingsnio rezultatas – visų mazgų potencialai. Kiekvieno mazgo potencialas gaunamas, išreiškus φi,j iš (4.8.2) lygčių: (ϕ i −1, j + ϕ i +1, j ) /(∆x) 2 + (ϕ i , j −1 + ϕ i , j +1 ) /(∆y ) 2 + ρ ij /(ε 0 ε ) ϕi, j = . (4.8.3) 2 /( ∆x) 2 + 2 /( ∆y ) 2 Kaip matome, mazgo (i, j) potencialas išreiškiamas keturių kaimyninių mazgų potencialais. Priklausomai nuo potencialų skaičiavimo tvarkos, kai kurie iš minėtųjų keturių potencialų gali būti jau atnaujinti, o kiti dar gali būti imami iš ankstesniosios iteracijos. Pvz., jeigu potencialai skaičiuojami i ir j didėjimo tvarka (t.y., φ1,1, φ2,1, ..., φK,1; φ1,2, φ2,2, ..., φK,2; ...; φ1,L, φ2,L, ..., φK,L), tada, skaičiuojant potencialą φi,j, potencialai φi-1,j ir φi,j-1 jau yra atnaujinti, o potencialai φi+1,j ir φi,j+1 – dar ne. Gauso ir Zeidelio metodo ypatybė yra ta, kad, skaičiuojant reiškinį (4.8.3), nereikia kreipti dėmesio, kurie iš naudojamų potencialų priklauso einamajai iteracijai (jau yra atnaujinti), o kurie – praeitai iteracijai: su visais potencialais elgiamasi vienodai, ir ankstesniosios iteracijos potencialų nereikia saugoti atmintyje. Taigi, kiekvienoje iteracijoje pakanka tik apskaičiuoti reiškinį (4.8.3) visiems vidiniams mazgams ir visiems mazgams, kurie yra laisvajame paviršiuje
45 (ne prie elektrodų). Tokios iteracijos kartojamos tol, kol potencialai stabilizuojasi. T.y., iteracinis procesas nutraukiamas tada, kai nustatoma, kad duotosios iteracijos rezultatas (visų mazgų potencialai) skiriasi nuo ankstesniosios iteracijos potencialų mažiau už tam tikrą iš anksto pasirinktą mažą dydį. Pvz., iteracijas galima baigti, kai didžiausias mazgo potencialo pokytis tampa mažesnis už 10-8 V (tokiu atveju visų mazgų potencialai būtų nustatyti 10-8 V tikslumu). Apskaičiavus visų mazgų potencialus, galima apskaičiuoti ir elektrinio lauko stiprio pasiskirstymą: elektrinio lauko stiprio dedamosios viduje stačiakampio, kurio kampuose yra mazgai (i, j), (i+1, j), (i, j+1) ir (i+1, j+1), yra lygios ϕ i , j − ϕ i , j +1 ϕ i , j − ϕ i +1, j Ey ≈ , . (4.8.4) Ex ≈ ∆y ∆x 4.9. Laiko žingsnio Δt ir koordinatinio tinklo žingsnių Δx, Δy pasirinkimas Kaip aukščiau minėta, Puasono lygtis sprendžiama diskretiems laiko momentams, kurie skiriasi vienas nuo kito vadinamuoju „laiko žingsniu“ Δt. Siekiant užtikrinti Monte Karlo modeliavimo proceso stabilumą ir pakankamai tikslius rezultatus, reikia naudoti kuo mažesnį laiko žingsnį Δt ir kuo mažesnius koordinatinio tinklo žingsnius Δx, Δy. Laiko žingsnis Δt turi būti toks, kad per laiką Δt elektrinio lauko pasiskirstymas įtaiso tūryje nespėtų žymiai pasikeisti (nes modeliavimo metu laikoma, kad laiko intervale nuo t-Δt iki t krūvininkai juda stacionariame elektriniame lauke, kuris atitinka laiko momentu t - Δt buvusį erdvinio krūvio pasiskirstymą). Erdviniai žingsniai Δx ir Δy turi būti žymiai mažesni už tam tikrą būdingąjį atstumą, kuriame elektrinis laukas pastebimai pasikeičia (nes tik tada galima naudoti baigtinių skirtumų metodą, t.y., apytiksles lygybes (4.8.1a,b) ir (4.8.4)). Kuo mažesnis Δt, tuo dažniau reikia spręsti Puasono lygtį, o Δx ir Δy lemia mazgų skaičių ir tuo pačiu – skaičiavimų apimtį, sprendžiant Puasono lygtį baigtinių skirtumų metodu. Taigi, dydžių Δt, Δx ir Δy mažinimas yra susijęs su skaičiavimų trukmės didėjimu. Praktikoje visada siekiama kompromiso tarp skaičiavimų trukmės ir tikslumo. Žemiau aprašyti kriterijai, kuriais remiantis, pasirenkami minėtieji žingsniai. Laiko žingsnis Δt turi būti mažesnis už atvirkštinį plazminį dažnį ωp, t.y., 1 ∆t < . (4.9.1) ωp Plazminis dažnis – tai laisvųjų elektronų kolektyvinių virpesių teigiamųjų jonų elektriniame lauke dažnis. Šiuos virpesius galima įsivaizduoti taip. Jeigu visus puslaidininkiniame įtaise esančius elektronus paslinktume viena kryptimi vienodu mažu atstumu, tada viename įtaiso paviršiuje atsirastų nesukompensuotasis neigiamas krūvis, o kitame – toks pats teigiamas krūvis. Todėl atsirastų elektrinis laukas, kuris stengtųsi grąžinti elektronus į pradinę padėtį. Pašalinus išorinį poveikį, minėtasis elektrinis laukas sukeltų visų laisvųjų elektronų kolektyvinius virpesius. Šių virpesių dažnis yra plazminis dažnis. Plazminis dažnis yra lygus e2n ωp = ; (4.9.2) ε 0 εm * čia m* yra elektrono efektinė masė, ε yra dielektrinė skvarba, o n yra elektronų koncentracija. Atvirkštinis plazminis dažnis 1/ωp apytiksliai nusako mažiausią įmanomą laiką, per kurį elektronų koncentracija duotajame erdvės taške gali žymiai pasikeisti. Būtent todėl reikia, kad galiotų sąlyga (4.9.1): ši sąlyga užtikrina, kad elektrinio lauko pokytis per laiką Δt yra nežymus. Elektronų koncentracija n, kuri įeina į (4.9.2), yra kintama. Skaičiuojant plazminį dažnį (4.9.2), reikia naudoti didžiausią įmanomą elektronų koncentraciją įtaise. Kadangi elektrinio neutralumo sąlygomis elektronų koncentracija yra lygi donorų jonų koncentracijai, tai (4.9.2) reiškinyje vietoj n galima naudoti didžiausią donorų koncentraciją. Jeigu puslaidininkis turi kelis elektronų energijos slėnius, kurie skiriasi elektronų efektinėm masėm, tada reikia naudoti mažiausią
46 efektinę masę. Pvz., GaAs atveju mažiausia efektinė masė yra Γ slėnyje (m* = 0.067m0, kur m0 = 9.1∙10-31 kg yra elektrono masė vakuume), o ε = 12.9. Tada, laikant, kad didžiausias legiravimo laipsnis yra 5∙1017 cm-3, plazminis dažnis (4.9.2) yra lygus maždaug 4.3∙1013 s-1. Todėl tokiu atveju laiko žingsnis Δt turėtų būti mažesnis už 2∙10-14 s = 0.02 ps. Aplink kiekvieną teigiamąjį joną susidaro laisvųjų elektronų debesys, kuris dalinai ekranuoja to jono elektrinį lauką. Atstumas, kuriame tie pertekliniai elektronai ekranuoja didžiąją dalį jono elektrinio lauko, – tai vadinamasis Debajaus ekranavimo nuotolis (arba tiesiog „Debajaus nuotolis“), kuris lygus ε εk T (4.9.3) λD = 0 2 B ; e n čia kB yra Bolcmano konstanta, o T yra absoliutinė temperatūra. Debajaus nuotolis – tai mažiausias atstumas, kuriame elektronų koncentracija gali žymiai pasikeisti. Kadangi elektrinį lauką lemia erdvinio krūvio pasiskirstymas, tai Debajaus nuotolį galima aiškinti ir kaip mažiausią atstumą, kuriame elektrinis laukas gali žymiai pasikeisti. Todėl Debajaus nuotolį λD reikia naudoti kaip koordinatinio tinklo žingsnių Δx ir Δy pasirinkimo kriterijų. T.y., atstumai Δx ir Δy turi būti mažesni už λD: ∆x, ∆y < λ D . (4.9.4) Kaip ir plazminis dažnis (4.9.1), Debajaus nuotolis (4.9.3) turi būti skaičiuojamas, naudojant didžiausią elektronų koncentraciją įtaiso modelyje. GaAs atveju, kai n = 5∙1017 cm-3, o T = 300 K, Debajaus nuotolis lygus λD = 60 Å. Naudojant sąlygas (4.9.1) ir (4.9.4), laiko žingsnį Δt ir koordinatinio tinklo žingsnį (Δx, Δy) galima pasirinkti nepriklausomai vieną nuo kito. Tačiau tada, priklausomai nuo dalelių greičio, dalelių nueitas kelias per laiką Δt galėtų tapti didesnis už Δx arba Δy. Tai reikštų, kad per laiką Δt žymiai pasikeičia erdvinio krūvio tankio pasiskirstymas įtaiso tūryje, ir nustotų galioti viena iš modeliavimo prielaidų: kad laiko tarpe tarp dviejų Puasono lygties sprendimų (nuo t – Δt iki t) elektronai juda stacionariame elektriniame lauke. Todėl, pasirinkus dydžių Δt, Δx ir Δy vertes pagal sąlygas (4.9.1) ir (4.9.4), dar reikia patikrinti, ar galioja sąlyga lmax < Δx, lmax < Δy; (4.9.5) čia lmax yra didžiausias atstumas, kurį gali nueiti elektronas per laiką Δt. Šis atstumas lygus lmax = vmax ∙ Δt, (4.9.6) 8 kur vmax yra didžiausias elektrono judėjimo greitis puslaidininkyje (≈10 cm/s). Jeigu sąlyga (4.9.5) negalioja, reikia sumažinti Δt, kad ta sąlyga galiotų. Kitas būdas – padidinti Δx arba Δy (tačiau tai gali būti neįmanoma, nes Δx ir Δy turi dar tenkinti ir sąlygą (4.9.4)). 4.10. Naujų dalelių kūrimas. Įtaiso voltamperinių charakteristikų skaičiavimas Modeliuojant puslaidininkinį įtaisą Monte Karlo metodu, naujas daleles reikia kurti dviejuose modeliavimo etapuose: 1) užduodant pradinį krūvininkų pasiskirstymą įtaiso viduje; 2) palaikant elektrinį neutralumą prie ominių kontaktų (žr. 4.6.5 poskyrį). Pradinis krūvininkų pasiskirstymas dažniausiai parenkamas taip, kad erdvinio krūvio tankis visuose įtaiso taškuose būtų artimas nuliui. Tai reiškia, kad elektronų skaičius kiekviename narvelyje turi būti lygus donorų jonų skaičiui tame narvelyje (kadangi su kiekviena dalele yra susieti Npp elektronų, tai dalelių skaičius yra Npp kartų mažesnis). Analogiškai, palaikant elektrinį neutralumą prie ominio kontakto, reikia generuoti tiek dalelių, kiek jų trūksta iki elektrinio neutralumo atitinkamame priekontaktiniame narvelyje (pvz., narvelyje, kuris 25 pav. pažymėtas (i, 1)). Generuojant daleles duotajame narvelyje, dalelių y koordinatė prilyginama 0 arba H (t.y., naujosios dalelės yra atitinkamo kontakto paviršiuje), o x koordinatės pasirenkama atsitiktinai (tačiau tik duotojo narvelio ribose).
47 Kitas klausimas yra generuojamų dalelių energijos ir banginiai vektoriai. Dalelių energijos turi atitikti Bolcmano skirstinį. Tai reiškia, kad kiekvienos dalelės energija apskaičiuojama, naudojant atsitiktinį skaičių r, kuris tolygiai pasiskirstęs tarp 0 ir 1: E k = −1.5 ⋅ k BT ln(r ) . (4.10.1) Žinant dalelės energiją Ek, jos banginio vektoriaus modulis k (bangos skaičius) išreiškiamas iš (1.3.5): 2m * Ek (1 + αEk ) . (4.10.2) k= Naujai generuojamų dalelių bangos vektoriaus krypčių pasiskirstymas turi būti izotropinis (t.y., visos kryptys yra lygiavertės). Tai reiškia, kad kampai φ ir θ, kurie nusako bangos vektoriaus kryptį (žr. 5 pav.), turi būti skaičiuojami, naudojant du atsitiktinius skaičius r1 ir r2, kurie tolygiai pasiskirstę tarp 0 ir 1: φ = 2πr1 , (4.10.3a) cosθ = 1 − 2r2 . (4.10.3b) Apskaičiavus φ ir θ, bangos vektoriaus komponentės skaičiuojamos šitaip: k x = k sin θ cos φ , k y = k sin θ sin φ ,
(4.10.4)
k z = k cosθ . Tačiau, jeigu dalelė sukuriama prie ominio kontakto, siekiant atstatyti jo elektrinį neutralumą, tada jos greičio vektorius turi būti nukreiptas į įtaiso tūrį (priešingu atveju ta dalelė tuoj pat išeitų pro tą kontaktą). Tai reiškia, kad tuo atveju, kai ominis kontaktas yra ant viršutinio paviršiaus (y = 0), dalelė turi judėti į apačią (ky > 0), o tuo atveju, kai kontaktas yra ant apatinio paviršiaus (y = H), dalelė turi judėti į viršų (ky < 0). Todėl, sukūrus tokią dalelę, reikia patikrinti, ar ky tenkina minėtąją nelygybę. Jeigu ši nelygybė negalioja, tada reikia pakeisti ky ženklą. Jeigu visų kontaktų potencialai yra pastovūs, tada Monte Karlo modeliavimo metu anksčiau ar vėliau bus pasiekta būsena, kurioje visų mazgų potencialai ir krūvio tankiai juose yra apytiksliai pastovūs (išskyrus atsitiktinius svyravimus). Tai yra įtaiso stacionarioji veika. Šioje veikoje galima skaičiuoti kiekvienu kontaktu tekančią srovę. Tuo tikslu reikia skaičiuoti pilnutinį pro kiekvieną kontaktą išėjusių elektronų skaičių. Be to, ominių kontaktų atveju reikia skaičiuoti ir prie to kontakto sukurtų elektronų skaičių. Kontakto srovė gaunama, padauginus šių dviejų skaičių skirtumą iš elektrono krūvio ir padalinus iš modeliuojamojo proceso trukmės. Atlikus tokius skaičiavimus įvairiems elektrodų potencialams, gaunamos kontaktų srovių priklausomybės nuo įtampų tarp elektrodų – voltamperinės charakteristikos. 4.11. Puslaidininkinio įtaiso Monte Karlo modeliavimo programos struktūrinė schema Naudojantis tuo, kas pasakyta 4.2–4.10 poskyriuose apie puslaidininkinių įtaisų modeliavimą, galima sudaryti visos programos struktūrinę schemą. Ši schema pavaizduota 27a,b pav. 27a pav. parodytas bendrasis programos vaizdas. 27b pav. parodyta svarbiausioji programos dalis – vieno elektrono judėjimo modeliavimas laiko tarpe tarp dviejų Puasono lygties sprendimų. 27c pav. pavaizduoti paruošiamieji veiksmai, kurie atliekami programos pradžioje. 27a–c pav. parodyti ir vardai paprogramių, kuriose atliekamas kiekvienas veiksmas (tie vardai atitinka vieną konkrečią programą – MonteCarlo5.dll). Aptarsime 27b pav. struktūrinę schemą. Akivaizdu, kad ši schema yra iš esmės tokia pati, kaip ir 19 pav. pavaizduotoji daugiadalelio Monte Karlo metodo schema, nors ir šiek tiek smulkesnė (joje yra išskirti atsitiktinių skaičių generavimo momentai, virtualioji sklaida atskirta nuo tikrosios sklaidos ir parodyta, kad santykinės sklaidos spartos Λj yra imamos iš sklaidos spartų lentelės, o ne skaičiuojamos analiziškai po kiekvieno sklaidos įvykio). Jeigu nepaisysime
48 pakeitimų, kurie susiję su modeliavimo proceso žingsnių smulkesniu aprašymu, tada, lyginant su 19 pav., 27b pav. schemoje yra tik du pakeitimai. Tie pakeitimai atspindi kai kurias puslaidininkinio įtaiso modeliavimo ypatybes: 1) Baigus skaičiuoti elektrono būseną laisvojo lėkio pabaigoje, reikia patikrinti, ar dalelė yra „aktyvi“, t.y., ar ji yra neišėjo pro kontaktą. Kaip minėta 4.5 poskyryje, dalelės „aktyvumo“ indikatoriaus vaidmenį gali atlikti slėnio numeris. Pvz., programoje MonteCarlo5.dll išėjusių pro kontaktą dalelių energijos slėnio numeris prilyginamas 9. Kai dalelė tampa „neaktyvia“, su ja nustojama atlikti visus veiksmus, kurie susiję su dreifo ir sklaidos modeliavimu. Vėliau visos dalelės, kurių slėnio numeris lygus 9, bus pašalintos iš modelio (žr. 27a pav.). 2) Joninė priemaišinė sklaida yra vienintelis iš aukščiau aprašytų sklaidos procesų, kurio sparta priklauso nuo elektronų koncentracijos n (ji įeina į Debajaus atvirkštinio ekranavimo nuotolio išraišką (2.2.6)) ir nuo jonų koncentracijos Nj (ji įeina į sklaidos spartos išraišką (2.2.15)). Kadangi bendruoju atveju elektronų koncentracija yra kintama, o jonų koncentracija gali būti skirtinga įvairiose įtaiso vietose (netolygiojo legiravimo atveju), tai joninės sklaidos spartą neįmanoma apskaičiuoti iš anksto, kaip kitiems sklaidos procesams, kurių sparta priklauso tik nuo elektrono energijos. Todėl joninės sklaidos spartą reikia skaičiuoti analiziškai (pagal formulę (2.2.15)) po kiekvieno sklaidos įvykio (o ne imti iš sklaidos spartų lentelės, kaip tai daroma visų kitų sklaidos tipų atveju). Modeliavimo pabaigoje pilnutinis išėjusių pro kiekvieną kontaktą dalelių skaičius atimamas iš pilnutinio sukurtų prie to kontaktų dalelių skaičiaus, po to šis skirtumas padauginamas iš vienos dalelės krūvio eNpp ir padalinamas iš tmax. Rezultatas yra kiekvieno kontakto srovės stipris. Voltamperinė charakteristika gaunama, pakartojus visą modeliavimo procesą kelioms kontaktų (arba vieno kontakto) potencialų vertėms.
Pradžia
49
Medžiagos parametrų, įtaiso geometrinės konfigūracijos skaitymas, elektronų pradinio pasiskirstymo skaičiavimas ir kiti paruošiamieji veiksmai (žr. 27c pav.)
Sugeneruojami visų dalelių sklaidos momentai tsc(i) (i = 1, 2, ..., N)
t0 = 0
i=1
i-tosios dalelės judėjimo modeliavimas laiko tarpe nuo t0 iki t0+Δt (žr. 27b pav.)
i=i+1 Taip
i≤N Ne
Išėjusių pro kontaktus dalelių pašalinimas ir trūkstamų dalelių įterpimas narveliuose, kurie yra prie ominių kontaktų; naujai sukurtų prie kiekvieno ominio kontakto dalelių skaičiavimas (renew). Krūvio tankio kiekviename mazge skaičiavimas (charge) Puasono lygties sprendimas baigtinių skirtumų metodu ir elektrinio lauko stiprio kiekviename narvelyje skaičiavimas (poisson)
t0 = t0 + Δt Taip
t0 < tmax Ne
Kiekvienu kontaktu tekančios srovės skaičiavimas. Skaičiavimo rezultatų išvedimas
Pabaiga 27a pav. Puslaidininkinio įtaiso Monte Karlo modeliavimo programos MonteCarlo5.dll struktūra. Pastorintu šriftu užrašyti vardai paprogramių, kuriose atliekami nurodytieji veiksmai (jeigu paprogramės vardo nėra, tai reiškia, kad tas veiksmas atliekamas pagrindinėje programoje).
50
t = t0
tsc ( i ) > t0 + ∆ t
tsc( i ) = t + τ
T aip
t = t0 + ∆ t
N e S u g e n e ru o jam as a ts i ti k ti n i s s k a i č i u s r 1
A p sk aič iu o jam a laisv o jo lė k io tr u k m ė τ ( flig h ttim e)
t = tsc( i ) S u g en e ru o jam i a ts i ti k ti n i a i s k a i č i a i r 3 i r r 4
A p s k a i č i u o j a m a e le k tr o n o b ū sen a p o sk laid o s ( fin a lsta te)
N e
T a ip
A p s k a i č i u o j a m a e l e k tr o n o b ū sen a p o laisv o jo lėk io . J e i g u d a l e lė iš ė j o p r o k o n ta k tą , tu o m e t n u s ta to m a s to k o n ta k to n u m e r i s ( d r ift, en er g y )
S k l a i d a y r a v i r tu a l i o j i ( t.y ., r 2 > Λ n) ?
S u g e n e ru o jam as a ts i ti k ti n i s s k a i č i u s r 2
P asiren k am as s k la i d o s ti p a s ( sc a tter ) D alelė išėjo p r o k o n ta k tą ?
Λ j v e r č i ų l e n te l ė j e k i e k v i e n o s r ū š i e s s k l a i d a i ( j = 1 , 2 , ..., n ) r a n d a m a v e r tė , k u r i a ti ti n k a e l e k tr o n o b ū s e n ą
A p sk aič iu o jam a jo n in ės p riem aišin ės s k l a i d o s s a n ty k i n ė s p a r ta Λ 1 = W 1/ Γ ( r a te _ io n ) P o to : Λ j = Λ j + Λ 1 ( j = 2 , ..., n )
T aip
N e
T aip
I š ė ju s ių p r o k o n ta k tą d alelių sk aič iu s p a d i d i n a m a s v i e n e tu
t < t0 + ∆ t N e
27b pav. i-tosios dalelės judėjimo laiko tarpe nuo t0 iki t0 + Δt modeliavimas puslaidininkinio įtaiso Monte Karlo modeliavimo programoje MonteCarlo5.dll. Pastorintu šriftu užrašyti vardai paprogramių, kuriose atliekami nurodytieji veiksmai (jeigu paprogramės vardas nenurodytas, tai reiškia, kad tas veiksmas atliekamas pagrindinėje programoje).
51
Medžiagos parametrų ir įtaiso geometrinės konfigūracijos skaitymas (readParms)
Aktyviųjų sklaidos tipų skaičiaus n ir juos atitinkančių energijos pokyčių bei slėnių porų nustatymas (scatterTypes)
Visų sklaidos tipų, išskyrus joninę priemaišinę sklaidą, spartų (tiksliau, tų spartų sumų Λn) verčių lentelės sudarymas (rates)
Atsitiktinių skaičių generatoriaus inicializavimas
Dalelių pradinių būsenų (t.y., pradinių bangos vektorių ir pradinių energijų) bei pradinių koordinačių generavimas (initia)
Pradinio krūvio tankio kiekviename mazge skaičiavimas (charge)
Puasono lygties sprendimas baigtinių skirtumų metodu ir pradinio elektrinio lauko stiprio kiekviename narvelyje skaičiavimas (poisson)
27c pav.
Paruošiamieji veiksmai, vykdant puslaidininkinio įtaiso Monte Karlo modeliavimo programą MonteCarlo5.dll.
52
Priedas A. Viendalelė Monte Karlo programa MonteCarlo3.dll A.1. Bendros pastabos apie viendalelio Monte Karlo metodo programos sudarymą Su kiekvienu sklaidos tipu turi būti susietas jo identifikatorius. Pvz., 1 – joninė priemaišinė sklaida, 2 – polinė fononinė sklaida, 3 – sklaida akustiniais fononais, 4 – sklaida optiniais fononais L slėnyje, 5 – sklaida tarp Γ ir L slėnių, 6 – sklaida tarp Γ ir X slėnių, 7 – sklaida tarp skirtingų L slėnių, 8 – sklaida tarp L ir X slėnių, 9 – sklaida tarp skirtingų X slėnių. 10 – sklaida tarp dviejų X slėnių, kurie yra priešinguose Brijueno zonos kraštuose. 11 – sklaida tarp dviejų gretimų X slėnių (sklaida Nr.10 ir Nr. 11 yra sklaidos Nr. 9 atskirieji atvejai). Jeigu sklaidoje dalyvauja optiniai fononai (procesai 2 ir 4 – 11), tada sklaida yra netamprioji, t.y., elektrono energijos pokytis priklauso nuo to, ar fononas sugeriamas, ar emituojamas. Vadinasi, kiekvienas iš šių procesų tikrovėje atitinka dviejų galimų procesų porą, kurioje vienas procesas atitinka fonono sugertį, o kitas – fonono emisiją. Taigi, jeigu vyksta 1 – 9 tipo sklaida, tada iš viso egzistuoja 2 + 7∙2 = 16 sklaidos tipų. Lankstesniam sistemos aprašymui turėtų būti numatyta galimybė užduoti, kurie sklaidos procesai vyksta, o kurie – ne. Tai galima pasiekti, pvz., kiekvienam iš minėtųjų sklaidos tipų pradinių duomenų faile priskyrus loginį kintamąjį, kurio vertė 1 reiškia, kad šis procesas vyksta, o vertė 0 reiškia, kad šis procesas nevyksta. Pagal šiuos kintamuosius programa turėtų nustatyti vykstančių („aktyviųjų“) procesų skaičių nScatter, sunumeruoti juos (iScatter = 1, 2, ..., nScatter) ir kiekvienam iš jų apskaičiuoti visus dydžius (koeficientus), kurie reikalingi, skaičiuojant to proceso spartą. Šie koeficientai bendruoju atveju priklauso nuo pradinio slėnio. Vadinasi, kiekvienos rūšies koeficientai sudaro dvimatį masyvą Coef[iValley][iScatter] (iValley = 1, 2, 3); čia pirmasis indeksas (iValley) nusako pradinį slėnį (pvz., 1 atitinka Γ slėnį, 2 – L slėnį, 3 – X slėnį). Koeficientų Coef rūšys yra šios: • Vykstančio („aktyviojo“) proceso identifikatorius (sklaidos tipas) iScat. Pvz., galima būtų naudoti aukščiau užrašytus numerius. Jeigu procese dalyvauja optiniai fononai, tada fonono emisiją galima susitarti žymėti teigiamu identifikatoriumi, o fonono sugertį – neigiamu identifikatoriumi. Pvz., 2 galėtų reikšti polinę fononinę sklaidą, išspinduliuojant fononą, o -2 – polinę fononinę sklaidą, sugeriant fononą. • Elektrono energijos pokytis, vykstant duotosios rūšies sklaidai, energyIncr. Procesų 1 ir 3 atveju šis pokytis lygus nuliui (akustinę fononinę sklaidą galima apytiksliai laikyti tampriąja), o procesų 2 ir 4 – 11 atveju jis yra lygus arba priešingas fonono energijai: ± ω . Reikia turėti omenyje, kad visų rūšių sklaidos procesų sparta priklauso nuo skirtumo tarp elektrono energijos ir slėnio energijos minimumo (žr. sklaidos spartų išraiškas). Todėl skaičiavimų metu elektrono energiją racionaliausia visada atskaityti nuo slėnio, kuriame jis yra (arba kuriame jis atsiduria po sklaidos), energijos minimumo. Todėl procesų 5, 6 ir 8 atveju prie ± ω dar reikia pridėti pradinio ir galutinio slėnių energijų skirtumą. • Galutinis slėnis, kuriame atsiduria elektronas, įvykus duotosios rūšies sklaidai, iFinalValley. Sklaidos 1 – 4 atveju galutinis slėnis lygus pradiniam slėniui (t.y., iValley), o sklaidos 5 – 11 atveju galutinis slėnis vienareikšmiškai priklauso nuo sklaidos tipo iScat ir pradinio slėnio
53 iValley . Pvz., jeigu iScat = ±5, o iValley = 2, tada iFinalValley = 1 (šuolis L → Γ). Jeigu iScat = ±5, o iValley = 1, tada iFinalValley = 2 (šuolis Γ → L). Pastaba: Siekiant palengvinti programos skaitymą ir derinimą, pagrindinėms fizikinėms ir matematinėms konstantoms reikėtų priskirti lengvai suprantamus žymėjimus. Visos reikalingos konstantos su žymėjimų pavyzdžiais yra pateiktos žemiau. Medžiagos parametrams taip pat patartina priskirti lengvai suprantamus vardus, pvz., eff_mass[3]. Pagrindinės konstantos, kurios reikalingos, skaičiuojant sklaidos spartą Prasmė Skaičius "pi" Elektrono krūvis Elektrinė konstanta Bolcmano konstanta Elektronvoltais išreikšta Bolcmano konstanta Elektrono masė vakuume Planko konstanta Elektronvoltais išreikšta Planko konstanta Redukuotoji Planko konstanta Elektronvoltais išreikšta redukuotoji Planko konstanta Šviesos greitis vakuume
Žymėjimas π e ε0 k k/e m h h/e = h /(2π )
/e c
Vertė 3.14159265358979324 1.6021892∙10-19 C 8.8541878∙10-12 F/m 1.380658∙10-23 J/K 8.6173218∙10-5 eV/K 9.1093897∙10-31 kg 6.626176∙10-34 J∙s 4.1357013∙10-15 eV∙s 1.0545886∙10-34 J∙s 6.582173∙10-16 eV∙s 299792458 m/s
Kintamasis pi elch eps0 boltz boltz_el elmass planck planck_el planck_red planck_red_el vel_light
Elektronvoltais išreikštos Bolcmano ir Planko konstantos naudingos tada, kai programa operuoja elektronvoltais išreikštom elektronų ir fononų energijom. Be medžiagos parametrų ir temperatūros, pradinių duomenų faile turi būti pateikti keli modeliavimo proceso valdymo parametrai. Šie parametrai yra: • Elektrinio lauko stiprio ribinės vertės ir verčių skaičius. Šie parametrai reikalingi todėl, kad modeliavimo tikslas – ištirti elektrono dreifinio greičio ir vidutinės energijos priklausomybę nuo elektrinio lauko stiprio. Taigi, visus žemiau aprašytus skaičiavimus reikės pakartoti kelioms elektrinio lauko stiprio vertėms. • Pilnutinis sklaidos įvykių skaičius, esant kiekvienam lauko stipriui. Šis skaičius nusako, po kelinto sklaidos įvykio programa turi nutraukti elektrono judėjimo modeliavimą ir apskaičiuoti elektrono vidutinį greitį, vidutinę energiją bei judrį. Siekiant sumažinti atsitiktines paklaidas, šis skaičius turi būti kuo didesnis (ne mažiau už 106). • Atsitiktinių skaičių generatoriaus inicializavimo parametras (angliškas terminas "seed"). Šis parametras naudingas, patikrinant, kokią įtaką turi atsitiktinės paklaidos (t.y., ar pakankamai didelis sklaidos įvykių skaičius). Jeigu, naudojant skirtingas šio parametro vertes, gaunami beveik vienodi rezultatai, tai reiškia, kad sklaidos įvykių skaičius yra pakankamas. • Didžiausia elektrono energija Emax. Šis parametras nusako energijos intervalą, kuriam sudaroma sklaidos spartų lentelė (žr. žemiau). Kambario temperatūroje šis parametras neturėtų viršyti kelių elektronvoltų, pvz., 3 eV. Jeigu yra abejonių dėl šio parametro vertės, skaičiavimus reikia pakartoti, esant kelioms šio parametro vertėms, ir palyginti rezultatus: jeigu rezultatai nesiskiria, tai reiškia, kad didžiausia elektrono energija yra pakankamai didelė. Pastaba: kai elektrono energijos vertė tampa didesnė už draustinės juostos plotį, tampa įmanoma smūginė jonizacija, kurios metu elektronas išlaisvina dar vieną elektroną iš valentinės juostos. Kadangi šio vyksmo metu laisvųjų elektronų skaičius padidėja vienetu, tai viendalelis Monte Karlo metodas šiuo atveju netinka. • Elektrono energijos verčių skaičius nSteps. Šis skaičius lemia intervalą tarp energijos verčių, sudarant sklaidos spartų lentelę (žr. žemiau): šis intervalas lygus Emax / nSteps.
54
Siekiant sumažinti skaičiavimų trukmę, prieš elektrono judėjimo modeliavimą reikia sudaryti 3.3 poskyryje apibrėžtų funkcijų Λj(E) verčių lentelę ir judėjimo modeliavimo metu imti Λj(E) vertes iš šios lenteles (Λj(E) – tai visų sklaidos procesų su numeriais nuo 1 iki j spartų suma, padalinta iš pilnutinės sklaidos spartos, į kurią įeina virtualiosios sklaidos sparta). Tada nereikia po kiekvieno sklaidos įvykio skaičiuoti iš naujo visas sklaidos spartas, ir pilnutinė skaičiavimų trukmė sumažėja kelis kartus. Naudojant šią sklaidos spartų lentelę, padidėja skaičiavimų paklaidos (nes diskretizuojama elektrono energija), tačiau šias paklaidas visada galima sumažinti, optimizavus energijos verčių skaičių ir intervalą tarp jų. Funkcijų Λj(E) verčių lentelė yra trimatis masyvas, kurio pirmieji du indeksai nusako pradinį slėnį ir sklaidos tipo numerį (t.y., aukščiau minėtieji iValley ir iScatter), o trečiasis indeksas nusako tam tikrą fiksuotą elektrono energijos vertę: Lambda[iValley][iScatter][iStep] (iValley = 1, 2, 3; iScatter = 1, 2, ..., nScatter; iStep = 1, 2, ..., nSteps). Čia iStep yra energijos intervalo („žingsnio“) numeris; nSteps yra tokių intervalų pilnutinis skaičius. Elektrono energijos vertės, kurios atitinka kiekvieną indekso iStep reikšmę (E_el[iStep]) turi būti parinktos taip, kad, iš vienos pusės, intervalas tarp jų būtų kuo mažesnis (siekiant padidinti tikslumą), o iš kitos pusės, kad elektrono energija niekada netaptų mažesnė už E_el[1] = Emax / nSteps arba didesnė už E_el[nSteps] = Emax. Todėl E_el[1] turėtų būti žymiai mažesnė už elektrono vidutinę šiluminio judėjimo energiją kT, o Emax turėtų būti lygi keliems elektronvoltams. Pvz., galima naudoti vertes Emax = 3 eV ir nSteps = 3000. Reikia turėti omenyje, kad visos šios energijos vertės atskaitomos nuo atitinkamo slėnio dugno, t.y., norint nusakyti elektrono tikrąją energiją, reikia pridėti atitinkamo slėnio dugno energiją. Skaičiuojant masyvo Lambda[3][nScatter][nSteps] elementus, randama ir konstanta Γ, kuri reikalinga funkcijų Λj(E) normavimui (žr. formulę (3.3.1)) bei lėkio trukmės skaičiavimui (žr. (3.2.5)): ši konstanta yra lygi didžiausiai pilnutinei sklaidos spartai tiriamajame energijų intervale. Ši konstanta turi būti apibrėžta kiekvienam slėniui atskirai, t.y., reikalingas trijų elementų masyvas Gam[iValley] (iValley = 1, 2, 3).
55 A.2. Viendalelės Monte Karlo programos MonteCarlo3.dll struktūra Programos MonteCarlo3.dll, kuri modeliuoja elektrono judėjimą vienalyčiame elektriniame lauke, struktūrinė schema pavaizduota 19a–b pav. Žemiau pateiktas pagrindinių programos etapų aprašymas. Paruošiamieji veiksmai: 1. Medžiagos parametrai, valdymo parametrai ir pradinė elektrono būsena skaitomi iš pradinių duomenų failų (žr. paprogramių readParms ir readInitState aprašymus A.3 poskyryje). 2. Pagal pradinius duomenis nustatomi aktyviųjų sklaidos tipų skaičius, kiekvieno sklaidos tipo identifikatorius bei kiekvieną sklaidos tipą ir kiekvieną pradinį slėnį atitinkantys elektrono energijos pokyčiai ir galutiniai slėniai (žr. scatterTypes). 3. Apskaičiuojama funkcijų Λj verčių lentelė. 4. Inicializuojamas atsitiktinių skaičių generatorius. Pats svarbiausias paruošiamasis žingsnis, prieš pradedant modeliuoti elektrono judėjimą duotajame elektriniame lauke – tai funkcijų Λj verčių lentelės sudarymas (žr. formulę (3.3.1) ir A.1 poskyrio paskutines dvi pastraipas). Tuo tikslu atliekamas dviejų lygių ciklas – atžvilgiu slėnio iValley = 1, 2, 3 ir energijos vertės numerio iStep = 1, 2, …, nSteps. Esant kiekvienai indeksų iValley ir iStep porai, iškviečiama sklaidos spartų skaičiavimo paprogramė (žr. paprogramės rates aprašymą), kuri apskaičiuoja nScatter konstantų Λj (j = 1, …, nScatter). Šios vertės priskiriamos trimačio masyvo elementams Lambda(iValley, iScatter, iStep) (čia iScatter = 1, 2, …, nScatter). Kaip matyti formulėje (3.3.1), į konstantų Λn apibrėžimą įeina normavimo daliklis Γ. Šis daliklis turėtų būti lygus didžiausiai pilnutinei sklaidos spartai duotajame energijų intervale, kai elektronas yra duotajame slėnyje. Taigi, normavimo dalikliai Γ sudaro trijų elementų masyvą Gam[iValley] (iValley = 1, 2, 3). Šis masyvas turėtų būti naudojamas kaip paprogramės rates įėjimo parametras. Tačiau, kadangi iš pradžių normavimo dalikliai yra nežinomi, tai visų pirma dydžiai Lambda[iValley][iScatter][iStep] apskaičiuojami, laikant, kad visi trys normavimo dalikliai Gam[iValley] yra lygūs 1, ir kiekvienai iValley reikšmei randama didžiausioji Lambda reikšmė. Šie trys skaičiai ir yra ieškomieji Gam[iValley]. Tokiu būdu radus normavimo daliklius Γ, visi masyvo Lambda elementai padalinami iš atitinkamų normavimo konstantų, t.y., atliekamas pakeitimas Lambda[iValley][iScatter][iStep] = Lambda[iValley][iScatter][iStep] / Gam[iValley]. Atlikus šiuos paruošiamuosius veiksmus, pradedamas ciklas atžvilgiu elektrinio lauko stiprio verčių. Kiekvienam elektrinio lauko stipriui sumodeliuojamas duotasis sklaidos įvykių skaičius. T.y., atliekamas antrojo lygio ciklas, kurio kintamasis yra sklaidos įvykio numeris. Prieš pradedant šį ciklą, elektroną reikia "patalpinti" į pradinį slėnį, o jo banginiam vektoriui ir koordinatėms reikia priskirti pradines vertes. Be to, prieš pradedant šį ciklą, laikas ir sklaidos įvykių skaičius turi būti prilyginti nuliui. Šio ciklo kiekvienas žingsnis prasideda dreifu ir baigiasi sklaidos įvykiu. Kiekviename šio ciklo žingsnyje (t.y., tarp dviejų sklaidos įvykių) programa atlieka šiuos veiksmus:
56 5. Naudojant atsitiktinį skaičių r1 (žr. 3.2 poskyrį), sugeneruojama laisvojo lėkio trukmė (žr. flighttime). 6. Apskaičiuojamos elektrono bangos vektoriaus komponentės laisvojo lėkio pabaigoje (žr. formulę (3.2.6) ir drift). 7. Apskaičiuojami elektrono energija (žr. energy) ir šie dydžiai: 1) pilnutinis laikas, 2) elektrono energijos integralas laiko atžvilgiu (reikalingas vidutinės energijos skaičiavimui), 3) pilnutinis elektrinio lauko atliktas darbas (reikalingas dreifinio greičio skaičiavimui). 8. Kiekvienos rūšies sklaidai funkcijų Λj verčių lentelėje randama vertė, kuri geriausiai atitinka einamąją elektrono būseną (t.y., slėnį ir energiją). 9. Naudojant atsitiktinį skaičių r2 (žr. 3.3 poskyrį), pasirenkamas sklaidos tipas (žr. scatter) ir sklaidos įvykių skaičius padidinamas vienetu (net jeigu pasirinktoji sklaida yra virtualioji). 10. Jeigu pasirinktasis procesas nėra virtualusis (t.y., jeigu r2 neviršija Λn, kur n yar aktyviųjų procesų skaičius), tada apskaičiuojamos elektrono energija po sklaidos (3.3.3), bangos vektoriaus absoliutinė vertė po sklaidos (3.3.5), ir, naudojant atsitiktinius skaičius r3 ir r4 (žr. 3.3 poskyrį), apskaičiuojama bangos vektoriaus kryptis (žr. finalState). Šis ciklas baigiamas, kai pilnutinė modeliuojamojo proceso trukmė arba pilnutinis sklaidos įvykių skaičius trukmė pasiekia duotąją didžiausiąją reikšmę. Tada programa apskaičiuoja elektrono vidutinę energiją, dreifinį greitį ir judrį, įrašo šiuos duomenis į failą (paprogramė output), pakeičia elektrinio lauko stiprį ir vėl pakartoja tuos pačius veiksmus. Skaičiavimų rezultatas – ASCII failas su keturiais skaičių stulpeliais: 1) 2) 3) 4)
elektrinio lauko stipris, elektrono dreifinis greitis, elektrono judris, elektrono vidutinė energija.
A.3 poskyryje pateiktos paprogramių, kurios naudojamos aukščiau aprašytiems veiksmams, antraštės ir paaiškinti jų argumentai.
57
Pradžia
Medžiagos parametrų ir elektrono pradinės būsenos skaitymas bei kiti paruošiamieji veiksmai (žr. 28b pav.)
t=0
Apskaičiuojama elektrono būsena po sklaidos (finalState)
Sugeneruojamas atsitiktinis skaičius r1
Sugeneruojami atsitiktiniai skaičiai r3 ir r4
Apskaičiuojama laisvojo lėkio trukmė τ (flighttime)
Ne t=t+τ Taip
Sklaida yra virtualioji (t.y., r2 > Λn)
t > tmax Pasirenkamas sklaidos tipas (scatter)
Sugeneruojamas atsitiktinis skaičius r2
Λj verčių lentelėje kiekvienos rūšies sklaidai (j = 1, 2, ..., n) randama vertė, kuri atitinka elektrono būseną
Taip
τ = τ (t tmax) t = tmax
Ne
Apskaičiuojama elektrono būsena laisvojo lėkio pabaigoje (drift, energy)
Taip
t < tmax Ne Skaičiavimo rezultatų išvedimas
Pabaiga 28a pav. Viendalelės Monte Karlo programos MonteCarlo3.dll struktūrinė schema.
58
Medžiagos parametrų skaitymas (readParms)
Pradinės būsenos skaitymas (readInitState)
Aktyviųjų sklaidos tipų skaičiaus n ir juos atitinkančių energijos pokyčių bei slėnių porų nustatymas (scatterTypes)
Sklaidos spartų (tiksliau, jų sumų Λn) verčių lentelės sudarymas (rates)
Atsitiktinių skaičių generatoriaus inicializavimas
28b pav. Paruošiamieji veiksmai, vykdant viendalelę Monte Karlo programą MonteCarlo3.dll.
59 A.3. Pagrindinių paprogramių antraštės Paprogramė readParms skaito medžiagos parametrus ir valdymo parametrus iš pradinių duomenų failo. Paprogramės readParms argumentai (dydžiai, kurie skaitomi iš failo): field_min – mažiausias elektrinio lauko stipris (V/m) field_max – didžiausias elektrinio lauko stipris (V/m) nField – elektrinio lauko stiprio verčių skaičius nScat seed Emax nSteps
– didžiausias sklaidos įvykių skaičius – atsitiktinių skaičių generatoriaus inicializavimo parametras – didžiausia elektrono energija (atžvilgiu slėnio dugno), eV – energijos verčių skaičius sklaidos spartų lentelėje
ion opt_pol ac opt_intra iPair[1...7]
– ar vyksta sklaida jonizuotom priemaišom? (1 – taip, 0 – ne) – ar vyksta polinė sklaida optiniais fononais? – ar vyksta nepolinė sklaida akustiniais fononais? – ar vyksta nepolinė optinė fononinė sklaida L slėnyje? – septynių elementų masyvas, kurio vertės nusako slėnių poras, kurios dalyvauja tarpslėnėje sklaidoje. Galimos vertės: 1 – sklaida tarp tarp Γ ir L slėnių, 2 – sklaida tarp tarp Γ ir X slėnių, 3 – sklaida tarp skirtingų L slėnių, 4 – sklaida tarp L ir X slėnių, 5 – sklaida tarp skirtingų X slėnių, 6 – sklaida tarp dviejų X slėnių, kurie yra priešinguose Brijueno zonos kraštuose, 7 – sklaida tarp dviejų gretimų X slėnių. Jeigu kuris nors šio masyvo elementas yra mažesnis už 1 arba didesnis už 7, tada laikoma, kad atitinkamas procesas nevyksta, t.y., programa ignoruoja atitinkamas sklaidos parametrų D_inter ir E_inter vertes (žr. žemiau).
T Ni E[1,2,3]
– temperatūra, K – jonizuotų priemaišų tankis, m-3 – trijų elementų masyvas, kurio elementų vertės nusako slėnių energijas, eV (pirmasis elementas atitinka Γ slėnį, antrasis – L slėnį, trečiasis – X slėnį) eff_mass[1,2,3] – trijų elementų masyvas, kurio elementų vertės nusako elektrono efektinės masės ir masės vakuume santykius kiekviename slėnyje alpha[1,2,3] – slėnių neparaboliškumo koeficientai, 1/eV E_opt_pol[1,2,3] – polinių optinių fononų energijos kiekvienam slėniui, eV eps – statinė dielektrinė skvarba epsinf – aukštadažnė dielektrinė skvarba Ksi_d[1,2,3] – akustiniai deformacijos potencialai kiekvienam slėniui, eV vel_L – išilginių garso bangų greitis, m/s ro – tankis, kg/m3 D_opt_intra – optinės sklaidos L slėnyje deformacijos potencialas, eV/m E_opt_intra – optinės sklaidos L slėnyje fononų energija, eV D_inter[1...7] – tarpslėnės sklaidos procesų, kuriuos nusako masyvo iPair atitinkami elementai, deformacijos potencialai, eV/m E_inter[1...7] – tarpslėnės sklaidos procesų fononų energijos, eV
60 Paprogramė readInitState skaito pradinę elektrono būseną iš failo „MonteCarloInit.txt“: readInitState(iValley0, kx0, ky0, kz0, x0, y0, z0) Argumentai (dydžiai, kurie skaitomi iš failo): iValley0 – pradinis slėnis (1, 2 arba 3) kx0 – pradinė bangos vektoriaus Dekarto dedamoji X kryptimi, t.y., elektrinio lauko kryptimi (matavimo vienetas – m-1) ky0 – pradinė bangos vektoriaus Dekarto dedamoji Y kryptimi kz0 – pradinė bangos vektoriaus Dekarto dedamoji Z kryptimi x0 – pradinė x koordinatė (m) y0 – pradinė y koordinatė z0 – pradinė z koordinatė Elektrono bangos vektorius, kaip ir elektrono energija, visada atskaitomas nuo slėnio, kuriame yra elektronas, dugno. Todėl parametrų kx0, ky0 ir kz0 vertės turėtų būti žymiai mažesnės už Brijueno zonos matmenis. Tačiau pradinės būsenos pasirinkimas neturi didelės reikšmės, nes po kelių dešimčių sklaidos įvykių elektronas "užmiršta" savo pradinę būseną. Pvz., bet kuriuos du iš parametrų kx0, ky0 ir kz0 galima prilyginti nuliui, o trečiąjį apskaičiuoti, remiantis sąlyga, kad elektrono energija lygi vidutinei šiluminio judėjimo energijai kT. Paprogramė scatterTypes nustato aktyviųjų sklaidos tipų skaičių, kiekvieno sklaidos tipo identifikatorių bei kiekvieną sklaidos tipą ir kiekvieną pradinį slėnį atitinkančius elektrono energijos pokyčius ir galutinius slėnius: scatterTypes (ion, opt_pol, ac, opt_intra, E, E_opt_pol, E_opt_intra, E_inter, iPair, nScatter, iScat, energyIncr, iFinalValley) Pirmieji 9 argumentai (nuo ion iki iPair) yra paprogramės readParms apskaičiuotieji dydžiai (šiuo atveju jie naudojami kaip "įėjimo parametrai"). Paskutiniųjų keturių argumentų ("išėjimo parametrų") vertes apskaičiuoja paprogramė scatterTypes: nScatter – vykstančiųjų ("aktyviųjų ") sklaidos tipų skaičius, iScat – vienmatis masyvas, kurio ilgis nScatter ir kurio elementai nusako aktyviųjų procesų tipus (galimos vertės – 1, ±2, 3, ±4, ..., ±9), energyIncr – dvimatis masyvas, kurio pirmasis indeksas nusako pradinį slėnį (nuo 1 iki 3), antrasis indeksas nusako aktyviojo sklaidos tipo numerį (nuo 1 iki nScatter), o kiekvieno elemento vertė nusako elektrono energijos pokytį, vykstant duotosios rūšies sklaidai iš duotojo pradinio slėnio, iFinalValley – dvimatis masyvas, kurio indeksai turi tą pačią prasmę, kaip energyIncr indeksai, o kiekvieno elemento vertė nusako galutinį slėnį po sklaidos. Paprogramė rates apskaičiuoja kiekvieno aktyviojo sklaidos proceso spartą, esant duotajai elektrono energijai duotajame slėnyje: rates (nScatter, iScat, energyIncr, iFinalValley, iPair, T, Ni,eff_mass,E_opt_pol,eps, epsinf,Ksi_d, vel_L, ro,E_opt_intra, D_opt_intra, D_inter, E_inter, alpha, Gam, iValley, energ, k_abs, k_squared, aLambda, W)
61 Įėjimo parametrai: Pirmieji 4 argumentai yra paprogramės scatterTypes apskaičiuotieji dydžiai, argumentus Nr. 5–19 (nuo iPair iki alpha) nuskaitė paprogramė readParms, Gam – trijų elementų masyvas, kuris nusako sklaidos spartų normavimo konstantos Γ vertes kiekvienam slėniui (šie dydžiai apskaičiuojami pagrindinėje programoje), iValley – slėnis, kuriame yra elektronas prieš pat sklaidą (galimos vertės – 1, 2, 3), energ – nuo slėnio dugno atskaityta elektrono energija, k_abs – elektrono bangos vektoriaus modulis (bangos skaičiaus), k_squared – elektrono bangos vektoriaus kvadratas. Išėjimo parametrai: aLambda – vienmatis masyvas, kurio ilgis lygus aktyviųjų sklaidos tipų skaičiui (nScatter) ir kurio n-tasis elementas nusako procesų su numeriais nuo 1 iki n spartų sumą einamajai elektrono būsenai, W – kiekvieno aktyviojo sklaidos proceso sparta einamojoje būsenoje. Kiekvienos rūšies sklaida apskaičiuojama atskiroje paprogramėje, kurią iškviečia paprogramė rates. Kiekviena iš tų paprogramių turi vienintelį išėjimo parametrą – duotosios rūšies sklaidos sparta W (t.y., tikimybė per laiko vienetą). Žemiau yra pateiktos tų paprogramių antraštės: Paprogramė rate_ion apskaičiuoja joninės priemaišinės sklaidos spartą: rate_ion(eff_mass, alpha, energ, iValley, k_squared, Ni, n, eps, T, W) Čia „n“ yra laisvųjų elektronų koncentracija (paprogramėje rates kintamajam „n“ priskiriama priemaišinių jonų koncentracijos vertė, t.y., n = Ni). Paprogramė rate_acoustic apskaičiuoja akustinės fononinės sklaidos spartą: rate_acoustic(eff_mass, alpha, energ, iValley ro, vel_L, Ksi_d, T, W) Paprogramė rate_opt_intra apskaičiuoja optinės nepolinės (ir netarpslėnės) sklaidos L slėnyje spartą (kai optinė nepolinė sklaida vyksta Γ arba X slėnyje, tada ji visada yra tarpslėnė, todėl jos spartą skaičiuoja kita paprogramė): rate_opt_intra (eff_mass, alpha, energ, iValley, finalEnergy, E_opt_intra, D_opt_intra, isAbs, ro, T, W) Čia argumentas „isAbs“ nusako, ar optinis fononas yra sugeriamas, ar emituojamas. Jeigu isAbs = 1, tada optinis fononas yra sugeriamas (elektrono energija padidėja), o jeigu isAbs = 0, tada optinis fononas yra emituojamas (elektrono energija sumažėja). Argumentas „finalEnergy“ nusako galutinę elektrono energiją (atskaitytą nuo slėnio dugno). Paprogramė rate_opt_inter apskaičiuoja optinės nepolinės tarpslėnės sklaidos spartą: rate_opt_inter (eff_mass, alpha, energ, iValley, finalEnergy, finalValley, E_inter, D_inter, isAbs, ro, T, W) Čia argumentas „finalValley“ nusako galutinį slėnį, o „finalEnergy“ nusako galutinę elektrono energiją (atskaitytą nuo galutinio slėnio dugno Paprogramė rate_opt_pol apskaičiuoja optinės polinės (netarpslėnės) sklaidos spartą: rate_opt_pol (eff_mass, alpha, energ, iValley, finalEnergy, E_opt_pol, eps, epsinf, isAbs, T, W)
62 Paprogramė scatter pasirenka sklaidos tipą: scatter(nScatter, aLambda, r2, iScatter) Įėjimo parametrai: nScatter – aktyviųjų sklaidos tipų skaičius, aLambda – nScatter ilgio vienmatis masyvas, kurio elementai lygūs apytikslėms funkcijų Λn vertėms (jos paimtos iš verčių lentelės Lambda[iValley][iScatter][iStep]), r2 – atsitiktinis skaičius, kuris tolygiai pasiskirstęs intervale nuo 0 iki 1, Išėjimo parametras: iScatter – sklaidos įvykio tipas. Galimos vertės – nuo 0 iki nScatter. Jeigu iScatter = 0, tai reiškia, kad sklaida yra virtualioji, t.y., sklaidos faktiškai nėra. Paprogramė finalState apskaičiuoja elektrono būseną (slėnį, energiją ir bangos vektorių) iš karto po sklaidos: finalState (iScat, energyIncr, iFinalValley, eff_mass, alpha, n, T, eps, iScatter, r3, r4, iValley, energ, k_abs, k_squared, kx, ky, kz) Įėjimo parametrai: argumentai nuo Nr. 1 (iScat) iki Nr. 8 (eps) aprašyti aukščiau. Vienintelis pakeitimas yra tas, kad eff_mass[1,2,3] yra tikrosios efektinės masės (kg), o ne santykinės masės; iScatter – paskutiniojo sklaidos įvykio rūšies eilės numeris. r3 ir r4 – atsitiktiniai skaičiai, kurie tolygiai pasiskirstę intervale nuo 0 iki 1, Išėjimo parametrai: iValley – slėnis, kuriame elektronas atsidūrė po sklaidos, energ – elektrono energija šio slėnio dugno atžvilgiu, k_abs – elektrono bangos vektoriaus modulis po sklaidos, k_squared – elektrono bangos vektoriaus kvadratas po sklaidos, kx, ky, kz – elektrono bangos vektoriaus komponentės galutinio slėnio dugno atžvilgiu. Paprogramė flighttime sugeneruoja elektrono laisvojo lėkio trukmę: flighttime (Gam, iValley, r1, tau) Įėjimo parametrai: Gam – trijų elementų masyvas, kurį sudaro pagrindinėje programoje apskaičiuoti dalikliai Γ (žr. A.2 poskyrį ir A.1 poskyrio pabaigą), iValley – slėnis, kuriame yra elektronas. r1 – atsitiktinis skaičius, kuris tolygiai pasiskirstęs intervale nuo 0 iki 1, Išėjimo parametras: tau – laisvojo lėkio trukmė.
63 Paprogramė drift apskaičiuoja elektrono bangos vektorių laisvojo lėkio pabaigoje (prieš pat kitą sklaidos įvykį): drift(eff_mass, iValley, tau, field, x, y, z, kx, ky, kz, k_abs, k_squared) Įėjimo parametrai: eff_mass – efektinės masės kiekviename slėnyje (kg), iValley – slėnis, tau – lėkio trukmė, field – elektrinio lauko stipris, ky, kz – elektrono bangos vektoriaus Dekarto dedamosios statmena laukui kryptimi (laukas nukreiptas X ašies kryptimi). Įėjimo/išėjimo parametrai: x, y, z – elektrono Dekarto koordinatės, kx – elektrono banginio vektoriaus x dedamoji (dedamosios ky ir kz laisvojo lėkio metu nekinta, nes elektrinis laukas nukreiptas X kryptimi) Išėjimo parametrai: k_abs – bangos vektoriaus modulis, k_squared – bangos vektoriaus kvadratas. Paprogramė energy apskaičiuoja elektrono energiją laisvojo lėkio pabaigoje (prieš pat kitą sklaidos įvykį): energy(eff_mass, alpha, iValley, k_squared, energ) Įėjimo parametrai: eff_mass – elektrono efektinės masės kiekviename slėnyje (kg), alpha – kiekvieno slėnio neparaboliškumo koeficientai, iValley – slėnis, k_squared – elektrono bangos vektoriaus kvadratas (atžvilgiu slėnio dugno), Išėjimo parametras: energ – elektrono energija. Paprogramė output įrašo skaičiavimų rezultatus į tekstinį (ASCII) failą: output(field, drift_velocity, miu, mean_energy) Argumentai (dydžiai, kurie rašomi į failą): field drift_velocity miu mean_energy
– elektrinio lauko stipris, – elektrono dreifinis greitis, – elektrono judris, – elektrono vidutinė energija.
64 Priedas B. Puslaidininkinio įtaiso Monte Karlo modeliavimo programa MonteCarlo5.dll B.1. Pagrindiniai pakeitimai, lyginant su viendalele programa MonteCarlo3.dll Programos MonteCarlo5.dll, kuri skirta puslaidininkinių įtaisų modeliavimui, struktūrinė schema buvo pateikta 4.11 poskyryje (27a–c pav.). Kai kurios paprogramės, kurios paminėtos tose schemose, niekuo nesiskiria nuo atitinkamų paprogramių, kurios naudojamos aukščiau aprašytoje viendalelėje MonteKarlo programoje MonteCarlo3.dll (tai yra paprogramės flighttime, energy, scatter, finalState, scatterType ir sklaidos spartų skaičiavimo paprogramės rate_ion, rate_acoustic, rate_opt_intra, rate_opt_inter ir rate_opt_pol). Kitos paprogramės yra modifikuotos viendalelio metodo paprogramės (pvz., rates, drift) arba visiškai naujos, būdingos tik daugiadaleliui metodui (pvz., renew, charge, poisson ir kt.). Pakeitimai, kuriuos reikia atlikti paprogramėse drift ir rates, yra šie: 1) Kadangi elektrinis laukas yra dvimatis, tai paprogramė drift pakeičia dvi banginio vektoriaus dedamąsias – kx ir ky (viendalelėje programoje MonteCarlo3.dll buvo keičiama tik dedamoji kx, nes elektrinis laukas buvo laikomas lygiagrečiu X ašiai). Baigus skaičiuoti elektrono būseną laisvojo lėkio pabaigoje, paprogramė drift nustato, ar dalelė neišėjo pro kontaktą. Tuo tikslu naudojamas vienas naujas argumentas – kontakto numeris. Jeigu dalelė išeina pro kontaktą, tada paprogramė drift tam argumentui priskiria to kontakto numerį; priešingu atveju tas argumentas prilyginamas nuliui. Be to, paprogramėje drift realizuojamas 21 pav. pavaizduotasis dalelių atspindys nuo laisvojo paviršiaus. Todėl paprogramei drift turi būti perduodami ir geometriniai parametrai (įtaiso matmenys ir kontaktų išsidėstymas). 2) Kaip paaiškinta 4.11 poskyryje, joninės sklaidos sparta turi būti perskaičiuojama po kiekvieno sklaidos įvykio. Tai atliekama paprogramėje rate_ion (žr. 27b pav.) Atitinkamai, paprogramė rates, kuri atliekama programos pradžioje (žr. 27c pav.), neiškviečia paprogramės rate_ion, o joninės sklaidos spartą prilygina nuliui. B.2. Pagrindinių paprogramių antraštės Paprogramė drift apskaičiuoja elektrono bangos vektorių laisvojo lėkio pabaigoje (prieš pat kitą sklaidos įvykį): drift (eff_mass, iValley, tau, dx, dy, width, height, depth, field_x, field_y, nCont, contRight, contLeft, contPos, infiniteHeight, iCont, x, y, z, kx, ky, kz, k_abs, k_squared) Įėjimo parametrai: eff_mass[1,2,3] – efektinės masės kiekviename slėnyje (kg), iValley – slėnis, tau – lėkio trukmė (s), dx – intervalas tarp gretimų mazgų x kryptimi (m), dy – intervalas tarp gretimų mazgų y kryptimi (m), width – įtaiso matmenys x kryptimi (m), height – įtaiso matmenys y kryptimi (m), depth – įtaiso matmenys z kryptimi (m), field_x[1...Nx][1...Ny] – dvimatis masyvas, kurio elementas field_x[i][j] nusako elektrinio lauko x komponentę viduje kvadrato, kurio kampai sutampa su mazgais (i,j), (i+1,j), (i,j+1) ir (i+1,j+1) (V/m). Nx yra vienetu mažesnis už mazgų skaičių x kryptimi, o Ny yra vienetu mažesnis už mazgų skaičių y kryptimi (Nx = width / dx, Ny = height / dy); field_y[1...Nx][1...Ny] – dvimatis masyvas, kurio elementas field_y[i][j] nusako elektrinio lauko y komponentę viduje kvadrato, kurio kampai sutampa su mazgais (i,j), (i+1,j), (i,j+1) ir (i+1,j+1) (V/m), nCont – kontaktų skaičius, contRight[1...nCont] – visų kontaktų dešiniųjų kraštų x koordinatės,
65 contLeft[1...nCont] – visų kontaktų kairiųjų kraštų x koordinatės, contPos[1...nCont] – visų kontaktų padėtys. Šio masyvo elementų vertės nusako, ant kurio paviršiaus yra kiekvienas kontaktas. Vertė „1“ atitinka viršutinį paviršių (y = 0), o vertė „2“ atitinka apatinį paviršių (y = height); infiniteHeight – šis parametras naudojamas tam, kad būtų įmanoma modeliuoti elektronų judėjimą begalinių matmenų puslaidininkyje (kaip programoje MonteCarlo3.dll, tačiau naudojant ne viendalelį, o daugiadalelį Monte Karlo metodą). Jeigu infiniteHeight = 1, tada kiekviena dalelė, kuri dreifo pabaigoje atsiduria erdvės srityje y < 0, yra „paslenkama“ atstumu height koordinatės y didėjimo kryptimi, t.y., jos y koordinatė tampa height – |y|, o kitos dvi koordinatės ir bangos vektoriaus komponentės lieka nepakitusios. Analogiškai, kiekviena dalelė, kuri dreifo pabaigoje atsiduria erdvės srityje y > height, yra paslenkama atstumu height y mažėjimo kryptimi. Taigi, kai infiniteHeight = 1, nėra modeliuojamas nei elektronų išėjimas pro kontaktus, nei jų atspindys nuo plokštumų y = 0 arba y = height (tačiau yra modeliuojamas atspindys nuo plokštumų x = 0, x = width, z = 0 ir z = depth). Kai infiniteHeight = 0, turi būti modeliuojami ir išėjimas pro kontaktus, ir atspindys. kz – elektrono bangos vektoriaus z komponentė (m–1). Ši komponentė dreifo metu nekinta; Įėjimo/išėjimo parametrai: x, y, z – dalelės Dekarto koordinatės, kx, ky – dalelės banginio vektoriaus x ir y komponentės. Išėjimo parametrai: iCont – kontakto, pro kurį išėjo dalelė, numeris (jeigu dalelė neišėjo, tada iCont = 0), k_abs – bangos vektoriaus modulis, k_squared – bangos vektoriaus kvadratas. Paprogramė charge apskaičiuoja elektronų koncentraciją kiekviename mazge: charge(nx, ny, dx, dy, depth, nPart, epp, x, y, v, cn) Įėjimo parametrai: nx ny dx dy depth nPart epp x[1...nPart] y[1...nPart] v[1...nPart]
– mazgų skaičius x kryptimi, – mazgų skaičius y kryptimi, – intervalas tarp gretimų mazgų x kryptimi (m), – intervalas tarp gretimų mazgų y kryptimi (m), – įtaiso matmenys z kryptimi (m), – pilnutinis dalelių skaičius, – elektronų skaičius vienai dalelei, – visų dalelių x koordinatės (m), – visų dalelių y koordinatės (m), – visų dalelių slėnių numeriai (galimos vertės – 1, 2, 3 ir 9). Šis parametras reikalingas tik tam, kad paprogramė „žinotų“, ar duotoji dalelė yra „aktyvi“, ar ne. Jeigu kuris nors masyvo v elementas yra lygus 9, tai reiškia, kad atitinkama dalelė yra „neaktyvi“ ir neturi būti naudojama, skaičiuojant elektronų koncentraciją.
Išėjimo parametrai: cn[1...nx][1...ny] – dvimatis masyvas, kurio elementas cn[i][j] nusako elektronų koncentraciją mazge (i, j), apskaičiuotą „elektronų debesies“ metodu (žr. 26 pav.).
66 Paprogramė poisson sprendžia Puasono lygtį (4.2.2) baigtinių skirtumų metodu, t.y., sprendžia tiesinių algebrinių lygčių sistemą (4.8.2). Pastaroji sistema sprendžiama Gauso ir Zeidelio metodu, kurį išreiškia (4.8.3) formulė. Paprogramės poisson antraštė: poisson(nx, ny, dx, dy, cnd, cn, eps, isCont, err, potential) Įėjimo parametrai: nx ny dx dy cnd[1...nx][1...ny] cn[1...nx][1...ny] isCont[1;2][1...nx]
– mazgų skaičius x kryptimi, – mazgų skaičius y kryptimi, – intervalas tarp gretimų mazgų x kryptimi (m), – intervalas tarp gretimų mazgų y kryptimi (m), – dvimatis masyvas, kurio elementas cnd[i][j] nusako jonizuotų donoro atomų koncentraciją mazge (i, j) (m−3), – dvimatis masyvas, kurio elementas cn[i][j] nusako elektronų koncentraciją mazge (i, j) (m−3), – dvimatis masyvas, kurio elementai nusako, ties kuriuo kontaktu yra duotasis paviršinis mazgas. Pirmasis indeksas nusako paviršių: „1“ atitinka viršutinį paviršių (y = 0), o „2“ atitinka apatinį paviršių (y = height). Antrasis indeksas nusako paviršinio mazgo numerį x kryptimi. Šio masyvo kiekvieno elemento vertė nusako kontakto, ties kuriuo yra duotasis paviršinis mazgas, numerį. Jeigu toje vietoje yra laisvasis paviršius, tada šio masyvo atitinkamas elementas yra lygus nuliui. Šioje paprogramėje pakanka žinoti, ar paviršinis mazgas yra ties kontaktu, ar ne, o to kontakto savybės neturi reikšmės (kontaktų potencialai užduodami kitoje paprogramėje, ir jų keisti nereikia).
Išėjimo parametrai: potential[1...nx][1...ny] – potencialo vertės kiekviename mazge (V).
Paprogramė create sukuria dalelę prie duotojo paviršinio mazgo. Šią paprogramę iškviečia paprogramės initia ir renew (žr. 27a pav. ir 27c pav.). Paprogramės create antraštė: create (contact, i, nx, dx, alpha, eff_mass, T, width, height, depth, x, y, z, kx, ky, kz, k_abs, energ, iValley) Įėjimo parametrai: contact
– kontakto padėtis. „1“ atitinka įtaiso viršutinį kraštą (y = 0), o „2“ atitinka apatinį kraštą (y = height); i – mazgo numeris x kryptimi, nx – mazgų skaičius x kryptimi, dx – intervalas tarp gretimų mazgų x kryptimi (m), alpha[1,2,3] – slėnių neparaboliškumo koeficientai, 1/eV eff_mass[1,2,3] – elektrono efektinės masės kiekviename slėnyje (kg) T – temperatūra (K); width – įtaiso matmenys x kryptimi (m), height – įtaiso matmenys y kryptimi (m), depth – įtaiso matmenys z kryptimi (m),
67
Išėjimo parametrai: x, y, z kx, ky, kz k_abs energ iValley
– sukurtosios dalelės Dekarto koordinatės (m), – sukurtosios dalelės bangos vektoriaus komponentės (m–1), – sukurtosios dalelės bangos vektoriaus modulis (m–1), – sukurtosios dalelės energija, atskaityta atžvilgiu slėnio dugno (eV), – slėnis, kuriame sukuriama dalelė (šis parametras turi būti lygus 1, t.y., dalelės turi būti kuriamos tik Γ slėnyje).
Pastaba: Rašant paprogramę create, reikia naudoti atsitiktinių skaičių generatorių (žr. 4.10 poskyrį). C kalba turi standartinę funkciją rand(), kuri generuoja atsitiktinius sveikuosius skaičius nuo 0 iki RAND_MAX. Konstanta RAND_MAX apibrėžta standartiniame antraštiniame faile „stdlib.h“ (RAND_MAX dažniausiai lygus 32767). Todėl, norint generuoti atsitiktinį skaičių r, kurio galimos vertės yra tarp 0 ir 1, reikia naudoti operatorių r = rand()/(double)RAND_MAX; Čia operatorius „(double)“ transformuoja konstantos tipą, t.y., iš sveikojo skaičiaus RAND_MAX padaro slankaus taško skaičių. Tokia transformacija reikalinga todėl, kad C kalboje dviejų sveikųjų skaičių dalmuo visada yra sveikasis skaičius, o jeigu bent vienas iš operandų yra slankaus taško skaičius, tada rezultatas visada yra slankaus taško skaičius. Taigi, jeigu nebūtų minėtojo tipo pakeitimo, r visada būtų lygus nuliui, nes rand() < RAND_MAX.
68 Priedas C. Programavimo C kalba pradmenys C.1. Duomenų tipai Pagal C kalbos taisykles, kiekvieno kintamojo apibrėžtis prasideda jo tipo vardu, po kurio yra kintamojo vardas. Po kintamojo vardo gali būti lygybės ženklas ir to kintamojo pradinė vertė (konstanta arba aritmetinis reiškinys). Galimieji duomenų tipai yra šie: int – sveikasis skaičius su ženklu (4 baitai; galimos reikšmės – nuo –231 + 1 iki 231 − 1), unsigned – sveikasis skaičius be ženklo (4 baitai; galimos reikšmės – nuo 0 iki 232 − 1), float – slankaus taško skaičius (4 baitai, tikslumas – 8 reikšminiai skaitmenys), double – dvigubo tikslumo slankaus taško skaičius (8 baitai, tikslumas – 16 reikšminių skaitmenų). Specialus kintamojo tipas yra vadinamieji masyvai. Masyvas yra atminties sritis, kurioje saugomi keli skaičiai. Masyvo apibrėžtis ypatinga tuo, kad joje reikia nurodyti masyvo dydį. Masyvo dydis nurodomas tarp laužtinių skliaustų. Pvz., žemiau apibrėžtas vienmatis slankaus taško skaičių masyvas, kurio dydis lygus 3: double eff_mass[3]; (C kalboje visi operatoriai baigiami kabliataškiu). Į atskirus masyvo elementus taip pat kreipiamasi, naudojant laužtinius skliaustus, tarp kurių nurodomas elemento indeksas (eilės numeris duotajame masyve). Numeruojama, pradedant nuo 0. Pvz., aukščiau apibrėžtojo masyvo atveju galimos indekso vertės yra 0, 1 ir 2. Kitas specialus kintamojo tipas yra vadinamosios rodyklės. Rodyklė – tai kintamasis, kurio prasmė yra kito kintamojo adresas. Rodyklė apibrėžiama, prieš jos vardą įterpiant žvaigždutę. Pvz., žemiau apibrėžta rodyklė į slankaus taško kintamąjį: double *pointer; Šiame pavyzdyje rodyklės pointer vertė yra neapibrėžta. Žemiau tai rodyklei priskiriamas masyvo eff_mass[3] pirmojo elemento adresas: pointer = eff_mass; Masyvo vardas yra specialaus tipo rodyklė. Kaip matome pastarajame pavyzdyje, masyvo vardą galima naudoti kaip rodyklę į to masyvo pirmąjį elementą. Prie bet kurios rodyklės pridėjus sveikąjį skaičių, gaunama rodyklė į kitą to paties tipo kintamąjį, kurio adresas skiriasi nuo pradinio adreso dydžiu, kuris lygus to sveikojo skaičiaus ir to tipo kintamojo dydžio sandaugai. Pvz., jeigu rodyklė pointer apibrėžta taip, kaip aukščiau, tada pointer+1 nusako rodyklę į masyvo eff_mass antrąjį elementą (t.y., į eff_mass[1]). Kintamojo, į kurį nukreipta rodyklė, vertę galima sužinoti, naudojant „deadresavimo“ operatorių „*“. Pvz., pastarajame pavyzdyje *pointer arba *eff_mass yra lygus eff_mass[0], o *(pointer+1) arba *(eff_mass+1) yra lygus eff_mass[1]. Iki šiol buvo kalbama tik apie vienmačius masyvus. Dvimatį masyvą galima apibrėžti, pvz., taip: int a[10][20]; Tokia apibrėžtis rodo, kad dvimatis masyvas a turi 10 eilučių, o kiekviena eilutė turi po 20 elementų. Kaip žinome, masyvo vardas – tai rodyklė į jo pirmąjį elementą. Dvimačio masyvo elementai kompiuterio atmintyje išdėstyti eilutėmis (t.y., pereinant nuo vieno elemento prie gretimo, pirmiausia kinta antrasis indeksas). Todėl, naudojant aukščiau pateiktąją masyvo a apibrėžtį, užrašymas „*(a + 19)“ yra tapatus „a[0][19]“, o užrašymas „*(a + 20)“
69 yra tapatus „a[1][0]“. Dvimačio masyvo atveju savo vardus turi ir jo eilutės. Minėtame pavyzdyje – tai yra vienmačiai masyvai a[0], a[1], a[2], ..., a[9]. Vėl pasinaudoję tuo, kad masyvo vardas yra rodyklė į jo pirmąjį elementą, gauname, kad užrašymas „*a[0]“ yra tapatus „a[0][0]“, užrašymas „*a[1]“ yra tapatus „a[1][0]“ ir t.t. Dar vienas specialusis kintamojo tipas yra vadinamosios struktūros. Struktūra nuo masyvo skiriasi tuo, kad jos elementai gali būti skirtingų tipų. Minėtųjų paprogramių, kurias reikės parašyti, visi argumentai yra tam tikrų struktūrų laukai. Kiekviena struktūra apibrėžiama, naudojant operatorių „typedef struct“. Pvz., žemiau apibrėžta struktūra TMC3_drift, kurios laukai yra paprogramės DRIFT argumentai. typedef struct { double *eff_mass; int iValley; double tau; double field; double x; double y; double z; double kx; double ky; double kz; double k_abs; double k_squared; } TMC3_drift; Apibrėžus struktūrą, jos vardą galima naudoti kaip kintamojo tipą kintamųjų apibrėžtyse. Pvz., žemiau apibrėžtas kintamasis tempStruct, kurio tipas yra TMC3_drift: TMC3_drift tempStruct; Atskirų struktūros laukų vertes galima sužinoti, naudojant taško operatorių. Pvz., jeigu kintamasis tempStruct apibrėžtas taip, kaip aukščiau, tada yra leistini tokie operatoriai: tempStruct.eff_mass[0] = 1.; tempStruct.field = 0.; Turint rodyklę į struktūrą, jos atskirų laukų vertes galima sužinoti, naudojant operatorių „->“. Pvz., jeigu ptr yra rodyklė į aukščiau apibrėžtąją tipo TMC3_drift struktūrą, tada minėtuosius du operatorius reikia rašyti taip: ptr->eff_mass[0] = 1.; ptr->field = 0.; C kalboje kintamųjų apibrėžtys turi būti pačioje programos pradžioje (prieš visas aritmetines operacijas). Tačiau C++ kalba leidžia talpinti kintamųjų apibrėžtis bet kurioje programos vietoje. Reikia turėti omenyje, kad kintamasis, kuris apibrėžtas sudėtinio operatoriaus viduje (t.y., tarp riestinių skliaustų „{“ ir „}“), yra „matomas“ tik to operatoriaus viduje. Pvz., žemiau pateiktajame pavyzdyje kintamojo i reikšmė sudėtinio operatoriaus viduje yra 2, o to paties kintamojo reikšmė, išėjus iš to operatoriaus, yra lygi 1:
70 int i = 1; { ... int i = 2; ... } C.2. Operacijos Pagrindiniai operacijų tipai: • aritmetinės operacijos, • palyginimo operacijos, • loginės operacijos, • priskyrimo operacijos, • sekos operacija (kablelis). Aritmetinės operacijos: • sudėtis (+), • atimtis (−), • dalyba (/), • daugyba (*). Palyginimo operacijos: • “lygu” (==), • “nelygu” (!=), • “mažiau” (<), • “mažiau arba lygu” (<=), • “daugiau” (>), • “daugiau arba lygu” (>=). Visų palyginimo operacijų rezultatas yra int tipo skaičius: jeigu duotoji sąlyga galioja, tada rezultatas yra vienetas, o priešingu atveju – nulis. Pvz., reiškinio 2==2 rezultatas yra 1, o reiškinio 1>2 rezultatas yra 0. Todėl palyginimo operacijas galima naudoti reiškiniuose kartu su aritmetinėmis operacijomis (tačiau reikia turėti omenyje, kad palyginimo operacijų prioritetas yra mažesnis, negu aritmetinių operacijų). Loginės operacijos: • “ir” (&&), • “arba” (||), • neigimas” (!). Loginių operacijų argumentai („operandai“) gali būti bet kokie reiškiniai, kurių rezultatas yra skaičius. Visi skaičiai, kurie skiriasi nuo nulio, interpretuojami kaip „tiesa“ (t.y., kaip vienetas). Loginių operacijų reikšmės skaičiuojamos iš kairės į dešinę ir nutrūksta, kai tik galima vienareikšmiškai nustatyti rezultatą. Pvz., jeigu operacija „arba“ atliekama su dviem reiškiniais, kurių pirmasis skiriasi nuo nulio, tada programa nebando skaičiuoti antrojo reiškinio, nes nuo jo reikšmės galutinis rezultatas nepriklauso.
71
Priskyrimo operacijos: • dešiniosios pusės reikšmės priskyrimas kairiajai pusei (=), • kairiosios pusės padidinimas dydžiu, kuris lygus dešiniajai pusei (+=), • kairiosios pusės sumažinimas dydžiu, kuris lygus dešiniajai pusei (−=), • kairiosios pusės pakeitimas, dauginant ją iš dydžio, kuris yra dešiniojoje pusėje (*=), • kairiosios pusės pakeitimas, dalinant ją iš dydžio, kuris yra dešiniojoje pusėje (/=), • dydžio padidinimas vienetu (++), pvz., i++ • dydžio sumažinimas vienetu (−−), pvz., i−−. Operacija „kablelis“ vartojama reiškinių tarpusavio sujungimui. Reiškinių, kurie atskirti vienas nuo kito kableliu, sąrašas yra interpretuojamas kaip vienas reiškinys ir skaičiuojamas iš kairės į dešinę. Toks reiškinys visada įgauna paskutiniojo skaičiavimo reikšmę. C.3. Operatoriai Pagrindiniai operatorių tipai: • sąlygos operatoriai, • ciklo operatorius, • funkcijos iškvietimo operatoriai. Visi operatoriai baigiami kabliataškiu. Žemiau pateiktose operatorių apibrėžtyse žodis „operatorius“ gali reikšti ir vieną operatorių, ir sudėtinį operatorių, t.y., kelis operatorius, kurie surašyti tarp riestinių skliaustų „{“ ir „}“. Po uždarančiojo skliausto „}“ kabliataškis nerašomas. Sąlygos operatoriai yra keturių rūšių: 1. if (loginis reiškinys) operatorius 2. if (loginis reiškinys) operatorius_1 else operatorius_2 3. loginis reiškinys ? reiškinys_1 : reiškinys_2 4. operatorius switch ... case (šį operatorių dažniausiai galima pakeisti vienu iš aukščiau minėtųjų sąlygos operatorių, todėl čia jis neaprašomas). Pvz., žemiau pateiktame operatoriaus if ... else pavyzdyje kintamajam a priskiriamas didesnysis iš dviejų skaičių b ir c: if (b > c) a = b; else a = c; Tą patį rezultatą galima gauti ir šitaip: a = (b > c) ? b : c;
72 Ciklo operatoriaus veikimas pasireiškia tuo, kad duotasis operatorius (kuris gali būti sudėtinis) vykdomas kelis kartus iš eilės, kol yra tenkinama tam tikra sąlyga. Tas operatorius kartais vadinamas „ciklo kūnu“ (siekiant jį atskirti nuo „ciklo antraštės“), o vienas to operatoriaus skaičiavimas vadinamas „iteracija“. Ciklo operatoriai yra trijų rūšių: 1. while (loginis reiškinys) operatorius; 2. do operatorius_1 while (loginis reiškinys) 3. for (inicializavimas; loginis reiškinys; nauja reikšmė) operatorius; „while“ ciklas vykdomas tol, kol loginis reiškinys yra nelygus nuliui, o jeigu tas reiškinys jau yra lygus nuliui prieš pradedant vykdyti ciklą, tada ciklas iš viso nevykdomas. „do“ ciklas skiriasi nuo „while“ ciklo tik tuo, kad loginio reiškinio reikšmė tikrinama ne prieš operatoriaus vykdymą, o po jo. Taigi, „do“ ciklo atveju operatorius visada įvykdomas bent vieną kartą. „for“ ciklas skiriasi nuo „while“ ciklo tuo, kad „for“ cikle numatytos dar dvi operacijos: inicializavimo operacija, kuri įvykdoma pačioje „for“ ciklo pradžioje, ir naujos reikšmės skaičiavimo operacija, kuri įvykdoma kiekvieną kartą, apskaičiavus operatorių (t.y., po kiekvienos iteracijos). Žemiau pateiktas „for“ ciklas, kuris skaičiuoja sveikojo skaičiaus n faktorialą n! = 1 ∙ 2 ∙ 3 ∙ ... ∙ n: int i, fact; for (i = 1, fact = 1; i <= n; i++) fact *= i; Šiuo atveju ciklo inicializavimas pasireiškia tuo, kad kintamiesiems i ir fact priskiriama reikšmė 1. Atlikus operatorių „fact *= i“, kintamasis i padidinamas vienetu (operacija „i++“). Prieš atliekant operaciją „fact *= i“, tikrinama sąlyga „i <= n“ (jeigu ta sąlyga negalioja, tada operacijos „fact *= i“ ir „i++“ nevykdomos). „for“ ciklo antraštėje inicializavimo ir naujos reikšmės skaičiavimo operacijos nėra būtinos. Pvz., žemiau pateiktas „for“ ciklo pavyzdys, kuris skiriasi nuo ankstesniojo pavyzdžio tik tuo, kad kintamųjų inicializavimas atliekamas prieš ciklo vykdymą, o naujos reikšmės skaičiavimas „prijungtas“ prie ciklo kūno, kurį šiuo atveju sudaro du operatoriai: int i = 1, fact = 1; for (; i <= n;) { fact *= i; i++; } Tokio pavidalo „for“ ciklas yra tapatus „while“ ciklui (t.y., pastarajame pavyzdyje ciklo antraštė galėtų būti „while (i <= n)“).
73 Aukščiau aprašytieji ciklo operatoriai priklauso bendresnei „valdymo operatorių“ kategorijai. Valdymo operatoriai – tai operatoriai, kurie valdo operatorių atlikimo tvarką (seką). Kiti valdymo operatoriai yra „break“, „continue“ ir „goto“. Jeigu, vykdant ciklo operatorių, aptinkamas operatorius „break“, tada išeinama iš duotojo ciklo operatoriaus. Jeigu, vykdant ciklo operatorių, aptinkamas operatorius „continue“, tada praleidžiama visa likusioji ciklo kūno dalis ir pereinama prie kitos iteracijos. Operatorius „goto“ perduoda valdymą programos eilutei, kuri prasideda duotąja žyme. Žymė – tai bet kokia simbolių seka, kuri užsibaigia dvitaškiu. Žymė (be dvitaškio) turi būti nurodyta po „goto“. Pvz., žemiau pateiktame pavyzdyje operatorius „goto“ naudojamas skaičiaus n faktorialo skaičiavimui: int i = 1, fact = 1; if (n<=0) goto END; START: fact *= i; i++; if (i <= n) goto START; END: ... C.4. Kai kurios matematinės funkcijos Žemiau išvardintos kelios standartinės funkcijos. Kiekvienos funkcijos apibrėžtyje yra nurodyti jos vardas, argumentų tipai ir skaičiuojamos reikšmės tipas (tačiau, iškviečiant funkciją, tipų nurodyti nereikia, pvz., „y = sin(x)“). Užrašas „void“ reiškia, kad funkcija negrąžina jokios reikšmės (tokios funkcijos negali būti naudojamos aritmetiniuose reiškiniuose ir priskyrimo operacijose). double double double double double double double double double double double double double double double double double
acos(double x) – parametro x arkkosinusas (galimoji vertė – nuo 0 iki π). asin(double x) – parametro x arksinusas (galimoji vertė – nuo −π/2 iki +π/2). atan(double x) – parametro x arktangentas (galimoji vertė – nuo −π/2 iki +π/2). atan2(double y, double x) – santykio y/x arktangentas (galimoji vertė – nuo 0 iki π). acos(double x) – parametro x arkkosinusas (galimoji vertė – nuo 0 iki π). ceil(double x) – mažiausias sveikasis skaičius, kuris yra nemažesnis už x (t.p. žr. floor()). cos(double x) – parametro x kosinusas (x turi būti išreikštas radianais). exp(double x) – parametro x eksponentė (ex). fabs(double x) – parametro x modulis. floor(double x) – didžiausias sveikasis skaičius, kuris neviršija x (t.p. žr. ceil()). fmod(double x, double y) – skaičiaus x dalybos iš skaičiaus y liekana. log(double x) – skaičiaus x natūralusis logaritmas. log10(double x) – skaičiaus x dešimtainis logaritmas. pow(double x, double y) – skaičiaus x kėlimas laipsniu y (xy). sin(double x) – parametro x sinusas (x turi būti išreikštas radianais). sqrt(double x) – kvadratinė šaknis iš x. tan(double x) – parametro x tangentas (x turi būti išreikštas radianais).
int rand() – generuoja atsitiktinį sveikąjį skaičių, kurio vertė yra nuo 0 iki RAND_MAX. Konstanta RAND_MAX apibrėžta standartiniame antraštiniame faile „stdlib.h“ (RAND_MAX dažniausiai lygus 32767). void srand(unsigned random) – inicializuoja atsitiktinių skaičių generatorių (žr. rand()). Atsitiktinių skaičių seka, kurią generuoja rand(), priklauso tik nuo parametro random.
74 Priedas D. Bendros žinios apie laboratorinių darbų atlikimo tvarką Laboratoriniai darbai atliekami, naudojant modeliavimo ir netiesinio aproksimavimo sistemą SimFit (šios programos autorius yra Andrius Poškus). Šią sistemą sudaro dvi programos: 1) aproksimavimo modelių redaktorius SimFit.exe; 2) modelių skaičiavimo bei aproksimavimo programa SimFitC.exe. Aproksimavimui SimFit naudoja vartotojo sudarytuose DLL failuose esančias funkcijas, o duomenų grafiniam atvaizdavimui naudoja programą Origin. Galimi du SimFit darbo režimai – aproksimavimo ir modeliavimo. Aproksimavimo atveju SimFit apskaičiuoja teorinio modelio, kurį nusako duotoji funkcija, parametrų vertes, kurios atitinka mažiausią teorinio skaičiavimo duomenų nuokrypį nuo duotųjų matavimo duomenų. Modeliavimo atveju SimFit apskaičiuoja teorinio modelio priklausomųjų kintamųjų vertes, kurios atitinka duotąsias modelio parametrų ir nepriklausomųjų kintamųjų (argumentų) vertes. Pastarosios vertės gali būti skaitomos iš duotojo failo arba gali būti apskaičiuotos, naudojantis vartotojo pateiktomis ribinėmis vertėmis.
S i m F i t .e x e s u d a r o m o d e l i ų s ą r a š ą , k i e k v i e n a m m o d e l i u i s u d a r o s ą r a š ą s u f a i l ų , k u r i u o s e s a u g o m i s k a i č i a v i m o p a r a m e tr a i , v a r d a i s , p a te i k i a g r a f i n į i n te r f e i s ą k a i k u r i ų v a l d y m o p a r a m e tr ų m o d i f i k a v i m u i . K i e k v i e n a m m o d e l i u i v i e n a s i š tų p a r a m e tr ų y r a D L L f a i l o s u v a r t o t o j o s u d a r y t a p r o g r a m a v a r d a s ( p v z . , M o n t e C a r l o 3 .d l l ) . S i m F i t.e x e i š k v i e č i a p r o g r a m ą S i m F i tC .e x e , k u r i a tl i e k a v i s u s s k a i č i a v i m u s ( ta m e ta rp e − i r a p ro k s im a v im ą ) .
P r o g r a m a S i m F i t C .e x e s k a i t o p a r a m e t r ų v e r t e s i š f a i l ų , k u r i ų s ą r a š ą s u d a r ė S i m F i t . e x e , i r p e r i o d i š k a i i š k v i e č i a v a r t o t o j o p r o g r a m ą ( p v z . , M o n t e C a r l o 3 .d l l ) , n a u d o d a m a i š a n k s to a p i b r ė ž tą j o s a rg u m e n to v e r č i ų s e k ą .
V a r t o t o j o D L L p r o g r a m a ( p v z . , M o n t e C a r l o 3 .d l l ) a p s k a i č i u o j a d u o t o j o p r i k l a u s o m o j o k i n ta m o j o ( p v z ., e l e k tr o n o d r e i f o g r e i č i o a r b a j u d r i o a r b a s k l a i d o s s p a r to s ) v e r tę , e s a n t d u o ta i a r g u m e n to ( p v z ., e l e k tr i n i o l a u k o s ti p r i o a r b a e l e k tr o n o e n e r g i j o s ) v e r te i i r d u o to m s p a s to v i ų j ų p a r a m e tr ų ( p v z ., m e d ž i a g o s p a r a m e tr ų ) v e r tė m s .
K a i k u r i o s p a p r o g r a m ė s , k u r i a s i š k v i e č i a p r o g r a m a M o n te C a r l o 3 .d l l , tu r i d u v a r i a n tu s : " v id i n ė " p a p r o g r a m ė ( j i į e i n a į p a č i ą p r o g r a m ą M o n te C a r l o 3 .d l l ) ir " iš o r i n ė " p a p r o g r a m ė ( j i y r a a ts k i r a m e D L L f a i l e ) . N u s ta ty m u i , k u r i ą i š tų f u n k c i j ų n a u d o ti , p r o g r a m a M o n te C a r l o 3 .d l l n a u d o j a f a i l ą " M o n te C a r l o 3 .tx t" . T a m e f a i l e y r a m i n ė tų j ų p a p r o g r a m i ų i r a ti ti n k a m ų D L L f a i l ų v a r d a i ( p o v i e n ą v a r d ą e i l u tė j e ) . J e i g u e i l u tė p r a s i d e d a k o m e n ta r o s i m b o l i u " / /" , tu o m e t a ti ti n k a m u s s k a i č i a v i m u s a tl i e k a v i d i n ė p a p r o g r a m ė , o p r i e š i n g u a tv e j u tu o s s k a i č i a v i m u s a tl i e k a i š o r i n ė p a p r o g r a m ė , k u r i o s i e š k o m a a ti ti n k a m a m e D L L faile.
75 Analogišką tekstinį failą „MonteCarlo5.txt“ naudoja ir daugiadalelė Monte Karlo programa „MonteCarlo5.dll“. Failas „MonteCarlo3.txt“ turi būti tame pačiame kataloge, kaip failas MonteCarlo3.dll, o failas „MonteCarlo5.txt“ turi būti tame pačiame kataloge, kaip failas MonteCarlo5.dll. Žemiau yra failo „MonteCarlo3.txt“ turinio pavyzdys. // ID DLL failo vardas Funkcijos vardas //---------------------------------------------------------------------------------------------------// ScatterTypes Models\MonteCarlo3_scatterTypes.dll SCATTERTYPES // FlightTime Models\MonteCarlo3_flighttime.dll FLIGHTTIME // Scatter Models\MonteCarlo3_scatter.dll SCATTER // Drift Models\MonteCarlo3_drift.dll DRIFT // FinalState Models\MonteCarlo3_FinalState.dll FINALSTATE // Energy Models\MonteCarlo3_energy.dll ENERGY // Rate_ion Models\MonteCarlo3_rate_ion.dll RATE_ION // Rate_acoustic Models\MonteCarlo3_rate_acoustic.dll RATE_ACOUSTIC Rate_opt_intra Models\MonteCarlo3_rate_opt_intra.dll RATE_OPT_INTRA // Rate_opt_inter Models\MonteCarlo3_rate_opt_inter.dll RATE_OPT_INTER // Rate_opt_pol Models\MonteCarlo3_rate_opt_pol.dll RATE_OPT_POL Tie DLL failai rašomi programavimo kalba C++ ir kompiliuojami kompiliatoriumi Microsoft Visual Studio 6.0. Tačiau DLL failus galima rašyti ir bet kuria kita kalba, naudojant bet kurį kitą kompiliatorių, kuris gali generuoti DLL failus: vienas iš DLL panaudojimo privalumų yra tas, kad jų programavimo kalba gali skirtis nuo juos iškviečiančios programos programavimo kalbos (pvz., aukščiau minėtosios programos „MonteCarlo3.dll“ ir „MonteCarlo5.dll“ parašytos FORTRAN-90 kalba). C++ kalba yra papildyta C kalba. Esminė C++ kalbos ypatybė yra ta, kad programose, kurios parašytos ta kalba, galima naudoti vadinamąsias „klases“. Tačiau aptariamuoju atveju klasės nenaudojamos. T.y., minėtosios paprogramės rašomos C kalba, naudojant kai kurias neesmines C++ kalbos ypatybes. Kiekvienam iš minėtųjų failų yra sudarytas atskiras Visual Studio projektas ir yra parašytas „šablonas“ – .cpp failas, kuriame yra paprogramės antraštė ir jos argumentų apibrėžtys. Žemiau yra paprogramės DRIFT, kurią iškviečia programa MonteCarlo3.dll, šablonas: #define _X86_ #include <windef.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <math.h> #include "MonteCarlo3_drift.h" #include "..\Constants.h" void FAR PASCAL DRIFT (TMC3_drift *drift_args) { double *eff_mass = drift_args->eff_mass-1; int iValley = drift_args->iValley; double tau = drift_args->tau; double field = drift_args->field;
76 double x = drift_args->x; double y = drift_args->y; double z = drift_args->z; double kx = drift_args->kx; double ky = drift_args->ky; double kz = drift_args->kz; double k_abs = drift_args->k_abs; double k_squared = drift_args->k_squared; //----------------------START-------------------------//-----------------------END--------------------------drift_args->x = x; drift_args->y = y; drift_args->z = z; drift_args->kx = kx; drift_args->k_abs = k_abs; drift_args->k_squared = k_squared; }
Programos dalis, kurią reikia parašyti, yra tarp komentarų eilučių su žodžiais „START“ ir „END“ (C++ kalboje komentarų eilutės pradedamos simboliu „//“). Prieš eilutę su žodžiu „START“ yra visų argumentų apibrėžtys. Visų argumentų prasmė yra paaiškinta Priede A. Be to, ten nurodyta, kurie argumentai yra „įėjimo“, o kurie – „išėjimo“. Įėjimo argumentai yra tie, kurių vertės yra žinomos iš anksto (jie apskaičiuojami prieš kreipinį į duotąją paprogramę). „Išėjimo“ argumentai yra tie, kurių vertes turi apskaičiuoti duotoji paprogramė. Skaičiavimams naudojamos formulės, kurios pateiktos konspektų teorinėje dalyje. Visos minėtosios paprogramės naudoja antraštinį failą „Constants.h“, kuriame yra apibrėžti kintamieji, kurių vertės lygios pagrindinių fizikinių konstantų vertėms. Todėl visose formulėse vietoj minėtųjų konstantų galima naudoti jų vardus (tie vardai paaiškinti lentelėje, kuri yra konspektų Priedo A skyrelyje A.1). Pvz., vietoj Planko konstantos galima rašyti „planck“. Rašant programas, reikia turėti omenyje, kad programoje MonteCarlo3.dll energija visur išreikšta elektronvoltais (visi kiti dydžiai išreikšti SI sistemos vienetais). Todėl, jeigu vienas iš duotosios paprogramės įėjimo parametrų yra energija, o skaičiavimus ketinama atlikti SI sistemoje, tada, prieš pradedant skaičiavimus, tą energiją reikia išreikšti džauliais. Analogiškai, jeigu paprogramėje skaičiavimai atliekami SI sistemoje, o vienas iš išėjimo parametrų yra energija, tada, prieš išeinant iš paprogramės, tą energiją reikia išreikšti elektronvoltais. Skaičiuojant sklaidos spartą, pradinis slėnis („iValley“) skaitomas iš failo „MonteCarloInit.txt“, kuris turi būti tame pačiame kataloge, kaip ir programa SimFitC.exe. Atliekant modeliavimą viendaleliu Monte Karlo metodu, pradinė elektrono būsena skaitoma iš to paties failo. Atliekant modeliavimą daugiadaleliu Mote Karlo metodu, minėtasis failas nėra naudojamas, nes dalelių pradinės būsenos yra generuojamos, naudojant atsitiktinių skaičių generatorių. Skaičiuojant sklaidos spartas, iš failo MonteCarloInit.txt skaitomas tik slėnio numeris (jis nurodytas pirmojoje minėtojo failo eilutėje).
77
Laboratorinių darbų užduotys Darbai Nr.0A – 4 – .DLL failų su paprogramėmis, kurias naudoja viendalelė Monte Karlo programa MonteCarlo3.dll (žr. Priedą A), rašymas C++ kalba, kompiliavimas (naudojant Microsoft Visual Studio 6.0) ir išbandymas: Darbai 0A – 0D – sklaidos spartų skaičiavimas Darbas Nr. 0A Joninės priemaišinės sklaidos spartos skaičiavimas (paprogramė rate_ion) Šią paprogramę iškviečia paprogramė rates (žr. 28b pav.). Paprogramės rate_ion aprašymas pateiktas Priedo A skyrelyje A.3. Joninės priemaišinės sklaidos spartos išraiška pateikta 2.2 poskyryje. Darbas Nr. 0B Akustinės fononinės sklaidos spartos skaičiavimas (paprogramė rate_acoustic) Šią paprogramę iškviečia paprogramė rates (žr. 28b pav.). Paprogramės rate_acoustic aprašymas pateiktas Priedo A skyrelyje A.3. Akustinės fononinės sklaidos spartos išraiška pateikta 2.3 poskyryje. Darbas Nr. 0C Optinės nepolinės tarpslėnės sklaidos spartos skaičiavimas (paprogramė rate_opt_inter) Šią paprogramę iškviečia paprogramė rates (žr. 28b pav.). Paprogramės rate_opt_inter aprašymas pateiktas Priedo A skyrelyje A.3. Optinės nepolinės tarpslėnės sklaidos spartos išraiška pateikta 2.3.3 poskyryje. Darbas Nr. 0D Optinės polinės (netarpslėnės) sklaidos spartos skaičiavimas (paprogramė rate_opt_pol) Šią paprogramę iškviečia paprogramė rates (žr. 28b pav.). Paprogramės rate_opt_pol aprašymas pateiktas Priedo A skyrelyje A.3. Polinės sklaidos optiniais fononais spartos išraiška pateikta 2.3.4 poskyryje. Darbai 1 – 4 – viendalelio Monte Karlo metodo atskirų etapų programavimas Darbas Nr. 1 Elektrono būsenos po sklaidos skaičiavimas (paprogramė finalState) Paprogramės finalState aprašymas pateiktas Priedo A skyrelyje A.3 (t.p. žr. 28a pav.). Elektrono būsenos po sklaidos skaičiavimo metodika aprašyta 3.3 poskyryje. Darbas Nr. 2 Kiekvieną sklaidos tipą ir kiekvieną pradinį slėnį atitinkančių elektrono energijos pokyčių ir galutinių slėnių nustatymas (paprogramė scatterTypes) Paprogramės scatterTypes aprašymas pateiktas Priedo A skyrelyje A.3 (t.p. žr. 28b pav.). Sklaidos procesų (tipų) ir slėnių numeravimo taisyklės yra aprašytos Priedo A skyrelyje A.1. Darbas Nr. 3 Sklaidos tipo pasirinkimas (paprogramė scatter) ir elektrono laisvojo lėkio trukmės generavimas (paprogramė flighttime) Paprogramių scatter ir flighttime aprašymai pateikti Priedo A skyrelyje A.3 (t.p. žr. 28a pav.). Lėkio trukmės generavimo metodika aprašyta 3.2 poskyryje, o sklaidos tipo pasirinkimo metodika aprašyta 3.3 poskyryje.
78
Darbas Nr. 4 Elektrono bangos vektoriaus komponenčių laisvojo lėkio pabaigoje skaičiavimas (paprogramė drift) ir elektrono energijos skaičiavimas pagal jo bangos vektorių (paprogramė energy) Paprogramių drift ir energy aprašymai pateikti Priedo A skyrelyje A.3 (t.p. žr. 28a pav.). Elektrono banginio vektoriaus pokyčio laisvo lėkio metu skaičiavimo metodika aprašyta 3.2 poskyryje, o lygtis energijos atžvilgiu yra (1.3.5) (1.3 poskyryje). Darbai Nr.5 – 8 – .DLL failų su paprogramėmis, kurias naudoja puslaidininkinių įtaisų modeliavimo Monte Karlo programa MonteCarlo5.dll (žr. Priedą B ir 27a−c pav.), rašymas C++ kalba, kompiliavimas (naudojant Microsoft Visual Studio 6.0) ir išbandymas: Darbas Nr. 5 Elektrono būsenos laisvojo lėkio pabaigoje skaičiavimas daugiadalelėje Monte Karlo programoje (paprogramė drift) Daugiadalelės paprogramės drift aprašymas pateiktas Priedo B skyrelyje B.2 (t.p. žr. 27b pav.). Daugiadalelės paprogramės drift ir viendalelės paprogramės drift skirtumai paaiškinti Priedo B skyrelyje B.1. Darbas Nr. 6 Elektronų koncentracijų kiekviename mazge skaičiavimas (paprogramė charge) Paprogramės charge aprašymas pateiktas Priedo B skyrelyje B.2 (t.p. žr. 27b pav.). Erdvinio krūvio tankio skaičiavimas „elektronų debesies“ metodu paaiškintas 4.7 poskyryje. Darbas Nr. 7 Puasono lygties sprendimas baigtinių skirtumų metodu (paprogramė poisson) Paprogramės poisson aprašymas pateiktas Priedo B skyrelyje B.2 (t.p. žr. 27a pav.). Puasono lygties sprendimo metodika paaiškinta 4.8 poskyryje. Darbas Nr. 8 Dalelės sukūrimas prie duotojo paviršinio mazgo (paprogramė create) Paprogramės create aprašymas pateiktas Priedo B skyrelyje B.2. Naujų dalelių kūrimo metodika paaiškinta 4.10 poskyryje. Darbai Nr.9 – 11 – Kai kurių fizikinių reiškinių, kurie vyksta GaAs įtaisuose, modeliavimas Monte Karlo metodu: Darbas Nr. 9 GaAs neigiamojo diferencialinio laidumo modeliavimas Darbas Nr. 10 Elektronų dreifo greičio perviršio galio arsenide modeliavimas Darbas Nr. 11 Nuskurdinimo reiškinio GaAs Šotkio diode modeliavimas Toliau pateikti darbų Nr. 9 – 11 aprašai.
79
Darbas Nr. 9 GaAs neigiamojo diferencialinio laidumo modeliavimas Darbo užduotys Viendaleliu Monte Karlo metodu apskaičiuoti elektronų dreifo greičio, energijos ir Γ bei L slėnių užpildų priklausomybes nuo elektrinio lauko stiprio galio arsenide, esant kelioms priemaišų koncentracijoms. Nustatyti neigiamojo diferencialinio laidumo atsiradimo sąlygas. Darbo teorija
7
E l e k tr o n ų d r e i f o g r e i ti s ( 1 0 c m /s )
Elektronų dreifo greičio priklausomybė nuo elektrinio lauko stiprio dažnai turi maksimumą (žr. L9-1 pav.). Dreifo greičio sumažėjimas, kai elektrinis laukas viršija tam tikrą slenkstinę vertę, yra vadinamas neigiamuoju diferencialiniu laidumu (NDL). Minėtasis slenkstinis elektrinis laukas dažniausiai būna artimas 4 kV/cm. Neigiamojo diferencialinio laidumo priežastis yra elektronų pernaša iš Γ slėnio, kuriame jų efektinė masė yra maža, į L slėnį, kuriame jų efektinė masė yra didelė. Žinome, kad elektronų judris yra lygus e *; (L9.1) m čia τ yra elektronų impulso relaksacijos trukmė, o m* yra elektronų efektinė masė. Vadinasi, elektronų efektinės masės padidėjimas yra susijęs su jų judrio sumažėjimu. Tuo pačiu sumažėja ir dreifo greitis, kuris lygus v E ; (L9.2) čia E yra elektrinio lauko stipris.
E l e k tr i n i o l a u k o s ti p r i s ( k V /c m ) L91 pav. Elektronų dreifo greičio galio arsenide priklausomybė nuo elektrinio lauko stiprio 300 K temperatūroje, kai jonizuotų priemaišų koncentracija lygi 1014 cm3 (iš [1]).
80 Elektronų pernaša iš Γ slėnio į L slėnį vyksta dėl to, kad elektrinis laukas „įkaitina“ elektronus. Kitais žodžiais, elektronų netvarkiojo judėjimo vidutinė kinetinė energija stipriame elektriniame lauke gali žymiai viršyti jų šiluminio judėjimo energiją (kBT). Atitinkamai, pagal Bolcmano pasiskirstymo funkciją, padidėja ir tikimybė aptikti elektronus aukštesniuose energijos lygmenyse, kurių užpilda normaliomis sąlygomis yra praktiškai lygi nuliui. Kai elektrono vidutinė kinetinė energija tampa tos pačios eilės, kaip L ir Γ slėnių energijų skirtumas (GaAs atveju – maždaug 0,3 eV), tampa pastebimas L slėnio užpildos augimas ir elektronų dreifo greičio mažėjimas. Kadangi būsenų tankis yra proporcingas (m*)3/2 (žr. (1.3.11)), tai būsenų tankis L slėnyje yra daug didesnis už būsenų tankį Γ slėnyje. Todėl, esant pakankamai aukštai elektronų energijai, dauguma elektronų pereina į L slėnį (nors Γ slėnio energija yra mažesnė). Tolimesnis elektronų dreifo greičio ir vidutinės energijos augimas, stiprėjant elektriniam laukui, yra žymiai lėtesnis, nes L slėnyje yra žymiai didesnė optinės fononinės sklaidos, emituojant fononą, tikimybė. Ši sklaida neleidžia žymiai išaugti elektronų energijai (sumažina energijos relaksacijos trukmę), t.y., sulėtina tolimesnį elektronų „kaitimą“. Darbo eiga 1. Startuoti programą SimFit.exe. Naudojant sąrašo langą „Modelis/Vardas“, pasirinkti eilutę „Darbas Nr. 9“. Programos langas turi atrodyti taip, kaip parodyta L9-2 pav. Jeigu laukuose „Parametrai“, „Duomenys“ ir „Valdymas“ yra kiti failų vardai, tada pasirinkti reikalingus failus naudojant lango dešiniojoje dalyje esančius mygtukus „Pasirinkti...“
L9-2 pav. Programos SimFit langas, pradedant laboratorinį darbą Nr. 9
81 2. Užduoti jonizuotų priemaišų koncentraciją 1020 m−3. Tą koncentraciją nusako parametras „Ni“ tekstiniame faile „9.par“. Norint pakeisti to parametro vertę, reikia spragtelėti mygtuką „Atidaryti“, kuris yra šalia lauko „Parametrai“ pagrindiniame programos lange (žr. L9-2 pav.). Tada atsidaro teksto redaktorius „Notepad“, su kuriuo dirbama įprastiniu būdu (žr. L9-3 pav.).
L9-3 pav. ASCII failo su medžiagos parametrais turinio pavyzdys
2. Pagrindiniame programos lange spragtelėti mygtuką „Atidaryti“, kuris yra greta lauko „Valdymas“ (žr. L9-2 pav.). Tada atsidaro valdymo parametrų modifikavimo dialoginis langas, kuris turi atrodyti taip, kaip parodyta L9-4 pav. Įvairių šio lango laukų prasmė yra tokia. Pasirenkamajame sąrašo lauke „Kintamojo numeris“ nurodomas nepriklausomojo kintamojo (t. y. funkcijos argumento, kurio vertės bus atidėtos ant abscisių ašies) numeris. Šiuo atveju tas kintamasis turi būti elektrinio lauko stipris. Parametrų faile „9.par“ užrašyta, kad šio kintamojo numeris yra 4. Todėl reikia pasirinkti 4. Teksto laukelyje „Priklausomų kint. numeriai“ reikia nurodyti priklausomųjų kintamųjų (t. y. funkcijų, kurių vertes reikia apskaičiuoti) numerius (jie turi būti atskirti tarpais arba kableliais). Pagal darbo sąlygą tos funkcijos turi būti elektrono vidutinis dreifo greitis (pagal failą „9.par“, šio kintamojo numeris yra 8), elektrono vidutinė energija (numeris 12), vidutinė Γ slėnio užpilda (numeris 27) ir vidutinė L slėnio užpilda (numeris 29). Laukuose „Ribinės vertės“ turi būti nurodyti pradinis ir galutinis elektrinio lauko stipris (atitinkamai 105 V/m ir 5 ⋅ 106 V/m). Lauke „Verčių skaičius“ turi būti nurodytas pilnutinis elektrinio lauko verčių (t. y. grafiko taškų) skaičius (50). Įvedus reikalingas valdymo parametrų vertes, reikia spragtelėti mygtuką „OK“ (žr. L9-4 pav.).
82
L9-4 pav. Valdymo parametrų modifikavimo dialoginis langas
4. Pagrindiniame dialoginiame lange spragtelėti mygtuką „Pradėti modeliavimą“ (žr. L9-2 pav.). Tada atsidaro DOS tipo langas, kuriame rodoma skaičiavimų eiga (žr. L9-5 pav.). Programa SimFitC.exe, apdorojusi kiekvieną elektrinio lauko vertę, tame lange atvaizduoja tos vertės numerį, o atitinkamas apskaičiuotąsias priklausomųjų kintamųjų vertes įrašo į skaičiavimo rezultatų failą „9.SIM“ ir tą failą iš karto išsaugo (todėl visas iki tol apskaičiuotas funkcijų vertes galima sužinoti, dar nepasibaigus skaičiavimams).
L9-5 pav. Programos SimFitC.exe langas skaičiavimų metu
83 Pasibaigus skaičiavimams, minėtasis langas įgyja tokį pavidalą kaip parodyta L9-6 pav. Tada reikia nuspausti bet kurį klavišą. Tokiu būdu grįžtama į pagrindinį langą (L9-2 pav.)
L9-6 pav. Programos SimFitC.exe langas pasibaigus skaičiavimams
5. Pagrindiniame lange spragtelėti mygtuką „Atidaryti“, kuris yra greta lauko „Šablonas“ (lango apačioje). Tada atsidaro kompanijos „OriginLab“ programos „Origin“ tuščias projektas, kuris specialiai sukurtas programos „SimFit“ rezultatų atvaizdavimui (žr. L9-7 pav.).
L9-7 pav. Grafikų atvaizdavimo šablonas prieš importuojant duomenis
84 6. Atsidariusiame Origin lange reikia spragtelėti mygtuką „Add Latest Results“ (žr. L9-7 pav.). Tada tame grafike atsiranda dvi kreivės: juoda kreivė nusako elektrono dreifo greičio priklausomybę nuo elektrinio lauko stiprio, o raudona kreivė nusako elektrono energijos, atskaitytos nuo Γ slėnio dugno, priklausomybę nuo elektrinio lauko stiprio (žr. L9-8 pav.). Dreifo greitis atidėtas ant kairiosios ašies (m/s), energija atidėta ant dešiniosios ašies (eV), o elektrinio lauko stipris atidėtas ant apatinės ašies (V/m). 7. Kitos dvi priklausomybės (Γ ir L slėnių užpildos) nėra pavaizduotos, nes parametrų faile „9.par“ buvo nurodyta, kad šios priklausomybės turi būti pateiktos tik tekstiniu formatu. Todėl, norint išnagrinėti tas priklausomybes, reikia atidaryti rezultatų tekstinį failą „9.SIM“. Tuo tikslu reikia spragtelėti mygtuką „Atidaryti“, kuris yra šalia lauko „Rezultatai“ (tame lauke įvestas rezultatų failo vardas „9.SIM“). Tokiu būdu atidaryto failo turinio pavyzdys parodytas L9-9 pav.). Failą sudaro 5 stulpeliai: 1) stulpelis „field“, kuriame pateiktos elektrinio lauko stiprio vertės (V/m), 2) stulpelis „vel_E“, kuriame pateiktos atitinkamos elektrono dreifo greičio vertės (m/s), 3) stulpelis „En_mean&“, kuriame pateiktos elektrono vidutinės energijos vertės (eV) (ženklas „&” nurodo programai “Origin”, kad tos vertės turi būti atidėtos ant dešiniosios ašies), 4) stulpelis “*nG_sant”, kuriame pateiktos Γ slėnio užpildos vertės (ženklas * nurodo programai „Origin“, kad tos vertės neturi būti importuojamos į grafiką, atidarant šį failą), 5) stulpelis „*nL_sant“, kuriame pateiktos L slėnio užpildos vertės (ženklas * nurodo programai „Origin“, kad tos vertės neturi būti importuojamos į grafiką, atidarant šį failą).
L9-8 pav. Skaičiavimo rezultatų grafinio atvaizdavimo pavyzdys
85
L9-9 pav. ASCII failo su skaičiavimo rezultatais pavyzdys
8. Aukščiau aprašytus žingsnius Nr. 2 – 7 atlikti dar du kartus, esant kitoms dviem jonizuotų priemaišų koncentracijoms: 1023 m−3 ir 1026 m−3. Dėmesio! Prieš pradedant skaičiavimus su nauja koncentracija, reikia pakeisti ankstesniųjų rezultatų failo vardą (priešingu atveju tie rezultatai būtų prarasti, nes, pradėjus skaičiavimus, ankstesniųjų rezultatų failas „9.SIM“ visada automatiškai ištrinamas). 9. Remiantis visomis gautosiomis priklausomybėmis, apytiksliai nustatyti elektronų vidutinę kinetinę energiją, kuriai esant, praktiškai užsibaigia elektronų pernaša iš Γ slėnio į L slėnį. Palyginti tą energiją su L ir Γ slėnių energijų skirtumu. Paaiškinti kitus stebimuosius dėsningumus.
86
Darbas Nr. 10 Elektronų dreifo greičio perviršio galio arsenide modeliavimas Darbo užduotys Daugiadaleliu Monte Karlo metodu apskaičiuoti elektronų dreifo greičio priklausomybę nuo laiko, kuris praėjo nuo elektrinio lauko įjungimo momento, esant keliems elektrinio lauko stipriams. Paaiškinti gautuosius dėsningumus. Darbo teorija
7
E l e k tr o n ų d r e i f o g r e i ti s ( 1 0 c m /s )
Puslaidininkinių įtaisų matmenys šiuolaikinėse integrinėse grandinėse dažnai būna mažesni už 1 μm. Todėl elektronų pernašos nuo vieno elektrodo iki kito trukmė gali tapti mažesnė už jų impulso relaksacijos trukmę (taip vadinamas vidutinis laikas, per kurį elektronas praranda kryptingojo judėjimo greitį). Tai reiškia, kad „šaltieji“ elektronai, kurie buvo injektuoti į įtaisą, gali nespėti pasiekti stacionariojo dreifo greičio per judėjimo trukmę. Vienas iš šio reiškinio požymių yra tas, kad vidutinis elektronų kryptingojo judėjimo greitis (t.y., dreifo greitis) mažo įtaiso viduje gali tapti didesnis už dreifo greitį didesnių matmenų bandinyje, esant tam pačiam elektrinio lauko stipriui. Tai yra vadinamasis dreifo greičio perviršis. Kad taptų įmanomas dreifo greičio perviršis, reikalingas ne tik stiprus elektrinis laukas. Dar reikia, kad, esant aukštoms elektronų energijoms (t.y., energijoms, kurios žymiai didesnės už vidutinę šiluminio judėjimo energiją kBT), pasireikštų netampriosios sklaidos mechanizmai, kurie nepasireiškia, esant mažesnėms energijoms (pvz., sklaida optiniais fononais, emituojant fononą). Tada elektronų dreifą galima aprašyti taip. Įjungus lauką (arba injektavus „šaltuosius“ elektronus į erdvės sritį, kur yra laukas), visi elektronai pradeda greitėti. Kadangi daugumos elektronų
L aik as (p s) L101 pav.
Elektronų dreifo greičio silicyje priklausomybė nuo laiko, esant kelioms elektrinio lauko stiprio vertėms. Priemaišų jonų koncentracija lygi 1020 m−3.
87 pradinės energijos buvo palyginti mažos (artimos kBT), tai, esant pakankamai stipriam laukui, apytiksliai galima laikyti, kad visų elektronų pradinė energija lygi nuliui, t.y., elektronai iš pradžių nejuda. Vadinasi, iš pradžių visų elektronų energija auga sinchroniškai. T.y., visų elektronų energijos pradinėje stadijoje lieka apytiksliai vienodos. Kadangi visi elektronai greitinami ta pačia kryptimi, tai dreifo greitis taip pat auga laike. Taip vyksta iki pirmojo netampriojo sklaidos įvykio. Dėl netampriosios sklaidos elektronų energijos skirstinys išplinta (t.y., jau negalima laikyti, kad visų elektronų energijos yra apytiksliai vienodos). Po 10 −12 s eilės laiko elektronų energijos skirstinys tampa artimas Bolcmano skirstiniui (tačiau to skirstinio parametras T gali būti žymiai didesnis už aplinkos temperatūrą). Išplitus energijos skirstiniui, padaugėja mažos energijos elektronų, kurių dreifo greitis yra mažesnis. Todėl sumažėja ir pilnutinis vidutinis dreifo greitis. Taigi, stipriuose laukuose elektronų dreifo greičio priklausomybė nuo laiko turi maksimumą (žr. L10-1 pav.). Aukščiau pateiktasis aiškinimas tinka visiems puslaidininkiams. Tačiau galio arsenide pasireiškia dar vienas reiškinys, kuris sustiprina dreifo greičio perviršio efektą: esant pakankamai aukštai elektronų energijai, tampa įmanoma elektronų pernaša iš Γ slėnio į L slėnį. Kadangi L slėnyje elektronų efektinė masė yra didesnė, negu Γ slėnyje, tai būsenų tankis taip pat yra didesnis (žr. (1.3.11)). Todėl, esant pakankamai stipriam elektriniam laukui, dauguma pagreitintųjų elektronų jau po pirmųjų netampriosios sklaidos įvykių pereina iš Γ į L slėnį. Kadangi elektronų judris yra atvirkščiai proporcingas efektinei masei (žr. (L9.1) formulę), tai elektronų dreifo greitis L slėnyje yra mažesnis, negu Γ slėnyje. Vadinasi, GaAs atveju dreifo greitis sumažėja ne vien dėl elektronų energijos skirstinio išplitimo, bet ir dėl elektronų efektinės masės padidėjimo, jiems perėjus iš Γ slėnio į L slėnį. Darbo eiga 1. Startuoti programą SimFit.exe. Naudojant sąrašo langą „Modelis/Vardas“, pasirinkti eilutę „Darbas Nr. 10“. Programos langas turi atrodyti taip, kaip parodyta L10-2 pav. Jeigu laukuose „Parametrai“, „Duomenys“ ir „Valdymas“ yra kiti failų vardai, tada pasirinkti reikalingus failus naudojant lango dešiniojoje dalyje esančius mygtukus „Pasirinkti...“
L10-2 pav. Programos SimFit langas, pradedant laboratorinį darbą Nr. 10
88 2. Užduoti elektrinio lauko stiprio vertę 5 ⋅ 106 V/m. Tą vertę nusako parametras „field“ tekstiniame faile „10.par“. Norint pakeisti to parametro vertę, reikia spragtelėti mygtuką „Atidaryti“, kuris yra šalia lauko „Parametrai“ pagrindiniame programos lange (žr. L10-2 pav.). Tada atsidaro teksto redaktorius „Notepad“, su kuriuo dirbama įprastiniu būdu (žr. L10-3 pav.). Pastaba: Kad elektronų greitis būtų teigiamas, lauko vertė turi būti neigiama (t. y. lauko kryptis turi būti priešinga y ašies krypčiai).
L10-3 pav. ASCII failo su medžiagos parametrais turinio pavyzdys
3. Spragtelėti mygtuką „Atidaryti“, kuris yra greta lauko „Valdymas“. Tada atsidaro valdymo parametrų modifikavimo dialoginis langas, kuris turi atrodyti taip, kaip parodyta L10-4 pav. Įvairių šio lango laukų prasmė yra tokia. Pasirenkamajame sąrašo lauke „Kintamojo numeris“ nurodomas nepriklausomojo kintamojo (t. y. funkcijos argumento, kurio vertės bus atidėtos ant abscisių ašies) numeris. Šiuo atveju tas kintamasis turi būti proceso trukmė. Parametrų faile „10.par“ užrašyta, kad šio kintamojo numeris yra 1. Todėl reikia pasirinkti 1. Teksto laukelyje „Priklausomų kint. numeriai“ reikia nurodyti priklausomųjų kintamųjų (t. y. funkcijų, kurių vertes reikia apskaičiuoti) numerius (jie turi būti atskirti tarpais arba kableliais). Pagal darbo sąlygą ta funkcija – tai elektrono greičio komponentės lauko kryptimi (t. y. y kryptimi) momentinis vidurkis visų elektronų atžvilgiu (pagal failą „10.par“ šio kintamojo numeris yra 37). Laukuose „Ribinės vertės“ turi būti nurodyti pradinis ir galutinis laiko momentai (atitinkamai 0 ir 10−12 s). Lauke „Verčių skaičius“ turi būti nurodytas pilnutinis laiko verčių (t. y. grafiko taškų) skaičius (101). Įvedus reikalingas valdymo parametrų vertes, reikia spragtelėti mygtuką „OK“ (žr. L10-4 pav.)
89
L10-4 pav. Valdymo parametrų modifikavimo dialoginis langas
4. Pagrindiniame dialoginiame lange spragtelėti mygtuką „Pradėti modeliavimą“ (žr. L10-2 pav.). Tada atsidaro DOS tipo langas, kuriame rodoma skaičiavimų eiga (žr. L10-5 pav.). Programa SimFitC.exe, apdorojusi kiekvieną laiko momentą, tame lange atvaizduoja tos vertės numerį ir dalelių skaičių, o atitinkamas apskaičiuotąsias vidutinio greičio vertes įrašo į skaičiavimo rezultatų failą „10.SIM“ ir tą failą iš karto išsaugo (todėl visas iki tol apskaičiuotas vidutinio greičio vertes galima sužinoti, dar nepasibaigus skaičiavimams).
L10-5 pav. Programos SimFitC.exe langas skaičiavimų metu
90
Pasibaigus skaičiavimams, minėtasis langas įgyja tokį pavidalą kaip parodyta L10-6 pav. Tada reikia nuspausti bet kurį klavišą. Tokiu būdu grįžtama į pagrindinį langą (L10-2 pav.)
L10-6 pav. Programos SimFitC.exe langas pasibaigus skaičiavimams
5. Pagrindiniame lange spragtelėti mygtuką „Atidaryti“, kuris yra greta lauko „Šablonas“ (lango apačioje). Tada atsidaro kompanijos „OriginLab“ programos „Origin“ tuščias projektas, kuris specialiai sukurtas programos „SimFit“ rezultatų atvaizdavimui (žr. L10-7 pav.).
L10-7 pav. Grafikų atvaizdavimo šablonas prieš importuojant duomenis
91
6. Atsidariusiame Origin lange reikia spragtelėti mygtuką „Add Latest Results“ (žr. L10-7 pav.). Tada tame grafike atsiranda kreivė, kuri nusako elektronų greičio komponentės lauko kryptimi vidurkio (m/s) priklausomybę nuo laiko (s) (žr. L10-8 pav.).
L10-8 pav. Skaičiavimo rezultatų pavyzdys
7. Aukščiau aprašytus žingsnius Nr. 2 – 6 pakartoti dar tris kartus, esant kitoms trims elektrinio lauko stiprio vertėms: 2 MV/cm, 1 MV/m ir 500 kV/m. Visais atvejais priemaišų koncentracija 1020 m−3 (ją nusako parametras „N_1“ faile „10.par“), o temperatūra 300 K (ją nusako parametras „T“ faile „10.par“). Dėmesio! Prieš pradedant skaičiavimus su nauju lauko stipriu, reikia pakeisti ankstesniųjų rezultatų failo vardą (priešingu atveju tie rezultatai būtų prarasti, nes, pradėjus skaičiavimus, ankstesniųjų rezultatų failas „10.SIM“ visada automatiškai ištrinamas). Paaiškinti stebimuosius dėsningumus. Pastaba: Atliekant šį darbą, parametras constField faile 10.par turi būti lygus 2 (žr. L10-3 pav.). Tada kiekviena dalelė, kuri dreifo pabaigoje atsiduria erdvės srityje y < 0, yra „paslenkama“ atstumu height koordinatės y didėjimo kryptimi, t.y., jos y koordinatė tampa height – |y|, o kitos dvi koordinatės ir bangos vektoriaus komponentės lieka nepakitusios. Analogiškai, kiekviena dalelė, kuri dreifo pabaigoje atsiduria erdvės srityje y > height, yra paslenkama atstumu height y mažėjimo kryptimi. Taigi, kai constField = 2, nėra modeliuojamas nei elektronų išėjimas pro kontaktus, nei jų atspindys nuo plokštumų y = 0 arba y = height (tačiau yra modeliuojamas atspindys nuo plokštumų x = 0, x = width, z = 0 ir z = depth). Tai reiškia, kad elektronų judėjimas y kryptimi nėra apribotas, t.y., tampa įmanoma modeliuoti judėjimą begalinių matmenų bandinyje, kuriame egzistuoja vienalytis elektrinis laukas, kuris lygiagretus y ašiai.
92
Darbas Nr. 11 Nuskurdinimo reiškinio GaAs Šotkio diode modeliavimas Darbo užduotys Daugiadaleliu Monte Karlo metodu apskaičiuoti nuskurdintojo sluoksnio storį ir potencialo bei elektrinio lauko stiprio priklausomybes nuo koordinatės, esant įtampoms, kurios prijungtos prie GaAs Šotkio diodo. Paaiškinti gautuosius dėsningumus, palyginti minėtąsias priklausomybes su teorinėm priklausomybėm, kurios išplaukia iš nuskurdinimo artinio. Darbo teorija Šio darbo teorija išdėstyta 4.6 poskyryje. Darbo eiga 1. Startuoti programą SimFit.exe. Naudojant sąrašo langą „Modelis/Vardas“, pasirinkti eilutę „Darbas Nr. 10“. Programos langas turi atrodyti taip, kaip parodyta L10-2 pav. Jeigu laukuose „Parametrai“, „Duomenys“ ir „Valdymas“ yra kiti failų vardai, tada pasirinkti reikalingus failus naudojant lango dešiniojoje dalyje esančius mygtukus „Pasirinkti...“
L11-1 pav. Programos SimFit langas, pradedant laboratorinį darbą Nr. 11
2. Užduoti Šotkio diodo išorinę įtampą −0,4 V (ženklas „−“ atitinka atgalinę įtampą, o ženklas „+“ atitinka tiesioginę įtampą). Įtampą nusako parametras „U_1“, kurio vertė saugoma ASCII formato parametrų faile „Data\MonteCarlo5\11.par“. Norint pakeisti to parametro vertę, reikia spragtelėti mygtuką „Atidaryti“, kuris yra šalia lauko „Parametrai“ pagrindiniame programos lange (žr. L11-1 pav.). Tada atsidaro teksto redaktorius „Notepad“, su kuriuo dirbama įprastiniu būdu (žr. L11-2 pav.; šiame pavyzdyje parametras „U_1“ lygus 0,2, t. y. naudojama 0,2 V tiesioginė įtampa).
93
L11-2 pav. ASCII failo su medžiagos parametrais turinio pavyzdys
Kaip matome L11-2 pav., faile „Data\MonteCarlo5\11.par“ yra nurodyta, kad pirmasis (viršutinis) kontaktas yra užtvarinis (parametras „cont_type_1“ yra 2), o antrasis (apatinis) kontaktas yra ominis (parametras „cont_type_2“ yra 1). Įtaiso matmenys x kryptimi, y kryptimi ir z kryptimi yra 0,4 × 0,4 × 1 μm („Width“ × „Height“ × „Depth“). Kontaktinis potencialų skirtumas tarp užtvarinio elektrodo ir puslaidininkio yra −0,4 V (šį potencialų skirtumą lemia pirmojo kontakto elektronų išlaisvinimo darbas, kurį nusako parametras „A_1“). Donoro jonų koncentracija visame įtaiso tūryje yra 1022 m−3 (parametras „N_1“). 3. Spragtelėti mygtuką „Atidaryti“, kuris yra greta lauko „Valdymas“. Tada atsidaro valdymo parametrų modifikavimo dialoginis langas, kuris turi atrodyti taip, kaip parodyta L11-3 pav. Įvairių šio lango laukų prasmė yra tokia. Pasirenkamajame sąrašo lauke „Kintamojo numeris“ nurodomas nepriklausomojo kintamojo (t. y. funkcijos argumento, kurio vertės bus atidėtos ant abscisių ašies) numeris. Šiuo atveju tas kintamasis turi būti proceso trukmė. Parametrų faile „11.par“ užrašyta, kad šio kintamojo numeris yra 1. Todėl reikia pasirinkti 1. Teksto laukelyje „Priklausomų kint. numeriai“ reikia nurodyti priklausomųjų kintamųjų (t. y. funkcijų, kurių vertes reikia apskaičiuoti) numerius (jie turi būti atskirti tarpais arba kableliais). Šiuo atveju priklausomieji kintamieji nebus naudojami (vietoj jų bus nagrinėjami koncentracijų ir potencialo dvimačiai pjūviai), todėl galima nurodyti bet kokį priklausomąjį kintamąjį, pvz., pilnutinį dalelių skaičių įtaiso tūryje (pagal failą „11.par“ šio kintamojo numeris yra 17). Laukuose „Ribinės vertės“ turi būti nurodyti pradinis ir galutinis laiko momentai (atitinkamai 0 ir 10−11 s). Lauke „Verčių skaičius“ turi būti nurodytas pilnutinis laiko verčių skaičius (1001). Įvedus reikalingas valdymo parametrų vertes, reikia spragtelėti mygtuką „OK“ (žr. L11-3 pav.)
94
L11-3 pav. Valdymo parametrų modifikavimo dialoginis langas
4. Pagrindiniame dialoginiame lange spragtelėti mygtuką „Pradėti modeliavimą“ (žr. L11-2 pav.). Tada atsidaro DOS tipo langas, kuriame rodoma skaičiavimų eiga (žr. L11-4 pav.). Programa SimFitC.exe, apdorojusi kiekvieną laiko momentą, tame lange atvaizduoja tos vertės numerį ir dalelių skaičių. Elektrinį neutralumą atitinka dalelių skaičius 1600. Kadangi sluoksnio dalis, kuri prigludusi prie užtvarinio kontakto, yra palaipsniui nuskurdinama, tai po tam tikro laiko dalelių skaičius pradeda mažėti ir tampa mažesnis už 1600 (žr. L11-5 pav.).
L11-4 pav. Programos SimFitC.exe langas skaičiavimų pradžioje
95
L11-5 pav. Programos SimFitC.exe langas skaičiavimų metu
Šiame darbe nereikia laukti, kol programa apdoros visus 1001 laiko momentus (tai užtruktų labai ilgai). Skaičiavimus reikia nutraukti, kai dalelių skaičius apytiksliai nusistovi (žr. L10-6 pav.). Tada galima uždaryti programos langą.
L11-6 pav. Programos SimFitC.exe langas skaičiavimų baigiamajame etape
5. Programa MonteCarlo5.dll, apdorojusi kiekvieną laiko momentą, įrašo erdvinio krūvio tankio, elektrinio lauko stiprio ir potencialo priklausomybes nuo koordinatės į failą „xMean.txt“, kuris yra tame pačiame kataloge, kaip ir failas SimFit.exe. Minėtame faile yra septyni skaičių stulpeliai: 1) y koordinatė (m), 2) potencialas (V), 3) elektrinio lauko stiprio x komponentė (V/m), 4) elektrinio lauko stiprio y komponentė (V/m), 5) elektronų koncentracija (m−3), 6) donoro jonų koncentracija (m−3), 7) donoro jonų ir elektronų koncentracijų skirtumas (m−3).
96 Kiekviename iš tų stulpelių yra atitinkamo fizikinio dydžio vidurkis x koordinatės atžvilgiu (kadangi šiame darbe visi įtaiso parametrai nepriklauso nuo x koordinatės, tai erdvinio krūvio tankio, elektrinio lauko stiprio ir potencialo priklausomybė nuo x koordinatės atsiranda tik dėl atsitiktinių fluktuacijų). Failo „xMean.txt“ turinio pavyzdys pateiktas L11-7 pav.
L11-7 pav. Failo „xMean.txt“ pavyzdys
-3
Donoro jonų ir elektronų koncentracijų skirtumas (m )
Naudojantis failu „xMean.txt“, nubraižomos minėtosios priklausomybės, esant duotai išorinei įtampai. Pvz., L11-8 pav. pateiktas donoro jonų ir elektronų koncentracijų skirtumo priklausomybės nuo y koordinatės pavyzdys, esant 0,2 V tiesioginei įtampai. Akivaizdus nuskurdinimas prie kairiojo (užtvarinio) kontakto: ten minėtasis skirtumas yra praktiškai lygus donorų koncentracijai (1022 m−3), t. y. laisvųjų elektronų beveik nėra. 1,20E+022 1,00E+022 8,00E+021 6,00E+021 4,00E+021 2,00E+021 0,00E+000 0,0 -2,00E+021
-7
1,0x10
-7
2,0x10
-7
3,0x10
-7
4,0x10
K oordinatė (m)
L11-8 pav. Donoro jonų ir elektronų koncentracijų skirtumas, esant 0,2 V tiesioginei įtampai
97 7. Aukščiau aprašytus žingsnius Nr. 2 – 6 pakartoti dar tris kartus, esant kitoms trims išorinės įtampos vertėms: −0.2 V, 0 V ir +0,2 V. Dėmesio! Prieš pradedant skaičiavimus su nauja įtampa stipriu, reikia pakeisti ankstesniųjų rezultatų failo „xMean.txt‘ vardą (priešingu atveju tie rezultatai būtų prarasti, nes, pradėjus skaičiavimus, ankstesniųjų rezultatų failas „xMean.txt“ visada automatiškai ištrinamas). 8. Kiekvienu atveju išmatuoti nuskurdintojo sluoksnio storį (tai yra taško, kuriame elektronų koncentracija yra du kartus mažesnė už donorų koncentraciją, koordinatė), palyginti jo vertę su ta, kuri išplaukia iš (4.6.15) formulės. Paaiškinti kitus stebimuosius dėsningumus.
98
Literatūra 1. Tomizawa K. Numerical Simulation of Submicron Semiconductor Devices. – Boston, London: Artech House, 1993. – 342 p. 2. Moglestue C. Monte Carlo Simulation of Semiconductor Devices. – London: Chapman & Hall, 1993. – 326 p. 3. Dargys A., Kundrotas J. Handbook on physical properties of Ge, Si, GaAs and InP. – Vilnius: Science and Encyclopedia Publishers, 1994. – 264 p.