Oppikirjan harjoitustehtävien ratkaisuja

Samankaltaiset tiedostot
Harjoitustehtävien ratkaisut

Esimerkkitentin ratkaisut ja arvostelu

Sekvenssipiirin tilat. Synkroninen sekvenssipiiri ? 1 ? 2

Digitaalitekniikan matematiikka Luku 6 Sivu 1 (20) Kombinaatiopiirit & & A B A + B

Digitaalitekniikka (piirit) Luku 15 Sivu 1 (17) Salvat ja kiikut 1D C1 C1 1T 1J C1 1K S R

Digitaalitekniikka (piirit), kertaustehtäviä: Vastaukset

Sekvenssipiirin tilat

Digitaalitekniikan matematiikka Luku 8 Sivu 1 (23) Kombinaatiopiirielimet MUX X/Y 2 EN

Digitaalitekniikan matematiikka Harjoitustehtäviä

Digitaalitekniikka (piirit) Luku 18 Sivu 1 (32) Rekisterit ja laskurit R C1 SRG4 R C1/ CTRDIV16 1R G2 2CT=15 G3 C1/2,3 + CT 3

ELEC-C3240 Elektroniikka 2

Yhden bitin tiedot. Binaariluvun arvon laskeminen. Koodin bittimäärä ja vaihtoehdot ? 1

ELEC-C3240 Elektroniikka 2 Digitaalielektroniikka Karnaugh n kartat ja esimerkkejä digitaalipiireistä

Ohjelmoitavat logiikkaverkot

Peruspiirejä yhdistelemällä saadaan seuraavat uudet porttipiirit: JA-EI-portti A B. TAI-EI-portti A B = 1

Synkronisten sekvenssipiirien suunnittelu

F = AB AC AB C C Tarkistus:

ASM-kaavio: reset. b c d e f g. 00 abcdef. naytto1. clk. 01 bc. reset. 10 a2. abdeg. 11 a3. abcdg

Digitaalilaitteen signaalit

Digitaalitekniikan matematiikka Luku 3 Sivu 1 (19) Kytkentäfunktiot ja perusporttipiirit

Elektroniikan laboratorio Lisätehtävät Mallivastauksia

Yhden bitin tiedot. Digitaalitekniikan matematiikka Luku 1 Täsmätehtävä Tehtävä 1. Luettele esimerkkejä yhden bitin tiedoista.

Digitaalitekniikka (piirit) Luku 14 Sivu 1 (16) Sekvenssipiirit. Kombinaatiopiiri. Tilarekisteri

Digitaalitekniikan matematiikka Luku 5 Sivu 1 (22) Lausekkeiden sieventäminen F C F = B + A C. Espresso F = A (A + B) = A A + A B = A B

c) loogiset funktiot tulojen summana B 1 = d) AND- ja EXOR-porteille sopivat yhtälöt

BL40A1711 Johdanto digitaaleketroniikkaan: Sekvenssilogiikka, pitopiirit ja kiikut

Ongelma(t): Mistä loogisista lausekkeista ja niitä käytännössä toteuttavista loogisista piireistä olisi hyötyä tietojenkäsittelyssä ja tietokoneen

Ongelma(t): Mistä loogisista lausekkeista ja niitä käytännössä toteuttavista loogisista piireistä olisi hyötyä tietojenkäsittelyssä ja tietokoneen

VHDL-kuvauskieli. Digitaalitekniikka (piirit) Luku 17 Sivu 1 (33)

C = P Q S = P Q + P Q = P Q. Laskutoimitukset binaariluvuilla P -- Q = P + (-Q) (-Q) P Q C in. C out

kwc Nirni: Nimen selvennys : ELEKTRONIIKAN PERUSTEET 1 Tentti La / Matti Ilmonen / Vastaukset kysymyspapereille. 0pisk.

c) loogiset funktiot tulojen summana B 1 = C 2 C 1 +C 1 C 0 +C 2 C 1 C 0 e) logiikkakaavio

Käytännön logiikkapiirit ja piirrosmerkit

Inputs: b; x= b 010. x=0. Elektroniikkajärjestelmät ETT_2068

DIGITAALISTEN KOMBINAATIO- PIIRIEN LABORATORIOTÖIDEN SUUNNITTELU

Digitaalitekniikka (piirit) Opetusmoniste

Verilogvs. VHDL. Janne Koljonen University of Vaasa

Ongelma(t): Miten tietokoneen komponentteja voi ohjata siten, että ne tekevät yhdessä jotakin järkevää? Voiko tietokonetta ohjata (ohjelmoida) siten,

BL40A17x0 Digitaalielektroniikka A/B: Ohjelmoitavat logiikkapiirit

Kombinatorisen logiikan laitteet

Digitaalitekniikan perusteet

AUTO3030 Digitaalitekniikan jatkokurssi, harjoitus 2, ratkaisuja

Automaatit. Muodolliset kielet

Ajattelemme tietokonetta yleensä läppärinä tai pöytäkoneena

Taitaja semifinaali 2010, Iisalmi Jääkaapin ovihälytin

Se mistä tilasta aloitetaan, merkitään tyhjästä tulevalla nuolella. Yllä olevassa esimerkissä aloitustila on A.

CLPD ja FPGA piirien arkkitehtuuri ja ominaisuudet

JOHDATUS ELEKTRONIIKKAAN. Oppitunti 2 Elektroniikan järjestelmät

Muistipiirit. Digitaalitekniikka (piirit) Luku 20 Sivu 1 (24)

Algoritmit 1. Luento 3 Ti Timo Männikkö

Taitaja2005/Elektroniikka. 1) Resistanssien sarjakytkentä kuormittaa a) enemmän b) vähemmän c) yhtä paljon sähkölähdettä kuin niiden rinnankytkentä

Käyttäjän käsikirja WTN radiomajakka. Version: FIN180427

LABORAATIOSELOSTUSTEN OHJE H. Honkanen

Fin v2.0. VV4 Käsikirja

PEM1123/ A. Asennus- ja käyttöohje SW/S2.5 viikkokello. ABB i-bus KNX. SW/S2.5 Viikkokello

SISÄLLYS sisällys 1 Tietokoneen toimintaperiaate ja käyttö 2 Tietokoneen historia 3 Tietokoneen rakenteen ja toiminnan perusteet

Harjoitustehtävien ratkaisuja

Ohjelmoinnin peruskurssien laaja oppimäärä

SET PROG SET YEAR SET MONTH SET DAY SET HOUR SET MINUTE SET ESC WAIT TIME

Yhtälönratkaisusta. Johanna Rämö, Helsingin yliopisto. 22. syyskuuta 2014

Ajastin tarjoaa erilaisia toimintoja, kuten "Clock Display", "sekuntikello", "lähtölaskenta", "CountUp", "jaksoajastimen ja "Fight Gone Bad" -ajastin.

Algoritmit. Ohjelman tekemisen hahmottamisessa käytetään

SafeLine VV3. Operating instructions. Näyttää kerrokset, nuolet ja liukuvat viestit.

Harjoitus 3 ( )

T clk > t DFF + t critical + t setup -> T clk > 3 ns + (2+2) ns + 2 ns > 9 ns -> F clk < MHz. t DFF t critical t setup CLK NA1 CLK2,CLK3 Q2,D3

1 Muutokset piirilevylle

File: C:\tmp\tmp\mch.txt , 9:37:46. JUKKA LAAKKONEN, OH1NPK ORIKEDONKATU 16 FIN TURKU May 18, 1995

1 YLEISTÄ. Taitaja2002, Imatra Teollisuuselektroniikkatyö Protorakentelu 1.1 PROJEKTIN TARKOITUS

OHJ-1010 Tietotekniikan perusteet 4 op Syksy 2012

KAAPELITESTERI / PAIKANNIN TRIFITEK TR-383 PIKAKÄYTTÖOHJE V1.0

FYSP105/2 VAIHTOVIRTAKOMPONENTIT. 1 Johdanto

811120P Diskreetit rakenteet

Ohjelmoitava päävahvistin WWK-951. Anvia TV Oy Rengastie Seinäjoki

