KANDIDAATINTYÖ Tuukka Junnikkala SÄHKÖTEKNIIKAN

KANDIDAATINTYÖ
Tuukka Junnikkala
SÄHKÖTEKNIIKAN KOULUTUSOHJELMA
2015
KANDIDAATINTYÖ
Tuukka Junnikkala
Ohjaajat: Kari Määttä, Antti Mäntyniemi
SÄHKÖTEKNIIKAN KOULUTUSOHJELMA
2015
Junnikkala T. (2015) Kandidaatintyö. Oulun yliopisto, sähkötekniikan osasto,
sähkötekniikan koulutusohjelma. Kandidaatintyö, 96 s.
TIIVISTELMÄ
Tämä kandidaatintyö koostuu Analogiatekniikan työt ja Ohjelmoitava elektroniikka kurssien kirjallisista osista. Analogiatekniikan töiden osuus koostuu
suunnitteluharjoitusta edeltävistä kirjallisista esitehtävistä. Niissä perehdytään
elektronisten piirien suunnitteluun ja niiden toiminnan varmentamiseen piirisuunnittelutyökalujen avulla. Tarkastelun kohteena ovat pääasiassa yksinkertaiset passiiviset ja aktiiviset komponentit. Ohjelmoitavan elektroniikan kurssissa puolestaan suunniteltiin jaksollisen digitaalisen signaalin kellotaajuutta
mittaava laite, joka toteutettiin ohjelmoitavan FPGA-piirin (fieldprogrammable gate array) avulla.
Avainsanat: tekniikan kandidaatintyö, analogiatekniikka, digitaalitekniikka,
taajuusmittari, field-programmable gate array.
Junnikkala T. (2015) Bachelor’s Thesis. University of Oulu, Department of Electrical Engineering, Degree Programme in Electrical Engineering. Bachelor’s Thesis,
96 p.
ABSTRACT
This Bachelor’s Thesis consists of the written portions for the courses Laboratory Exercises on Analogue Electronics and Programmable Electronics. The analogue electronics portion consists of the written pre-exercises preceding the design exercise. In them one gains more familiarity with designing electronic circuits and how to verify their operation using circuit simulation software. Chiefly
simple passive and active components are reviewed. In the Programmable Electronics course the task was to design a device that can measure the frequency of
a periodic digital signal. The design was realised using a programmable FPGA
(field-programmable gate array) chip.
Keywords: Bachelor of Science thesis, analogue electronics, digital electronics,
frequency meter, field-programmable gate array.
SISÄLLYSLUETTELO
TIIVISTELMÄ
ABSTRACT
SISÄLLYSLUETTELO
1. ANALOGIATEKNIIKAN TYÖT..........................................................................5
1.1. Passiiviset komponentit ja diodit.....................................................................5
1.1.1. Vastusjaon analysoiminen.......................................................................5
1.1.2. AC-kytketyn vastusjaon analysoiminen..................................................7
1.1.3. Alipäästävän vastusjaon analysoiminen................................................10
1.1.4. Puoliaaltotasasuuntaajan analysoiminen...............................................13
1.1.5. Yksinkertaisen AC/DC-muuntimen analysoiminen..............................15
1.1.6. Kaksipuolisen DC-jännitelähteen suunnitteleminen.............................16
1.2. BJT-vahvistin.................................................................................................18
1.2.1. Heikosti biasoidun BJT-vahvistimen analysoiminen............................18
1.2.2. Yhteisemitterikytketyn vahvistinasteen analysoiminen........................25
1.3. Operaatiovahvistin.........................................................................................37
1.3.1. Avoimen silmukan toiminta..................................................................37
1.3.2. Suljetun silmukan toiminta...................................................................39
1.4. Differentiaalipari............................................................................................46
1.4.1. Takaisinkytkemättömän vahvistimen toiminta.....................................46
1.4.2. Takaisinkytketyn vahvistimen toiminta................................................55
2. OHJELMOITAVA ELEKTRONIIKKA..............................................................64
2.1. Vaatimusmäärittely........................................................................................64
2.1.1. Suorituskyky ja reunaehdot...................................................................64
2.1.2. Toimintaperiaate...................................................................................66
2.1.2.1. Taajuuden mittaaminen................................................................66
2.1.2.2. Sisäinen signaaligeneraattori.......................................................67
2.1.3. Käyttöliittymä.......................................................................................68
2.1.4. Testattavuus...........................................................................................68
2.1.5. Toteutettavuusanalyysi..........................................................................68
2.2. Rekisterisiirtotason kuvaus............................................................................69
2.2.1. Rakennelohkot.......................................................................................69
2.2.2. Lohkojen rakenne ja toimintaperiaate...................................................69
2.2.2.1. Ohjausosa.....................................................................................69
2.2.2.2. Taajuusmittari..............................................................................72
2.2.2.3. Signaaligeneraattori.....................................................................73
2.3. Käytännöntoteutus.........................................................................................74
3. LIITTEET.............................................................................................................80
1. ANALOGIATEKNIIKAN TYÖT
Tämä ensimmäinen osa kandidaatintyöstä sisältää kuvaukset Analogiatekniikan työt
kurssin esitehtävissä esitetyistä kysymyksistä ja vastaukset kuhunkin niistä. Tehtävien tarkoituksena on perehtyä elektronisten piirien suunnitteluun ja niiden toiminnan
varmentamiseen piirisuunnittelutyökalujen avulla. Tarkastelun kohteena ovat pääasiassa yksinkertaiset passiiviset ja aktiiviset komponentit. Harjoituksissa vaaditut simuloinnit suoritettiin käyttäen OrCAD-piirisuunnitteluohjelman ilmaista 9.2 Lite
versiota.
1.1. Passiiviset komponentit ja diodit
1.1.1. Vastusjaon analysoiminen
Tehtävässä 1.1 esitettiin kuvan 1 mukainen kytkentä, jonka DC-toimintapiste eli lähtöjännite ja vastusten läpi kulkeva virta pyydettiin laskemaan, kun jännitelähteen
DC-komponentti on 5 V ja AC-jännite 0 V. Vastuksien läpi kulkeva virta saadaan
laskettua jakamalla niiden yli oleva jännite vastuksien yhteisresistanssilla:
𝐼𝐷𝐢 =
𝑉𝐷𝐢
5𝑉
=
β‰ˆ 1,67 π‘šπ΄
𝑅1 + 𝑅2 1 π‘˜π›Ί + 2 π‘˜π›Ί
(1)
Piirin lähtöjännite puolestaan voidaan laskea vähentämällä viidestä voltista vastuksen
R1 yli jäävä jännite:
π‘‰π‘‚π‘ˆπ‘‡ = 𝑉𝐷𝐢 βˆ’ 𝑅1 𝐼𝐷𝐢 = 5 𝑉 βˆ’ 1 π‘˜π›Ί βˆ™ 1,67 π‘šπ΄ = 3,33 𝑉
(2)
6
Kuva 1. Vastusjako.
Seuraavaksi tehtävässä pyydettiin tarkistamaan saatu tulos simuloimalla kytkennän DC-toimintapiste. Simulointitulokset on esitetty kuvassa 2 ja ne vastaavat käsin
laskettuja arvoja. Toisena simulointina haluttiin suoritettavan transienttianalyysi
kymmenen jaksonpituuden ajalta käyttäen signaalilähteen DC-jännitteenä 5 volttia
AC-komponentin amplitudin ollessa 1 V ja taajuus 1 kHz. Tulo- ja lähtösignaali on
tulostettu kuvaan 3, josta nähdään AC-signaalin amplitudin olevan lähdössä noin
0,67 V.
Kuva 2. Vastusjaon DC-toimintapiste.
7
Kuva 3. Vastusjaon tulo- ja lähtöjännite.
1.1.2. AC-kytketyn vastusjaon analysoiminen
Kuvan 4 mukaista AC-kytkettyä vastusjakoa pyydettiin analysoimaan tehtävässä 1.2
käyttäen tulosignaalina 1 kHz taajuista sakara-aaltoa, jonka jännite vaihtelee välillä
±2,5 V. Signaalin nousu- ja laskuaika ovat 1 µs, periodi 1 ms, pulssinleveys puolet
periodista ja alkamisviive 10 ms. Kuvassa näkyvän DC-jännitelähteen arvo on puolestaan 5 V. Kytkennälle tuli suorittaa transienttianalyysi 50 millisekunnin ajalta ja
selittää kuvaajassa havaittava alkutransientti sekä signaalin aaltomuoto. Tulokset
ovat nähtävissä kuvassa 5, jossa tulosignaali on sijoitettu ylös ja lähtö sen alapuolelle.
8
Kuva 4. AC-kytketty vastusjako.
Kuva 5. AC-kytketyn vastusjaon tulo- ja lähtöjännite.
Kuvasta nähdään, että lähtösignaalin DC-taso on signaalin alettua aluksi korkeampi kuin kohdassa 1.1.1. laskettu vastusjaon asettama 3,33 V, mutta se asettuu kohtalaisen nopeasti kyseiselle tasolle. Alkutransientti aiheutuu kytkennässä siitä, että
kondensaattori C1 on ehtinyt varautua 10 ms ajan ennen kuin AC-signaalia aletaan
9
syöttää piirin. Tämän takia AC-signaali summautuu aluksi suoraan lähdön DCjännitteen päälle, mutta tarpeeksi monen jatkon kuluttua kondensaattorin varaus päätyy tasapainotilaan ja lähdön DC-taso asettuu kohdalleen.
Toisena seikkana huomataan, että sakara-aallon harjat eivät ole lähdössä enää tasahuippuisia, vaan huipun amplitudi pienenee kohti sakaran jälkimmäistä reunaa.
Ilmiö johtuu siitä, että kondensaattori tilanteesta riippuen joko purkautuu tai latautuu
niin kauan kun AC-signaali pysyy vakioarvossa, vieden lähdön arvoa hiljalleen kohti
DC-komponentin jännitettä.
Seuraavaksi kytkentää piti myös simuloida kapasitanssin arvoilla 30 µF ja 50 µF.
Kyseisten simulointien tulokset on esitetty kuvissa 6 ja 7. Voidaan havaita kondensaattorin arvon kasvattamisen pidentävän alkutransientin kestoa. Tämä johtuu siitä,
että kapasitanssin kasvaessa kondensaattoriin voidaan kerätä suurempi varaus ja tämän ylimääräisen varauksen purkautuminen vaatii kauemmin kuin pienemmän kapasitanssin kun tilanne on muuten identtinen. Positiivisena puolena suuremman kondensaattorin käyttäminen parantaa sakara-aallon aaltomuodon säilymistä, kuten kuvia vertailemalla voidaan todeta. Amplitudin hitaampi pieneneminen johtuu niin
ikään siitä, että suuremman kondensaattorin purkaminen ja lataaminen vaatii pidemmän ajanjakson loiventaen täten lähdön huippujen vaimenemista.
Kuva 6. AC-kytketyn vastusjaon tulo- ja lähtöjännite kapasitanssin arvolla 30 µF.
10
Kuva 7. AC-kytketyn vastusjaon tulo- ja lähtöjännite kapasitanssin arvolla 50 µF.
1.1.3. Alipäästävän vastusjaon analysoiminen
Tehtävässä 1.3 tarkasteltiin kuvan 8 vastusjakoa, jossa maata vasten olevan vastuksen rinnalle on kytketty kondensaattori. Piirille haluttiin suoritettavan kolme transienttianalyysiä signaalin taajuuksilla 1 kHz, 10 kHz ja 100 kHz simulointien kestäessä viiden sinijakson verran. Signaalilähteen DC- ja AC-jännitteiden arvot olivat
samat kuin kohdassa 1.1.1. eli 5 V ja 1 V. Simulointien tulokset ovat nähtävillä kuvissa 9, 10 ja 11 tulostettuna samalle amplitudiasteikolle vertailun helpottamiseksi.
11
Kuva 8. Alipäästävä vastusjako.
Kuva 9. Alipäästävän vastusjaon lähtöjännite taajuudella 1 kHz.
12
Kuva 10. Alipäästävän vastusjaon lähtöjännite taajuudella 10 kHz.
Kuva 11. Alipäästävän vastusjaon lähtöjännite taajuudella 100 kHz.
13
Kuvista nähdään lähtösignaalin amplitudin pienenevän taajuuden kasvaessa. Ilmiö
johtuu piirissä olevasta kondensaattorista, jonka impedanssi pienenee taajuuden kasvaessa lähestyen oikosulkua mentäessä riittävän suurille taajuuksille. Koska kondensaattorin toinen puoli on kytketty maihin, lähdön jännite lähenee maapotentiaalia
taajuuden kasvaessa.
Transienttianalyysien lisäksi piirille ajettiin AC-analyysi taajuusalueella 1 Hz–
10 MHz käyttäen edelleen samoja DC- ja AC-jännitteitä. Kuvaan 12 on tulostettu
saatu amplitudivaste logaritmiselle taajuusakselille. Kuvasta havaitaan lähdön vaimenevan voimakkaasti noin kymmentä kilohertsiä suuremmilla taajuuksilla. Kyseessä on siis alipäästävä piiri ja sen rajataajuus muodostuu kondensaattorin arvosta yhdessä vastuksien rinnankytkennän kanssa.
Kuva 12. Alipäästävän vastusjaon lähdön taajuusvaste.
1.1.4. Puoliaaltotasasuuntaajan analysoiminen
Kuvassa 13 näkyy yksinkertainen diodin ja vastuksen kytkentä johon kytketyn jännitelähteen DC-jännite on 0 V, AC-jännite 5 V ja taajuus 1 kHz. Piirin transienttivastetta simuloitiin 5 ms ja tulokset on esitetty kuvassa 14. Tehtävässä 1.4 kysyttiin,
minkä käytännön funktion kytkentä suorittaa sekä kuinka suuri on tulon ja lähdön
positiivisen puolijakson jännite-ero ja mistä se aiheutuu.
14
Kuva 13. Puoliaaltotasasuuntaaja.
Kuva 14. Puoliaaltotasasuuntaajan tulo- ja lähtöjännite taajuudella 1 kHz.
Kuten simulointituloksista voidaan nähdä, kytkentä toimii puoliaaltotasasuuntaajana. Käyttäytyminen johtuu piirissä olevasta diodista, joka johtaa vain tulosignaalin
positiivisten puolijaksojen aikana diodin ollessa myötäsuuntaan kytketty. Lähtösignaalin huippuarvo on noin 4,36 V, joten lähdön ja tulon jännite-ero on noin 0,64 V.
Se aiheutuu diodin yli jäävästä kynnysjännitteestä, joka on tyypillisesti puolijohde-
15
diodeilla luokkaa 0,6 V…0,7 V.
1.1.5. Yksinkertaisen AC/DC-muuntimen analysoiminen
Edellisen tehtävän kytkentään lisätään tehtävässä 1.5 kondensaattori kuvan 15 mukaisesti ja kysytään kuinka lähtösignaali muuttuu edellisestä tilanteesta. Lisäksi halutaan vastaus siihen mihin kytkentää voidaan käyttää.
Kuva 15. Kondensaattorilla varustettu puoliaaltotasasuuntaaja.
Piirin tulo- ja lähtösignaali ovat nähtävillä kuvassa 16, josta voidaan havaita lähdön laskevan lisätyn kondensaattorin takia paljon hitaammin tulosignaalin alkaessa
lähestyä nollaa sinin positiivisen huipun jälkeen. Lähtö jatkaa hiljalleen vähenemistään, kunnes tulojännite nousee taas tarpeeksi korkeaksi ladaten kondensaattoria seuraavaan positiiviseen huippuun saakka. Tuloksesta voidaan todeta, että tarkasteltavaa
kytkentää on mahdollista käyttää erittäin yksinkertaisena tapana tuottaa vaihtojännitteestä tasajännitettä, jossa esiintyy jonkin verran rippeliä.
16
Kuva 16. Kondensaattorilla varustetun puoliaaltotasasuuntaajan tulo- ja lähtöjännite
taajuudella 1 kHz.
1.1.6. Kaksipuolisen DC-jännitelähteen suunnitteleminen
Tehtävässä 1.6 pyydettiin suunnittelemaan kokoaaltotasasuuntaajaan perustuva kaksipuolinen DC-jännitelähde, jossa on kolme ulostuloa: +, - ja maa. Jännitelähteen
tuloon kytketään väliulosotolla varustettu verkkovirtamuuntaja, joka muuntaa 50 Hz
taajuisen 230 V:n suuruisen jännitteen vaihtojännitteeksi, jonka amplitudi on 15 V.
Piirisimulaattorissa muuntajan tilalla käytettiin kahta 15 voltin sinijännitelähdettä.
Tehtävässä vaadittiin mitoittamaan jännitelähteen suodatinkondensaattorit siten, että
lähtöjännite ei 100 mA:n maksimikuormituksellakaan laske alle 12 voltin. Simuloinneissa kuormana käytettiin virtalähteitä.
Suodatinkondensaattoreiden mitoituksessa käytetään hyväksi tietoa siitä, että piirin aikavakion ollessa paljon suurempi kuin puolet jakson periodista, lähtöjännitteen
voidaan olettaa laskevan lähes lineaarisesti. Näin ollessa voidaan rippelijännitteelle
käyttää approksimaatiokaavaa
π‘‰π‘Ÿπ‘–π‘π‘π‘™π‘’ β‰…
πΌπ‘™π‘œπ‘Žπ‘‘
,
2𝑓𝐢
(3)
17
josta ratkaisemalla C voidaan laskea sopiva kapasitanssin arvo kondensaattoreille:
𝐢≅
πΌπ‘™π‘œπ‘Žπ‘‘
100 π‘šπ΄
=
β‰ˆ 430 πœ‡πΉ
2π‘“π‘‰π‘Ÿπ‘–π‘π‘π‘™π‘’ 2 βˆ™ 50 𝐻𝑧 βˆ™ (15 𝑉 βˆ’ 0,7 𝑉 βˆ’ 12 𝑉)
(4)
Neljällä diodilla ja kahdella samansuuruisella suodatinkondensaattorilla toteutetun
DC-jännitelähteen piirikaavio on esitetty kuvassa 17.
Kuva 17. Kokoaaltotasasuuntaajaan perustuva kaksipuolinen DC-jännitelähde.
Kytkennälle suoritetun transienttianalyysin tulokset on tulostettu kuvaan 18 muutaman sinijakson pituudelta. Kuvaajasta nähdään jännitelähteen molempien lähtöjen
täyttävän niille asetetun vaatimuksen pysyä absoluuttiselta arvoltaan suurempana
kuin 12 V.
18
Kuva 18. Suunnitellun jännitelähteen lähtöjännitteet muutaman jakson ajalta.
1.2. BJT-vahvistin
1.2.1. Heikosti biasoidun BJT-vahvistimen analysoiminen
Tehtävässä 2.1 tarkastelun kohteena oli yksinkertainen BJT-vahvistinkytkentä, jonka
piirikaavio on esitetty kuvassa 19. Ensimmäisenä tehtävänä pyydettiin laskemaan
BJT-vahvistimen toimintapiste eli IC ja VCE olettaen virtavahvistuskertoimen Ξ² olevan 100. Kollektorivirran selvittämiseksi lasketaan ensin vastuksen RB läpi kulkeva
virta, joka on samalla vahvistimen kantavirta:
𝐼𝐡 =
10 𝑉 βˆ’ 0,7 𝑉
= 9,3 πœ‡π΄
1 𝑀𝛺
(5)
Kysytty kollektorivirta on yksinkertaisesti virtavahvistus kertaa kantavirta, josta saadaan tulokseksi 0,93 mA. Koska vahvistimen emitteri on maapotentiaalissa, VCE on
tässä tapauksessa sama kuin kollektorilla oleva jännite, joka on helppo laskea nyt kun
kollektorivirta on tiedossa:
𝑉𝐢𝐸 = 10 𝑉 βˆ’ 𝑅𝐢 𝐼𝐢 = 10 𝑉 βˆ’ 1,3 π‘˜π›Ί βˆ™ 0,93 π‘šπ΄ β‰ˆ 8,8 𝑉
(6)
19
Toimintapiste piti lisäksi varmentaa simuloimalla se piirisimulaattorilla. Saatu tulos
on näkyvillä kuvassa 20 ja toimintapiste vastaa laskettuja arvoja.
Kuva 19. Yksinkertaisesti biasoitu BJT-vahvistin.
Kuva 20. Vahvistinkytkennän toimintapiste virtavahvistuksen arvolla 100.
Seuraavaksi tehtävässä pyydettiin arvioimaan toimintapisteen perusteella lähtösignaalin lineaarista maksimiamplitudia. Alhaaltapäin rajan lähtösignaalin maksimiamplitudille asettaa transistorin pysyminen poissa saturaatiosta, eli kollektorijännitteen täytyy pysyä vähintään noin 0,2 V emitterijännitteen yläpuolella. Ylhäältä-
20
päin rajan puolestaan asettaa käyttöjännite 10 V, jonka yli kollektorijännite ei pysty
menemään. Kollektorin DC-jännite on asettunut tasolle 8,8 V, joten käyttöjännite on
tässä tilanteessa lähdön maksimiamplitudia rajoittava tekijä sen tullessa aiemmin
vastaan kuin transistorin saturoituminen. Lähtösignaalin amplitudi voi siis maksimissaan olla noin 1,2 V ennen kuin sen positiiviset huiput alkavat leikkautumaan.
Transistorin virtavahvistuskertoimeksi piti tämän jälkeen vaihtaa arvo 500. Piiri
simuloitiin uudestaan ja saatu toimintapiste on tulostettu kuvaan 21. Kollektorivirta
on nyt viisinkertainen aiempaan verrattuna ja VCE on pudonnut 8,8 voltista noin neljään volttiin. Tehtävässä kysytään kuinka muutos vaikuttaa lähtösignaaliin. Tarkastelemalla kytkentää voidaan johtaa piirin lähtöjännitteelle yhtälö
π‘£π‘œπ‘’π‘‘ = βˆ’π‘–π‘ (𝑅𝐢 ‖𝑅𝐿 ) = βˆ’
𝛽𝐼𝐡 (𝑅𝐢 ‖𝑅𝐿 )
𝑣𝑖𝑛 .
𝑉𝑇
(7)
Johdettua lauseketta tarkastelemalla voidaan todeta lähtöjännitteen muuttuvan suoraan verrannollisesti virtavahvistukseen nähden. Koska virtavahvistus nostettiin viisinkertaiseksi, myös lähtöjännite on nyt viisinkertainen aiempaan verrattuna. Tehtävässä tiedustellaankin seuraavaksi, mitä ongelmia voi aiheutua siitä, että käytetään
kuvan 19 mukaista biasointikytkentää. Ongelmaksi muodostuu se, että valmistettaessa useita piirejä käyttäen samantyyppisiä BJT-vahvistimia, kunkin piirin lähdön signaalitaso on todennäköisesti keskenään eriävä ja ennalta arvaamaton niiden erisuurien virtavahvistuksien takia. Lisäksi jos virtavahvistuskerroin muuttuu esim. lämpötilamuutoksen takia, myös vahvistimen vahvistus muuttuu.
Kuva 21. Vahvistinkytkennän toimintapiste virtavahvistuksen arvolla 500.
21
Tehtävässä täytyi seuraavaksi palauttaa virtavahvistus arvoon 100 ja suorittaa simuloinnit 10 kHz:n tulosignaalilla amplitudin arvoilla 1 mV ja 20 mV. Lähtösignaalien muotoa pyydettiin vertaamaan keskenään. Kyseiset signaalit ovat nähtävillä kuvissa 22 ja 23. Amplitudin ollessa 1 mV lähdössä näkyy puhdas sinisignaali, mutta
kun tulo nostetaan 20 millivolttiin, lähdön aaltomuoto on selvästi vääristynyt. Havaittu ilmiö johtuu siitä, että tulosignaali on niin suuri että transistori ei toimi enää
tarpeeksi pienellä alueella ollakseen riittävän lineaarinen. Tästä seuraa, että signaalin
kokema vahvistus riippuu sen kunkin hetkisestä amplitudista muokaten lähdössä näkyvän signaalin muotoa.
Kuva 22. Vahvistinkytkennän tulo- ja lähtöjännite tulosignaalin amplitudilla 1 mV.
22
Kuva 23. Vahvistinkytkennän tulo- ja lähtöjännite tulosignaalin amplitudilla 20 mV.
Tehtävän seuraavassa kohdassa pyydettiin laskemaan kytkennän tulo- ja lähtöimpedanssi. Lähtöimpedanssi on erittäin helppo selvittää, koska keskitaajuuksilla kondensaattorin CC ollessa periaatteessa oikosulussa, se on yksinkertaisesti vastuksen RC
ja kollektorille päin katsottaessa näkyvän impedanssin rinnankytkennän arvo. Koska
kollektorilla näkyvä impedanssi on erittäin suuri, voidaan approksimoida lähtöimpedanssin olevan yksinkertaisesti RC eli 1,3 kΞ©. Tuloimpedanssin selvittämiseksi toimintataajuuksilla sovelletaan transistorin kannan solmupisteeseen Kirchhoffin virtalakia ja siitä ratkaistaan tulojännitteen ja -virran osamäärä:
𝑣𝑖𝑛
𝑣𝑖𝑛
+
𝑅𝐡 (𝛽 + 1)π‘Ÿπ‘’
1
𝐼𝐡 βˆ’1
1
9,3 πœ‡π΄ βˆ’1
=( + ) =(
+
) β‰ˆ 2,8 π‘˜π›Ί
𝑅𝐡 𝑉𝑇
1 𝑀𝛺 26 π‘šπ‘‰
𝑖𝑖𝑛 =
↔ 𝑍𝑖𝑛
𝑣𝑖𝑛
=
𝑖𝑖𝑛
(8)
Lasketut tulo- ja lähtöimpedanssin arvot tuli myös varmentaa simulointien avulla.
Tuloimpedanssi simuloitiin jakamalla jännitelähteen jännite piirin siitä ottamalla
virralla. Lähtöimpedanssi puolestaan saatiin kytkemällä jännitelähde kuormavastuksen RL tilalle ja asettamalla tulossa olevan jännitelähteen DC- ja AC-jännite nollaksi.
Simuloidut impedanssit näkyvät kuvissa 24 ja 25 ja ne vastaavat laskettuja arvoja.
23
Kuva 24. Piirin tuloimpedanssi.
Kuva 25. Piirin lähtöimpedanssi.
24
Edellä käytetyn ideaalisen transistorin rinnalle täytyi lopuksi kytkeä kondensaattorit CΟ€ = 4 pF ja Cµ = 1 pF mallintamaan kanta–emitteri- ja kanta–kollektori -liitosten
välisiä hajakapasitansseja ja piirin taajuusvaste pyydettiin laskemaan. Alarajataajuuden laskemisessa käytetään siihen vaikuttavien kondensaattoreiden CB ja CC aikavakioita:
𝜏1,𝐿 = 𝐢𝐡 [𝑅𝐡 β€–(𝛽 + 1)π‘Ÿπ‘’ ] β‰ˆ 1 πœ‡πΉ βˆ™ 2,79 π‘˜π›Ί = 2,79 π‘šπ‘ 
(9)
𝜏2,𝐿 = 𝐢𝐢 (𝑅𝐢 + 𝑅𝐿 ) β‰ˆ 1,00 𝑠
(10)
𝑓𝐿 β‰…
1 1
1
(
+
) β‰ˆ 57 𝐻𝑧
2πœ‹ 𝜏1,𝐿 𝜏2,𝐿
(11)
Ylärajataajuuteen puolestaan vaikuttaa vain kapasitanssi Cµ, koska korkeilla taajuuksilla kondensaattori CB vastaa oikosulkua ja CΟ€ näkee näin ollen molemmilla puolillaan maapotentiaalin. Kapasitanssiin Cµ liittyvä aikavakio on
𝜏𝐻 = πΆπœ‡ (𝑅𝐢 ‖𝑅𝐿 ) β‰ˆ 1,30 𝑛𝑠
(12)
ja näin ollen kytkennän ylärajataajuudeksi saadaan
𝑓𝐻 =
1
β‰ˆ 123 𝑀𝐻𝑧.
2πœ‹πœπ»
(13)
Viimeinen taajuusvasteen määrittämiseen tarvittava tieto on vahvistus keskitaajuuksilla. Vahvistus saadaan jakamalla edellä esitetty yhtälö (7) piirin lähtöjännitteelle
puolittain tulojännitteellä, jolloin saadaan
𝐴𝑀 =
π‘£π‘œπ‘’π‘‘
𝛽𝐼𝐡 (𝑅𝐢 ‖𝑅𝐿 )
= (βˆ’)
β‰ˆ (βˆ’)46,4 ≑ 33,3 𝑑𝐡,
𝑣𝑖𝑛
𝑉𝑇
(14)
missä miinusmerkki tarkoittaa sitä, että kyseessä on vaiheen kääntävä vahvistin.
Laskettu taajuusvaste piti myös tarkistaa simuloinnin avulla ja tehtävässä kysyttiin
kuinka taajuusvaste muuttuu verrattuna ideaalisen transistorin tapaukseen. Simuloitu
taajuusvaste on tulostettu kuvaan 26 ja sen ominaisuudet vastaavat laskettuja arvoja.
Ideaalisen transistorin tapaukseen verrattuna taajuusvasteella on pelkän alarajataajuuden lisäksi nyt myös ylärajataajuus.
25
Kuva 26. Hajakapasitansseilla varustetun piirin taajuusvaste.
1.2.2. Yhteisemitterikytketyn vahvistinasteen analysoiminen
Tehtävässä 2.2 tarkasteltiin kuvan 27 mukaista yhteisemitterikytkettyä BJT-vahvistinta. Kuten edellisessä tehtävässä, transistorin virtavahvistuskertoimeksi asetettiin
100 ja kytkennän analysoiminen aloitettiin laskemalla vahvistimen toimintapiste.
Ensimmäisenä lasketaan BJ-transistorin kannalla oleva jännite:
10 𝑉 βˆ’ 𝑉𝐡 𝑉𝐡 βˆ’ 0,7 𝑉
𝑉𝐡 = 𝑅𝐡2 (
βˆ’
)
(𝛽 + 1)𝑅𝐸1
𝑅𝐡1
10 𝑉
0,7 𝑉
+
𝑅𝐡1 (𝛽 + 1)𝑅𝐸1
↔ 𝑉𝐡 =
β‰ˆ 3,17 𝑉
1
1
1
+
+
𝑅𝐡1 𝑅𝐡2 (𝛽 + 1)𝑅𝐸1
(15)
Emitterin jännite on yksinkertaisesti kannan jännite miinus diodin kynnysjännite
𝑉𝐸 = 𝑉𝐡 βˆ’ 0,7 𝑉 = 2,47 𝑉,
jonka avulla on helppo laskea emitterivirta:
(16)
26
𝐼𝐸 =
𝑉𝐸
= 2,47 π‘šπ΄
𝑅𝐸1
(17)
Ensimmäiseen kysyttyyn arvoon IC päästään nyt käsiksi käyttäen hyväksi tietoa siitä,
että kollektorivirta on parametri Ξ± kertaa emitterivirta, jolloin saadaan kollektorivirraksi
𝐼𝐢 = 𝛼𝐼𝐸 =
𝛽
𝐼 β‰ˆ 2,45 π‘šπ΄.
𝛽+1 𝐸
(18)
Seuraava looginen askel on laskea kollektorilla oleva jännite ja sen avulla päästään
toiseen kysyttyyn arvoon, joka on kollektori–emitteri -jännite:
𝑉𝐢 = 10 𝑉 βˆ’ 𝑅𝐢 𝐼𝐢 β‰ˆ 6,82 𝑉
(19)
𝑉𝐢𝐸 = 𝑉𝐢 βˆ’ 𝑉𝐸 = 4,35 𝑉
(20)
Tulos piti myös tarkistaa piirisimulaattorilla. Simuloitu toimintapiste näkyy kuvassa
28 ja saadut arvot ovat lähellä käsin laskettuja arvoja.
Kuva 27. Yhteisemitterikytketty BJT-vahvistin.
27
Kuva 28. Yhteisemitterikytketyn vahvistimen DC-toimintapiste.
Vahvistimelle piti edellistä tehtävää mukaillen laskea myös sen tulo- ja lähtöimpedanssi. Molemmat ominaisuudet haluttiin myös simuloitavan ja saatuja arvoja
pyydettiin vertaamaan kohdan 1.2.1. heikosti biasoidun vahvistimen vastaaviin arvoihin. Toimintataajuuksilla tuloimpedanssi muodostuu vastuksien RB1 ja RB2 rinnankytkennästä rinnan transistorin kannalle päin katsottaessa näkyvän impedanssin
kanssa. Piensignaalimallin resistanssi re ja emitterillä olevat impedanssit näkyvät
erisuurista virroista johtuen Ξ²+1 -kertaisina kannalta päin katsottuna. Tarpeeksi alhaisilla taajuuksilla emitterillä näkyy vain vastus RE1, koska kondensaattori CE edustaa tällöin erittäin suurta impedanssia. Taajuuden kasvaessa kondensaattori alkaa
kuitenkin johtaa ja suurilla toimintataajuuksilla emitterillä näkyy vastuksien RE1 ja
RE2 rinnankytkentä. Näiden tietojen avulla voidaan laskea arvio tuloimpedanssille
alhaisilla ja korkeilla toimintataajuuksilla:
𝑍𝑖𝑛,𝐿 = 𝑅𝐡1 ‖𝑅𝐡2 β€–(𝛽 + 1)(π‘Ÿπ‘’ + 𝑅𝐸1 ) β‰ˆ 6,3 π‘˜π›Ί
(21)
𝑍𝑖𝑛,𝐻 = 𝑅𝐡1 ‖𝑅𝐡2 β€–(𝛽 + 1)(π‘Ÿπ‘’ + 𝑅𝐸1 ‖𝑅𝐸2 ) β‰ˆ 4,0 π‘˜π›Ί
(22)
Vahvistinkytkennän lähtöimpedanssin voi sanoa olevan yksinkertaisesti vastuksen
RC arvo eli 1,3 kΞ©, koska BJ-transistorin kannalle päin katsottaessa näkyy erittäin
suuri impedanssi, joka vaikuttaa vastuksen RC rinnalla erittäin vähän piirin lähtöimpedanssiin.
28
Kummankin impedanssin simuloinnit suoritettiin vastaavalla tavalla kuin edellisessä tehtävässä ja saadut kuvaajat on tulostettu kuviin 29 ja 30. Käyriä tarkastelemalla voidaan todeta simuloitujen impedanssien vastaavan laskettuja arvoja. Vertaamalla tuloksia heikosti biasoidun piirin tapaukseen nähdään lähtöimpedanssin pysyneen samana, mutta tuloimpedanssin kasvaneen noin 2,8 kΞ©:sta yli neljään kiloohmiin koko toiminta-alueella.
Kuva 29. Yhteisemitterikytketyn vahvistimen tuloimpedanssi.
29
Kuva 30. Yhteisemitterikytketyn vahvistimen lähtöimpedanssi.
Seuraavaksi laskettiin kytkennän jännitevahvistus. Koska emitterin AC-virta on
muotoa
𝑖𝑒 =
𝑣𝑖𝑛
π‘Ÿπ‘’ + 𝑅𝐸1 ‖𝑅𝐸2
(23)
𝑖𝑐 = 𝛼𝑖𝑒 ,
(24)
ja kollektorivirta
saadaan kytkennän lähtöjännitteelle johdettua yhtälö
π‘£π‘œπ‘’π‘‘ = βˆ’(𝑅𝐢 ‖𝑅𝐿 )𝑖𝑐 = βˆ’
𝛼(𝑅𝐢 ‖𝑅𝐿 )
𝑣 .
π‘Ÿπ‘’ + 𝑅𝐸1 ‖𝑅𝐸2 𝑖𝑛
(25)
Jakamalla yhtälö puolittain tulojännitteellä saadaan jännitevahvistukseksi
𝐴𝑀 =
π‘£π‘œπ‘’π‘‘
𝛽
𝑅𝐢 ‖𝑅𝐿
= (βˆ’)
βˆ™
β‰ˆ (βˆ’)12,7 ≑ 22,1 𝑑𝐡.
𝑣𝑖𝑛
𝛽 + 1 π‘Ÿπ‘’ + 𝑅𝐸1 ‖𝑅𝐸2
(26)
30
Tulos pyydettiin tarkistamaan simuloimalla ja saatu vahvistus on luettavissa kuvasta
31, josta nähdään 1 mV:n signaalin tuottavan lähdössä noin 12,5 mV:n vastakkaisvaiheisen jännitteen, joka vastaa laskettua arviota.
Kuva 31. Vahvistinkytkennän tulo- ja lähtöjännite taajuudella 10 kHz.
Ohjeissa haluttiin seuraavaksi nostaa virtavahvistuskerroin arvoon 500, kuten tehtiin edellisessä tehtävässä ja simuloida toimintapiste uudelleen. Lisäksi pyydettiin
vertaamaan tuloksia heikosti biasoidun piirin tapaukseen. Kuvassa 32 näkyy saatu
uusi DC-toimintapiste ja kun sitä verrataan edelliseen tulokseen, voidaan todeta toimintapisteen muuttuneen hieman, mutta ei läheskään yhtä radikaalisti kuin heikosti
biasoidussa vahvistimessa.
31
Kuva 32. Vahvistimen toimintapiste virtavahvistuksen ollessa 500.
Toimintapisteen simuloinnin jälkeen virtavahvistus palautettiin sen alkuperäiseen
arvoon ja kytkennälle suoritettiin transienttianalyysi tulosignaalin amplitudin ollessa
100 mV. Kuten kuvasta 33 nähdään, vahvistin pystyy vahvistamaan signaalin ongelmitta. Tehtävässä kysytäänkin miksi näin on, kun edellisen tehtävän eritavalla
biasoitu vahvistin ei kykene samaan. Vastaus kysymykseen käy selväksi, kun tarkastellaan vahvistinpiirin emitteriä. Edellisessä tehtävässä emitteri oli kytketty maahan,
joten transistorin kannan ja emitterin välinen AC-jännite oli suoraan piirin tulojännite. Nyt tarkasteltavassa biasointitavassa emitterillä on kuitenkin kaksi vastusta eikä
emitterijännite ole enää vakio, vaan se riippuu tulosta. Kuten aiemmin tehtävässä
todettiin, emitterin AC-virralle voidaan johtaa yhtälö
𝑣𝑖𝑛
π‘Ÿπ‘’ + 𝑅𝐸1 ‖𝑅𝐸2
(27)
𝑣𝑒 = (𝑅𝐸1 ‖𝑅𝐸2 )𝑖𝑒 .
(28)
𝑖𝑒 =
ja lisäksi tiedetään, että
Näiden kahden tiedon avulla saadaan johdettua vbe:ksi
32
𝑣𝑏𝑒 = 𝑣𝑖𝑛 βˆ’ 𝑣𝑒 = (1 βˆ’
𝑅𝐸1 ‖𝑅𝐸2
) 𝑣 β‰ˆ 0,104𝑣𝑖𝑛 .
π‘Ÿπ‘’ + 𝑅𝐸1 ‖𝑅𝐸2 𝑖𝑛
(29)
Jännite vbe on nyt siis vain noin kymmenesosa tulojännitteestä, mikä tarkoittaa että
tulojännite voi olla noin kymmenenkertainen heikosti biasoidun piirin tapaukseen
verrattuna ennen kuin bipolaaritransistorin epälineaarisuus asettuu ongelmaksi. Tämä
selittää miksi 100 mV:n signaali vahvistuu ongelmitta kun kohdan 1.2.1. tapauksessa
jo 20 mV:n signaali vääristyi näkyvästi.
Kuva 33. Tulo- ja lähtöjännite taajuudella 10 kHz tulojännitteen ollessa 100 mV.
Seuraavaksi tehtävässä haluttiin, että kuormavastus R L muutetaan kollektorivastuksen RC suuruiseksi. Kytkentä tuli sitten simuloida ja tehtyjen havaintojen perusteella pyydettiin selittämään kuinka RC tulisi mitoittaa suhteessa kuormavastuksen
arvoon. Simulointitulos on tulostettu kuvaan 34 ja siitä nähdään piirin vahvistuksen
pudonneen noin puoleen siitä mitä se oli kuvassa 31. Tarkastelemalla edellä lausekkeessa 26 piirille johdettua jännitevahvistusta, nähdään että vahvistimen vahvistus on
kollektorilla oleva resistanssi jaettuna emitterillä olevalla resistanssilla. Kollektorilla
on kollektorivastuksen ja kuormavastuksen rinnankytkentä. Kuormavastuksen ollessa
erittäin suuri verrattuna kollektorivastukseen kollektorilla näkyvä impedanssi on noin
RC. Kuitenkin jos kuormavastus on samansuuruinen kuin RC, kollektorilla oleva resistanssi puolittuu ja näin ollen myös vahvistus putoaa puoleen. Jotta signaali vaimenisi mahdollisimman vähän, vastuksen RC tulee täten olla mahdollisimman pieni
33
suhteessa kuormaimpedanssiin.
Kuva 34. Tulo- ja lähtöjännite kuormavastuksen ollessa 1,3 kΞ©.
Kuormavastus palautettiin edellisen simuloinnin jälkeen takaisin alkuperäiseen
arvoonsa ja lähtökondensaattorin CC arvo vaihdettiin 10 pF:iin ja piirille ajettiin uusi
transienttianalyysi, jonka tulokset näkyvät kuvassa 35. Todetaan kondensaattorin
pienentämisen vähentäneen tulon ja lähdön välistä vaihe-eroa sekä vaimentaneen
kytkennästä saatavaa vahvistusta. Ilmiö johtuu siitä, että kondensaattori aiheuttaa
piirissä ylipäästävän vasteen ja sen arvon muuttaminen siirtää sen aiheuttaman nurkkataajuuden 0,16 hertsistä noin 16 kilohertsiin, jolloin sen vaikutus alkaa näkyä käytetyssä 10 kHz:n testisignaalissa.
34
Kuva 35. Tulo- ja lähtöjännite kondensaattorin CC arvolla 10 pF.
Seuraavaa simulointia varten kondensaattorin CC arvo palautettiin takaisin yhteen
mikrofaradiin ja signaaligeneraattorin lähtöön lisättiin 1 kΞ©:n vastus kuvaamaan sen
lähtöimpedanssia. Kytkennän jännitevahvistus selvitettiin samalla tavalla kuin aiemmin käyttäen 10 kHz:n tulosignaalia ja tulokset on esitetty kuvassa 36. Kun kuvaajaa verrataan kuvaan 31, nähdään vahvistuksen pudonneen noin kahdestatoista ja
puolesta lähelle kymmentä. Signaalin vaimeneminen johtuu signaalilähteen lähtöresistanssin ja vahvistinkytkennän tuloimpedanssin muodostamasta jännitejaosta,
jonka vaikutusta voidaan vähentää kasvattamalla piirin tuloimpedanssia. Simuloinnin
tulos pyydettiin varmentamaan laskutoimituksin käyttäen apuna kytkennän tuloimpedanssia. Koska piirin jännitevahvistus ideaalisen signaalilähteen tapauksessa on jo
laskettu aiemmin, se tarvitsee vain kertoa tulossa tapahtuvan vaimenemisen vaikutuksella:
𝐴𝑀 =
𝑍𝑖𝑛,𝐻
4039 𝛺
𝐴𝑀,π‘–π‘‘π‘’π‘Žπ‘™ =
βˆ™ (βˆ’12,67) β‰ˆ βˆ’10,2
𝑍𝑖𝑛,𝐻 + 𝑅𝑆
4039 𝛺 + 1 π‘˜π›Ί
Laskettu arvo ja simulointitulos siis tukevat toisiaan.
(30)
35
Kuva 36. Tulo- ja lähtöjännite kun piirissä mukana lähdeimpedanssi.
Seuraavaksi signaaligeneraattorin lähtöresistanssi poistettiin kytkennästä ja piirin
alarajataajuus pyydettiin selvittämään sekä laskemalla että suorittamalla AC-analyysi
välillä 100 Hz…100 kHz. Kukin kolmesta piirissä olevasta kondensaattorista vaikuttaa alarajataajuuteen ja niihin liittyvät aikavakiot saadaan selville tarkastelemalla
niiden näkemiä resistansseja muiden kondensaattoreiden ollessa oikosuljettuina:
𝜏1,𝐿 = 𝐢𝐡 [𝑅𝐡1 ‖𝑅𝐡2 β€–(𝛽 + 1)(π‘Ÿπ‘’ + 𝑅𝐸1 ‖𝑅𝐸2 )] β‰ˆ 4,04 π‘šπ‘ 
(31)
𝜏2,𝐿 = 𝐢𝐢 (𝑅𝐢 + 𝑅𝐿 ) β‰ˆ 1,00 𝑠
(32)
𝜏3,𝐿 = 𝐢𝐸 (𝑅𝐸2 + π‘Ÿπ‘’ ‖𝑅𝐸1 ) β‰ˆ 0,110 π‘šπ‘ 
(33)
Kun lasketaan aikavakioiden yhteisvaikutus, saadaan kytkennän alarajataajuudeksi
𝑓𝐿 β‰…
1 1
1
1
(
+
+
) β‰ˆ 1,49 π‘˜π»π‘§.
2πœ‹ 𝜏1,𝐿 𝜏2,𝐿 𝜏3,𝐿
(34)
Pyydetyn taajuusanalyysin tulos käy ilmi kuvassa 37 ja siitä nähdään alarajataajuuden -3 dB:n pisteen olevan noin 1,44 kHz, mikä vastaa laskettua tulosta.
36
Kuva 37. Yhteisemitterikytketyn vahvistimen alarajataajuus.
Viimeisenä yhteisemitterikytkettyyn BJT-vahvistimeen liittyvänä tehtävänä vastuksen RE2 arvo piti vaihtaa 10 Ξ©:iin ja kuormavastuksen RL arvo 200 Ξ©:iin, jolloin
kytkennän AC-vahvistus on edelleen samaa suuruusluokkaa kuin aiemmissa kohdissa. Kytkentä piti simuloida aikatasossa ja simuloinnin antamat käyrät on esitetty kuvassa 38, josta nähdään vahvistuksen olevan noin 6,5 ja lähtö on selvästi kokenut
pientä vaihesiirtoa. Laskemalla uudet komponenttiarvot huomioonottaen odotettavissa oleva vahvistus keskitaajuuksilla käyttäen samaa kaavaa kuin aiemmin, saadaan
tulokseksi noin 8,4, mikä tarkoittaa saadun jännitevahvistuksen olevan noin kaksi
desibeliä odotettua pienempi. Lähdön lievästä vaiheen siirtymisestä voidaan päätellä
ilmiön todennäköisesti liittyvän kytkennän päästökaistan sijaintiin taajuustasossa.
Kun lasketaan aiemman kohdan tapaan kytkennän alarajataajuus ottaen huomioon
uudet RE2:n ja RL:n arvot, saadaan tulokseksi 8,3 kHz, joka on tarpeeksi lähellä käytettyä 10 kHz:iä aiheuttaakseen signaalin vaimenemista.
37
Kuva 38. Tulo- ja lähtöjännite taajuudella 10 kHz RE2:n ollessa 10 Ξ© ja RL:n 200 Ξ©.
1.3. Operaatiovahvistin
1.3.1. Avoimen silmukan toiminta
Tehtävässä 3.1 haluttiin analysoitavan kuvan 39 mukaista ideaalisilla jänniteohjatuilla jännitelähteillä ja passiivisilla komponenteilla toteutettua operaatiovahvistimen
sijaiskytkentää. Kytkennälle piti laskea sen avoimen silmukan vahvistus ja napataajuudet, sekä ajaa AC-analyysi ja tulostaa saadut Bode-kuvaajat.
Kuva 39. Operaatiovahvistimen sijaiskytkentä.
Piirin siirtofunktio voidaan johtaa seuraten seuraavia vaiheita:
38
𝑣𝐸1,π‘‚π‘ˆπ‘‡ = 1000𝑣𝐼𝑁
𝑣𝐸2,𝐼𝑁 =
(35)
𝑍𝐢1
1000𝑣𝐼𝑁
𝑣𝐸1,π‘‚π‘ˆπ‘‡ =
𝑍𝐢1 + 𝑅1
𝑠𝑅1 𝐢1 + 1
(36)
𝑣𝐸2,π‘‚π‘ˆπ‘‡ = 1000𝑣𝐸2,𝐼𝑁
(37)
𝑍𝐢2
106 𝑣𝐼𝑁
𝑣𝐸2,π‘‚π‘ˆπ‘‡ =
(𝑠𝑅1 𝐢1 + 1)(𝑠𝑅2 𝐢2 + 1)
𝑍𝐢2 + 𝑅2
π‘£π‘‚π‘ˆπ‘‡
106
↔ 𝐻(𝑠) =
=
(𝑠𝑅1 𝐢1 + 1)(𝑠𝑅2 𝐢2 + 1)
𝑣𝐼𝑁
π‘£π‘‚π‘ˆπ‘‡ = 𝑣𝐸3,𝐼𝑁 =
(38)
Siirtofunktiossa esiintyvä termi 106 on kytkennän avoimen silmukan DC-vahvistus,
joka on desibeleinä ilmaistuna 120 dB. Operaatiovahvistimen sijaiskytkennällä on
kaksi napaa, joiden taajuudet ovat
1
1
=
β‰ˆ 10,6 𝐻𝑧
2πœ‹π‘…1 𝐢1 2πœ‹ βˆ™ 1 π‘˜π›Ί βˆ™ 15 πœ‡πΉ
(39)
1
1
=
β‰ˆ 106 π‘˜π»π‘§.
2πœ‹π‘…2 𝐢2 2πœ‹ βˆ™ 1 π‘˜π›Ί βˆ™ 1,5 𝑛𝐹
(40)
𝑓𝑝1 =
ja
𝑓𝑝2 =
Saadut Bode-kuvaajat on esitetty kuvassa 40 ja ne tukevat yllä laskettuja arvoja.
39
Kuva 40. Operaatiovahvistimen sijaiskytkennän Bode-kuvaajat.
1.3.2. Suljetun silmukan toiminta
Tehtävässä 3.2 edellisen tehtävän operaatiovahvistimeen lisätään takaisinkytkentä
kuvan 41 esittämällä tavalla. Vastuksien R3 ja R4 arvot pyydettiin valitsemaan siten,
että vahvistus asettuu 20 dB:iin. Koska kyseessä on suora vahvistin, sen suljetun silmukan vahvistus on
𝐴𝑐𝑙 = 1 +
𝑅3
= 10 ≑ 20 𝑑𝐡,
𝑅4
(41)
josta saadaan vastuksien arvoille yhtälö
𝑅3 = 9𝑅4 .
(42)
Valitsemalla vastuksen R4 arvoksi 1 kΞ© saadaan R3:n arvoksi 9 kΞ©. Kytkentä pyydettiin simuloimaan näillä komponenttiarvoilla ja sen Bode-kuvaajat tuli tulostaa,
jotta niitä voi verrata edellisen tehtävän avoimen silmukan tilanteeseen. Kuva 42
sisältää molemmat pyydetyistä käyristä ja niistä nähdään vahvistimen olevan nyt
paljon laajakaistaisempi kuin avoimen silmukan tapauksessa. Lisäksi takaisinkytke-
40
tyn vahvistimen vaste piikittää ylärajataajuudellaan. Laajakaistaisuus selittyy sillä,
että takaisinkytkennässä vahvistuksen ja kaistanleveyden tulo on vakio, joten koska
kytkennältä pyydettiin nyt vähemmän vahvistusta, sen kaistanleveys kasvoi vastaavasti samassa suhteessa. Kuvaajassa näkyvä piikitys puolestaan johtuu siitä, että
vahvistimen vaihevara on sen ylärajataajuudella nyt pienempi kuin aiemmassa tehtävässä, jossa napataajuudet olivat kaukana toisistaan ja vaste tästä johtuen aika sileästi
viettävä.
Kuva 41. Takaisinkytketty operaatiovahvistin.
41
Kuva 42. Takaisinkytketyn vahvistimen Bode-kuvaajat vahvistuksen ollessa 20 dB.
Vahvistus piti seuraavaksi muuttaa 60 dB:iin ja simuloinnin tuloksia täytyi verrata
edelliseen kohtaan. Lineaariasteikolla pyydetty vahvistus on nyt 1000 ja vastuksien
suhteeksi saadaan
𝑅3 = 999𝑅4 .
(43)
Kun R4:ksi valitaan jälleen 1 kΞ©, R3:n arvoksi saadaan 999 kΞ© eli noin 1 MΞ©. Näillä
arvoilla simuloidut Bode-kuvajat on esitetty kuvassa 43. Vertaamalla tulosta edelliseen kohtaan havaitaan kaistanleveyden pienentyneen odotetusti, mutta lisäksi aiemmin havaittu piikitys on poissa. Tämä johtuu siitä, että vahvistimen vaihe ei muutu yhtä jyrkästi kuin edellä, jonka takia vaihevara on parempi vasteen alkaessa viettää
alaspäin.
42
Kuva 43. Takaisinkytketyn vahvistimen Bode-kuvaajat vahvistuksen ollessa 60 dB.
Kytkennän askelvasteen simulointia varten vahvistus palautettiin takaisin
20 dB:iin ja signaalilähde asetettiin tuottamaan sakara-aaltoa, jonka jännite vaihteli
välillä 0 V…0,1 V. Signaalin nousu- ja laskuaika olivat 100 ps, pulssin leveys 100 µs
ja periodin pituus 200 µs. Tulo- ja lähtösignaali on tulostettu kuvaan 44. Lähtöjännitteessä esiintyy nousevien ja laskevien reunojen kohdalla soimista, joka kuitenkin
vaimenee kohtalaisen nopeasti. Askelvasteen simulointi suoritettiin seuraavaksi uudelleen sillä erolla, että takaisinkytkentävastuksen rinnalle lisättiin 70 pF:n kondensaattori. Saatu vaste näkyy kuvassa 45 ja siinä ei enää esiinny mainittavaa soimista,
tosin askelten reunat ovat myös kohtalaisen loivia.
43
Kuva 44. Takaisinkytketyn operaatiovahvistimen askelvaste.
Kuva 45. Askelvaste kun takaisinkytkennässä on 70 pF:n kondensaattori.
44
Kuvassa 44 näkyvä signaalin soiminen johtuu siitä, että vahvistimella on kaksi
napaa, jonka takia tarpeeksi korkeille taajuuksille mentäessä piirin vaihevara putoaa
olemattomaksi, mikä ei vielä tee kytkennästä epästabiilia, mutta aiheuttaa havaittua
soimista. Kondensaattorin lisääminen muuttaa takaisinkytkennän taajuusriippuvaiseksi pienentäen kytkennästä saatavan vahvistuksen kohti ykköstä mentäessä tarpeeksi suurille taajuuksille. Tästä johtuen kaikista korkeimmat syötetyn sakara-aallon
taajuudet, jotka aiheuttivat soimista, vaimenevat poistaen soimisen lähes kokonaan.
Tehtävässä pyydettiin seuraavaksi toteamaan takaisinkytketyn vahvistimen vahvistuksen ja kaistanleveyden tulon olevan vakio simuloimalla kytkentää kolmella eri
vahvistuksen arvolla ja laskemalla tuloksista kyseinen suhde GBW. Simuloitavien
vahvistuksien arvoiksi valittiin 70 dB, 80 dB ja 90 dB. Vastuksen R4 resistanssiksi
valittiin jokaisessa kohdassa 1 kΞ©, jolloin vastukselle R3 saatiin arvot 3,16 MΞ©,
10,0 MΞ© ja 31,6 MΞ©. Saadut taajuusvasteet on tulostettu kuviin 46, 47 ja 48. Kuvien
perustella -3 dB:n pisteet kullekin tilanteelle ovat 3,46 kHz, 1,09 kHz ja 346 Hz. Näitä arvoja käyttäen saadaan GBW:lle kolme arvoa, jotka ovat
πΊπ΅π‘Š1 = 1070 𝑑𝐡⁄20 𝑑𝐡 βˆ™ 3,46 π‘˜π»π‘§ β‰ˆ 10,9 𝑀𝐻𝑧,
(44)
πΊπ΅π‘Š2 = 1080 𝑑𝐡⁄20 𝑑𝐡 βˆ™ 1,09 π‘˜π»π‘§ = 10,9 𝑀𝐻𝑧
(45)
πΊπ΅π‘Š3 = 1090 𝑑𝐡⁄20 𝑑𝐡 βˆ™ 346 𝐻𝑧 β‰ˆ 10,9 𝑀𝐻𝑧.
(46)
ja
Lukuja vertaamalla nähdään, että takaisinkytketyn vahvistimen GBW näyttäisi todellakin pysyvän vakiona kun vahvistusta muutetaan.
45
Kuva 46. Takaisinkytketyn vahvistimen taajuusvaste vahvistuksella 70 dB.
Kuva 47. Takaisinkytketyn vahvistimen taajuusvaste vahvistuksella 80 dB.
46
Kuva 48. Takaisinkytketyn vahvistimen taajuusvaste vahvistuksella 90 dB.
Tehtävän viimeisessä kohdassa kysytään vastaavatko lasketut GBW arvot kuvaajista nähtäviä arvoja eli taajuuksia, joilla vasteet leikkaavat 0 dB:n vahvistuksen.
Tarkastelemalla kaikkia kolmea tapausta nähdään jokaisen käyrän leikkaavan 0 dB:n
noin taajuudella 1 MHz eli noin dekadin ennustettua aiemmin. Ero johtuu siitä, että
vahvistimella on yhden navan sijasta kaksi napaa ja vahvistuksen ja kaistanleveyden
tulo kertoo vahvistimen yksikkökaistaleveyden oikein vain yksinapaisille kytkennöille. Kyseinen tulo pysyy kyllä vakiona vahvistusta muutettaessa, mutta sen arvo kertoo millä taajuudella -20 dB viettävä käyrä saavuttaa ykkösvahvistuksen.
1.4. Differentiaalipari
1.4.1. Takaisinkytkemättömän vahvistimen toiminta
Tehtävässä 4.1 tarkasteltavana oli kuvan 49 mukainen differentiaalisella tuloasteella
varustettu kaksiasteinen vahvistin. Piirin analysoiminen aloitettiin laskemalla kunkin
transsitorin DC-toimintapiste eli niiden solmupistejännitteet ja kollektorivirrat.
47
Kuva 49. Differentiaalisella tuloasteella varustettu kaksiasteinen vahvistin.
Transistorin Q1 kantavirta on sama kuin vastuksen RB1 läpi kulkeva virta eli
𝐼𝐡1 = βˆ’
𝑉𝐡1
.
𝑅𝐡1
(47)
Tämän tiedon avulla voidaan ratkaista vastuksen RBIAS yli jäävän jännitteen yhtälöstä
transistorien Q1 ja Q2 yhteinen emitterijännite:
2(𝛽 + 1)𝑅𝐡𝐼𝐴𝑆 (𝑉𝐸1 + 0,7 𝑉)
𝑅𝐡1
2(𝛽 + 1)𝑅𝐡𝐼𝐴𝑆 βˆ™ 0,7 𝑉
5𝑉+
𝑅𝐡1
=βˆ’
β‰ˆ βˆ’0,72 𝑉
2(𝛽 + 1)𝑅𝐡𝐼𝐴𝑆
1+
𝑅𝐡1
𝑉𝐸1 βˆ’ (βˆ’5 𝑉) = 𝑅𝐡𝐼𝐴𝑆 βˆ™ 2𝐼𝐸1 = βˆ’
↔ 𝑉𝐸1
(48)
Kummankin differentiaaliparin transistorin kantajännite on diodin kynnysjännitteen
verran emitterijännitteen yläpuolella, joten kantajännitteiksi saadaan
𝑉𝐡1 = 𝑉𝐡2 = 𝑉𝐸1 + 0,7 𝑉 = βˆ’20 π‘šπ‘‰.
(49)
Kytkennän symmetrian takia differentiaaliparin kantavirrat ovat identtiset ja siten
myös niiden kollektorivirrat ovat samat. Koska BJ-transistorin kollektorivirta on yksinkertaisesti virtavahvistuskerroin kertaa kantavirta, saadaan kollektorivirroiksi
48
𝐼𝐢1 = 𝐼𝐢2 = 𝛽𝐼𝐡1 = 100 βˆ™ (βˆ’
βˆ’19,7 π‘šπ‘‰
) β‰ˆ 0,99 π‘šπ΄.
2 π‘˜π›Ί
(50)
Transistorin Q1 kollektori on kytketty 5 V:n käyttöjännitteeseen, joten sen kollektori–
emitteri -jännite on
𝑉𝐢𝐸1 = 5 𝑉 βˆ’ 𝑉𝐸1 = 5,72 𝑉.
(51)
Transistorin Q2 kollektorijännite puolestaan täytyy laskea käyttäen hyväksi laskettua
kollektorivirtaa. Kun oletetaan vastuksen RC2 läpi kulkeva virta kutakuinkin yhtä
suureksi kuin virta IC2, saadaan kollektorijännitteeksi
𝑉𝐢2 β‰… 5 𝑉 βˆ’ 𝑅𝐢2 𝐼𝐢2 β‰ˆ 0,76 𝑉
(52)
𝑉𝐢𝐸2 = 𝑉𝐢2 βˆ’ 𝑉𝐸2 = 1,48 𝑉.
(53)
ja näin ollen
Transistorin Q3 kantajännite on myös transistorin Q2 kollektorijännite, joten transistorin Q3 emitterijännitteeksi saadaan
𝑉𝐸3 = 𝑉𝐢2 βˆ’ 0,7 𝑉 β‰ˆ 62 π‘šπ‘‰.
(54)
Koska transistorin kollektori on kytketty positiiviseen käyttöjännitteeseen, sen kollektori–emitteri -jännite on
𝑉𝐢𝐸3 = 5 𝑉 βˆ’ 𝑉𝐸3 β‰ˆ 4,94 𝑉.
(55)
Viimeiseen kysyttyyn parametriin eli kollektorivirtaan IC3 päästään käsiksi laskemalla ensin emitterivirta eli vastuksen RE3 läpi kulkeva virta ja kertomalla se termillä Ξ±:
𝐼𝐢3 = 𝛼𝐼𝐸3 =
𝛽
𝑉𝐸3 βˆ’ (βˆ’5 𝑉)
βˆ™
β‰ˆ 2,0 π‘šπ΄
𝛽+1
𝑅𝐸3
(56)
Kytkennän DC-toimintapiste piti myös simuloida ja saatu tulos käy ilmi kuvasta
50, josta nähdään simuloitujen virtojen ja jännitteiden olevan lähellä edellä laskettuja
arvoja. Tehtävässä kysytään miksi piirin lähtöjännite eli vastuksen RL yli oleva jännite on 0 V ja vastaus tähän on, että lähdön kondensaattori CE3 poistaa lähtösignaalista
sen DC-tason, jolloin lähdön AC-signaali vaihtelee nollan voltin ympäristössä.
49
Kuva 50. Takaisinkytkemättömän kaksiasteisen vahvistimen DC-toimintapiste.
Seuraavaksi tehtävässä täytyi arvioida laskemalla vahvistimen jännitevahvistus,
ylärajataajuus, alarajataajuus, tuloimpedanssi ja lähtöimpedanssi. Piirikaaviota tarkastelemalla voidaan muodostaa tuloimpedanssille yhtälö
𝑍𝑖𝑛 β‰… 𝑅𝐡1 β€–(𝛽 + 1)(π‘Ÿπ‘’1 + π‘Ÿπ‘’2 )
= 𝑅𝐡1 β€–(2 βˆ™ (𝛽 + 1) 𝑉𝑇 ⁄𝐼𝐸1 ) β‰ˆ 1,45 π‘˜π›Ί.
(57)
Tarkastelemalla puolestaan piirin lähtöä voidaan nähdä lähtöimpedanssin olevan
π‘π‘œπ‘’π‘‘ = 𝑅𝐸3 β€– (π‘Ÿπ‘’3 +
𝑅𝐢2
)
𝛽+1
(58)
βˆ’1
= [(2,5 π‘˜π›Ί)
βˆ’1
26 π‘šπ‘‰
4,3 π‘˜π›Ί βˆ’1
+(
+
) ]
2,02 π‘šπ΄ 100 + 1
β‰ˆ 54,2 𝛺.
Seuraavaksi tarkastellaan piirin jännitevahvistusta. Edellä lasketun tuloimpedanssin avulla on mahdollista esittää lähdejännitteen ja vahvistinkytkennän näkemän tulojännitteen välinen yhteys, joka on muotoa
𝑣𝑖𝑛 =
𝑍𝑖𝑛
𝑣.
𝑍𝑖𝑛 + 𝑅𝑆 𝑠
(59)
Seuraavaksi selvitetään transistorin Q1 emitterillä kulkeva AC-virta muodostamalla
yhtälöpari, josta sen pystyy ratkaisemaan. Ensimmäinen yhtälö kertoo transistorin Q1
dynaamisen resistanssin yli olevan jännitteen:
50
𝑣𝑖𝑛 βˆ’ 𝑣𝑒1 = π‘Ÿπ‘’1 𝑖𝑒1
(60)
Yhtälöparin jälkimmäinen yhtälö on muodostettu differentiaaliparin emitterijännitteelle ja siinä approksimoidaan vastuksen RBIAS vaikuttavan transistorin Q2 dynaamisen resistanssin rinnalla niin vähän, että molempien differentiaaliparin transistorien
läpi kulkee suunnilleen sama emitterivirta:
𝑣𝑒1 = (𝑅𝐡𝐼𝐴𝑆 β€–π‘Ÿπ‘’2 )𝑖𝑒1 β‰… π‘Ÿπ‘’1 𝑖𝑒1
(61)
Kun jälkimmäinen yhtälö sijoitetaan ensimmäiseen emitterijännitteen paikalle ja yhtälö ratkaistaan emitterivirran suhteen, saadaan
𝑖𝑒1 =
𝑣𝑖𝑛
.
2π‘Ÿπ‘’1
(62)
Nyt kun transistorin Q2 emitterivirta on tiedossa, sen avulla on helppo laskea vastaava kollektorivirta, joka on
𝑖𝑐2 = βˆ’π›Όπ‘–π‘’1 .
(63)
Edelleen kollektorivirran avulla saadaan kollektorijännitteeksi
𝑣𝑐2 = βˆ’[𝑅𝐢2 β€–(𝛽 + 1)(π‘Ÿπ‘’3 + 𝑅𝐸3 ‖𝑅𝐿 )]𝑖𝑐2 β‰… βˆ’π‘…πΆ2 𝑖𝑐2 .
(64)
Viimeinen tarvittava vaihe jännitevahvistuksen ratkaisemiseen vaatii sellaisen yhtälön muodostamista, jossa esiintyy termi vout ja kaikki muut parametrin ovat tunnettuja. Muodostetaan jälleen kaksi yhtälöä, joista ensimmäinen kertoo transistorin Q3
kanta–emitteri -jännitteen, joka on muotoa
𝑣𝑐2 βˆ’ π‘£π‘œπ‘’π‘‘ = π‘Ÿπ‘’3 𝑖𝑒3 .
(65)
Jälkimmäinen yhtälö on puolestaan
𝑖𝑒3 =
π‘£π‘œπ‘’π‘‘
𝑅𝐸3 ‖𝑅𝐿
(66)
ja kun se sijoitetaan ensimmäiseen, saadaan
𝑣𝑐2 = (
π‘Ÿπ‘’3
+ 1) π‘£π‘œπ‘’π‘‘ .
𝑅𝐸3 ‖𝑅𝐿
(67)
51
Kun tähän sijoitetaan kaikki edellä ratkaistut parametrit ja yhtälöstä ratkaistaan lähtöja lähdejännitteen suhde, kytkennän jännitevahvistukseksi saadaan
π‘£π‘œπ‘’π‘‘
𝑍𝑖𝑛
𝛽
𝑅𝐢2
𝑅𝐸3 ‖𝑅𝐿
=
βˆ™
βˆ™
βˆ™
𝑣𝑠
𝑍𝑖𝑛 + 𝑅𝑆 𝛽 + 1 2π‘Ÿπ‘’1 𝑅𝐸3 ‖𝑅𝐿 + π‘Ÿπ‘’3
1,45 π‘˜π›Ί
100
4,3 π‘˜π›Ί
2,5 π‘˜π›Ίβ€–10 π‘˜π›Ί
=
βˆ™
βˆ™
βˆ™
1,45 π‘˜π›Ί + 100 𝛺 101 2 βˆ™ 26,12 𝛺 2,5 π‘˜π›Ίβ€–10 π‘˜π›Ί + 12,84 𝛺
β‰ˆ 75,8 ≑ 37,6 𝑑𝐡.
𝐴𝑀 =
(68)
Vahvistimen alarajataajuus lasketaan käyttäen aikavakioita. Alarajataajuuteen
vaikuttavat kondensaattorit CB1 ja CE3. CB2:n vaikutus on pieni, koska vastus RB2
näkyy differentiaaliparin emitterille jaettuna termillä Ξ²+1 eli noin 20 Ξ©:n resistanssina virtavahvistuksen ollessa 100. Taajuuden kasvaessa CB2 alkaa johtaa ohittaen lopulta vastuksen RB2 ja kasvattaen siten virtaa, mutta vaikutuksen voi arvioida olevan
niin pieni, että sen voi jättää huomioimatta. Myös kondensaattorin CE3 vaikutuksen
voi arvella jäävän pieneksi sen suuren kapasitanssin takia, mutta sen aikavakio päätettiin kuitenkin laskea ja ottaa huomioon alarajataajuuden arvioinnissa. Tulokondensaattorin CB1 aikavakioksi saadaan laskemalla
𝜏1,𝐿 β‰… 𝐢𝐡1 [𝑅𝑆 + 𝑅𝐡1 β€–(2 βˆ™ (𝛽 + 1)π‘Ÿπ‘’1 )]
= 10 πœ‡πΉ βˆ™ [100 𝛺 + 2 π‘˜π›Ίβ€–(2 βˆ™ 101 βˆ™ 26,12 𝛺)] β‰ˆ 15,5 π‘šπ‘ .
(69)
Kondensaattorin CE3 aikavakio on puolestaan
𝑅𝐢2
)]
𝛽+1
4,3 π‘˜π›Ί
= 1 π‘šπΉ βˆ™ [10 π‘˜π›Ί + 2,5 π‘˜π›Ίβ€– (12,84 𝛺 +
)] β‰ˆ 10,05 𝑠
100 + 1
𝜏2,𝐿 = 𝐢𝐸3 [𝑅𝐿 + 𝑅𝐸3 β€– (π‘Ÿπ‘’3 +
(70)
ja aikavakioiden yhteisvaikutuksesta saadaan piirin alarajataajuuden arvioksi
𝑓𝐿 β‰…
1 1
1
1
1
1
(
+
)=
(
+
) β‰ˆ 10,3 𝐻𝑧.
2πœ‹ 𝜏1,𝐿 𝜏2,𝐿
2πœ‹ 15,5 π‘šπ‘  10,05 𝑠
(71)
Vahvistinkytkennän ylärajataajuus määräytyy käytettyjen transistorien sisäisistä
kapasitansseista. Kuten aiemmissakin kohdissa, kullekin kapasitanssille lasketaan sen
aikavakio:
𝜏1,𝐻 β‰… 𝐢𝐡𝐢1 [𝑅𝑆 ‖𝑅𝐡1 β€–(𝛽 + 1)(π‘Ÿπ‘’1 + π‘Ÿπ‘’2 )] β‰ˆ 93,5 𝑝𝑠
(72)
52
𝜏2,𝐻 = 𝐢𝐡𝐸1 {(𝑅𝑆 ‖𝑅𝐡1 ) + [(𝑉𝑇 ⁄𝐼𝐢2 )‖𝑅𝐡𝐼𝐴𝑆 β€–(𝛽 + 1)π‘Ÿπ‘’2 ]} βˆ™
βˆ’1
𝑅𝑆 ‖𝑅𝐡1
𝑉𝑇
𝐼𝐢1
1
[1 +
+ ( ‖𝑅𝐡𝐼𝐴𝑆 β€–(𝛽 + 1)π‘Ÿπ‘’2 ) ( +
)]
(𝛽 + 1)π‘Ÿπ‘’1
𝐼𝐢2
𝑉𝑇 (𝛽 + 1)π‘Ÿπ‘’1
β‰ˆ 4 𝑝𝐹 βˆ™ 59,8 𝛺 β‰ˆ 239 𝑝𝑠
𝜏3,𝐻 = 𝐢𝐡𝐢2 [𝑅𝐢2 β€–(𝛽 + 1)(π‘Ÿπ‘’3 + 𝑅𝐸3 ‖𝑅𝐿 )] β‰ˆ 4,21 𝑛𝑠
𝐼𝐢1
𝑅𝑆 ‖𝑅𝐡1
1
(2 βˆ’
)+
(𝛽 + 1)π‘Ÿπ‘’1 + (𝑅𝑆 ‖𝑅𝐡1 )
(𝛽 + 1)π‘Ÿπ‘’2
𝑉𝑇
βˆ’1
1
1
+
+
] β‰ˆ 52,8 𝑝𝑠
𝑅𝐡𝐼𝐴𝑆 (𝛽 + 1)π‘Ÿπ‘’1 + 𝑅𝑆 ‖𝑅𝐡1
(73)
(74)
𝜏4,𝐻 = 𝐢𝐡𝐸2 [
𝜏5,𝐻 = 𝐢𝐡𝐢3 [𝑅𝐢2 β€–(𝛽 + 1)(π‘Ÿπ‘’3 + 𝑅𝐸3 ‖𝑅𝐿 )] β‰ˆ 4,21 𝑛𝑠
𝜏6,𝐻 = 𝐢𝐡𝐸3
𝑅𝐢2 + 𝑅𝐸3 ‖𝑅𝐿
β‰ˆ 158 𝑝𝑠
𝐼𝐢3
𝑅𝐢2 + 𝑅𝐸3 ‖𝑅𝐿
1 + 𝑉 (𝑅𝐸3 ‖𝑅𝐿 ) +
(𝛽 + 1)π‘Ÿπ‘’3
𝑇
(75)
(76)
(77)
Kannan ja emitterin välisten kapasitanssien näkemien resistanssien johtamisessa on
edellä sijoitettu tarkasteltavan kapasitanssin tilalle testijännite vΟ€ ja selvitetty sen ja
siitä vedetyn virran iΟ€ suhde vΟ€/iΟ€=RΟ€. Lopuksi aikavakiot summataan yhteen ja näin
saadaan kytkennän ylärajataajuudelle arvioksi
𝑓𝐻 β‰…
1
1
1
βˆ™ 6
=
β‰ˆ 17,8 𝑀𝐻𝑧.
2πœ‹ βˆ‘π‘›=1 πœπ‘›,𝐻 2πœ‹ βˆ™ 8,9633 𝑛𝑠
(78)
Vahvistimen avainominaisuuksien laskemisen jälkeen tehtävässä pyydetään kertomaan mikä on komponenttien CB1, CB2, RB1 ja RB2 merkitys kytkennässä ja miten
ne tulee mitoittaa. Tulossa oleva kondensaattori CB1 poistaa tulosignaalista sen DCtason. Sen koko vaikuttaa vahvistinkytkennän alarajataajuuteen, joten se tulee mitoittaa riittävän isoksi, jotta haluttu alarajataajuus toteutuu. Vastuksen RB1 arvolla puolestaan vaikutetaan transistorin Q1 DC-toimintapisteeseen, joten se tulee mitoittaa
siten, että transistori tulee biasoitua halutulla tavalla. Lisäksi on huomioimisen arvoista, että vastus vaikuttaa myös kytkennän tuloimpedanssiin sekä ylä- ja alarajataajuuteen. Kondensaattorin CB2 virka on ohittaa RB2 tehden transistorista Q2 laajakaistainen yhteiskantakytketty vahvistinaste käyttötaajuuksilla. Symmetrisen DCtoimintapisteen haluttaessa molemmat komponentit tulisi mitoittaa samansuuruisiksi
kuin niiden vastineet transistorin Q1 kannalla.
Tehtävässä kysytään seuraavaksi mitä vaikutusta signaalilähteen lähderesistanssilla RS on vahvistimen toimintaan. Lisäksi tiedustellaan miten edellä lasketut arvot
53
muuttuvat, jos lähderesistanssiksi vaihdetaan 1 kΞ©. Lähderesistanssin kasvaessa tulosignaali pienenee ja siten myös kytkennän jännitevahvistus pienenee. Lisäksi lähderesistanssi vaikuttaa sekä vahvistimen ala- ja ylärajataajuuksiin, sen kasvattamisen
pienentäessä molempia ja pienentämisen tehdessä päinvastoin. Jos aiemmin esitetyissä kaavoissa käytetään RS:n paikalla arvoa 1 kΞ©, saadaan jännitevahvistukseksi 47,9
eli noin 33,6 dB, alarajataajuudeksi
1
1
1
(
+
) β‰ˆ 6,5 𝐻𝑧
2πœ‹ 24,5 π‘šπ‘  10,05 𝑠
(79)
1
1
βˆ™
2πœ‹ 592𝑝𝑠 + 1,24𝑛𝑠 + 4,21𝑛𝑠 + 57,7𝑝𝑠 + 4,21𝑛𝑠 + 157𝑝𝑠
β‰ˆ 15,2 𝑀𝐻𝑧.
(80)
𝑓𝐿 β‰…
ja ylärajataajuudeksi
𝑓𝐻 β‰…
Lopuksi lasketut impedanssit, rajataajuudet ja jännitevahvistus täytyi tarkistaa
AC-analyysien avulla. Tuloimpedanssia mitatessa vastus RS ohitettiin, koska se ei
kuulu vahvistimeen vaan on jännitelähteen ominaisuus. Vahvistinkytkennän taajuusvaste näkyy kuvassa 51, josta voidaan lukea jännitevahvistuksen olevan noin
37,25 dB, mikä vastaa edellä laskettua arvoa 37,6 dB. Samaan kuvaan on myös merkitty markkereilla A1 ja A2 pisteet, joissa vaste on laskenut noin kolme desibeliä.
Niiden perusteella kytkennän alarajataajuus on noin 13,3 Hz ja ylärajataajuus
18,6 MHz. Molemmat arvot ovat samaa suuruusluokkaa edellä laskettujen 10,3 Hz:n
ja 17,8 MHz:n kanssa. Tulo- ja lähtöimpedanssit on esitetty taajuuden funktiona kuvissa 52 ja 53. Simulointien perusteella tuloimpedanssi on keskitaajuuksilla noin
1,45 kΞ© ja lähtöimpedanssi on puolestaan noin 54,4 Ξ©. Molemmat arvot ovat todella
lähellä käsin laskettuja arvoja, joiksi saatiin 1,45 kΞ© ja 54,2 Ξ©.
54
Kuva 51. Vahvistimen taajuusvaste sekä rajataajuudet markkereilla merkittynä.
Kuva 52. Takaisinkytkemättömän kaksiasteisen vahvistimen tuloimpedanssi.
55
Kuva 53. Takaisinkytkemättömän kaksiasteisen vahvistimen lähtöimpedanssi.
1.4.2. Takaisinkytketyn vahvistimen toiminta
Edellisen kohdan vahvistimeen lisätään tehtävässä 4.2 takaisinkytkentä poistamalla
kytkennästä kondensaattori CB2 ja lisäämällä vastus RFB. Saatu takaisinkytketty vahvistin näkyy kuvassa 54, missä vastukset RFB ja RB2 toimivat takaisinkytkentävastuksina.
56
Kuva 54. Takaisinkytketty kaksiasteinen vahvistin.
Tehtävänannossa kytkennän analysoiminen pyydettiin aloittamaan muodostamalla
ensin vahvistimelle avoimen silmukan vastinpiiri ja laskemalla sille avoimen silmukan vahvistus Av, ylärajataajuus fH ja alarajataajuus fL. Tämä tapahtuu katkaisemalla
transistorin Q2 kannan ja transistorin Q3 emitterin välinen takaisinkytkentä ja huomioimalla takaisinkytkentäverkon aiheuttama kuormitus kummastakin suunnasta nähden lisäämällä transistorin Q2 kannalta maihin vastus
𝑅11 = 𝑅𝐹𝐡 ‖𝑅𝐡2 = (
1
1 βˆ’1
+
) = 1,8 π‘˜π›Ί
18 π‘˜π›Ί 2 π‘˜π›Ί
(81)
ja transistorin Q3 emitteriltä vastaavasti vastus
𝑅22 = 𝑅𝐹𝐡 + 𝑅𝐡2 = 18 π‘˜π›Ί + 2 π‘˜π›Ί = 20 π‘˜π›Ί.
(82)
Avoimen silmukan vastinpiirin analysoiminen alkaa laskemalla sen DCtoimintapiste. Transistorien Q1 ja Q2 kantajännitteiden oletetaan olevan noin 0,7 V
niiden yhteisen emitterijännitteen yläpuolella. Koska kyseisten transistorien kantavirrat ovat
𝐼𝐡1 = βˆ’
𝑉𝐡1
𝑅𝐡1
(83)
57
ja
𝐼𝐡2 = βˆ’
𝑉𝐡2
,
𝑅11
(84)
vastuksen RBIAS yli jäävän jännitteen lausekkeesta
𝑉𝐸1 βˆ’ (βˆ’5 𝑉) = 𝑅𝐡𝐼𝐴𝑆 (𝐼𝐸1 + 𝐼𝐸2 )
(85)
voidaan ratkaista yhteiseksi emitterijännitteeksi
𝑉𝐸1
1
1
0,7 𝑉 βˆ™ (𝛽 + 1)𝑅𝐡𝐼𝐴𝑆 (𝑅 + 𝑅 ) + 5 𝑉
𝐡1
11
=βˆ’
β‰ˆ βˆ’0,72 𝑉.
1
1
(𝛽 + 1)𝑅𝐡𝐼𝐴𝑆 (
𝑅𝐡1 + 𝑅11 ) + 1
(86)
Emitterijännitteen avulla transistorien Q1 ja Q2 emitterivirroiksi saadaan nyt
𝐼𝐸1 = βˆ’
(𝛽 + 1)(𝑉𝐸1 + 0,7 𝑉)
β‰ˆ 0,94 π‘šπ΄
𝑅𝐡1
(87)
𝐼𝐸2 = βˆ’
(𝛽 + 1)(𝑉𝐸1 + 0,7 𝑉)
β‰ˆ 1,05 π‘šπ΄.
𝑅11
(88)
ja
Tekemällä oletus transistorin Q3 kantavirran olemisesta hyvin pieni verrattuna transistorin Q2 kollektorivirtaan, vastuksen RC2 läpi kulkevan virran voidaan olettaa olevan noin IC2 ja transistorin Q2 kollektorijännitteeksi voidaan näin ollen ratkaista
𝑉𝐢2 β‰… 5 𝑉 βˆ’ 𝑅𝐢2
𝛽
𝐼 β‰ˆ 0,54 𝑉.
𝛽 + 1 𝐸2
(89)
Edelleen tämän jännitteen avulla transistorin Q3 emitterivirraksi saadaan
𝐼𝐸3 =
𝑉𝐢2 βˆ’ 0,7 𝑉 𝑉𝐢2 βˆ’ 0,7 𝑉 βˆ’ (βˆ’5 𝑉)
+
β‰ˆ 1,93 π‘šπ΄.
𝑅22
𝑅𝐸3
Piirin bipolaaritransistorien dynaamisiksi resistansseiksi saadaan nyt
(90)
58
π‘Ÿπ‘’1 =
𝑉𝑇
26 π‘šπ‘‰
=
β‰ˆ 27,6 𝛺,
𝐼𝐸1 0,943 π‘šπ΄
(91)
π‘Ÿπ‘’2 =
𝑉𝑇
26 π‘šπ‘‰
=
β‰ˆ 24,8 𝛺
𝐼𝐸2 1,048 π‘šπ΄
(92)
π‘Ÿπ‘’3 =
𝑉𝑇
26 π‘šπ‘‰
=
β‰ˆ 13,5 𝛺.
𝐼𝐸3 1,927 π‘šπ΄
(93)
ja
Avoimen silmukan vahvistuksen ratkaiseminen aloitetaan selvittämällä jännitteen
vb1 arvo piirin tuloresistanssin avulla. Tarkastelemalla kytkentää nähdään tuloresistanssi olevan
𝑅𝑖𝑛 β‰… 𝑅𝐡1 β€–(𝛽 + 1) (π‘Ÿπ‘’1 + π‘Ÿπ‘’2 +
𝑅11
) β‰ˆ 1,56 π‘˜π›Ί.
𝛽+1
(94)
Tästä edelleen voidaan ratkaista transistorin Q1 kantajännitteelle likiarvo
𝑣𝑏1 =
𝑅𝑖𝑛
𝑣 β‰ˆ 0,94𝑣𝑠 .
𝑅𝑖𝑛 + 𝑅𝑆 𝑠
(95)
Kantavirraksi ib1 saadaan nyt puolestaan
𝑖𝑏1 β‰…
𝑣𝑏1
(𝛽 + 1) (π‘Ÿπ‘’1 + π‘Ÿπ‘’2 +
𝑅11
)
𝛽+1
β‰ˆ 0,13 π‘šπ‘† βˆ™ 𝑣𝑠
(96)
ja tästä edelleen emitterijännitteeksi
𝑖𝑐1 =
𝐼𝐢1
𝛽𝑖𝑏1 𝑉𝑇
(𝑣𝑏1 βˆ’ 𝑣𝑒1 ) = 𝛽𝑖𝑏1 ↔ 𝑣𝑒1 = 𝑣𝑏1 βˆ’
β‰ˆ 0,57𝑣𝑠 .
𝑉𝑇
𝐼𝐢1
(97)
Vastuksen RBIAS läpi kulkeva virta on yhtä suuri kuin transistorien Q1 ja Q2 emitterivirtojen summa, joten virraksi ie2 voidaan ratkaista
𝑣𝑒1
𝑣𝑒1
= 𝑖𝑒1 + 𝑖𝑒2 ↔ 𝑖𝑒2 =
βˆ’ (𝛽 + 1)𝑖𝑏1 β‰ˆ βˆ’13,1 π‘šπ‘† βˆ™ 𝑣𝑠 .
𝑅𝐡𝐼𝐴𝑆
𝑅𝐡𝐼𝐴𝑆
(98)
Emitterivirran ie2 ollessa tiedossa kollektorijännitteeseen vc2 päästään käsiksi soveltamalla Kirchhoffin virtalakia kyseiseen solmupisteeseen:
59
𝑣𝑐2
𝑣𝑐2
= 𝑖𝑐2 +
(𝛽 + 1)(π‘Ÿπ‘’3 + 𝑅22 ‖𝑅𝐸3 ‖𝑅𝐿 )
𝑅𝐢2
𝛽
βˆ’
𝑖
𝛽 + 1 𝑒2
=
β‰ˆ 54,6𝑣𝑠
1
1
𝑅𝐢2 + (𝛽 + 1)(π‘Ÿπ‘’3 + 𝑅22 ‖𝑅𝐸3 ‖𝑅𝐿 )
βˆ’
↔ 𝑣𝑐2
(99)
Tämän jännitteen avulla päästään viimein käsiksi piirin lähtöjännitteeseen ja näin
myös jännitevahvistukseen:
𝑣𝑐2 βˆ’ π‘£π‘œπ‘’π‘‘
π‘£π‘œπ‘’π‘‘
=
π‘Ÿπ‘’3
𝑅22 ‖𝑅𝐸3 ‖𝑅𝐿
𝑣𝑐2 ⁄𝑣𝑠
=
β‰ˆ 54,2 ≑ 34,7 𝑑𝐡
π‘Ÿπ‘’3
1+
𝑅22 ‖𝑅𝐸3 ‖𝑅𝐿
𝑖𝑒3 =
↔ 𝐴𝑣 =
π‘£π‘œπ‘’π‘‘
𝑣𝑠
(100)
Avoimen silmukan alarajataajuus lasketaan käyttäen aikavakioita. Kytkentäkondensaattorin CB1 aikavakio on
𝜏1,𝐿 β‰… 𝐢𝐡1 [𝑅𝑆 + 𝑅𝐡1 β€–(𝛽 + 1) (π‘Ÿπ‘’1 + π‘Ÿπ‘’2 +
𝑅11
)] β‰ˆ 16,6 π‘šπ‘ 
𝛽+1
(101)
ja kondensaattorin CE3 puolestaan
𝜏2,𝐿 = 𝐢𝐸3 [𝑅𝐿 + 𝑅22 ‖𝑅𝐸3 β€– (π‘Ÿπ‘’3 +
𝑅𝐢2
)] β‰ˆ 10,1 𝑠.
𝛽+1
(102)
Alarajataajuudeksi saadaan näin ollen
𝑓𝐿 β‰…
1 1
1
(
+
) β‰ˆ 9,60 𝐻𝑧.
2πœ‹ 𝜏1,𝐿 𝜏2,𝐿
(103)
Ylärajataajuus lasketaan niin ikään aikavakioiden avulla kuten aiemmissakin kohdissa:
𝑅11
)]} β‰ˆ 94,0 𝑝𝑠
𝛽+1
(104)
𝐼𝐢2
𝑅11
(𝑅
)
𝑉𝑇 (1 βˆ’ (𝛽 + 1)π‘Ÿπ‘’2 + 𝑅11 ) 𝑆 ‖𝑅𝐡1 + 1
β‰… 𝐢𝐡𝐸1
β‰ˆ 217 𝑝𝑠
𝐼𝐢2
𝑅11
𝐼𝐢1
(1
βˆ’
)
+
𝑉𝑇
𝑉𝑇
(𝛽 + 1)π‘Ÿπ‘’2 + 𝑅11
(105)
𝜏1,𝐻 β‰… 𝐢𝐡𝐢1 {𝑅𝑆 ‖𝑅𝐡1 β€– [(𝛽 + 1) (π‘Ÿπ‘’1 + π‘Ÿπ‘’2 +
𝜏2,𝐻
60
𝜏3,𝐻 β‰… 𝐢𝐡𝐢2 βˆ™
{𝑅𝐢2 +
𝜏4,𝐻
(𝛽 + 1)π‘Ÿπ‘’2
𝐼𝐢2
𝐼𝐢2
[𝑅𝐢2
(1 βˆ’
) + 1]}
(𝛽 + 1)π‘Ÿπ‘’2
𝐼𝐢2
𝑉𝑇
𝐼𝐢1 + 𝐼𝐢2
βˆ’πΌ +𝐼 +1
𝑅11
𝐢1
𝐢2
β‰ˆ 1 𝑝𝐹 βˆ™ 115 π‘˜π›Ί = 115 𝑛𝑠
𝐼𝐢1
𝑅 +1
𝑉𝑇 11
β‰… 𝐢𝐡𝐸2
β‰ˆ 4 𝑝𝐹 βˆ™ 646 𝛺 β‰ˆ 2,58 𝑛𝑠
𝐼𝐢1
𝑅11
𝐼𝐢2
(1
+
)
+
𝑉𝑇
𝑉𝑇
(𝛽 + 1)π‘Ÿπ‘’2
𝜏5,𝐻 = 𝐢𝐡𝐢3 {𝑅𝐢2 β€–[(𝛽 + 1)(π‘Ÿπ‘’3 + 𝑅22 ‖𝑅𝐸3 ‖𝑅𝐿 )]} β‰ˆ 4,20 𝑛𝑠
𝜏6,𝐻 = 𝐢𝐡𝐸3
𝑅𝐢2 + (𝑅22 ‖𝑅𝐸3 ‖𝑅𝐿 )
𝑅𝐢2
𝐼
1
1+
+ (𝑅22 ‖𝑅𝐸3 ‖𝑅𝐿 ) ( 𝑉𝐢3 +
)
(𝛽 + 1)π‘Ÿπ‘’3
(𝛽
+
1)π‘Ÿπ‘’3
𝑇
β‰ˆ 4 𝑝𝐹 βˆ™ 44,0 𝛺 = 176 𝑝𝑠
(106)
(107)
(108)
(109)
Koska signaali vahvistuu kapasitanssin CBC2 yli, sen vaikutus kasvaa vahvistukseen
verrannollisesti Millerin teoreeman mukaisesti ja se siis selvästi dominoi piirin ylärajataajuutta, joksi saadaan nyt
𝑓𝐻 β‰…
1
1
1
1
βˆ™ 6
β‰ˆ
βˆ™
β‰ˆ 1,30 𝑀𝐻𝑧.
2πœ‹ βˆ‘π‘›=1 πœπ‘›,𝐻 2πœ‹ 122 𝑛𝑠
(110)
Saatuja arvoja pyydettiin vertaamaan kohdassa 1.4.1. laskettuihin. Vahvistus on
pudonnut 3 desibeliä arvosta 37,6 dB arvoon 34,7 dB ohituskondensaattorin CB2
poistamisen seurauksena. Tilanne alarajataajuuteen vaikuttavien kondensaattorien
kannalta ei ole merkittävästi muuttunut kohdan 1.4.1. tilanteesta, joten ei ole yllätys
että lasketut taajuudet 10,3 Hz ja 9,60 Hz eroavat toisistaan hyvin vähän. Ohituskondensaattorin CB2 puuttumisen takia kapasitanssin CBC2 yli on nyt vahvistusta ja se
näkyy sen takia efektiivisesti paljon suurempana pienentäen ylärajataajuuden aiemmasta 17,8 megahertsistä 1,30 megahertsiin.
Seuraavaksi piirille pyydettiin laskemaan takaisinkytketyn silmukan vahvistus
Avfb, ylärajataajuus fHfb ja alarajataajuus fLfb. Takaisinkytketyn vahvistimen taajuusvaste pyydettiin myös simuloimaan. Vahvistus saadaan laskettua avoimen silmukan
vahvistuksen ja takaisinkytkentäkertoimen avulla, joka on
𝛽𝐹𝐡 =
𝑅𝐡2
2 π‘˜π›Ί
1
=
=
= 0,1.
𝑅𝐡2 + 𝑅𝐹𝐡 2 π‘˜π›Ί + 18 π‘˜π›Ί 10
(111)
61
Takaisinkytketyn vahvistimen vahvistukseksi saadaan siis nyt
𝐴𝑣𝑓𝑏 =
𝐴𝑣
54,2
=
β‰ˆ 8,44 ≑ 18,5 𝑑𝐡.
1 + 𝐴𝑣 𝛽𝐹𝐡 1 + 54,2 βˆ™ 0,1
(112)
Takaisinkytkennän lisääminen ei vaikuta DC-biasvirtoihin ja täten bipolaaritransistorien dynaamisiin resistansseihin merkittävästi, joten suljetun silmukan rajataajuuksia laskettaessa käytetään yksinkertaisuuden vuoksi avoimelle silmukalle laskettuja arvoja. Alarajataajuuteen vaikuttavat aikavakiot ovat
𝜏1,𝐿𝑓𝑏 β‰… 𝐢𝐡1 [𝑅𝑆 + 𝑅𝐡1 β€–(𝛽 + 1) (π‘Ÿπ‘’1 + π‘Ÿπ‘’2 +
𝑅𝐡2 ‖𝑅𝐹𝐡
)]
𝛽+1
(113)
β‰ˆ 10 πœ‡πΉ βˆ™ 1,66 π‘˜π›Ί = 16,6 π‘šπ‘ 
ja
𝜏2,𝐿𝑓𝑏 β‰… 𝐢𝐸3 [𝑅𝐿 + 𝑅𝐸3 β€– (π‘Ÿπ‘’3 +
𝑅𝐢2
)] β‰ˆ 10,1 𝑠.
𝛽+1
(114)
Niiden yhteisvaikutuksesta saadaan arvioksi piirin alarajataajuudelle
𝑓𝐿𝑓𝑏 β‰…
1
1
1
1
1
1
(
+
)=
(
+
) β‰ˆ 9,60 𝐻𝑧.
2πœ‹ 𝜏1,𝐿𝑓𝑏 𝜏2,𝐿𝑓𝑏
2πœ‹ 16,6 π‘šπ‘  10,1 𝑠
(115)
Kondensaattori CB1 dominoi edelleen piirin alarajataajuutta.
Avoimen silmukan tapauksessa havaittiin jo, että kapasitanssin CBC2 aiheuttama
napa selvästi dominoi vahvistinpiirin ylärajataajuutta, joten suljetulle silmukalle lasketaan tilanteen yksinkertaistamiseksi ainoastaan kyseisen kapasitanssin vaikutus
sillä oletuksella, että se on tarpeeksi hyvä approksimaatio piirin ylärajataajuudelle.
Transistorin Q3 muodostamasta asteesta ei oteta vahvistusta, joten sen kannalla olevan AC-jännitteen oletetaan olevan hyvin lähellä piirin lähtöjännitettä. Tätä käytetään hyväksi kytkennän analyysin helpottamisessa korvaamalla kapasitanssi CBC2
transistorin Q2 kannalla maata vasten olevalla kapasitanssilla (1+Avfb)CBC2 ja samaisen transistorin kollektorilla maata vasten olevalla kapasitanssilla (1+1/Avfb)CBC2
käyttäen hyväksi Millerin teoreemaa. Ensimmäisen kapasitanssin muodostama aikavakio on
𝜏1,𝐻𝑓𝑏 β‰… (1 + 𝐴𝑣𝑓𝑏 )𝐢𝐡𝐢2
𝑅𝑆 ‖𝑅𝐡1
βˆ™ [𝑅𝐡2 ‖𝑅𝐹𝐡 β€–(𝛽 + 1) (π‘Ÿπ‘’2 + π‘Ÿπ‘’1 +
)] β‰ˆ 12,7 𝑛𝑠
𝛽+1
(116)
62
ja jälkimmäinen
1
) 𝐢 [𝑅 β€–(𝛽 + 1)(𝑅𝐿 ‖𝑅𝐸3 ‖𝑅𝐹𝐡 )]
𝐴𝑣𝑓𝑏 𝐡𝐢2 𝐢2
β‰ˆ 1,12 βˆ™ 1 𝑝𝐹 βˆ™ 4,20 π‘˜π›Ί β‰ˆ 4,70 𝑛𝑠.
𝜏2,𝐻𝑓𝑏 β‰… (1 +
(117)
Näiden yhteisvaikutuksesta saadaan nyt arvioksi piirin ylärajataajuudelle
πœπ»π‘“π‘ =
1
1
βˆ™
β‰ˆ 9,15 𝑀𝐻𝑧.
2πœ‹ 𝜏1,𝐻𝑓𝑏 + 𝜏2,𝐻𝑓𝑏
(118)
Takaisinkytketylle vahvistimelle simuloitu taajuusvaste on esitetty kuvassa 55.
Kuvaajasta luettu suljetun silmukan vahvistus on noin 18,1 dB ja ala- ja ylärajataajuudet 8,0 Hz ja 9,5 MHz. Arvot ovat yhteneviä käsin laskettujen arvioitten kanssa.
Kuva 55. Takaisinkytketyn vahvistimen taajuusvaste.
Viimeisenä kohtana esitehtävissä pyydettiin vastaamaan vaikuttaako takaisinkytkennän lisääminen ylä- ja alarajataajuuksiin ja perustelemaan annetut vastaukset.
Takaisinkytkennän lisääminen pienentää hieman vahvistinkytkennän alarajataajuutta,
koska alarajataajuutta dominoivan kondensaattorin CB1 näkemä tuloimpedanssi kasvaa hieman takaisinkytkentäverkon lisäämisen seurauksena. Kohdassa 1.4.1. takai-
63
sinkytkemättömän vahvistimen alarajataajuudeksi saatiin simulaatiossa noin 13,3 Hz
ja takaisinkytketylle piirille tässä tehtävässä noin 8,0 Hz.
Ylärajataajuudessa takaisinkytkennän aiheuttama muutos on huomattavasti suurempi. Kohdan 1.4.1. differentiaaliparin tapauksessa transistorin Q2 kanta on korkeilla taajuuksilla maissa ohituskondensaattorin CB2 seurauksena. Takaisinkytketyn vahvistinpiirin tapauksessa näin ei kuitenkaan ole ja kapasitanssin CBC2 yli on nyt vahvistusta. Millerin teoreeman mukaisesti tämä kapasitanssi näkyy nyt efektiivisesti
paljon suurempana laskien huomattavasti kytkennän ylärajataajuutta. Takaisinkytkentäverkolla asetettu vahvistus siis nyt vaikuttaa myös suoraan vahvistimen ylärajataajuuteen. Tehtävässä 4.1 ylärajataajuudeksi simuloitu arvo oli noin 18,6 MHz. Tässä tehtävässä takaisinkytketylle piirille vastaavaksi arvoksi puolestaan saatiin simulaatiossa noin 9,5 MHz, joka on noin puolet takaisinkytkemättömän vahvistimen
kaistanleveydestä. Haluttaessa takaisinkytketystä piiristä enemmän vahvistusta, tämä
tehdään kaistanleveyden kustannuksella.
64
2. OHJELMOITAVA ELEKTRONIIKKA
Toisen puoliskon kandidaatintyöstä muodostaa Ohjelmoitava elektroniikka kurssin
harjoitustyö, jossa suunnitellaan digitaalinen järjestelmä, joka pystyy mittaamaan
jaksollisen logiikkasignaalin taajuuden. Jopa yhden jakson mittaisen signaalin hetkellinen taajuus on myös kyettävä määrittämään. Mittauksen erottelutarkkuus on 1 Hz ja
tulos päivitetään noin kolme kertaa sekunnissa nelinumeroiselle 7-segmenttinäytölle.
Laitetta pitää pystyä testaamaan ilman ulkoista signaalia sisäisellä signaaligeneraattorilla, jonka taajuus voidaan asettaa 1 Hz:n tarkkuudella.
Suunniteltu digitaalinen järjestelmä toteutettiin ohjelmoitavalla FPGA-piirillä, joka löytyy osana työssä käytettyä Alteran DE2-evaluointikorttia. Piiri on malliltaan
Cyclone II 2C35. Ulkoinen mitattava signaali kytketään piirin tuloon PIN_D25 ja
sisäinen signaaligeneraattori liittimeen PIN_K25.
2.1. Vaatimusmäärittely
2.1.1. Suorituskyky ja reunaehdot
DE2-evaluointikortilta löytyy 50 MHz:n oskillaattori, jota käytetään tässä työssä
digitaalilogiikan kellosignaalina. Tulosignaalista voidaan siis ottaa rekisteriin talteen
näytteitä 50 MHz:n taajuudella eli 20 ns:n välein. Laite laskee kuinka monta kellojaksoa kuluu kahden tulosignaalin nousevan reunan välissä, joten mittauksen välituloksena saadaan luku N, joka on positiivinen ykköstä suurempi kokonaisluku. Koska
taajuus on jaksonpituuden käänteisarvo, yhden jakson hetkellinen taajuus voidaan
laskea seuraavanlaisesti:
π‘“π‘šπ‘–π‘‘π‘Žπ‘‘π‘‘π‘’ =
1
π‘“π‘˜π‘’π‘™π‘™π‘œ
=
𝑁 βˆ™ π‘‡π‘˜π‘’π‘™π‘™π‘œ
𝑁
(119)
Mittaukselta vaaditaan 1 Hz:n erottelutarkkuus, joten määritetään millä N:n arvoilla N:llä ja N+1:llä lasketut taajuudet eroavat toisistaan vähemmän kuin yhden
hertsin verran:
65
π‘“π‘˜π‘’π‘™π‘™π‘œ π‘“π‘˜π‘’π‘™π‘™π‘œ
βˆ’
≀ 1 (𝐻𝑧)
𝑁
𝑁+1
π‘“π‘˜π‘’π‘™π‘™π‘œ βˆ™ (𝑁 + 1) βˆ’ π‘“π‘˜π‘’π‘™π‘™π‘œ βˆ™ 𝑁
↔
≀1
𝑁 βˆ™ (𝑁 + 1)
↔ π‘“π‘˜π‘’π‘™π‘™π‘œ ≀ 𝑁 2 + 𝑁
↔ 𝑁 2 + 𝑁 βˆ’ π‘“π‘˜π‘’π‘™π‘™π‘œ β‰₯ 0
→𝑁=
(120)
βˆ’1 ± √12 βˆ’ 4 βˆ™ 1 βˆ™ (βˆ’π‘“π‘˜π‘’π‘™π‘™π‘œ ) βˆ’1 ± √1 + 4 βˆ™ 50 βˆ™ 106
=
2βˆ™1
2
7070,57
β‰ˆ{
(βˆ’7071,57)
Kyseessä on ylöspäin aukeava paraabeli, joten toisen asteen yhtälö on positiivinen
N:n ollessa suurempi tai yhtä suuri kuin 7071. Saadun ehdon avulla on helppo määrittää suurin taajuus johon asti tulosignaali voidaan mitata 1 Hz:n erottelutarkkuudella:
π‘“π‘˜π‘’π‘™π‘™π‘œ
β‰₯ 7071
π‘“π‘šπ‘–π‘‘π‘Žπ‘‘π‘‘π‘’
π‘“π‘˜π‘’π‘™π‘™π‘œ 50 βˆ™ 106 𝐻𝑧
≀
=
β‰ˆ 7071,14𝐻𝑧
7071
7071
𝑁=
↔ π‘“π‘šπ‘–π‘‘π‘Žπ‘‘π‘‘π‘’
(121)
Tulosignaali voidaan siis mitata 1 Hz:n erottelutarkkuudella 7071 Hz:n taajuuteen
asti ja sen jälkeen erottelutarkkuus on huonompi. Nelinumeroinen näyttö on täten
riittävä esittämään koko taajuusalueen jossa vaadittu erottelutarkkuus täyttyy. Kymmenjärjestelmää käyttäen näytöllä voidaan kuitenkin esittää lukuja aina arvoon
9999 Hz saakka, joten laite saturoi vasta tämän arvon yli menevät tulokset maksimiarvoon. Välin 7071 Hz…9999 Hz kaikki arvot eivät kuitenkaan ole käytössä riittämättömän erottelutarkkuuden takia.
Varsinaista alarajataajuutta tulosignaalille ei ole. On kuitenkin loogista, että
0,5 Hz:n signaalia kauemmin kestänyt mittaus pyöristetään suoraan nollaksi. Tämän
tiedon perusteella voidaan laskea kuinka monta bittiä N:n arvoa mittaavassa laskurissa tarvitaan:
π‘“π‘˜π‘’π‘™π‘™π‘œ 50 βˆ™ 106 𝐻𝑧
=
= 100 βˆ™ 106 < 227 βˆ’ 1
π‘“π‘šπ‘–π‘›
0,5𝐻𝑧
(122)
Kellojaksojen laskentaan tarvitaan siis 27-bittinen laskuri. Laskuri käsittelee etumerkittömiä binäärilukuja. Yhden jakson hetkellisen taajuuden tuottavan jakolaskun tulos on korkeintaan 9999 Hz, jonka esittämiseen binäärimuodossa tarvitaan 14 bittiä.
Jakolasku on ehdittävä suorittaa ennen kuin tulosignaalissa ehtii näkyä uusi jakso.
66
Nopein hyväksyttävä taajuus on 9999 Hz ja sitä vastaava N on 5000,5, joten jakolasku on laskettava nopeammin kuin 5000 kellojaksossa.
Näyttöä päivitetään noin kolme kertaa sekunnissa, joten tarvitaan laskuri joka kertoo digitaalilogiikalle milloin on kulunut noin sekunnin kolmasosa. Lasketaan kuinka
monta kellojaksoa mahtuu kolmasosasekuntiin:
1⁄ 𝑠
3 = 1⁄ 𝑠 βˆ™ 𝑓
6
1
π‘˜π‘’π‘™π‘™π‘œ = ⁄3 𝑠 βˆ™ 50 βˆ™ 10 𝐻𝑧 β‰ˆ 16.666.666,67
3
π‘‡π‘˜π‘’π‘™π‘™π‘œ
(123)
Ajoituksen ei tarvitse olla mahdollisimman tarkka, joten tarkka kellojaksojen määrä
voidaan valita kohtalaisen vapaasti. Päätetään, että näyttöä päivitetään 16.666.666
kellojakson välein. Laskurin tarvitsee olla näin ollen 24-bittinen.
Käytetty käyttöjännite on 3,3 V, joka on DE2-evaluointikortilla käytössä oleva
jännitetaso. Laitteen tehonkulutuksen vaaditaan olevan alle 500 mW ja toimintalämpötila-alueen 10 ºC…40 ºC. Koska työn toteutus on kiinnitetty Alteran evaluointikorttiin, lopullisen laitteen fyysisiin mittoihin voidaan vaikuttaa hyvin vähän.
2.1.2. Toimintaperiaate
2.1.2.1. Taajuuden mittaaminen
Taajuusmittarin sisääntulosignaali valitaan yksinkertaisesti multiplekserillä. Käyttäjä
voi itse vaihtaa lähdettä tai käynnistää build-in self-testin (BIST), jonka toiminnan
ajan sisäinen signaaligeneraattori on automaattisesti valittuna ja käyttäjän yritykset
vaihtaa lähdettä jätetään huomiotta. Signaalissa havaitaan tapahtuneen nouseva reuna
tallettamalla signaalista muistiin sen uusin ja tätä edeltävä arvo. Jos vanha arvo on 0
ja uusi arvo 1, todetaan signaalissa tapahtuneen nousu. Kun tämä havainto tehdään,
asetetaan kuluneita kellojaksoja laskevan laskurin arvoksi 1. Laskenta aloitetaan ykkösestä, koska kun noussut reuna on tunnistettu, laskuri alustetaan vasta seuraavalla
nousevalla kelloreunalla, jolloin on kulunut jo yksi kellojakso. Lisäksi laskuri laitetaan laitteen resetoinnin jälkeen käyntiin vasta, kun ensimmäinen nouseva reuna on
havaittu.
Kohdassa 2.1.1. määritettiin, että laskurin tarvitsee olla 27-bittinen. Sen lähtö on
sen tämänhetkinen sisältö. Laskurin lähtöön on kytketty niin ikään 27-bittinen rekisteri, johon laitetaan talteen laskurin arvo kun havaitaan seuraava signaalin nouseva
reuna. Siihen ei siis talleteta vielä ensimmäisellä resetoinnin jälkeisellä nousevalla
reunalla mitään. Jos laskurin arvo on 100βˆ™106, sen seuraava arvo on 1 ja se kytketään
pois päältä. Rekisteriin talletetaan tällöin arvo 0.
Kun yhteen jaksoon kuluneiden kellojaksojen lukumäärä N on tiedossa, jaetaan
67
kellosignaalin taajuus 50 MHz sillä. Jos N on suurempi kuin 50βˆ™106, jakolaskua ei
tehdä, vaan tulokseksi pyöristetään suoraan 1 Hz. N:n ollessa 0, jakolaskua ei myöskään suoriteta, vaan tulokseksi saadaan 0 Hz. Jakolaskussa N:n eniten merkitsevä
bitti jätetään pois, koska jos jako suoritetaan, N on korkeintaan 50βˆ™106 ja eniten merkitsevä bitti on tällöin aina 0. Lopputulos saturoidaan arvoon 9999 jakolaskun antaessa sitä suuremman arvon.
Systeemissä on 24-bittinen laskuri, joka käy läpi arvoja nollasta lukuun
16.666.665 saakka, jonka jälkeen se palaa nollaan. Laskurin lähtö on aktiivinen laskurin sisällön ollessa 16.666.665 ja tämä kertoo muulle logiikalle milloin kolmasosasekunti on kulunut. Laitteen resetoiminen ja build-in self-testin alkaminen nollaavat
laskurin. Kun laskurin lähtö on aktiivinen, viimeisimmän havaitun jakson taajuus
luetaan talteen 14-bittiseen rekisteriin. Tämän kolmasosasekunnin välein päivittyvän
rekisterin sisältö muunnetaan 7-segmenttimuotoon ja viedään käytetyille 7segmenttinäytöille.
2.1.2.2. Sisäinen signaaligeneraattori
Normaalissa toiminnassa signaaligeneraattorin taajuus valitaan evaluointikortin liukukytkimillä. Taajuus syötetään BCD-muodossa, joten se täytyy muuntaa binäärimuotoon. Kun BIST aktivoidaan, sen toimintaan valmiiksi ohjelmoidut taajuusarvot
ohittavat liukukytkimillä syötetyn arvon. Suurin syötettävissä oleva taajuus on
9999 Hz, jonka esittäminen vaatii 14 bittiä. Valinnan nykyinen arvo ja edellisellä
kellojaksolla ollut arvo talletetaan kahteen 14-bittiseen rekisteriin.
Syötetyn taajuuden perusteella pitää selvittää kuinka monta kellojaksoa halutun
signaalin jakso on. Tähän tulokseen päästää jakamalla kellon taajuus halutulla taajuudella. Jakaminen tehdään vain halutun taajuuden uuden arvon ollessa nollasta
eroava. Kun jakolasku on suoritettu, tulos tallennetaan 26-bittiseen rekisteriin ja samalla käynnistetään 26-bittinen laskuri siten, että se alkaa laskea nollasta ylöspäin
saaden arvon yksi kellojakson kuluttua tuloksen taltioimisesta rekisteriin.
Signaaligeneraattorin lähtö on nolla, mikäli halutun taajuuden uusi arvo on 0 Hz.
Muussa tapauksessa lähtö on yksi laskurin arvon ollessa pienempi kuin puolet talletetusta signaalin jaksonpituudesta. Laskurin ollessa kyseistä arvoa suurempi tai yhtä
suuri sen kanssa, signaaligeneraattorin lähtö on nolla. Kun laskurin arvo on yhden
laskettua jaksonpituutta pienempi, se palaa seuraavalla nousevalla kellonreunalla
arvoon 0. Näin saadaan generoitua signaali, joka on puolet halutusta jaksosta ykkönen ja loput jaksosta nolla. Jos halutun taajuuden uusi arvo eroaa edellisestä arvosta,
niin tallennettu jaksonpituus ja taajuussignaalia generoiva laskuri nollataan.
68
2.1.3. Käyttöliittymä
Virtojen päälle laittamisen sekä resetoinnin jälkeen laite aloittaa toimintansa mitaten
oletusarvoisesti ulkoisen signaalin taajuutta. Mittauskohdetta voidaan vaihtaa painamalla vasemmanpuoleisinta neljästä evaluointikortin painonapista. Mitattaessa sisäisen signaaligeneraattorin taajuutta kyseisen napin yläpuolella oleva vasen vihreä ledi
palaa. Mittaustulos esitetään neljällä oikeanpuoleisimmalla kahdeksasta evaluointikortin 7-sekmenttinäytöstä. Toinen nappi vasemmalta käynnistää build-in self-testin,
joka kestää noin sekunnin. Kyseisen napin päällä oleva vasen vihreä ledi syttyy kun
BIST-tila on päällä. Jos testi suoritettiin onnistuneesti, myös oikeanpuoleinen ledi
syttyy. Testin päätyttyä palataan normaaliin toimintaan painamalla samaa nappia
uudestaan, jolloin molemmat ledit sammuvat. Laitteen voi resetoida painamalla oikeanpuoleisinta nappia. Sen yläpuolinen vasen ledi palaa niin kauan kuin nappi on painettuna.
Signaaligeneraattorin taajuus asetetaan kuudellatoista oikeanpuoleisimmalla liukukytkimellä. Kytkimen ollessa alhaalla sen arvo on 0 eikä sen päällä oleva punainen
ledi pala. Yläasennossa kytkimen arvo on 1 ja ledi on päällä. Taajuus syötetään
BCD-koodattuna siten, että neljä vasemmanpuoleisinta kytkintä määrittää tuhannet,
neljä seuraavaa sadat ja niin edelleen. Jos BCD-koodiksi annetaan jokin muu kuin
luku väliltä 0…9, niin se tulkitaan nollaksi.
2.1.4. Testattavuus
Laitteen oikeellista toimintaa on helppo testata joko ulkoisella signaalilähteellä, jonka taajuus tiedetään tai sisäisellä signaaligeneraattorilla, jonka taajuus voidaan valita
itse. Kolmantena vaihtoehtona on BIST, joka testaa automaattisesti laitteen toiminnan. Testi on kolmiosainen ja kaikki vaiheet kestävät noin kolmasosasekunnin. Jokaisen vaiheen ajan sisäinen signaaligeneraattori synnyttää yhtä kolmesta vapaasti
valitusta taajuudesta, jotka ovat 3742 Hz, 5136 Hz ja 681 Hz. Vaiheiden lopussa näytön ohjaamiseen käytetyn rekisterin sisältöä verrataan generoituun taajuuteen. Jos
kaikki kolme vaihetta suoritettiin onnistuneesti, testin käynnistävän napin yläpuolella
oleva oikeanpuoleinen ledi syttyy.
2.1.5. Toteutettavuusanalyysi
Käytetyltä FPGA-piiriltä löytyy 33.216 LE:tä. Tarvittavat aritmeettiset operaatiot
onnistuvat helposti käytettävissä olevilla resursseilla. Suoritettavat jakolaskut ovat
laskennallisesti vaativimmat toiminnot, mutta kriittinen polku pysyy kuitenkin lyhy-
69
ehkönä, koska niiden kanssa ei suoriteta sarjassa muita monimutkaisia toimenpiteitä.
Tarvittavien D-kiikkujen lukumäärä on muutamien satojen kiikkujen luokkaa, joten
käytettävissä olevien D-kiikkujen määrä on täysin riittävä laitteen toteuttamiseen.
2.2. Rekisterisiirtotason kuvaus
Alla esitetään seuraavaksi suunnitellun vaatimusmäärittelyn toteuttavan logiikan rekisterisiirtotason kuvaus sekä kuvaus sen toiminnasta.
2.2.1. Rakennelohkot
Laitteen toteutus on jaettu kolmeen lohkoon, jotka ovat ohjausosa, taajuusmittari ja
signaaligeneraattori. Ohjausosa pitää muistissa nykyiseen toimintatilaan liittyvät arvot ja generoi ohjaussignaalit pohjautuen laitteen nykyiseen tilaan ja painonapeilta
saapuviin painalluksiin. Taajuusmittari puolestaan mittaa joko ulkoisen signaalin tai
sisäisen signaaligeneraattorin taajuutta ohjausosan ohjauksen mukaisesti. Sen laskema tulos näkyy laitteen näytöllä ja build-in self-testin ollessa käynnissä ohjausosa
myös käyttää tätä tulosta määrittämään toimiiko laite oikein. Signaaligeneraattori
generoi halutun taajuista signaalia. Normaalin toiminnan aikana taajuus valitaan liukukytkimien avulla, mutta BIST-tilassa käytetään ohjausosan määräämiä arvoja.
2.2.2. Lohkojen rakenne ja toimintaperiaate
2.2.2.1. Ohjausosa
Ohjausosan RTL-kuvaus on esitetty kuvassa 56. Evaluointikortin painonapit 0, 2 ja 3
on kytketty pinneihin PIN_G26, PIN_P23 ja PIN_W26. Vihreät ledit 1, 4, 5 ja 7 on
puolestaan kytketty pinneihin PIN_AF22, PIN_U18, PIN_U17 ja PIN_Y18. Painonapit syöttävät signaalia, jonka logiikkataso on 1 kun ne eivät ole painettuina ja
nollaa ollessaan painettuina. Ledit palavat kun niihin kytkettyihin pinneihin tuodaan
signaali, jonka arvo on 1. Lisäksi evaluointikortilta löytyvä 50 MHz:n oskillaattori on
kytketty pinniin PIN_N2 ja sitä käytetään kellosignaalina kaikelle käytetylle digitaalilogiikalle.
70
Kuva 56. Ohjausosan RTL-kuvaus.
Painonappi 0 on kytketty asynkroniseen reset signaaliin A_RESET, joka menee
kaikkiin rekistereihin. Lisäksi painonapin invertoitu arvo ajaa vihreää lediä 1, joka on
toinen painonapin 0 päällä olevista ledeistä. Näin ledi palaa painonapin ollessa painettuna. Signaalia ei ole synkronoitu kelloon, koska kyseessä on asynkroninen signaali.
Painonapilta 3 tuleva signaali synkronoidaan kelloon ja napin painalluksesta generoidaan yhden kellojakson mittainen pulssi invertoimalla ensin signaali ja tuomalla
se kaksipaikkaiseen siirtorekisteriin. Uuden arvon ollessa 1 ja vanhan 0 todetaan, että
nappia on painettu ja tulos viedään rekisteriin. Painonappi 2 synkronoidaan samalla
tavalla.
Napilla 2 ohjataan rekisteriä, johon on talletettu 0 BIST-tilan ollessa pois päältä ja
1 sen ollessa päällä. Napin painaminen vaihtaa rekisterin arvoa näiden kahden tilan
välillä. Kun BIST-tila ei ole päällä, napin painaminen muuttaa aina rekisterin arvon
nollasta ykköseksi, mutta BIST-tilan ollessa aktivoituna napin painaminen ei tee mitään, jos laitteen testaaminen on vielä kesken. Rekisterin arvo ajaa suoraan vihreätä
lediä 5 ja signaalia MODE_SELECT, joka ohjaa signaaligeneraattorin toimintaa.
Vihreä ledi 5 sijaitsee napin 2 yläpuolella ja sen palaessa BIST-tila on aktivoituna.
BIST-rekisteri on kytketty siirtorekisteriin, jonka avulla havaitaan sen arvon
muuttuneen nollasta ykköseksi. Kun näin tapahtuu, generoitunut pulssi kasvattaa
kaksibittisen rekisterin arvoa nollasta ykköseen. Tämän rekisterin arvo ohjaa multiplekseriä, jonka lähtö ajaa signaalia BIST_VALUE, joka on yksi signaaligeneraattorin ohjaussignaaleista. Kolme multiplekseriin tuotavaa nollasta eroavaa arvoa vastaavat kolmea testin aikana generoitavaa taajuutta. Kun tiedon BIST-tilan nykyisestä
vaiheesta sisältävän rekisterin arvo ei ole nolla, sen sisältö kasvaa yhdellä ohjausosasta löytyvän sekunnin kolmasosan välein pulssin generoivan laskurin toimesta.
71
Näin nelitilainen rekisteri vaihtaa tilaansa kolmasosasekunnin välein, kunnes sen
arvo on jälleen 0, jolloin BIST-tila on mahdollista kytkeä pois päältä painamalla
nappia 2.
Mainittu noin kolmasosasekunnin välein kellojakson pituisen ykköspulssin synnyttävä laskuri laskee kellojaksoja nollasta arvoon 16.666.665 saakka, jolloin sen
lähtö on yksi ja aloittaa sitten jälleen nollasta. BIST-rekisterin arvon muuttuminen
nollasta ykköseksi nolla laskurin, jotta signaaligeneraattori generoi kutakin testitaajuutta noin kolmasosasekunnin ajan. Lisäksi laskurin lähtö on kytketty signaaliin
UPDATE_SCREEN, joka on yksi taajuusmittarin ohjaussignaaleista.
Painonapilla 3 ohjataan rekisteriä johon on talletettu tieto siitä, kumpi taajuusmittarin tuloista on valittuna. Nolla vastaa ulkoista signaalilähdettä ja ykkönen sisäistä
signaaligeneraattoria. Nappia painettaessa rekisterin tila vaihtuu, mutta vain jos
BIST-tila ei ole päällä. Testauksen ollessa käynnissä napin 3 painaminen ei tee mitään ja rekisterin sisällöstä riippumatta taajuusmittarin valituksi tuloksi pakotetaan
sisäinen signaaligeneraattori. Signaali SOURCE_SELECT välittää tiedon valitusta
lähteestä taajuusmittarille ja sen arvon ollessa yksi vihreä ledi 7 palaa merkkinä siitä,
että signaaligeneraattori on valittuna.
Viimeisenä toimintona ohjausosa osaa määrittää suoritettiinko build-in self-test
onnistuneesti. Tähän käytetään kolmituloista AND-porttia, jonka ensimmäinen tulo
on kolmasosasekunteja laskevan laskurin lähtö. Toinen tulosignaali on invertoitu
arvo neljä BIST-tilaa läpi käyvän rekisterin arvosta verrattuna komparaattorin avulla
nollaan. Se on siis yksi kun kyseisen rekisterin sisältö on 1, 2 tai 3. Molempia näistä
kahdesta tulosta on viivästetty yhdellä kellojaksolla ennen AND-porttiin tuomista,
koska kolmas tulo saa kiinnostavan arvon vasta sillä kellojaksolla, kun kaksi muuta
ehtivät päivittyä uuteen arvoon. Tämä kolmas tulo on kytketty komparaattorin lähtöön, joka vertaa taajuusmittarilta tulevaa signaalia MEASUREMENT yhden kellojakson viivästettyyn arvoon multiplekserin avulla valitusta BIST_VALUE:sta, joka
edustaa päättyneen testivaiheen aikana generoitua taajuusarvoa.
Käytännössä mainitun AND-portin lähtö on siis yksi, jos näyttöä käskettiin juuri
päivittää, jolloin signaali MEASUREMENT on saanut uuden arvon ja tämän arvon
täytyy olla sama kuin generoitu testitaajuus. Lisäksi kyseessä täytyi olla ajanjakso,
jolloin lähetettiin jotain kolmesta testitaajuudesta. Ehtojen täyttyessä kaksibittisen
rekisterin arvoa kasvatetaan yhdellä merkiksi yhdestä onnistuneesti suoritetusta testivaiheesta. Rekisteri nollataan aina BIST-rekisterin ollessa nolla joten, kun BIST-tila
käynnistetään, sen lähtöarvo on aina nolla. Jos rekisterin sisältö saavuttaa testin aikana arvon 3, vihreä ledi 4 syttyy merkiksi testin onnistumisesta. Kyseinen ledi on oikeanpuoleinen kahdesta napin 2 yllä olevasta ledistä ja molempien pitäisi palaa testin
onnistuttua sekä sammua, kun BIST-tila kytketään pois päältä painamalla nappia.
72
2.2.2.2. Taajuusmittari
Taajuusmittarin rekisterisiirtotason kuvaus on esitetty kuvassa 57. Ulkoinen signaalilähde kytketään pinniin PIN_D25 ja sisäinen signaaligeneraattori pinniin PIN_K25.
Multiplekseri valitsee halutun tulon ohjaussignaalin SOURCE_SELECT mukaisesti.
Ulkoinen signaalilähde on synkronoitu kelloon kolmipaikkaisella siirtorekisterillä.
Valittu tulosignaali tallennetaan kaksipaikkaiseen siirtorekisteriin. Signaalin uuden
arvon ollessa yksi ja edellisen arvon nolla todetaan tapahtuneen nouseva reuna.
Kuva 57. Taajuusmittarin RTL-kuvaus.
Taajuusmittarista löytyy yksibittinen rekisteri, joka varastoi tiedon siitä onko mitattavan signaalin jaksonpituutta laskeva laskuri käynnissä. Sen sisältö on aluksi nolla, mutta se vaihtuu ykköseksi kun ensimmäinen nouseva reuna on havaittu, mikä
käynnistää 27-bittisen laskurin. Laskurin ollessa käynnissä sen sisältö kasvaa yhdellä
joka kellojakso, kunnes havaitaan seuraava nouseva reuna mitattavassa signaalissa,
jolloin se jatkaa laskemista arvosta yksi. Vaihtoehtoisesti laskuri palautetaan arvoon
yksi sen saavuttaessa arvon 100βˆ™106, jolloin se myös kytketään pois päältä. Samoin
tapahtuu havaittaessa muutos signaalissa SOURCE_SELECT, jolloin signaalilähde
vaihtuu ja jäädään odottamaan ensimmäistä nousevaa reunaa.
Jaksonpituutta mittaavan laskurin arvo on kytketty 27-bittisen rekisterin tuloon.
Rekisteriin talletetaan uusi arvo vain kun havaitaan mitattavassa signaalissa tapahtuneen nouseva reuna laskurin ollessa käynnissä. Laskurin saavuttaessa arvon 100βˆ™106
rekisteri nollataan, koska taajuus pyöristyy tällöin nollaksi. Rekisteri nollataan myös
signaalilähteen vaihtuessa.
Käytetty kellotaajuuden arvo 50 MHz jaetaan tallennetun jaksonpituuden 26:lla
vähiten merkitsevällä bitillä. Tämän jakolaskun tulosta ei kuitenkaan viedä suoraan
kolmasosasekunnin välein päivittyvään 14-bittiseen rekisteriin. Sen sijaan kolmen
73
komparaattorin ja kolmen multiplekserin avulla tulos saatetaan pakottaa arvoon 0, 1
tai 9999. Nollaan se pakotetaan tallennetun jaksonpituuden ollessa nolla, ykköseen
sen ollessa suurempi kuin 50βˆ™106 kellojaksoa ja arvoon 9999 jakolaskun tuloksen
ollessa suurempi kuin 9999.
Viimeisenä vaiheena taajuusmittariin talletettu taajuuden arvo viedään ohjausosalle MEASUREMENT nimisenä signaalina sekä evaluointikortin neljälle oikeanpuoleisimmalle 7-segmenttinäytölle. Niitä varten taajuuden arvo muunnetaan ensin binääriluvusta 7-segmenttimuotoon ja tuloksen kaikki bitit invertoidaan, koska evaluointikortin näyttöjen segmentit palavat kun niille tuo signaalin, jonka looginen tila on
0 ja päinvastoin. Selkeyden takia signaaligeneraattorin RTL-kuvaukseen ei ole merkitty erikseen kaikkia pinnejä joihin näyttöjen segmentit on kytketty, vaan ne on
koottu yhdeksi 28-bittiseksi signaaliksi TO_7SEGS.
2.2.2.3. Signaaligeneraattori
Kuvassa 58 on esitetty signaaligeneraattorin RTL-kuvaus. Pinnejä, joihin evaluointikortin 16 oikeanpuoleisinta liukukytkintä on kytketty, ei ole esitetty erikseen, vaan
ne on ilmaistu yksinkertaisemmin signaalina SELECTED_FREQUENCY. Kytkimillä valittu arvo synkronoidaan kelloon kolmipaikkaisen 16-bittisen siirtorekisterin
avulla. Kukin kytkimistä sytyttää yllään olevan punaisen ledin ollessaan yläasennossa. Pinnejä, joihin nämä 16 lediä on kytketty, ei myöskään ole merkitty RTLkuvaukseen erikseen, vaan niitä vastaa signaali TO_RED_LEDS.
Kuva 58. Signaaligeneraattorin RTL-kuvaus.
74
Liukukytkimiltä tuleva taajuus on ilmaistu BCD-muodossa. Vaatimusmäärittelyssä on päätetty, että muut kuin välillä 0…9 olevat arvot tulkitaan nolliksi, joten syötettyä taajuutta tarkastellaan neljän bitin ryhminä ja lukua 9 suuremmat arvot korvataan
nollilla. Sitten nämä 16 bittiä muunnetaan binääriluvuksi muuta logiikkaa varten.
Ohjaussignaalin MODE_SELECT ohjaamana käyttäjän syöttämä taajuusarvo ohitetaan, kun BIST-tila on kytketty päälle. Tällöin generoidaan signaalin
BIST_VALUE määräämää taajuutta. Taajuusarvo tallennetaan kaksipaikkaiseen siirtorekisteriin. Käytetty kellotaajuus 50 MHz jaetaan uusimmalla siirtorekisterissä olevalla taajuusarvolla, mutta sen ollessa nolla jakolaskun tulokseksi valitaan suoraan
multiplekserillä nolla ja lisäksi signaaligeneraattorin pinniin PIN_K25 kytketty lähtö
pakotetaan vastaavalla tavalla nollaksi.
Jakolaskun tulos tallennetaan 26-bittiseen rekisteriin. Signaaligeneraattorissa on
niin ikään 26-bittinen laskuri, joka kasvattaa arvoaan yhdellä joka kellojakso. Sekä
rekisteri että laskuri nollataan, jos siirtorekisteriin talletettu uusin ja sitä edeltävä
arvo eroavat toisistaan. Tämän lisäksi signaaligeneraattorissa on yksibittinen rekisteri, joka pitää 26-bittisen laskurin nollattuna yhden kellojakson pitempään. Näin tehdään sen takia, että jakolaskun tallentaminen rekisteriin vie yhden kellojakson siitä
kun siirtorekisterin molemmat talletetut arvot muuttuvat samoiksi. Kun tulos talletetaan rekisteriin, laskurin arvo kasvaisi samalla nollasta ykköseksi, mutta sen halutaan
alkavan laskemaan vasta kun jakolaskun tulos on tiedossa.
Signaaligeneraattorin lähtö generoidaan vertaamalla laskurin arvoa rekisteriin talletettuun arvoon. Laskurin arvon ollessa pienempi kuin puolet rekisteriin talletetusta
arvosta, generoidun signaalin arvo on yksi ja muulloin sen arvo on nolla. Kun laskurin arvo on yhden rekisterissä olevaa arvoa pienempi, laskurin arvo palaa nollaan ja
alkaa alusta.
2.3. Käytännöntoteutus
Suunnitellun rekisterisiirtotason mallin rakennekuvaus laadittiin käyttäen apuna Alteran Quartus II -ohjelman lohkokaaviotyökalua. Lohkojen käyttäytymiskuvaukset
toteutettiin VHDL-kielellä. Toiminnaltaan yksinkertaisimmat lohkot kuten vakiot,
komparaattorit ja multiplekserit luotiin käyttäen ohjelmasta löytyvää MegaWizard
Plug-In Manager -toimintoa. Lohkot pyrittiin sijoittelemaan lohkokaavioihin mahdollisimman samaan tapaan kuin ne esiintyvät edellä esitetyissä RTL-kaavioissa.
Funktiolohkojen nimeämisessä pyrittiin hyvin systemaattiseen esitystapaan. Yleisimmin esiintyvissä lohkoissa CONST-etuliite tarkoittaa lohkon generoivan haluttua
vakiota. Ensimmäinen etuliitettä seuraava numero ilmoittaa kyseisen vakion arvon
kymmenjärjestelmän lukuna ja vapaaehtoinen jälkimmäinen numero luvun ilmaisemiseen käytettyjen bittien lukumäärän. COMP-etuliite tarkoittaa kyseessä olevan
75
komparaattori. Tätä seuraavat kirjaimet EQ tarkoittavat sen vertaavan yhtäsuuruutta,
NE erisuuruutta, GRE tulon A olemista suurempi kuin tulo B ja LES tulon A olemista pienempi kuin B. Komparaattorin tyypin kertovien kirjaimien jälkeinen numero
ilmoittaa lohkon tulojen bittimäärän. Multipleksereitten nimet puolestaan alkavat
kirjaimilla MUX ja tätä seuraa tulojen määrä sekä niiden bittileveys.
Moninaisten suunnitelmassa käytettyjen rekisterien ja siirtorekisterien VHDLkoodit kirjoitettiin itse. Etuliite REG viittaa rekisteriin ja SRG siirtorekisteriin. Nimestä löytyvä sana ENABLE tarkoittaa rekisterissä olevan sallintatulo ja SRESET
puolestaan viittaa synkroniseen nollaustuloon. Esimerkki siirtorekisteriä varten kirjoitetusta VHDL-kuvauksesta on esitetty liitteenä 1. Myös työssä tarvittavat laskurit
toteutettiin itse ja niiden nimestä löytyy sana COUNTER. Yksinkertaisen laskurin
koodiesimerkki löytyy liitteenä 2. Edellä mainittujen lisäksi laitteesta löytyy myös
erityistä tehtävää suorittavia rekistereitä ja laskureita, joille on annettu lohkokaaviossa oma uniikki nimensä. Näistä puhutaan tarkemmin käytäessä läpi lohkokaavioitten
toimintaa tarkemmin yksi kerrallaan.
VHDL-koodit BCD-koodatun luvun muuntamiseksi binääriluvuksi, binääriluvun
muuntamiseksi BCD-koodiksi ja BCD-muotoisen luvun muuntamiseksi 7segmenttimuotoon annettiin työssä valmiina ja ne löytyvät mainitussa järjestyksessä
liitteistä 3–5. Lohkokaavioissa näistä lohkoista käytetään nimityksiä
bcd_bin_two_nested_loops, bin_bcd_two_nested_loops ja hex27seg.
Koko systeemin ylimmän tason lohkokaavio on esitetty kuvassa 59. Siinä laitteen
kolme rakennelohkoa on kytketty toisiinsa ja evaluointikortin pinneihin. Kaikille
laitteen rekistereille tulee yhteinen kellosignaali ja asynkroninen nollaustulo.
Kuva 59. Suunnitellun laitteen ylimmän tason lohkokaavioesitys.
Kuvasta 60 nähdään laitteen ohjausosan lohkokaavio. Tarkastelun helpottamiseksi
kaavio on myös esitetty kahteen osaan jaettuna kuvissa 61 ja 62. Kokonainen lohkokaavio on myös esitetty sivulle pystysuuntaan tulostettuna liitteessä 6.
76
Kuva 60. Ohjausosan lohkokaavio.
Kuva 61. Vasen puolisko ohjausosan lohkokaaviosta.
Kuva 62. Oikea puolisko ohjausosan lohkokaaviosta.
Piiristä löytyvä DETECT_RISE-lohko koostuu kaksipaikkaisesta siirtorekisteristä,
jonka lähdössä suoritetaan looginen JA-operaatio uusimmalle arvolle ja sitä edeltävän arvon negaatiolle nousevan reunan havaitsemiseksi. Lohkon VHDL-kuvaus on
77
esitetty liitteessä 7. BIST_PHASE on kaksibittinen sallintatulolla varustettu laskuri,
joka sisältää tiedon BIST-tilan nykyisestä vaiheesta. Laskurin sisältö kasvaa yhdellä
sallintasignaalin ollessa yksi. Arvosta 3 se palaa arvoon 0. SUCCESSFUL_TESTS
puolestaan pitää kirjaa onnistuneesti suoritettujen BIST-vaiheiden lukumäärästä ja se
eroaa BIST_PHASE-lohkosta ainoastaan sillä, että siitä löytyy myös synkroninen
nollaustulo.
Kuvasta 63 näkyy taajuusmittarille piirretty lohkokaavio. Tarkastelun helpottamiseksi kaavio on myös esitetty kolmeen osaan jaettuna kuvissa 64–66. Tämän lisäksi
täysi kaavio löytyy myös sivulle pystysuuntaan tulostettuna liitteestä 8.
Kuva 63. Taajuusmittarin lohkokaavio.
Kuva 64. Ensimmäinen kolmannes taajuusmittarin lohkokaaviosta.
Kuva 65. Toinen kolmannes taajuusmittarin lohkokaaviosta.
78
Kuva 66. Kolmas kolmannes taajuusmittarin lohkokaaviosta.
Piirikaaviossa esiintyvä lohko SRG3_SYNC on yksinkertaisesti vain yksibittinen
siirtorekisteri, joka synkronoi tulosignaalin laitteen kelloon kolmen rekisterin avulla.
DETECT_CHANGE-lohko on muuten samanlainen kuin edellä esitelty DETECT_RISE-lohko, mutta se suorittaa siitä löytyvän siirtorekisterin kahdelle lähdölle
XOR-operaation tulosignaalissa tapahtuneen muutoksen havaitsemiseksi.
CLOCK_CYCLE_COUNTER on 27-bittinen laskuri, joka laskee ulkoisen signaalin
jaksonpituutta laitteen kellojaksoina. Siitä löytyvät ohjaustulot COUNTER_ON ja
RISE_OR_RESET, joista ensimmäinen sallii laskurin laskemisen ylöspäin ja jälkimmäinen nollaa laskurin riippumatta signaalin COUNTER_ON arvosta. Laskurin
VHDL-kuvaus on esitetty liitteessä 9. STORED_N on 27-bittinen rekisteri, joka varastoi CLOCK_CYCLE_COUNTER:in arvon sen tuloon RISE_COUNTER_ON
tulevan signaalin arvon ollessa 1. ROUND_TO_ZERO-tulolla rekisterin sisällöksi
voidaan pakottaa 0.
Lohko UNSIGNED_DIVIDE_26BIT_CUSTOM on Quartus-ohjelmasta löytyvästä geneerisestä jakajasta muokattu 26-bittinen lohko, joka suorittaa tuoduille arvoille
jakolaskun ja pyöristää tarvittaessa tulosta yhdellä ylöspäin, jos jakolaskun jakojäännös on suurempi tai yhtä suuri kuin jakajan arvo jaettuna kahdella eli toisin sanoen,
jos jakojäännös kerrottuna kahdella on suurempi tai yhtä suuri kuin jakaja. Tämä ei
ole resurssien käytön kannalta kaikista tehokkain toteutus, mutta sillä ei ole tässä
tapauksessa väliä, koska käytetyn FPGA-piirin logiikkaelementtien määrä on enemmän kuin riittävän suunnitellun laitteen realisoimiseen. Muokatun lohkon VHDLkoodi löytyy liitteestä 10. STORE_RESULT puolestaan on yksinkertainen 14bittinen sallintatulolla varustettu rekisteri, johon talletetaan mitatusta jaksonpituudesta laskettu taajuus.
Signaaligeneraattorille laadittu lohkokaavioesitys löytyy kuvasta 67. Helpompaa
tarkastelua varten piirikaavio on myös jaettu kahteen osaan kuviin 68 ja 69. Lisäksi
kokonainen lohkokaavio löytyy myös tulostettuna pystysuuntaan liitteestä 11.
79
Kuva 67. Signaaligeneraattorin lohkokaavio.
Kuva 68. Vasen puolisko signaaligeneraattorin lohkokaaviosta.
Kuva 69. Oikea puolisko signaaligeneraattorin lohkokaaviosta.
COMP_HALFQ on erityinen vertailulohko, joka vertaa onko tulo P pienempi
kuin tulo Q jaettuna kahdella eli toisin sanoen onko P kerrottuna kahdella pienempi
kuin Q. COMP_QMIN1 on puolestaan vastaavanlainen lohko, joka vertaa onko P
yhden Q:ta pienempi. Molempien komparaattoreitten VHDL-kuvaukset on esitetty
liitteissä 12 ja 13.
80
3. LIITTEET
Liite 1
Esimerkki siirtorekisterille kirjoitetusta VHDL-kuvauksesta
Liite 2
Esimerkki laskurille kirjoitetusta VHDL-kuvauksesta
Liite 3
Valmiiksi annettu VHDL-koodi BCD–BIN -muunnosta varten
Liite 4
Valmiiksi annettu VHDL-koodi BIN–BCD -muunnosta varten
Liite 5
Valmiiksi annettu VHDL-koodi BCD–7SEG -muunnosta varten
Liite 6
Ohjausosan lohkokaavio
Liite 7
Lohkon DETECT_RISE VHDL-kuvaus
Liite 8
Taajuusmittarin lohkokaavio
Liite 9
Lohkon CLOCK_CYCLE_COUNTER VHDL-kuvaus
Liite 10
Lohkon UNSIGNED_DIVIDE_26BIT_CUSTOM VHDL-kuvaus
Liite 11
Signaaligeneraattorin lohkokaavio
Liite 12
Lohkon COMP_HALFQ VHDL-kuvaus
Liite 13
Lohkon COMP_QMIN1 VHDL-kuvaus
Liite 1. Esimerkki siirtorekisterille kirjoitetusta VHDL-kuvauksesta
-- 14-bittinen siirtorekisteri.
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
entity SRG2X14 is
port(
CLK : in STD_LOGIC;
A_RESET : in STD_LOGIC;
DATA_IN : in STD_LOGIC_VECTOR(13 downto 0);
DATA_OUT_0 : out STD_LOGIC_VECTOR(13 downto 0);
DATA_OUT_1 : out STD_LOGIC_VECTOR(13 downto 0)
);
end SRG2X14;
architecture RTL of SRG2X14 is
signal REG0 : STD_LOGIC_VECTOR(13 downto 0);
signal REG1 : STD_LOGIC_VECTOR(13 downto 0);
begin
SRG: process (CLK, A_RESET)
begin
if (A_RESET = '0') then
REG0 <= (others => '0');
REG1 <= (others => '0');
elsif rising_edge(CLK) then
REG1 <= REG0;
REG0 <= DATA_IN;
end if;
end process SRG;
DATA_OUT_0 <= REG0;
DATA_OUT_1 <= REG1;
end RTL;
81
Liite 2. Esimerkki laskurille kirjoitetusta VHDL-kuvauksesta
-- 26-bittinen laskuri.
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.NUMERIC_STD.ALL;
entity COUNTER_26B is
port(
CLK : in STD_LOGIC;
RESET : in STD_LOGIC;
A_RESET : in STD_LOGIC;
DATA_OUT : out STD_LOGIC_VECTOR(25 downto 0)
);
end COUNTER_26B;
architecture RTL of COUNTER_26B is
signal COUNTER_VALUE : UNSIGNED(25 downto 0);
begin
COUNT_UP: process (CLK, A_RESET)
begin
if (A_RESET = '0') then
COUNTER_VALUE <= (others => '0');
elsif rising_edge(CLK) then
if (RESET = '1') then
COUNTER_VALUE <= (others => '0');
else
COUNTER_VALUE <= COUNTER_VALUE + 1;
end if;
end if;
end process COUNT_UP;
DATA_OUT <= std_logic_vector(COUNTER_VALUE);
end RTL;
82
Liite 3. Valmiiksi annettu VHDL-koodi BCD–BIN -muunnosta varten
-- Title: BCD-to-BinaryConverter
library IEEE;
use IEEE.std_logic_1164.all;
use ieee.numeric_std.all;
use IEEE.std_logic_unsigned.all;
entity bcd_bin_two_nested_loops is
generic( width_B: positive := 19;
width_P: positive := 16);
port (
B: in std_logic_vector (width_B - 1 downto 0);
P: out std_logic_vector (width_P - 1 downto 0)
);
end bcd_bin_two_nested_loops;
architecture behavior of bcd_bin_two_nested_loops is
begin
process(B)
variable z: unsigned (width_B + width_P - 4 downto 0);
variable zz: unsigned (width_B + width_P - 4 downto 0);
begin
z := (others=>'0');
z(width_B + width_P - 4 downto width_P - 3) := unsigned(B);
zz := z;
for i in 0 to width_P - 4 loop
for j in 0 to (((width_B + width_P) / 8) - 1) loop
if z((width_P + 1) + j * 4 downto (width_P + 1) + j * 4 - 3) > 7 then
z((width_P + 1) + j * 4 downto (width_P + 1) + j * 4 - 3)
:= z((width_P + 1) + j * 4 downto (width_P + 1) + j * 4 - 3) - 3;
else
z((width_P + 1) + j * 4 downto (width_P + 1) + j * 4 - 3)
:= z((width_P + 1) + j * 4 downto (width_P + 1) + j * 4 - 3);
end if;
end loop;
z := z srl 1;
end loop;
P <= std_logic_vector(z(width_P - 1 downto 0));
end process;
end behavior;
83
Liite 4. Valmiiksi annettu VHDL-koodi BIN–BCD -muunnosta varten
-- Title: Binary-to-BCD Converter
library IEEE;
use IEEE.std_logic_1164.all;
use ieee.numeric_std.all;
use IEEE.std_logic_unsigned.all;
entity bin_bcd_two_nested_loops is
generic( width_B: positive := 16;
width_P: positive := 19);
port (
B: in std_logic_vector (width_B - 1 downto 0);
P: out std_logic_vector (width_P - 1 downto 0)
);
end bin_bcd_two_nested_loops;
architecture behavior of bin_bcd_two_nested_loops is
begin
process(B)
variable z: unsigned (width_B + width_P - 1 downto 0);
--variable loop_max_i : integer range 0 to width_B - 4;
--variable loop_max_j : integer range 0 to (width_P / 4) - 1;
--variable loop_max_i := width_B - 4;
--variable loop_max_j := (width_P / 4) - 1;
begin
z := (others=>'0');
z(width_B + 2 downto 3) := unsigned(B);
for i in 0 to width_B - 4 loop
for j in 0 to ((width_P / 4) - 1) loop
if z(width_B + j * 4 + 3 downto width_B + j * 4) > 4 then
z(width_B + j * 4 + 3 downto width_B + j * 4)
:= z(width_B + j * 4 + 3 downto width_B + j * 4) + 3;
else
z(width_B + j * 4 + 3 downto width_B + j * 4)
:= z(width_B + j * 4 + 3 downto width_B + j * 4);
end if;
end loop;
84
85
z(width_B + width_P - 1 downto 1) := z(width_B + width_P - 2 downto 0);
-- shift left
end loop;
P <= std_logic_vector(z(width_B + width_P - 1 downto width_B));
end process;
end behavior;
Liite 5. Valmiiksi annettu VHDL-koodi BCD–7SEG -muunnosta varten
-- bcd to 7-segment coder, active low outputs in de2 style
library ieee;
use ieee.std_logic_1164.all;
entity hex27seg is
port (
hex : in std_logic_vector(3 downto 0);
segment : out std_logic_vector(6 downto 0)
);
end hex27seg;
architecture design of hex27seg is
begin
process (hex) is
begin
case hex is -- display segment order
when "0000" =>
segment <= "1000000";
when "0001" =>
segment <= "1111001";
when "0010" =>
segment <= "0100100";
when "0011" =>
segment <= "0110000";
when "0100" =>
segment <= "0011001";
when "0101" =>
segment <= "0010010";
when "0110" =>
segment <= "0000010";
when "0111" =>
segment <= "1111000";
when "1000" =>
segment <= "0000000";
when "1001" =>
segment <= "0010000";
when "1010" =>
86
87
segment <= "0001000";
when "1011" =>
segment <= "0000011";
when "1100" =>
segment <= "1000110";
when "1101" =>
segment <= "0100001";
when "1110" =>
segment <= "0000110";
when "1111" =>
segment <= "0001110";
when others =>
segment <= "1111111";
end case;
end process;
end design;
Liite 6. Ohjausosan lohkokaavio
88
Liite 7. Lohkon DETECT_RISE VHDL-kuvaus
-- Tämä lohko havaitsee onko tulosignaali noussut nollasta ykköseksi.
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
entity DETECT_RISE is
port(
CLK : in STD_LOGIC;
A_RESET : in STD_LOGIC;
DATA_IN : in STD_LOGIC;
DATA_OUT : out STD_LOGIC
);
end DETECT_RISE;
architecture RTL of DETECT_RISE is
signal SRG_CONTENT : STD_LOGIC_VECTOR(1 downto 0);
begin
SRG2: process (CLK, A_RESET)
begin
if (A_RESET = '0') then
SRG_CONTENT <= "00";
elsif rising_edge(CLK) then
SRG_CONTENT(1) <= SRG_CONTENT(0);
SRG_CONTENT(0) <= DATA_IN;
end if;
end process SRG2;
DATA_OUT <= SRG_CONTENT(0) and (not SRG_CONTENT(1));
end RTL;
89
Liite 8. Taajuusmittarin lohkokaavio
90
Liite 9. Lohkon CLOCK_CYCLE_COUNTER VHDL-kuvaus
91
-- 27-bittinen laskuri joka laskee laitteen tulosignaalin jaksonpituutta kellojaksoina.
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.NUMERIC_STD.ALL;
entity CLOCK_CYCLE_COUNTER is
port(
CLK : in STD_LOGIC;
COUNTER_ON : in STD_LOGIC;
RISE_OR_RESET : in STD_LOGIC;
A_RESET : in STD_LOGIC;
DATA_OUT : out STD_LOGIC_VECTOR(26 downto 0)
);
end CLOCK_CYCLE_COUNTER;
architecture RTL of CLOCK_CYCLE_COUNTER is
signal COUNTER_VALUE : UNSIGNED(26 downto 0);
begin
MEASURE_N: process (CLK, A_RESET)
begin
if (A_RESET = '0') then
COUNTER_VALUE <= (others => '0');
elsif rising_edge(CLK) then
if (RISE_OR_RESET = '1') then
COUNTER_VALUE <= (0 => '1', others => '0');
elsif (COUNTER_ON = '1') then
COUNTER_VALUE <= COUNTER_VALUE + 1;
else
COUNTER_VALUE <= COUNTER_VALUE;
end if;
end if;
end process MEASURE_N;
DATA_OUT <= std_logic_vector(COUNTER_VALUE);
end RTL;
Liite 10. Lohkon UNSIGNED_DIVIDE_26BIT_CUSTOM VHDL-kuvaus
92
-- Tämä pyöristävä jakaja on muokattu Quartus II:n valmiista pohjasta
-- etumerkittömälle jakajalle.
-- Quartus II VHDL Template
-- Unsigned Divide
library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;
entity UNSIGNED_DIVIDE_26BIT_CUSTOM is
generic
(
DATA_WIDTH_NUMER : natural := 26;
DATA_WIDTH_DENOM : natural := 26
);
port
(
NUMER : in std_logic_vector((DATA_WIDTH_NUMER - 1) downto 0);
DENOM : in std_logic_vector((DATA_WIDTH_DENOM - 1) downto 0);
QOUT : out std_logic_vector((DATA_WIDTH_NUMER - 1) downto 0)
);
end UNSIGNED_DIVIDE_26BIT_CUSTOM;
architecture RTL of UNSIGNED_DIVIDE_26BIT_CUSTOM is
signal Q : unsigned((DATA_WIDTH_NUMER - 1) downto 0);
signal RESULT : unsigned((DATA_WIDTH_NUMER - 1) downto 0);
begin
ROUNDING_DIVISION: process (NUMER, DENOM, Q, RESULT)
begin
Q <= unsigned(NUMER) / unsigned(DENOM);
if (2*(unsigned(NUMER) rem unsigned(DENOM))) >= unsigned(DENOM) then
93
RESULT <= Q + 1;
else
RESULT <= Q;
end if;
end process ROUNDING_DIVISION;
QOUT <= std_logic_vector(RESULT);
end RTL;
Liite 11. Signaaligeneraattorin lohkokaavio
94
Liite 12. Lohkon COMP_HALFQ VHDL-kuvaus
-- Tämä lohko vertaa onko P vähemmän kuin puolet Q:sta.
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.NUMERIC_STD.ALL;
entity COMP_HALFQ is
port(
P : in STD_LOGIC_VECTOR(25 downto 0);
Q : in STD_LOGIC_VECTOR(25 downto 0);
DATA_OUT : out STD_LOGIC
);
end COMP_HALFQ;
architecture RTL of COMP_HALFQ is
begin
COMP: process (P, Q)
begin
if (2*unsigned(P) < unsigned(Q)) then
DATA_OUT <= '1';
else
DATA_OUT <= '0';
end if;
end process COMP;
end RTL;
95
Liite 13. Lohkon COMP_QMIN1 VHDL-kuvaus
-- Tämä lohko vertaa onko tulo P yhden pienempi kuin tulo Q.
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.NUMERIC_STD.ALL;
entity COMP_QMIN1 is
port(
P : in STD_LOGIC_VECTOR(25 downto 0);
Q : in STD_LOGIC_VECTOR(25 downto 0);
DATA_OUT : out STD_LOGIC
);
end COMP_QMIN1;
architecture RTL of COMP_QMIN1 is
begin
COMP: process (P, Q)
begin
if (unsigned(P) = (unsigned(Q)-1)) then
DATA_OUT <= '1';
else
DATA_OUT <= '0';
end if;
end process COMP;
end RTL;
96