12. Javan toistorakenteet 12.1

Pikaohje Aplisens APIS type 1X0 ja 2XO

1 Eksergia ja termodynaamiset potentiaalit

Sähkötekniikan perusteet

Joni Heikkilä PYROLYYSIGENERAATTORIN AUTOMAATIO-OHJAUS OHJELMOITAVALLA LOGIIKKAPIIRILLÄ

Ohjelmoitava päävahvistin WWK-951LTE

Sekalaiset tehtävät, 11. syyskuuta 2005, sivu 1 / 13. Tehtäviä

Ohjelmoijan binaarialgebra ja heksaluvut

TAMPEREEN TEKNILLINEN YLIOPISTO Digitaali- ja tietokonetekniikan laitos. Harjoitustyö 4: Cache, osa 2

Harjoitus 3 ( )

Ohjelmoinnin perusteet Y Python

9.5. Turingin kone. Turingin koneen ohjeet. Turingin kone on järjestetty seitsikko

A11-02 Infrapunasuodinautomatiikka kameralle

PERUSLASKUJA. Kirjoita muuten sama, mutta ota KAKSI välilyöntiä (SEURAA ALUEMERKINTÄÄ) 4:n jälkeen 3/4 +5^2

S BAB ABA A aas bba B bbs c

4 LUKUJONOT JA SUMMAT

Python-ohjelmointi Harjoitus 5

PM10OUT2A-kortti. Ohje

Harjoitus 6. Käytä String-luokasta vain charat- ja length-operaatioita.

815338A Ohjelmointikielten periaatteet Harjoitus 2 vastaukset

iloq Privus - Ohjelmointiopas

Toiminnallinen määrittely versio 1.2

6. Analogisen signaalin liittäminen mikroprosessoriin Näytteenotto analogisesta signaalista DA-muuntimet 4

Luku 8. Aluekyselyt. 8.1 Summataulukko

KÄYTTÖOHJE ELTRIP-R6. puh fax PL Kajaani

Ehto- ja toistolauseet

Malliratkaisut Demot

Transkriptio:

Sivu (27) 26.2.2 e 7 Muistipiirit 7- Tietokoneen muistin koko on 256 K 6 b. Montako sanaa muistissa on? Mikä on sen sananpituus? Montako muistialkiota muistissa on? Muistissa on 256 kibisanaa eli 262 44 sanaa ja sen sananpituus on 6 bittiä. Muistissa on 262 44 6 = 4 94 4 muistialkiota. 7-2 Montako osoitelinjaa tarvitaan tehtävän 7- muistipiirin osoittamiseen? Muistissa on 256 kibisanaa. Koska 2 8 = 256 K, tarvitaan 8 osoitelinjaa. 7- Käytettävissä on 28 K 8 b muistipiirejä. Montako piiriä tarvitaan 4 M 2 b muistin muodostamiseen? Koska 4 M/28 K = 2 ja 2 b/8 b = 4, muistissa tarvitaan 2 4 = 28 piiriä. 2 Ohjelmoitavat logiikkaverkot 2- Eräässä PL-piirissä on 2 makrosolua. Se on pakattu koteloon, jossa on 44 liitäntänastaa. Näistä neljä on käyttöjännitenastoja ja kuusi maanastoja. Piirin ohjelmointiin on varattu neljä nastaa. Neljä liitäntänastoista on tuloliitäntöjä ja loput ohjelmoitavia liitäntöjä. a) Piirillä toteutetaan kombinaatiopiiri, jossa on 2 tulosignaalia. Montako ohjelmoitavaa liitäntää on ohjelmoitava tuloiksi? Montako lähtösignaalia kombinaatiopiirissä voi enintään olla? Piirin 44 liitäntänastasta kaikkiaan 4 + 6 + 4 = 4 käytetään muihin kuin tulo- ja ohjelmoitaviin liitäntöihin. Tulo- ja ohjelmoitavia liitäntöjä on siis yhteensä. Näistä neljä on tuloliitäntöjä, jolloin ohjelmoitavia liitäntöjä on - 4 = 26. Makrosoluja on kaikkiaan 2, joten näistä on upotettuja 2-26 = 6. Tulosignaaleja on 2. Ohjelmoitavilla liitännöillä toteutettaviksi jää 2-4 = 8. Lähtösignaaleja voi siis olla enintään 26-8 = 8. b) Piirillä toteutetaan synkroninen sekvenssipiiri, johon tuodaan kellosignaalin lisäksi ulkoinen nollaussignaali. Muita tulosignaaleja on kymmenen ja lähtösignaaleja kahdeksan. Mikään lähtösignaaleista ei tule suoraan kiikun lähdöstä. Montako tilaa piirissä voi olla, kun tuloiksi ohjelmoitujen liitäntöjen makrosolut voidaan käyttää upotettuina makrosoluina? Entä montako tilaa voi olla, jos näin ei voida tehdä? Tulosignaaleja on yhteensä + + = 2. Ohjelmoitavilla liitännöillä toteutettaviksi jää 2-4 = 8. Lähtösignaaleja on 8. Ohjelmoitavia liitäntöjä kuluu tuloihin ja lähtöihin yhteensä 8 + 8 = 6. Kun mikään lähtösignaaleista ei tule suoraan kiikun lähdöstä, jää tilarekisteriin käytettävissä oleviksi makrosoluiksi 2-8 = 24, jos tuloiksi ohjelmoitujen liitäntöjen makrosolut voidaan käyttää upotettuina makrosoluina ja 2-8 - 8 = 6, ellei näin voida tehdä. Ensin mainitussa tapauksessa saadaan siis enimmillään 2 24 = 6 777 26 tilaa ja jälkimmäisessä tapauksessa 2 6 = 65 56 tilaa. Näin suuri tilojen lukumäärä edellyttää, että jokainen tarvittava kytkentäfunktion lauseke voidaan toteuttaa yhdellä makrosolulla. Ellei näin voida tehdä, tilojen määrä on pienempi. 2-2 Pienessä PL-piirissä on neljä tuloliitäntää ja 2 ohjelmoitavaa liitäntää. Montako tuloa on jokaisessa piirin kytkentämatriisiin liittyvässä J-portissa? Jokaisessa J-portissa on tuloja on yhtä monta kuin piirissä on liitäntöjä yhteensä eli 4 + 2 = 6.

Sivu 2 (27) 26.2.2 e 2- Kombinaatiopiirin eri lähtösignaalien SOP-lausekkeissa on samoja tulotermejä. Kummassa PLpiiriarkkitehtuurissa tästä on hyötyä? PL-piirissä jokaista lähtösignaalia varten on tehtävä erikseen kaikki SOP-lausekkeen tulotermit, kun taas PL-piirissä kerran muodostettu tulotermi voidaan käyttää kaikissa niissä SOP-lausekkeissa, joissa sitä tarvitaan. Hyötyä on siis PL-arkkitehtuurissa. 2-4 Vertaile toisiinsa PL- ja PL-arkkitehtuureja. Luettele kummankin hyvät ja huonot puolet. rkkitehtuurit on esitetty oppikirjan kohdassa 2... rkkitehtuurien hyviä ja huonoja puolia on esitetty seuraavassa taulukossa. PL-arkkitehtuuri Hyviä puolia: yksinkertainen pieni etenemisviive halpa runsas valikoima piirejä saatavilla Huonoja puolia: vähän tulotermejä lausekkeessa samoja tulotermejä ei voi käyttää eri lausekkeissa PL-arkkitehtuuri Hyviä puolia: joustavasti ohjelmoitava paljon tulotermejä lausekkeessa samoja tulotermejä voi käyttää eri lausekkeissa Huonoja puolia: monimutkainen suuri etenemisviive kallis harvinainen, vain pieni määrä piirejä saatavilla 2-5 Miksi järjestelmäohjelmoitavat piirit ovat käytössä edullisempia kuin erikseen ohjelmointilaitteessa ohjelmoitavat piirit? Luettele mahdollisimman monta syytä. Pohdi asiaa tuotekehityksen, tuotannon, valmiin tuotteen ylläpidon ja asiakkaan kannalta. Tuotekehitysvaiheessa joudutaan piirejä tyhjentämään ja ohjelmoimaan uudelleen varsin usein erityisesti lohkojen testausvaiheessa ja integrointitestauksessa. Jos piiri ohjelmoidaan ohjelmointilaitteessa, se pitää poistaa piirilevyltä, ohjelmoida ohjelmointilaitteessa ja panna takaisin piirilevylle. Tämä edellyttää, että piiri on piirilevyllä kannalle asennettuna. Tästä aiheutuu paljon ylimääräisiä riskejä: piirin johtimet voivat taittua kannalle asennettaessa, piiri ja kanta kuluvat ja niiden välisen kontaktin luotettavuus huononee ja usein tarvitaan kallis erikoiskanta. Piirin poistoon ja uudelleen asentamiseen kuluu aikaa. Piiri saattaa myös vioittua, kun se poistetaan kannasta. On paljon kätevämpää, nopeampaa ja luotettavampaa, kun piiri voidaan ohjelmoida piirilevylle juotettuna. Tuotannossa pidetään varastossa kaikkia yrityksen valmistamissa laitteissa tarvittavia komponentteja. Näitä on yleensä varsin suuri määrä, joten niissä on kiinni paljon rahaa. Mikäli piirit ohjelmoidaan ohjelmointilaitteessa, ne joudutaan ohjelmoimaan erikseen ja tuotantolinjan koneissa pitää olla monenlaisia ohjelmoituja piirejä, vaikka kaikki piirit ohjelmoimattomina olisivat samaa tyyppiä. Tämä lisää tuotantokustannuksia ja aiheuttaa riskin asentaa vääriä komponentteja tuotteisiin. Erikseen ohjelmointi edellyttää, että piirit puretaan pakkauksistaan ohjelmointia varten, jolloin riski niiden vaurioitumiseen ennen asennusta kasvaa. Järjestelmäohjelmoitavat piirit asennetaan piirilevylle tuotantolinjalla suoraan pakkauksestaan, jolloin erilaiset riskit minimoituvat. Tuotteen ylläpidolla ymmärretään tuotteeseen tehtäviä muutoksia sen jälkeen, kun sitä on jo toimitettu asiakkaalle. Erityisesti järjestelmäohjelmoituvuudesta on hyötyä, mikäli jo asiakkaalle toimitetun laitteen ohjelmaa joudutaan myöhemmin muuttamaan. Tämä voi olla tarpeen joko uusien ominaisuuksien tarjoamiseksi tai tuotteesta löytyneen vian korjaamiseksi. Mikäli laitteessa oleva piiri ohjelmoidaan ohjelmointilaitteessa, laite pitää avata ja piiri irrottaa uudelleenohjelmointia varten. Käytännössä piiriä ei ohjelmoida uudelleen, vaan entisen piirin tilalle vaihdetaan uusi, tehtaassa ohjelmoitu piiri. Ohjelman vaihtamisesta aiheutuu suuria kustannuksia ja lisäksi vielä itse laitteen vaurioitumisriski, mikä sen avaamiseen ja piirin vaihtoon aina liittyy. Järjestelmäohjelmoitava piiri

Sivu (27) 26.2.2 e voidaan ohjelmoida uudelleen laitetta avaamatta, kun laitteessa on liitin, jonka kautta ohjelmointi voidaan tehdä. Tällöin kustannukset ja riskit jäävät pieniksi ja ohjelmointi käy nopeasti. siakkaan kannalta ohjelman vaihto on hankala asia. Jos laitteessa on vika, joka voidaan korjata vain ohjelmoimalla laitteessa oleva piiri uudelleen, asiakas joutuu yleensä viemään laitteen huoltoon ohjelmoitavaksi. Ohjelmoinnin ajan laite on poissa asiakkaan käytöstä. Koska järjestelmäohjelmoitava piiri voidaan ohjelmoida laitetta avaamatta, ohjelmointi käy nopeasti ja riskittömästi. Ohjelmointilaitteessa ohjelmoidun piirin vaihtaminen edellyttää laitteen avaamista, joka vie aikaa ja johon sisältyy aina laitteen vaurioitumisriski. 2-6 Toteuta lausekkeet = + + ja G = + + kirjan esimerkin 2- mukaisella PL-piirillä. Lausekkeita on kaksi ja niissä on yhteensä neljä muuttujaa. Kummassakin lausekkeessa on kolme tulotermiä. Toteutus voidaan tehdä ohjelmoimalla kaksi ohjelmoitavaa liitäntää tuloiksi ja kaksi lähdöiksi. Saadaan seuraavan kuvan mukainen kytkentä. = = = = G 2-7 Toteuta lausekkeet = + + + ja G = + + + kirjan esimerkin 2- mukaisella PL-piirillä. Lausekkeita on kaksi ja niissä on yhteensä neljä muuttujaa. Kaksi ohjelmoitavaa liitäntää on siis ohjelmoitava tuloiksi ja kaksi lähdöiksi. Kummassakin lausekkeessa on neljä tulotermiä. Piirretään lausekkeiden kuvaamien funktioiden Karnaugh'n kartat. Ne on esitetty seuraavassa kuvassa.

Sivu 4 (27) 26.2.2 e G Nähdään, että funktion lauseke voidaan sieventää muotoon = + +. Tässä on vain kolme tulotermiä, joten se voidaan toteuttaa yhdellä makrosolulla. unktion G lauseke ei sievene, mutta huomataan, että kartan nollista muodostettu G:n komplementin lauseke voidaan esittää kolmella tulotermillä muodossa G = + +. Tästä saadaan funktiolle G invertoiduksi SOPlausekkeeksi G = + +. Se voidaan toteuttaa yhdellä makrosolulla. Saadaan seuraavan kuvan mukainen kytkentä. = = = = G 2-8 Toteuta lauseke = + + + + kirjan esimerkin 2- mukaisella PL-piirillä niin, että piiri on hasarditon. unktion lausekkeessa on neljä muuttujaa. Kaksi ohjelmoitavaa liitäntää pitää siis ohjelmoida tuloiksi. Lausekkeessa on kuusi tulotermiä. unktion Karnaugh'n kartta ja sen ykkösalueet on esitetty seuraavassa kuvassa vasemmalla. Nähdään, että lauseketta ei voi sieventää, vaan siinä on välttämättä kuusi tulotermiä. Karttaan on nuolella merkitty kohdat, joissa hasardi voi esiintyä. Tehtävään on kaksi ratkaisua. Kumpikin perustuu apufunktion käyttöön. Ensimmäisessä ratkaisussa lauseke toteutetaan SOP-muotoisena. Karnaugh'n kartassa ohutreunaisiksi piirretyt alueet toteutetaan apufunktiolla. Silloin nuolilla merkityissä kohdissa muutosviiveet ovat samat eikä hasardia synny. Toisessa ratkaisussa toteutetaankin funktion komplementin lauseke. Tämä saadaan Karnaugh'n

Sivu 5 (27) 26.2.2 e kartan nollista. Nolla-alueet on esitetty seuraavassa kuvassa oikealla. Lausekkeessa on neljä tulotermiä ja se on luonnostaan hasarditon. Tässäkin toteutuksessa tarvitaan apufunktio. Esitetään jälkimmäinen ratkaisu, koska se on yksinkertaisempi. unktion komplementin lausekkeeksi saadaan = + + + ja tästä funktion lausekkeeksi invertoitu SOP-lauseke = + + +. Tässä on neljä tulotermiä, joten tarvitaan apufunktio. Se voidaan valita vapaasti, koska ratkaisu on joka tapauksessa hasarditon. Valitaan K = + +. Saadaan = K +. Vastaava kytkentä on esitetty seuraavassa kuvassa. = = = = K 2-9 Toteuta lausekkeet = + + ja G = + + + kirjan esimerkin 2- mukaisella PL-piirillä. Opastus: Voit ottaa lausekkeeseen apusignaalin invertoituna. Lausekkeita on kaksi ja niissä on yhteensä neljä muuttujaa. Kaksi ohjelmoitavaa liitäntää on siis ohjelmoitava tuloiksi ja kaksi lähdöiksi. Tehtävä voidaan ratkaista käyttämällä funktion komplementtifunktiota funktion G apusignaalina. Siihen on kuitenkin yksinkertaisempikin ratkaisu, joka esitetään seuraavassa. Opastus on tarpeeton.

Sivu 6 (27) 26.2.2 e voidaan toteuttaa suoraan. G:ssä on neljä tulotermiä. Lauseke ei sievene, mutta funktion G komplementin lauseke voidaan esittää kolmella tulotermillä. Seuraavassa kuvassa on esitetty G:n Karnaugh'n kartta. G G:n nollista muodostettu G:n komplementin lauseke on G = + + ja G:n invertoitu SOP-lauseke G = + +. Saadaan seuraavan kuvan mukainen kytkentä. = = = = G 2- Toteuta kirjan esimerkin 8-4 mukainen Gray-koodissa laskeva kolmibittinen laskuri esimerkin 2-4 mukaisella PL-piirillä. Käytä piirissä myös nollaussignaalia. Piirissä on kaksi tulosignaalia: kellosignaali LK ja nollaussignaali ES. Lähtösignaaleja on kolme:, ja. PL-piirin kiikut ovat -kiikkuja, joten kiikkujen -tulojen lausekkeet ovat esimerkin 8-4 mukaisesti = +, = + ja = +. Lähtösignaalit saadaan kaikki suoraan kiikkujen lähdöistä, joten niitä varten ei tarvita erillisiä makrosoluja. Piiristä jää siis yksi makrosolu käyttämättömäksi.

Sivu 7 (27) 26.2.2 e Saadaan seuraavan kuvan mukainen ratkaisu. Siinä käyttämättä jäänyt makrosolu on ohjelmoitu lähdöksi, kuten pitääkin. Sen muulla ohjelmoinnilla ei ole merkitystä. Ohjelmointi on tehty samanlaisena kuin muillekin makrosoluille. LK ES = = = = 2- Toteuta kirjan esimerkin 8-6 (pitää olla 8-6) mukainen synkroninen sekvenssipiiri esimerkin 2-4 mukaisella PL-piirillä. Käytä piirissä myös nollaussignaalia. Piirissä on kaksi tulosignaalia: kellosignaali LK ja nollaussignaali ES. Lähtösignaaleja on kolme:, ja. PL-piirin kiikut ovat -kiikkuja, joten kiikkujen -tulojen lausekkeet ovat esimerkin 8-6 mukaisesti =, = + ja =. Lähtösignaalit saadaan kaikki suoraan kiikkujen lähdöistä, joten niitä varten ei tarvita erillisiä makrosoluja. Piiristä jää siis yksi makrosolu käyttämättömäksi. Saadaan seuraavan kuvan mukainen ratkaisu. Siinä käyttämättä jäänyt makrosolu on ohjelmoitu lähdöksi, kuten pitääkin. Sen muulla ohjelmoinnilla ei ole merkitystä. Ohjelmointi on tehty samanlaisena kuin muillekin makrosoluille.

Sivu 8 (27) 26.2.2 e LK ES = = = = 2-2 Toteuta kirjan esimerkin 9- mukainen asynkroninen sekvenssipiiri esimerkin 2- mukaisella PLpiirillä. Piirissä on kaksi tulosignaalia: ja. Lähtösignaaleja on yksi: Z. Lisäksi piirissä on yksi tilasignaali X. Tilasignaalin lauseke on X + = + X ja lähtösignaalin lauseke Z = X. Kumpikin lauseke on niin yksinkertainen, että se voidaan muodostaa yhdellä makrosolulla. Makrosoluja jää siis kaksi käyttämättä. Saadaan seuraavan kuvan mukainen ratkaisu. Siinä käyttämättä jääneet makrosolut on ohjelmoitu lähdöiksi, kuten pitääkin. Niiden muulla ohjelmoinnilla ei ole merkitystä. Ohjelmointi on tehty samanlaisena kuin muillekin makrosoluille.

Sivu 9 (27) 26.2.2 e = = = = (X + ) Z 2- Vertaile toisiinsa PL- ja PG-piirien arkkitehtuuria. Esitä kummankin arkkitehtuurin etuja ja haittoja. PL-piireissä kytkentäfunktiot muodostetaan makrosoluissa. Jokaisessa makrosolussa on myös yleensä kiikku. Pääosa makrosoluista on yhteydessä piirin liitäntänastaan. Jokaisessa makrosolussa on suuri kombinaatiopiiri, jolla voidaan toteuttaa lähes mielivaltainen kaikkien tulo- ja lähtösignaalien funktio SOP- tai POS-muotoisena. rkkitehtuuri on suhteellisen yksinkertainen ja jäykkä. Piirin kytkentämatriisi tarjoaa varsin rajalliset mahdollisuudet kytkentöjen tekemiseen. Kombinaatiologiikkaa on runsaasti, mutta kiikkuja vähän. PG-piireissä liitäntäosa on eriytetty omiksi liitäntälohkoikseen, jotka sijaitsevat piirin reunoilla. Kombinaatiologiikka ja kiikut sijaitsevat konfiguroitavissa logiikkalohkoissa, jotka sijaitsevat piirin sisäosassa. Lohkot voidaan kytkeä toisiinsa monipuolisen kytkentämatriisin avulla. Kytkentäfunktiot toteutetaan hakutauluilla. Yksittäisessä kytkentäfunktiossa voi olla vain vähän muuttujia, mutta hakutauluja voidaan kytkeä yhteen, jolloin saadaan toteutetuksi mutkikkaampiakin funktioita. Konfiguroitavissa logiikkalohkoissa on tyypillisesti kaksi kiikkua jokaisessa. Kombinaatiologiikka on siis vähän, mutta kiikkuja runsaasti. 2-4 Toteuta kytkentäfunktio = kahden muuttujan hakutaululla. unktiossa on kaksi muuttujaa, joten sen toteuttaminen on suoraviivaista. Seuraavassa kuvassa on esitetty funktion totuustaulu ja sen toteutus kahden muuttujan hakutaululla. MUX G 2 2-5 Toteuta kytkentäfunktio = + + kolmen muuttujan hakutaululla.

Sivu (27) 26.2.2 e unktiossa on kolme muuttujaa, joten sen toteuttaminen on suoraviivaista. Seuraavassa kuvassa on esitetty funktion totuustaulu ja sen toteutus kolmen muuttujan hakutaululla. MUX G 7 2 2 4 5 6 7 2-6 Toteuta kytkentäfunktio + + = kahdella kahden muuttujan hakutaululla. unktiossa on kolme muuttujaa, joten se voidaan suoraan toteuttaa kahdella kahden muuttujan hakutaululla ja yhdellä kaksituloisella tulovalitsimella. Totuustaulu ja toteutus on esitetty seuraavassa kuvassa. MUX G MUX G MUX G G 2 2 2-7 Toteuta kytkentäfunktio + + + = kahdella kahden muuttujan hakutaululla. unktiossa on neljä muuttujaa. Se voidaan toteuttaa kahdella kahden muuttujan hakutaululla ja yhdellä kaksituloisella tulovalitsimella vain tietyin ehdoin. unktio pitää pystyä esittämään jaettuna yhden muuttujan ja sen komplementin suhteen kahteen osaan, joissa kummassakin on enintään kolme muuttujaa. Tehtävän funktiossa tämä onnistuu muuttujan suhteen. Saadaan muoto ) ( ) ( + + + =. Otetaan käyttöön apufunktiot K ja L siten, että K + = ja L + =. Silloin L K + =. Totuustaulut ja toteutus on esitetty seuraavassa kuvassa.

Sivu (27) 26.2.2 e K MUX G 2 K G MUX L MUX G 2 L 2-8 Toteuta kytkentäfunktio = + + + kahdella kahden muuttujan hakutaululla. Opastus: Piirrä funktion totuustaulu (pitää olla Karnaugh'n kartta) ja muuta sen avulla lauseke muotoon, josta saat sen jaetuksi kahteen osaan kuten esimerkissä 2-7 (pitää olla 2-8). Seuraavassa kuvassa vasemmalla on esitetty edellä esitetystä lausekkeesta johdettu funktion Karnaugh'n kartta. Nähdään, että toiseen tulotermiin voidaan lisätä ilman, että funktio muuttuu. Vastaava ykkösten ryhmittely on esitetty oikeanpuoleisessa kartassa. unktion lausekkeeksi saadaan siis = + + +. Tämä voidaan ryhmitellä muotoon = ( + ) + ( + ). Otetaan käyttöön apufunktiot K ja L siten, että K = + ja L = +. Silloin = K + L. Totuustaulut ja toteutus on esitetty seuraavassa kuvassa.

Sivu 2 (27) 26.2.2 e K MUX G 2 K G MUX L MUX G 2 L 2-9 Toteuta kirjan esimerkin 8-5 (pitää olla 8-4) mukainen Gray-koodissa laskeva kolmibittinen laskuri kahdella kuvan 2- (pitää olla 2-2) mukaisella ohjelmoitavalla logiikkalohkolla. Käytä piirissä myös nollaussignaalia. Käytä tilojen nimeämisessä perinteistä menetelmää eli minimimäärää kiikkuja. Piirissä on kaksi tulosignaalia: kellosignaali LK ja nollaussignaali ES. Lähtösignaaleja on kolme:, ja. Ohjelmoitavan logiikkalohkon kiikut ovat -kiikkuja, joten kiikkujen -tulojen lausekkeet ovat esimerkin 8-4 mukaisesti = +, = + ja = +. Lähtösignaalit saadaan kaikki suoraan kiikkujen lähdöistä. Toisesta lohkosta jää yksi kiikku käyttämättömäksi. Saadaan seuraavan kuvan mukainen ratkaisu. Kaikki kytkentämatriisin johdot ovat samanlaisia ja niitä on piirretty näkyviin vain tarvittava määrä. Hakutaulujen ohjelmointi on esitetty totuustaulun muodossa. Hakutaulun tulot ylhäältä alaspäin vastaavat totuustaulun muuttujia vasemmalta oikealle. Kaikki hakutaulut ovat vajaakäytössä. Niillä voisi toteuttaa neljän muuttujan funktion, mutta jokaisessa funktiossa on vain kolme tai kaksi muuttujaa. Nämä on kytketty hakutaulun kolmeen tai kahteen alimpaan tuloon. Muut tulot on kytketty nollaan. Itse asiassa hakutaulun kahden tai yhden vasemmanpuoleisen sarakkeen ohjelmointi määrää piirin toteuttaman funktion. Koko taulukko on kuitenkin ohjelmoitu.

Sivu (27) 26.2.2 e LK ES MX MX MX S 2 2 G MY MY MY S 2 2 G MX MX MX S 2 2 G MY MY MY S 2 2 G 2-2 Toteuta kirjan esimerkin 8-6 (pitää olla 8-6) mukainen synkroninen sekvenssipiiri kahdella kuvan 2- (pitää olla 2-2) mukaisella ohjelmoitavalla logiikkalohkolla. Käytä piirissä myös nollaussignaalia. Käytä tilojen nimeämisessä perinteistä menetelmää eli minimimäärää kiikkuja. Piirissä on kaksi tulosignaalia: kellosignaali LK ja nollaussignaali ES. Lähtösignaaleja on kolme:, ja. Ohjelmoitavan logiikkalohkon kiikut ovat -kiikkuja, joten kiikkujen -tulojen lausekkeet ovat esimerkin 8-6 mukaisesti =, = + ja =. Lähtösignaalit saadaan kaikki suoraan kiikkujen lähdöistä. Toisesta lohkosta jää yksi kiikku käyttämättömäksi. Saadaan seuraavan kuvan mukainen ratkaisu. Kaikki kytkentämatriisin johdot ovat samanlaisia ja niitä on piirretty näkyviin vain tarvittava määrä. Hakutaulujen ohjelmointi on esitetty totuustaulun muodossa.

Sivu 4 (27) 26.2.2 e Hakutaulun tulot ylhäältä alaspäin vastaavat totuustaulun muuttujia vasemmalta oikealle. Kaikki hakutaulut ovat vajaakäytössä. Niillä voisi toteuttaa neljän muuttujan funktion, mutta jokaisessa funktiossa on vain kaksi muuttujaa. Nämä on kytketty hakutaulun kahteen alimpaan tuloon ja muut tulot on kytketty nollaan. Itse asiassa hakutaulun vasemmanpuoleisen sarakkeen ohjelmointi määrää piirin toteuttaman funktion. Kaikki sarakkeet on kuitenkin ohjelmoitu samanlaisiksi. LK ES MX MX MX S 2 2 G MY MY MY S 2 2 G MX MX MX S 2 2 G MY MY MY S 2 2 G 2-2 Toteuta kirjan esimerkin 9- mukainen asynkroninen sekvenssipiiri kuvan 2- (pitää olla 2-2) mukaisella ohjelmoitavalla logiikkalohkolla. Piirissä on kaksi tulosignaalia: ja. Lähtösignaaleja on yksi: Z. Lisäksi piirissä on yksi tilasignaali X. Tilasignaalin lauseke on X + = + X ja lähtösignaalin lauseke Z = X. Yhdellä ohjelmoitavalla logiikkalohkolla voidaan toteuttaa kaksi lauseketta, joten tehtävä voidaan ratkaista.

Sivu 5 (27) 26.2.2 e Saadaan seuraavan kuvan mukainen ratkaisu. Kaikki kytkentämatriisin johdot ovat samanlaisia ja niitä on piirretty näkyviin vain tarvittava määrä. Hakutaulujen ohjelmointi on esitetty totuustaulun muodossa. Hakutaulun tulot ylhäältä alaspäin vastaavat totuustaulun muuttujia vasemmalta oikealle. Molemmat hakutaulut ovat vajaakäytössä. Niillä voisi toteuttaa neljän muuttujan funktion, mutta kummassakin funktiossa on vain kolme muuttujaa. Nämä on kytketty hakutaulun kolmeen alimpaan tuloon ja ylin tulo on kytketty nollaan. Itse asiassa hakutaulun kaksi vasemmanpuoleista saraketta määräävät piirin toteuttaman funktion. Kaikki sarakkeet on kuitenkin ohjelmoitu. Z X + MX MX Z MX S 2 2 G X Z Z MY MY MY S 2 2 G 2 VHL-kuvauskieli 2- Esitellään signaalit bitja ja bitjb seuraavasti: SIGNL bitja: IT_VETO ( TO 5); SIGNL bitjb: IT_VETO (5 OWNTO ); Tehdään seuraavat sijoitukset: bitja <= ""; bitjb <= ""; Mikä on arvoltaan bitja(4) ja mikä bitjb(4)? Koska signaalin bitja vasemmanpuoleisimman bitin indeksi on, on bitja(4) viides bitti vasemmalta lukien. Sen arvo on. Vastaavasti koska signaalin bitjb oikeanpuoleisimman bitin indeksi on, on bitjb(4) viides bitti oikealta lukien. Sen arvo on. 2-2 Kombinaatiopiirin totuustaulusta johdettu VHL-arkkitehtuuri voidaan esittää myös SE-lauseella. Tällöin tulosignaalit ja lähtösignaalit esitellään suunnitteluyksikön esittelyssä bittijonoina. Laadi puolisummaimen VHL-kuvaus SE-lausetta käyttäen. -- Puolisummain TITY half_adder IS

Sivu 6 (27) 26.2.2 e p_q: IN IT_VETO ( OWNTO ); -- yhteenlask. bitit bittijonona cout_s: OUT IT_VETO ( OWNTO )); -- läht. muistib. ja summa b.-j. half_adder; HITETUE behavior O half_adder IS SE p_q IS WH "" => cout_s <= ""; -- muistib. ja summa; p = q = WH "" => cout_s <= ""; -- muistib. ja summa; p = ja q = WH "" => cout_s <= ""; -- muistib. ja summa; p = ja q = WH "" => cout_s <= ""; -- muistib. ja summa; p = q = SE; 2- Laadi seuraavien perusporttipiirien toiminnalliset VHL-kuvaukset: a) nelituloinen J-portti, -- Nelituloinen J-portti TITY and_4 IS a, b, c, d: IN IT; f: OUT IT); and_4; HITETUE behavior O and_4 IS f <= a N b N c N d; b) kuusituloinen TI-portti, -- Kuusituloinen TI-portti TITY or_6 IS a, b, c, d, e, f: IN IT; g: OUT IT); or_6; HITETUE behavior O or_6 IS g <= a O b O c O d O e O f; c) kaksituloinen J-EI-portti. -- Kaksituloinen J-EI-portti TITY nand_2 IS a, b: IN IT; f: OUT IT); nand_2;

Sivu 7 (27) 26.2.2 e HITETUE behavior O nand_2 IS f <= a NN b; 2-4 Laadi sellaisen kahdeksantuloisen tulovalitsimen toiminnallinen VHL-kuvaus, jossa on ykkösenä aktiivinen sallintasignaali. -- Kahdeksantuloinen toiminnan sallintatulolla varustettu tulovalitsin TITY mux_8_en IS en: IN IT; -- -akt. sallintatulo sel: IN IT_VETO (2 OWNTO ); -- valintatulot d, d, d2, d, d4, d5, d6, d7: IN IT; -- datatulot y: OUT IT); -- lähtö mux_8_en; HITETUE behavior O mux_8_en IS y <= '' WH en = '' ELSE -- toiminta estetty, y = d WH sel = "" ELSE -- toim. sall., y = d, kun sel = d WH sel = "" ELSE -- toim. sall., y = d, kun sel = d2 WH sel = "" ELSE -- toim. sall., y = d2, kun sel = d WH sel = "" ELSE -- toim. sall., y = d, kun sel = d4 WH sel = "" ELSE -- toim. sall., y = d4, kun sel = d5 WH sel = "" ELSE -- toim. sall., y = d5, kun sel = d6 WH sel = "" ELSE -- toim. sall., y = d6, kun sel = d7; -- toim. sall., y = d7 muulloin 2-5 Laadi kahdeksanlähtöisen lähtövalitsimen ja dekooderin toiminnalliset VHL-kuvaukset. Kaikki signaalit ovat invertoimattomia. -- Kahdeksanlähtöinen lähtövalitsin TITY demux_8 IS sel: IN IT_VETO (2 OWNTO ); -- valintatulot d: IN IT; -- datatulo y: OUT IT_VETO (7 OWNTO )); -- datalähdöt demux_8; HITETUE behavior O demux_8 IS WITH sel SELET -- valintaperusteena valintatulot sel y <= "" d WH "", -- d, kun sel = "" d '' WH "", -- d, kun sel = "" d "" WH "", -- d, kun sel = "" d "" WH "", -- d, kun sel = "" d "" WH "", -- d, kun sel = "" d "" WH "", -- d, kun sel = '' d "" WH "", -- d, kun sel = d "" WH "", -- d, kun sel = -- Toiminnan sallintatulolla varustettu dekooderi

Sivu 8 (27) 26.2.2 e TITY dec_8_en IS en: IN IT; -- -akt. sallintatulo b: IN IT_VETO (2 OWNTO ); -- binaaritulot y: OUT IT_VETO (7 OWNTO )); -- lähdöt dec_8_en; HITETUE behavior O dec_8_en IS y <= "" WH en = '' ELSE -- toim. estetty, y = "" WH b = "" ELSE -- y =, kun b = "" WH b = "" ELSE -- y =, kun b = "" WH b = "" ELSE -- y =, kun b = "" WH b = "" ELSE -- y =, kun b = "" WH b = "" ELSE -- y =, kun b = "" WH b = "" ELSE -- y =, kun b = "" WH b = "" ELSE -- y =, kun b = ""; -- y = muutoin (b = ) 2-6 Laadi kaksilähtöisen nelikkolähtövalitsimen toiminnallinen VHL-kuvaus. Kaikki signaalit ovat invertoimattomia. -- Kaksilähtöinen nelikkolähtövalitsin TITY demux_4x2 IS sel: IN IT; -- valintatulo d, d, d2, d: IN IT; -- datatulot y, y, y2, y: OUT IT_VETO ( OWNTO )); -- datalähdöt demux_4x2; HITETUE behavior O demux_4x2 IS WITH sel SELET -- valintaperusteena valintatulo sel y <= '' d WH '', -- d, kun sel = d '' WH ''; -- d, kun sel = WITH sel SELET -- valintaperusteena valintatulo sel y <= '' d WH '', -- d, kun sel = d '' WH ''; -- d, kun sel = WITH sel SELET -- valintaperusteena valintatulo sel y2 <= '' d2 WH '', -- d2, kun sel = d2 '' WH ''; -- d2, kun sel = WITH sel SELET -- valintaperusteena valintatulo sel y <= '' d WH '', -- d, kun sel = d '' WH ''; -- d, kun sel = 2-7 Laadi kahdeksanbittisen binaarisummaimen toiminnallinen VHL-kuvaus. TITY adder_8 IS p, q: IN INTEGE NGE TO 255; -- yhteenlaskettavat luvut cin: IN INTEGE NGE TO ; -- tuleva muistibitti s: OUT INTEGE NGE TO 255; -- summa cout: OUT INTEGE NGE TO ); -- lähtevä muistibitti adder_8;

Sivu 9 (27) 26.2.2 e HITETUE behavior O adder_8 IS SIGNL s_cout: INTEGE NGE TO 5; -- sisäinen apusignaali s <= p + q + cin; -- summa katkaistuna s_cout <= p + q + cin; -- summa kokonaan cout <= WH s_cout < 256 ELSE -- lähtevä muistibitti ; 2-8 Laadi nelibittisen binaarikertolaskupiirin toiminnallinen VHL-kuvaus. TITY multiplier_4 IS p, q: IN INTEGE NGE to 5; -- kerrottavat luvut pr: OUT INTEGE NGE to 225; -- tulo (5 x 5 = 225) multiplier_4; HITETUE behavior O multiplier_4 IS pr <= p * q; -- tulo 2-9 Laadi sellaisen kellopulssin laskureunalla liipaistavan -kiikun toiminnallinen VHL-kuvaus, jossa on nollana aktiivinen asetustulo. -- Laskureunalla liipaistava -kiikku TITY d_ff IS d, clk_i, s_i: IN IT; -- data-, kello- ja asetustulo q: OUT IT); -- lähtö d_ff; HITETUE behavior O d_ff IS POESS (s_i, clk_i) IS -- suoritetaan, kun s_i tai clk_i muuttuu I s_i = '' TH q <= '' -- asetus, kun s_i = ELSI clk_i'evt N clk_i = '' TH -- clk_i:n laskureuna q <= d; -- q:n arvoksi d:n arvo I; POESS; 2- Laadi sellaisen kellopulssin nousureunalla liipaistavan T-kiikun toiminnallinen VHL-kuvaus, jossa on nollana aktiiviset nollaustulo ja asetustulo. -- Nousureunalla liipaistava T-kiikku TITY t_ff IS t, clk, r_i, s_i: IN IT; -- t-, kello-, nollaus- ja asetustulo q: OUT IT); -- lähtö t_ff; HITETUE behavior O t_ff IS SIGNL tila: IT; -- signaali tila = kiikun tila

Sivu 2 (27) 26.2.2 e POESS (r_i, s_i, clk) IS -- suor., kun r_i, s_i tai clk muuttuu I r_i = '' TH -- nollaus, kun r_i = tila <= ''; ELSI s_i = '' TH -- asetus, kun s_i = tila <= ''; ELSI clk'evt N clk = '' TH -- clk:n nousureuna I t = '' TH -- jos t =, I; I; POESS; q <= tila; tila <= NOT tila; -- tila vaihtuu -- lähtösignaalille tilan arvo 2- Laadi sellaisen kellopulssin laskureunalla liipaistavan JK-kiikun toiminnallinen VHL-kuvaus, jossa on ykkösenä aktiivinen nollaustulo. -- Laskureunalla liipaistava JK-kiikku TITY jk_ff IS jk: IN IT_VETO ( TO ); -- j- ja k-tulo bittijonona r, clk_i: IN IT; -- nollaus- ja kellotulo q: OUT IT); -- lähtö jk_ff; HITETUE behavior O jk_ff IS SIGNL tila: IT; -- signaali tila = kiikun tila POESS (r, clk_i) IS -- suor., kun r tai clk_i muuttuu I r = '' TH -- nollaus, kun r = tila <= ''; ELSI clk_i'evt N clk_i = '' TH -- clk_i:n laskureuna SE jk IS -- jk:n arvon mukaan: WH "" => NULL; -- kun, tila säilyy WH "" => tila <= ''; -- kun, tilaksi WH "" => tila <= ''; -- kun, tilaksi WH "" => tila <= NOT tila; -- kun, tila vaihtuu SE; I; POESS; q <= tila; -- lähtösignaalille tilan arvo 2-2 Laadi sellaisen kahdeksanbittisen SISO-siirtorekisterin toiminnallinen VHL-kuvaus, jossa on ykkösenä aktiivinen nollaustulo. TITY siso_8 IS si: IN IT; -- sarjatulo clk, r: IN IT; -- kello- ja nollaustulo so: OUT IT); -- sarjalähtö siso_8;

Sivu 2 (27) 26.2.2 e HITETUE behavior O siso_8 IS SIGNL q: IT_VETO ( TO 7); -- kiikkujen tilat POESS (r, clk) IS -- suoritetaan, kun r tai clk muuttuu I r = '' TH -- nollaus, kun r = q <= ""; ELSI clk'evt N clk = '' TH -- clk:n nousureuna q(7) <= q(6); -- siirto kiikku 6 7 q(6) <= q(5); -- siirto kiikku 5 6 q(5) <= q(4); -- siirto kiikku 4 5 q(4) <= q(); -- siirto kiikku 4 q() <= q(2); -- siirto kiikku 2 q(2) <= q(); -- siirto kiikku 2 q() <= q(); -- siirto kiikku q() <= si; -- si kiikkuun I; POESS; so <= q(7); -- lähdöksi kiikun 7 tila 2- Laadi sellaisen nelibittisen PISO-siirtorekisterin toiminnallinen VHL-kuvaus, jossa on nollana aktiivinen nollaustulo. PISO-siirtorekisteri on muutoin kuin PIPO, mutta kiikkujen lähtösignaaleista vain viimeinen on tuotu piirin liitäntänastaan. -- Nelibittinen PISO-siirtorekisteri TITY piso_4 IS si: IN IT; -- sarjatulo pi: IN IT_VETO ( TO ); -- rinnakkaistulot shift: IN IT; -- siirron/latauksen valinta clk, r_i: IN IT; -- kello- ja nollaustulo so: OUT IT); -- sarjalähtö piso_4; HITETUE behavior O piso_4 IS SIGNL q: IT_VETO ( TO ); -- kiikkujen tilat POESS (r_i, clk) IS -- suorit., kun r_i tai clk muuttuu I r_i = '' TH -- nollaus, kun r_i = q <= ""; ELSI clk'evt N clk = '' TH -- clk:n nousureuna I shift = '' TH -- rinnakkaislataus q <= pi; -- rinnakkaistulot kiikkuihin ELSE -- siirto: q() <= q(2); -- siirto kiikku 2 q(2) <= q(); -- siirto kiikku 2 q() <= q(); -- siirto kiikku q() <= si; -- si kiikkuun I; I; POESS; so <= q(); -- sarjalähdöksi kiikun tila

Sivu 22 (27) 26.2.2 e 2-4 Laadi sellaisen perusdekadilaskurin toiminnallinen VHL-kuvaus, jossa on ykkösenä aktiivinen nollaustulo. -- Perusdekadilaskuri TITY counter_dec IS clk, r: IN IT; -- kello- ja nollaustulo ct: OUT INTEGE NGE TO 9); -- rinnakkaislähtö counter_dec; HITETUE behavior O counter_dec IS SIGNL q: INTEGE NGE TO 9; -- laskurin sisältö POESS (r, clk) IS -- suoritetaan, kun r tai clk muuttuu I r = '' TH -- nollaus, kun r = q <= ; ELSI clk'evt N clk = '' TH -- clk:n nousureuna q <= q + ; -- laskurin arvon lisäys I; POESS; ct <= q; -- lähdöiksi laskurin sisältö 2-5 Laadi sellaisen ladattavan dekadilaskurin toiminnallinen VHL-kuvaus, jossa on nollana aktiivinen nollaustulo. -- Ladattava dekadilaskuri TITY counter_load_dec IS count: IN IT; -- laskenta/lataus-valinta pi: IN INTEGE NGE TO 9; -- ladattava luku clk, r_i: IN IT; -- kello- ja nollaustulo ct: OUT INTEGE NGE TO 9); -- rinnakkaislähtö counter_load_dec; HITETUE behavior O counter_load_dec IS SIGNL q: INTEGE NGE TO 9; -- laskurin sisältö POESS (r_i, clk) IS -- suoritetaan, kun r_i tai clk muuttuu I r_i = '' TH -- nollaus, kun r_i = q <= ; ELSI clk'evt N clk = '' TH -- clk:n nousureuna I count = '' TH -- jos valittu lataus q <= pi; -- sisällöksi ladattava luku ELSE q <= q + ; -- laskurin arvon lisäys I; I; POESS; ct <= q; -- lähdöiksi laskurin sisältö 2-6 Laadi kirjan esimerkin 8- mukaisen synkronisen sekvenssipiirin toiminnallinen VHL-kuvaus. Käytä piirissä myös nollaussignaalia.

Sivu 2 (27) 26.2.2 e Synkronisen sekvenssipiirin toiminnallisessa kuvauksessa ei määritellä kiikkutyyppiä. Tilat kuvataan niiden symbolisilla nimillä. -- Kaksibittinen ylöspäin tai alaspäin laskeva binaarilaskuri TITY laskuri IS a: IN IT; -- laskennan suunta (a = => ylöspäin) r, clk: IN IT; -- alustus- ja kellosignaali x, y: OUT IT; -- laskurissa olevan luvun bitit (x on msb) z, z2: OUT IT); -- muut lähtösignaalit laskuri; HITETUE behavior O laskuri IS TYPE tilty IS (nol, yks, kaks, kolm); -- tyypin arvoina piirin tilat SIGNL til: tilty; -- piirin tilasignaali til POESS (r, clk) -- herätesignaalit r ja clk I r = '' TH -- alkutilaan alustussignaalilla til <= nol; -- alkutilana tila nol ELSI clk'evt N clk = '' TH -- kellopulssin nousureuna SE til IS -- tilanmuutokset SE-lauseessa WH nol => I a = '' TH -- jos a =, til <= yks; -- siirrytään tilaan yks ELSE -- jos a =, til <= kolm; -- siirrytään tilaan kolm I; WH yks => I a = '' TH -- jos a =, til <= kaks; -- siirrytään tilaan kaks ELSE -- jos a =, til <= nol; -- siirrytään tilaan nol I; WH kaks => I a = '' TH -- jos a =, til <= kolm; -- siirrytään tilaan kolm, ELSE -- jos a =, til <= yks; -- siirrytään tilaan yks I; WH kolm => I a = '' TH -- jos a =, til <= nol; -- siirrytään tilaan nol, ELSE -- jos a =, til <= kaks; -- siirrytään tilaan kaks I; SE; I; POESS; x <= '' WH til = kaks ELSE -- laskurin msb:n arvo '' WH til = kolm ELSE ''; y <= '' WH til = yks ELSE -- laskurin lsb:n arvo '' WH til = kolm ELSE ''; z <= '' WH til = nol ELSE -- lähtösignaali z ''; z2 <= '' WH til = kolm N a = '' ELSE -- lähtösignaali z2 '';

Sivu 24 (27) 26.2.2 e 2-7 Laadi kirjan esimerkin 8-4 mukaisen Gray-koodissa laskevan kolmibittisen laskurin toiminnallinen VHL-kuvaus. Käytä piirissä myös nollaussignaalia. -- Kolmibittinen Gray-binaarilaskuri TITY gray_laskuri IS r, clk: IN IT; -- alustus- ja kellosignaali a, b, c: OUT IT; -- laskurissa olevan luvun bitit (a on msb) gray_laskuri; HITETUE behavior O gray_laskuri IS TYPE tilty IS (nol, yks, kaks, kolm, nel, viis, kuus, seit); SIGNL til: tilty; -- piirin tilasignaali til POESS (r, clk) -- herätesignaalit r ja clk I r = '' TH -- alkutilaan alustussignaalilla til <= nol; -- alkutilana tila nol ELSI clk'evt N clk = '' TH -- kellopulssin nousureuna SE til IS -- tilanmuutokset SE-lauseessa WH nol => til <= yks; -- siirrytään tilaan yks WH yks => til <= kaks; -- siirrytään tilaan kaks WH kaks => til <= kolm; -- siirrytään tilaan kolm WH kolm => til <= nel; -- siirrytään tilaan nel WH nel => til <= viis; -- siirrytään tilaan viis WH viis => til <= kuus; -- siirrytään tilaan kuus WH kuus => til <= seit; -- siirrytään tilaan seit WH seit => til <= nol; -- siirrytään tilaan nol SE; I; POESS; WITH til SELET a <= '' WH nel viis kuus seit, -- laskurin msb:n arvo '' WH OTHES; WITH til SELET b <= '' WH kaks kolm nel viis, '' WH OTHES; WITH til SELET c <= '' WH kaks kolm viis kuus, -- laskurin lsb:n arvo '' WH OTHES; 2-8 Laadi kirjan esimerkin 8-6 mukaisen synkronisen sekvenssipiirin toiminnallinen VHL-kuvaus. Käytä piirissä myös nollaussignaalia. -- Neljään laskeva laskuri TITY laskuri_4 IS

Sivu 25 (27) 26.2.2 e r, clk: IN IT; -- alustus- ja kellosignaali a, b, c: OUT IT); -- laskurissa olevan luvun bitit (a on msb) laskuri_4; HITETUE behavior O laskuri_4 IS TYPE tilty IS (nol, yks, kaks, kolm, nel); SIGNL til: tilty; -- piirin tilasignaali til POESS (r, clk) -- herätesignaalit r ja clk I r = '' TH -- alkutilaan alustussignaalilla til <= nol; -- alkutilana tila nol ELSI clk'evt N clk = '' TH -- kellopulssin nousureuna SE til IS -- tilanmuutokset SE-lauseessa WH nol => til <= yks; -- siirrytään tilaan yks WH yks => til <= kaks; -- siirrytään tilaan kaks WH kaks => til <= kolm; -- siirrytään tilaan kolm WH kolm => til <= nel; -- siirrytään tilaan nel WH nel => til <= nol; -- siirrytään tilaan nol SE; I; POESS; WITH til SELET a <= '' WH nel, -- laskurin msb:n arvo '' WH OTHES; WITH til SELET b <= '' WH kaks kolm, '' WH OTHES; WITH til SELET c <= '' WH yks kolm, -- laskurin lsb:n arvo '' WH OTHES; 2-9 Laadi kirjan kuvan 6-2 mukaisen kombinaatiopiirin VHL-kuvaus rakennekuvauksena. Esitetään ensin erikseen jokaisen komponentin käyttäytymiskuvaus ja sitten piirin rakennekuvaus. akennekuvauksessa komponenttien nimet ovat ylhäältä alas ja vasemmalta oikealle ovat u, u2, u, u4, u5, u6 ja u7. Sisäiset signaalit nimetään komponenttien u - u6 lähtösignaaleina siten, että komponentin nimen perään lisätään f. Koska yksittäisten piirien signaaleita on merkitty kirjaimilla a, b, c ja f ja koko piirin signaalitkin ovat a, b, c ja f, samat kirjaimet esiintyvät kytkentöjen määrittelyssä eri puolilla kytkennän ilmoittavaa nuolta =>. Vasemmalla puolella olevat kirjaimet viittaavat aina komponentin omiin signaaleihin ja oikealla puolella olevat koko piirin signaaleihin. -- Invertteri TITY inv IS a: IN IT; -- tulosignaali f: OUT IT); -- lähtösignaali inv; HITETUE behavior O inv IS

Sivu 26 (27) 26.2.2 e f <= NOT a; -- Kaksituloinen J-EI-portti TITY nand_2 IS a, b: IN IT; f: OUT IT); nand_2; HITETUE behavior O nand_2 IS f <= a NN b; -- Kolmituloinen J-EI-portti TITY nand_ IS a, b, c: IN IT; f: OUT IT); nand_; HITETUE behavior O nand_ IS f <= NOT (a N b N c); -- Porteista koottu piiri rakennekuvauksena TITY gate_circuit IS a, b, c: IN IT; -- tulosignaalit f: OUT IT); -- lähtösignaali gate_circuit; HITETUE structure O gate_circuit IS -- Esitellään käytettävät komponentit OMPONT inv a: IN IT; f: OUT IT); OMPONT; OMPONT nand_2 a, b: IN IT; f: OUT IT); OMPONT; OMPONT nand_ a, b, c: IN IT; f: OUT IT); OMPONT; -- Esitellään sisäiset signaalit SIGNL uf, u2f, uf, u4f, u5f, u6f: IT; -- Määritellään komponenttien ilmentymät ja niiden väliset kytkennät u: inv POT MP (a => a, f => uf); u2: inv POT MP (a => b, f => u2f); u: inv POT MP (a => c, f => uf); u4: nand_2 POT MP (a => a, b => u2f, f => u4f); u5: nand_ POT MP (a => uf, b => b, c => uf, f => u5f); u6: nand_2 POT MP (a => a, b => c, f => u6f); u7: nand_ POT MP (a => u4f, b => u5f, c => u6f, f => f);

Sivu 27 (27) 26.2.2 e structure; 2-2 Laadi kirjan kohdassa 2.7.5 esitetyn kokosummaimen toiminnallisen VHL-kuvauksen testipenkki. -- Kokosummaimen testipenkki TITY testipenkki IS testipenkki; HITETUE testaus O testipenkki IS -- Esitellään testattava piiri OMPONT full_adder IS p, q, cin: IN IT; s, cout: OUT IT); OMPONT; -- Esitellään vakiona aika, jonka välein herätesignaaleita muutetaan ONSTNT jakso: TIME:= ns; -- Esitellään testipenkin sisäiset signaalit SIGNL pt, qt, cint, st, coutt: IT; -- Määritellään testattavan piirin ja testipenkin väliset kytkennät UUT: full_adder POT MP (p => pt, q => qt, cin => cint, s => st, cout => coutt); -- Kuvataan testigeneraattorin antamat herätteet prosessina herate: POESS pt <= ''; qt <= ''; cint <= '' -- ensimmäinen heräte WIT O jakso; -- odotetaan aika jakso eli ns pt <= ''; qt <= ''; cint <= '' -- toinen heräte WIT O jakso; -- odotetaan aika jakso eli ns pt <= ''; qt <= ''; cint <= '' -- kolmas heräte WIT O jakso; -- odotetaan aika jakso eli ns pt <= ''; qt <= ''; cint <= '' -- neljäs heräte WIT O jakso; -- odotetaan aika jakso eli ns pt <= ''; qt <= ''; cint <= '' -- viides heräte WIT O jakso; -- odotetaan aika jakso eli ns pt <= ''; qt <= ''; cint <= '' -- kuudes heräte WIT O jakso; -- odotetaan aika jakso eli ns pt <= ''; qt <= ''; cint <= '' -- seitsemäs heräte WIT O jakso; -- odotetaan aika jakso eli ns pt <= ''; qt <= ''; cint <= '' -- kahdeksas heräte WIT; -- lopetetaan testi POESS herate; testaus;