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

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

Verilogvs. VHDL. Janne Koljonen University of Vaasa

Synkronisten sekvenssipiirien suunnittelu

Digitaalitekniikka (piirit), kertaustehtäviä: Vastaukset

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

VHDL Tehtävä 1 : JK-Kiikku toteutettu IF:llä

Sekvenssipiirin tilat. Synkroninen sekvenssipiiri ? 1 ? 2

ELEC-C3240 Elektroniikka 2

Sekvenssipiirin tilat

Digitaalilaitteen signaalit

Harjoitustehtävien ratkaisut

AUTO3030 Digitaalitekniikan jatkokurssi, harjoitus 5, ratkaisuja

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

AUTO3030 Digitaalitekniikan jatkokurssi, harjoitus 2, ratkaisuja

21~--~--~r--1~~--~--~~r--1~

2_1----~--~r--1.~--~--~--,.~~

V H D L. Very high speed integrated circuits Hardware Description Language

Java-kielen perusteet

Java-kielen perusteita

Joni Heikkilä PYROLYYSIGENERAATTORIN AUTOMAATIO-OHJAUS OHJELMOITAVALLA LOGIIKKAPIIRILLÄ

Esimerkkitentin ratkaisut ja arvostelu

Java-kielen perusteet

Digitaalitekniikka (piirit) Opetusmoniste

VHDL-piirikuvaus ja simulointi Quartus II ja ModelSim Altera Edition -ohjelmilla

Alkuarvot ja tyyppimuunnokset (1/5) Alkuarvot ja tyyppimuunnokset (2/5) Alkuarvot ja tyyppimuunnokset (3/5)

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

13. Loogiset operaatiot 13.1

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

Ohjausjärjestelmien jatkokurssi. Visual Basic vinkkejä ohjelmointiin

13. Loogiset operaatiot 13.1

Koottu lause; { ja } -merkkien väliin kirjoitetut lauseet muodostavat lohkon, jonka sisällä lauseet suoritetaan peräkkäin.

Oppikirjan harjoitustehtävien ratkaisuja

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

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

TIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op. FT Ari Viinikainen

BL40A17x0 Digitaalielektroniikka A/B: Ohjelmoitavat logiikkapiirit

VHDL/Verilog/SystemC. Jukka Jokelainen

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

Muuttujatyypit ovat Boolean, Byte, Integer, Long, Double, Currency, Date, Object, String, Variant (oletus)

Ohjelmoinnin perusteet Y Python

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

ATK tähtitieteessä. Osa 3 - IDL proseduurit ja rakenteet. 18. syyskuuta 2014

Ohjelmointiharjoituksia Arduino-ympäristössä

Kielioppia: toisin kuin Javassa

TIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op. Assembly ja konekieli

IDL - proseduurit. ATK tähtitieteessä. IDL - proseduurit

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin peruskurssi Y1

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

Ehto- ja toistolauseet

Ohjelmointi 1 Taulukot ja merkkijonot

1.3Lohkorakenne muodostetaan käyttämällä a) puolipistettä b) aaltosulkeita c) BEGIN ja END lausekkeita d) sisennystä

Numeropelissä 3x3-ruudukko sisältää luvut 1, 2,, 9. Tehtäväsi on järjestää ruudukko näin:

811120P Diskreetit rakenteet

Ohjelmassa muuttujalla on nimi ja arvo. Kääntäjä ja linkkeri varaavat muistilohkon, jonne muuttujan arvo talletetaan.

Tutoriaaliläsnäoloista

815338A Ohjelmointikielten periaatteet Harjoitus 2 vastaukset

TIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op. Assembly ja konekieli

Ohjelmoinnin perusteet Y Python

Ohjelmassa henkilön etunimi ja sukunimi luetaan kahteen muuttujaan seuraavasti:

Ohjelmoitavat logiikkaverkot

Sisällys. 18. Abstraktit tietotyypit. Johdanto. Johdanto

Digitaalitekniikan matematiikka Harjoitustehtäviä

11. Javan valintarakenteet 11.1

Ohjelmoinnin peruskurssi Y1

Harjoitus 2 (viikko 45)

Chapel. TIE Ryhmä 91. Joonas Eloranta Lari Valtonen

815338A Ohjelmointikielten periaatteet Harjoitus 4 vastaukset

Sisällys. 16. Ohjelmoinnin tekniikkaa. Aritmetiikkaa toisin merkiten. Aritmetiikkaa toisin merkiten

20. Javan omat luokat 20.1

16. Ohjelmoinnin tekniikkaa 16.1

Sisällys. 20. Javan omat luokat. Java API. Pakkaukset. java\lang

18. Abstraktit tietotyypit 18.1

Perusteet. Pasi Sarolahti Aalto University School of Electrical Engineering. C-ohjelmointi Kevät Pasi Sarolahti

16. Ohjelmoinnin tekniikkaa 16.1

Datatähti 2019 loppu

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

Harjoitus 6 (viikko 42)

Sisällys. 17. Ohjelmoinnin tekniikkaa. Aritmetiikkaa toisin merkiten. for-lause lyhemmin

Sinulle on annettu bittijono, ja tehtäväsi on muuttaa jonoa niin, että jokainen bitti on 0.

Python-ohjelmointi Harjoitus 2

Ohjelmointi 1 C#, kevät 2013,

Ohjelmointitaito (ict1td002, 12 op) Kevät Java-ohjelmoinnin alkeita. Tietokoneohjelma. Raine Kauppinen

Sisällys. 3. Pseudokoodi. Johdanto. Johdanto. Johdanto ja esimerkki. Pseudokoodi lauseina. Kommentointi ja sisentäminen.

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

Johdatus Ohjelmointiin

1.3 Lohkorakenne muodostetaan käyttämällä a) puolipistettä b) aaltosulkeita c) BEGIN ja END lausekkeita d) sisennystä

Ratkaisu. Ensimmäinen kuten P Q, toinen kuten P Q. Kolmas kuten P (Q R):

Tyyppejä ja vähän muutakin. TIEA341 Funktio ohjelmointi 1 Syksy 2005

Hohde Consulting 2004

BL40A1711 Johdanto digitaaleketroniikkaan: Sekvenssilogiikka, pitopiirit ja kiikut

Osoitin ja viittaus C++:ssa

Sisällys. 3. Muuttujat ja operaatiot. Muuttujat ja operaatiot. Muuttujat. Operaatiot. Imperatiivinen laskenta. Muuttujat. Esimerkkejä: Operaattorit.

3. Muuttujat ja operaatiot 3.1

Pythonin alkeet Syksy 2010 Pythonin perusteet: Ohjelmointi, skriptaus ja Python

DIGITAALIPIIRISUUNNITTELU ALTERA QUARTUS II 5.0 OHJELMISTOLLA

Operaattoreiden ylikuormitus. Operaattoreiden kuormitus. Operaattoreiden kuormitus. Operaattoreista. Kuormituksesta

Transkriptio:

Digitaalitekniikka (piirit) Luku 7 Sivu (33)

Digitaalitekniikka (piirit) Luku 7 Sivu 2 (33) Johdanto Tässä luvussa esitellään laitteiston kuvauskielet ja niistä erityisesti VHDL esitetään VHDL-kuvauskielen rakenne ja keskeiset ominaisuudet kuvataan VHDL-kuvauskielen peruskäsitteet ja -määritteet esitetään kominaatiopiirien synkronisten sekvenssipiirien kuvaaminen VHDL-kuvauskielellä käyttäytymiskuvauksena esitetään rakennekuvaus esitetään VHDL-kuvauksen testaus Luvun tavoitteena on muodostaa yleiskäsitys VHDL-kuvauskielestä oppia laatimaan yksinkertaisia VHDL-kuvauksia

Digitaalitekniikka (piirit) Luku 7 Sivu 3 (33) Laitteiston kuvauskielet? Laitteiston kuvauskieli eli HDL (Hardware Description Language) on tekstimuotoinen tapa kuvata digitaalipiiri tai -laite Valtaosa käytännön digitaalipiirisuunnittelusta tehdään kuvauskielellä Käytetään erityisesti kuvattaessa asiakaskohtaisia digitaalipiirejä ja ohjelmoitavia logiikkaverkkoja Kuvauskielet muistuttavat ohjelmointikieliä Olennaiset erot ohjelmointikieliin ohjelma ajetaan laitteistossa - kuvaus kuvaa laitteiston laitteistossa on sekä rinnakkaista että peräkkäistä toimintaa ohjelmistossa on yleensä vain peräkkäistä toimintaa Kuvauksia voidaan käyttää simulointiin, piirisynteesiin ja testaukseen Standardoidut kuvauskielet VHDL (Suomessa yleisin) Verilog Valmistajakohtaiset kuvauskielet esim. ABEL, PALASM, CUPL ja AHDL

Digitaalitekniikka (piirit) Luku 7 Sivu 4 (33) Standardoitujen kuvauskielten käytön perusteet Riippumattomuus piirivalmistajista sama kuvaus voidaan toimittaa usealle eri piirivalmistajalle (ainakin periaatteessa) Riippumattomuus suunnittelutyökaluista stardardimuotoinen tekstitiedosto voidaan helposti siirtää suunnittelutyökalusta toiseen Hyvät valmislohkojen (IP Blocks) käyttömahdollisuudet laitevalmistajan omat valmislohkot piirivalmistajan valmislohkot työkalutoimittajan valmislohkot erikseen ostetut (third party) valmislohkot valmislohkojen käyttö lyhentää usein suunnitteluaikaa paljonkin Standardi on yleinen, tarkoin määritelty ja vapaasti saatavilla Standardointijärjestö on piirivalmistajista riippumaton yhteisö

Digitaalitekniikka (piirit) Luku 7 Sivu 5 (33) VHDL = VHSIC Hardware Description Language VHSIC = Very High Speed Integrated Circuit (USA:n DoD:n hanke) Alkuperäinen standardiversio IEEE 076-987 vuonna 987 Päivitys versioksi IEEE 076-993 vuonna 993 (edelleen yleisin) Uusin versio IEEE 076-2008 syyskuussa 2008 VHDL Hyvin rikas ja monipuolinen kieli Myös laaja ja osin mutkikaskin Sujuva käyttö vaatii sekä opiskelua että erityisesti käytännön kokemusta Kuvattua laitetta tai piiriä nimitetään suunnitteluyksiköksi (entity) Suunnitteluyksiköillä on hierarkia ylemmän tason suunnitteluyksikkö koostuu alemman tason suunnitteluyksiköistä eli moduuleista samaa moduulia voidaan käyttää useita kertoja Seuraavassa VHDL-kieleen kuuluvat varatut sanat esitetään ISOILLA ja käyttäjän antamat nimet pienillä kirjaimilla (muitakin käytäntöjä esiintyy)

Digitaalitekniikka (piirit) Luku 7 Sivu 6 (33) VHDL-kuvauksen perusrakenne a & ENTITY nand2 IS? 2 ( a: IN BIT; : IN BIT; : OUT BIT); END nand2; Suunnitteluyksikön esittely: - nimi (nand2) - tulot ja lähdöt (a, ja ) - tulojen ja lähtöjen tyyppi (BIT) a, ARCHITECTURE ehavior OF nand2 IS BEGIN <= a NAND ; END ehavior; VHDL-arkkitehtuuri: - nimi (ehavior) - toiminnan kuvauskomennot (tässä vain yksi sijoituslause)

Digitaalitekniikka (piirit) Luku 7 Sivu 7 (33) VHDL-arkkitehtuurityypit Käyttäytymiskuvaus (ehavioral description) määrittelee toiminnan, ei ota kantaa toteutukseen kominaatiopiirin käyttäytymiskuvaus vastaa totuustaulua tai lauseketta sekvenssipiirin käyttäytymiskuvaus vastaa ASM- tai kaaviota Rakennekuvaus (structural description) määrittelee rakenteen, ei ota kantaa toimintaan vastaa piiri- tai lohkokaaviota Samalla suunnitteluyksiköllä voi olla useita erilaisia arkkitehtuureja yhteinen käyttäytymiskuvaus rakennekuvaus porttiverkolla toteutettuna rakennekuvaus PLD-piirillä toteutettuna rakennekuvaus FPGA-piirillä toteutettuna rakennekuvaukset voidaan tehdä käyttäytymiskuvauksesta suunnittelutyökalulla

Digitaalitekniikka (piirit) Luku 7 Sivu 8 (33) Kommentti, varattu sana ja tunniste Kommentti (comment) rivi tai rivin osa, joka alkaa -- (kaksi tavuviivaa) on kommentti -- Ulkoisten tulosignaalien esittely (in, in2, clk, reset): IN BIT; -- kaikkien tulosignaalien tyyppi BIT Varattu sana ja tunniste avainsanat (keyword) ja operaattorit (operator) ovat varattuja sanoja tunnisteet (identiier) ovat käyttäjän antamia nimiä alkavat kirjaimella, sallittuja merkkejä englannin kirjaimet, numerot ja _ _ ei saa olla viimeinen merkki eikä niitä saa olla kahta peräkkäin isoja ja pieniä kirjaimia ei erotella: IN = in = In = in, IN, NAND in, nand2, toiminta ovat varattuja sanoja ovat tunnisteita

Digitaalitekniikka (piirit) Luku 7 Sivu 9 (33) Ojekti Ojekteja ovat portit, signaalit, muuttujat ja vakiot Portti () on suunnitteluyksikön tulo- tai lähtösignaali Signaali (SIGNAL) on suunnitteluyksikön sisäinen signaali (in, in2, clk, reset: IN BIT; -- tulosignaalit outa, out, outc: OUT BIT); SIGNAL sis, sis2, sis3: BIT; -- lähtösignaalit -- sisäiset signaalit Muuttuja (VARIABLE) on VHDL-kuvauksen sisäinen ojekti VARIABLE p, q, sum: INTEGER; -- kolme kokonaislukumuuttujaa Vakio (CONSTANT) on nimetty ojekti, jolle on annettu vakioarvo CONSTANT arvo0: STRING := "00"; -- vakion arvo0 arvo on jono "00" CONSTANT arvo: STRING := "0"; -- vakion arvo arvo on jono "0" CONSTANT arvo2: STRING := "0"; -- vakion arvo2 arvo on jono "0" CONSTANT arvo3: STRING := ""; -- vakion arvo3 arvo on jono ""

Digitaalitekniikka (piirit) Luku 7 Sivu 0 (33) Tyyppi Tyyppi (TYPE) määrittelee ojektin (esimerkiksi signaalin tai muuttujan) arvot TYPE BIT IS ('0', ''); -- BIT-tyyppisen ojektin arvot ovat '0' ja '' VHDL-kielen keskeisiä tyyppejä? 3 Suomenk. nimi nimi Bitti Bitti Bittijono Standardilogiikka Totuusarvo Merkki Merkki Merkkijono Kokonaisluku VHDL-kielen nimi nimi BIT BIT BIT_VECTOR STD_LOGIC BOOLEAN CHARACTER STRING Arvot Arvot '0', '0','' '' Esim. Esim. "000", "000","00", "00","00",,"" 'U', 'U','X', 'X','0', '0','', '','Z', 'Z','W', 'W','L', 'L','H', 'H','-' '-' FALSE, TRUE TRUE Esim. Esim. 'a', 'a','a', 'A','', '','9', '9','?' '?'('a' ('a' 'A') 'A') Esim. Esim. "Jono", "Jono","024", "024","Matti "Matti M." M." Esim. 0,, -37, 024, -998765 INTEGER Esim. 0,, -37, 024, -998765

Digitaalitekniikka (piirit) Luku 7 Sivu (33) Bittijonon pituus ja kokonaisluvun arvoalue Bittijonon ittien lukumäärä ja numerointi BIT_VECTOR ( TO 8); -- 8-ittinen ittijono, itit 8 BIT_VECTOR (8 DOWNTO ); -- 8-ittinen ittijono, itit 8 Yksittäiseen ittiin viitataan sen numerolla eli indeksillä SIGNAL j: BIT_VECTOR (8 DOWNTO ); -- 8-ittinen ittijono j j(8) <= '0'; j() <= ''; -- sijoitetaan itille 8 arvo '0' ja itille arvo '' Kokonaisluvun arvoalue esitetään antamalla sen rajat INTEGER RANGE 0 TO 255; -- etumerkitön 8-ittinen luku INTEGER RANGE 27 DOWNTO -28; -- 2:n kompl.-muot. 8-ittinen luku

Digitaalitekniikka (piirit) Luku 7 Sivu 2 (33) Enumeroitu tyyppi ja operaattori Enumeroitu tyyppi (enumerated type) on käyttäjän itse määrittelemä tyyppi arvot tunnisteita, merkkejä tai merkkijonoja käytetään esimerkiksi sekvenssipiirien toiminnallisissa kuvauksissa tilojen määrittelyyn -- Neliisen sekvenssipiirin t ovat alku, vali, vali2 ja loppu TYPE tyyppi IS (alku, vali, vali2, loppu);? 4 Operaattori (operator) kuvaa ojektille tai ojekteille tehtyä operaatiota loogiset operaattorit AND, OR, NOT, NAND, NOR, XOR, XNOR aritmeettiset operaattorit +, -, *, /, **, MOD, REM, ABS vertailuoperaattorit =, /=, <, >, <=, >= ketjutusoperaattori & operaatioiden järjestys osittain määritelty: tarvittaessa käytetään sulkuja loogisissa operaatioissa NOT ensin, AND ja OR samanarvoisia NAND ja NOR vain kahdelle ojektille

Digitaalitekniikka (piirit) Luku 7 Sivu 3 (33) Sijoituslauseet Signaalin sijoituslauseella (signal assignment statement) sijoitetaan arvo signaalille tai portille Sijoituslauseita on kolme erilaista: yhtäaikainen, ehdollinen ja valikoiva Yhtäaikainen (concurrent) signaalin sijoituslause a <= ''; -- sijoitetaan a:lle vakioarvo <= (a AND NOT c) OR ( AND c); -- sijoitetaan :lle lausekkeen arvo Ehdollinen (conditional) signaalin sijoituslause <= '0' WHEN a = '0' AND = '0' ELSE -- 0, kun a = = 0 c WHEN a = '0' AND = '' ELSE -- c, kun a = 0 ja = NOT c WHEN a = '' AND = '0' ELSE -- EI c, kun a = ja = 0 ''; -- muutoin

Digitaalitekniikka (piirit) Luku 7 Sivu 4 (33) Sijoituslauseet 2 Valikoiva (selected) signaalin sijoituslause WITH a SELECT <= '0' WHEN "00", -- 0, kun ittijono a = 00 c WHEN "0", -- c, kun ittijono a = 0 NOT c WHEN "0", -- EI c, kun ittijono a = 0 '' WHEN OTHERS; -- muutoin Usea samaan sijoitukseen johtava ehto voidaan esittää yhdistettyinä käytetään mm. Mooren koneen lähtösignaalien sijoituksessa WITH SELECT <= '' WHEN alku loppu, -- = tiloissa alku ja loppu '0' WHEN OTHERS; -- = 0 kaikissa muissa tiloissa

Digitaalitekniikka (piirit) Luku 7 Sivu 5 (33) Ehdollinen ohjaus: IF- ja CASE-lauseet MUX sel G IF d0 d CASE IF sel = '0' THEN -- valintas. = 0 <= d0; -- :lle d0:n arvo ELSE -- valintas. = <= d; -- :lle d:n arvo END IF; CASE sel IS -- ehtosignaali sel WHEN '0' -- sel = 0 <= d0; -- :lle d0:n arvo WHEN '' -- sel = <= d; -- :lle d:n arvo END CASE;

Digitaalitekniikka (piirit) Luku 7 Sivu 6 (33) Attriuutti Attriuutti (attriute) eli lisämääre liitetään ojektiin ja ilmaisee sen ominaisuuden arvon muoto ojekti'attribute valmiina yli kolmekymmentä, käyttäjä voi määritellä omia synkronisissa sekvenssipiireissä tärkeä attriuutti on 'EVENT käytetään kellosignaalin muutoksen havaitsemiseen -- Nousevalla reunalla liipaistavan D-kiikun nmuutoksen kuvaus IF clk'event AND clk = '' THEN q <= d; END IF; -- kellosignaalin nouseva reuna -- q:n arvoksi d:n arvo

Digitaalitekniikka (piirit) Luku 7 Sivu 7 (33) Prosessi Prosessi (process) Herätesignaalin muutoksen jälkeen tapahtuvat tapahtumat PROCESS (clk) BEGIN IF clk'event AND clk = '' THEN q <= d; END IF; END PROCESS; Ajallisesti peräkkäiset tapahtumat (testipenkin kuvaus) PROCESS BEGIN a <= '0'; <= '0'; WAIT FOR 00 NS; a <= '0'; <= ''; WAIT FOR 00 NS; a <= ''; <= '0'; WAIT FOR 00 NS; a <= ''; <= ''; WAIT; END PROCESS; -- D-kiikku kuvataan prosessina -- kellosign. nouseva reuna -- kiikun ksi d-tulon arvo -- testataan 2-tuloinen portti --. heräte, odotet. 00 ns -- 2. heräte, odotet. 00 ns -- 3. heräte, odotet. 00 ns -- 4. heräte, pysäytetään

Digitaalitekniikka (piirit) Luku 7 Sivu 8 (33) Komponentti ja komponentin asennus Komponentti (component) komponenttimäärittelyä käytetään rakennekuvauksessa erikseen kuvattu suunnitteluyksikkö esitellään komponenttina COMPONENT and2 (a, : IN BIT; : OUT BIT); END COMPONENT; Komponentin asennus (component instantiation) esitellyn komponentin ilmentymä (instance) kytketään suunnitteluyksikön signaaleihin komponenttia voidaan käyttää monta kertaa eri paikoissa eka_and2: and2 MAP (a a,, ); toka_and2: and2 MAP (a a2, 2, 2);

Digitaalitekniikka (piirit) Luku 7 Sivu 9 (33) Suunnitteluyksikön esittely päälohkokaaviosta Laitteen tai piirin päälohkokaavio kuvautuu suunnitteluyksikön esittelyksi:? 5 cold rain onmat Proamuistutin procntr coat umr ENTITY procntr IS IS (( cold, cold, rain, rain, onmat: onmat: IN IN BIT; BIT; coat, coat, umr: umr: OUT OUT BIT); BIT); END ENDprocntr; Jaskan kuppilan supermainos yo hh clk reset mainos mainos herk jask kupp ENTITY mainos mainos IS IS (( yo, yo, hh: hh: IN IN BIT; BIT; clk, clk, reset: reset: IN IN BIT; BIT; herk, herk, jask, jask, kupp: kupp: OUT OUT BIT); BIT); END ENDmainos;

Digitaalitekniikka (piirit) Luku 7 Sivu 20 (33) Kominaatiopiirien määrittelytavat Totuustaulun avulla cold cold rain rain onmat onmat coat coat umr umr 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 C cold rain onmat proamuistuttimen ohjain coat umr Piirikaaviomuodossa Lausekkeina cold onmat & coat coat coat = cold cold onmat onmat umr umr = cold cold rain rain onmat onmat rain & umr

Digitaalitekniikka (piirit) Luku 7 Sivu 2 (33) VHDL-käyttäytymiskuvaus totuustaulusta ENTITY muistutin IS cold cold rain rain onmat onmat coat coat umr umr ( 0 0 0 0 0 0 cold, rain, onmat: IN BIT; 0 0 0 0 0 0 0 coat, umr: OUT BIT); 0 0 END muistutin; 0 0 0 0 0 0 ARCHITECTURE tottaulu OF muistutin IS 0 0 0 0 BEGIN coat <= '' WHEN cold = '' AND rain = '0' AND onmat = '' ELSE '' WHEN cold = '' AND rain = '' AND onmat = '' ELSE '0'; umr <= '' WHEN cold = '0' AND rain = '' AND onmat = '' ELSE '0'; END tottaulu; Käytetään ehdollista signaalin sijoituslausetta

Digitaalitekniikka (piirit) Luku 7 Sivu 22 (33) VHDL-käyttäytymiskuvaus totuustaulusta 2 ENTITY muistutin IS ( cold_rain_onmat: IN BIT_VECTOR (2 DOWNTO 0); coat_umr: OUT BIT_VECTOR ( DOWNTO 0)); END muistutin; ARCHITECTURE tottaulu2 OF muistutin IS BEGIN CASE cold_rain_onmat IS WHEN "000" coat_umr <= "00"; WHEN "00" coat_umr <= "00"; WHEN "00" coat_umr <= "00"; WHEN "0" coat_umr <= "0"; WHEN "00" coat_umr <= "00"; WHEN "0" coat_umr <= "0"; WHEN "0" coat_umr <= "00"; WHEN "" coat_umr <= "0"; END CASE; END tottaulu2; cold cold rain rain onmat onmat coat coat umr umr 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Käytetään CASElausetta CASE-

Digitaalitekniikka (piirit) Luku 7 Sivu 23 (33) VHDL-käyttäytymiskuvaus lausekkeista? 6 ENTITY muistutin IS ( cold, rain, onmat: IN BIT; coat, umr: OUT BIT); END muistutin; coat coat = cold cold onmat onmat umr umr = cold cold rain rain onmat onmat ARCHITECTURE lauseke OF muistutin IS BEGIN coat <= cold AND onmat; umr <= NOT cold AND rain AND onmat; END lauseke; Käytetään signaalin sijoituslausetta Piirikaaviosta saadaan VHDL-rakennekuvaus, jota käsitellään lähemmin sivulta 28 alkaen.

Digitaalitekniikka (piirit) Luku 7 Sivu 24 (33) Puolisummaimen VHDL-käyttäytymiskuvaus Lisä ENTITY puolisummain IS ( p, q: IN BIT; s, c: OUT BIT); END puolisummain; ARCHITECTURE tottaulu OF puolisummain IS BEGIN s <= '' WHEN p = '0' AND q = '' ELSE '' WHEN p = '' AND q = '0' ELSE '0'; c <= '' WHEN p = '' AND q = '' ELSE '0'; END tottaulu; ARCHITECTURE lauseke OF puolisummain IS BEGIN s <= p XOR q; s = p q c <= p AND q; c = p q END lauseke; Kaksi Kaksi erilaista arkkitehtuurituuria p q c s 0 0 0 0 0 0 0 0 0 Toteutus voi voi olla olla erilainen

Digitaalitekniikka (piirit) Luku 7 Sivu 25 (33) Synkronisen sekvenssipiirin käyttäytymiskuvaus ASM-kaavio kuvautuu VHDLkäyttäytymisarkkitehtuuriksi Esimerkki: Jaskan kuppilan supermainos Mealyn koneena reset ei h hj hjk herk hh jask kupp herk, jask hh kupp herk, jask kupp yo 0 0 0 ARCHITECTURE toiminta OF mainos IS TYPE tyyppi IS (ei, h, hj, hjk); -- tyyppimäärittely SIGNAL : tyyppi; -- esitellään signaali BEGIN PROCESS (reset, clk) -- ASM:n nmuutokset kuv. prosess. BEGIN IF reset = '' THEN -- kiikkujen nollaus reset-signaalilla <= ei; ELSIF clk'event AND clk = '' THEN -- kellop. nous. reuna CASE IS -- nmuutokset kuvataan CASE-lauseella <= hjk; END IF; END CASE; END IF; END PROCESS; herk <='0' WHEN = ei ELSE ''; -- lähtösign. sijoitukset jask <='0' WHEN = ei OR ( = h AND hh = '0') ELSE ''; kupp<='' WHEN = hjk OR ( = h AND hh = '') OR ( = hj AND hh = '') ELSE '0'; END toiminta; Tilanmuutokset WHEN ei -- sta ei siirrytään an h <= h; WHEN h -- sta h siirrytään an hj <= hj; WHEN hj -- sta hj siirrytään an hjk <= hjk; WHEN hjk -- sta hjk siirtyminen IF yo = '0' THEN -- nmuutokseen vaikuttava <= ei; -- päätöslohko kuvataan IF- ELSE -- lauseella Määrittelyt Lähdöt

Digitaalitekniikka (piirit) Luku 7 Sivu 26 (33) Tilanmuutosten kuvaaminen, esimerkkejä s0 s CASE CASE IS IS WHEN s0 WHEN s0 <= <= s; s; END CASE; END CASE; s0? 7 s0 s s0 s in 0 in 0 in2 0 s2 s2 CASE IS CASE IS WHEN WHEN s0 s0 IF in = '0' THEN IF in = '0' THEN <= s; <= s; ELSE ELSE <= s2; s <= s2; END IF; END IF; END END CASE; CASE; CASE CASE IS IS WHEN WHEN s0 s0 IF IF in in = = '' '' THEN THEN <= <= s0; s0; ELSIF ELSIF in2 in2 = = '0' '0' THEN THEN <= <= s; s; ELSE ELSE <= <= s2; s2; END END IF; IF; END END CASE; CASE; 0 in in2 0 in2 0 s2 s3 CASE CASE IS IS WHEN WHEN s0 s0 IF IF in in = = 0' 0' AND AND in2 in2 = = '0' '0' THEN THEN <= <= s; s; ELSIF ELSIF in in = = 0' 0' AND AND in2 in2 = = '' '' THEN THEN <= <= s0; s0; ELSIF ELSIF in in = = ' ' AND AND in2 in2 = = '0' '0' THEN THEN <= <= s2; s2; ELSE ELSE <= <= s3; s3; END IF; END IF; END END CASE; CASE;

Digitaalitekniikka (piirit) Luku 7 Sivu 27 (33) Lähtösignaalien kuvaaminen Valikoiva signaalin sijoituslause voidaan käyttää, kun lähtösignaali esiintyy vain lohkoissa sopii erityisesti Mooren koneisiin, joissa on paljon tiloja voidaan käyttää myös Mealyn koneen ehdottomille lähdöille? 8 s0 s s2 0 0 out2 out2 s3 s4 out out, out2 WITH WITH SELECT SELECT out out <= <= '' '' WHEN WHENs3 s3 s4, s4, '0' '0' WHEN WHEN OTHERS; OTHERS; WITH WITH SELECT SELECT out2 out2 <= <= '' '' WHEN WHENs s s2 s2 s4, s4, '0' '0' WHEN WHEN OTHERS; OTHERS; WITH WITH SELECT SELECT out out <= <= '' '' WHEN WHENs3 s3 s4, s4, '0' '0' WHEN WHEN OTHERS; OTHERS; WITH WITH SELECT SELECT out2 out2 <= <= '0' '0' WHEN WHENs0 s0 s3, s3, '' '' WHEN WHEN OTHERS; OTHERS;

Digitaalitekniikka (piirit) Luku 7 Sivu 28 (33) Lähtösignaalien kuvaaminen 2 Ehdollinen signaalin sijoituslause soveltuu kaikkiin tapauksiin välttämätön ehdollisille lähdöille Mealyn koneissa lähtösignaali pelkästään ehdollisissa lähtölohkoissa lähtösignaali sekä lohkoissa että ehdollisissa lähtölohkoissa sopii hyvin myös ehdottomille lähdöille, jos tiloja on vähän? 9 s0 s out in 0 in2 0 out3 out3 s2 out2 out2 out out out <= <= '' '' WHEN WHEN = s0 s0 ELSE ELSE '' '' WHEN WHEN = s2 s2 ELSE ELSE '0'; '0'; out2 out2 <= <= '' '' WHEN WHEN = s0 s0 AND ANDin in = '' '' ELSE ELSE '' '' WHEN WHEN = s0 s0 AND ANDin in = '0' '0' AND ANDin2 in2 = '' '' ELSE ELSE '0'; '0'; out3 out3 <= <= '' '' WHEN WHEN = s s ELSE ELSE '' '' WHEN WHEN = s0 s0 AND ANDin in = '0' '0' AND ANDin2 in2 = '0' '0' ELSE ELSE '0'; '0';

Digitaalitekniikka (piirit) Luku 7 Sivu 29 (33) Rakennekuvaus Rakennekuvaus vastaa piiri- tai lohkokaaviota esitellään komponentit COMPONENT-lauseilla komponenteilla on erilliset toiminnalliset tai rakennekuvaukset näihin viitataan komponentin nimillä esitellään sisäiset signaalit kuvataan komponenttien liittyminen portteihin ja sisäisiin signaaleihin esimerkkinä kokosummaimen rakennekuvauksen arkkitehtuuriosa porteilla toteutettuna

Digitaalitekniikka (piirit) Luku 7 Sivu 30 (33) p q cin? 0 Rakennekuvaus 2 a a a a u = u2 & u3 & u4 & u u2 u3 u4 a a c u5 = u6 Kokosummain s cout ARCHITECTURE ARCHITECTURE rakenne rakenne OF OF kokosummain kokosummain IS IS COMPONENT COMPONENT ex_or ex_or (a, (a, : : IN IN BIT; BIT; : : OUT OUT BIT); BIT); END END COMPONENT; COMPONENT; COMPONENT COMPONENT and_2 and_2 (a, (a, : : IN IN BIT; BIT; : : OUT OUT BIT); BIT); END END COMPONENT; COMPONENT; COMPONENT COMPONENT or_3 or_3 (a, (a,,, c: c: IN IN BIT; BIT; : : OUT OUT BIT); BIT); END END COMPONENT; COMPONENT; SIGNAL SIGNAL u, u, u2, u2, u3, u3, u4: u4: BIT; BIT; BEGIN BEGIN u: u: ex_or ex_or MAP MAP (a (a p, p, q, q, u); u); u2: u2: and_2 and_2 MAP MAP (a (a p, p, q, q, u2); u2); u3: u3: and_2 and_2 MAP MAP (a (a p, p, cin, cin, u3); u3); u4: u4: and_2 and_2 MAP MAP (a (a q, q, cin, cin, u4); u4); u5: u5: ex_or ex_or MAP MAP (a (a u, u, cin, cin, s); s); u6: u6: or_3 or_3 MAP MAP (a (a u2, u2, u3, u3, c c u4, u4, cout); cout); END END rakenne; rakenne;

Digitaalitekniikka (piirit) Luku 7 Sivu 3 (33) VHDL-kuvauksen testaus VHDL-kuvauksen testaus simulaattoriohjelmalla esim. VHDL Simili -ilmaisohjelma ladattavissa verkosta käytetään yleensä apuna testipenkkiä (test ench) myös testipenkki on VHDL-kuvaus Testipenkki Herätteet Testigeneraattori ja ja Testi- vasteanalysaattori (myös (myös vaste- VHDL-kuvaus)... Vasteet... Testattava VHDL-kuvaus (UUT) (UUT) esimerkkinä 2-tuloisen JA-portin testipenkki

Digitaalitekniikka (piirit) Luku 7 Sivu 32 (33) VHDL-kuvauksen testaus 2 Testigengen. Testi- VHDL VHDL Testipenkki at a t && t UUT ENTITY ENTITYtestipenkki IS IS -- --suunnitteluyksikön esittely esittely END ENDtestipenkki; -- --suunnitteluyksikössä suunnitteluyksikössäei ei ole ole ulkoisia ulkoisia signaaleja signaaleja ARCHITECTURE ARCHITECTUREtestaus OF OFtestipenkki IS IS -- --VHDL-arkkitehtuuri COMPONENT COMPONENTand_2 IS IS -- --esitellään testattava testattava piiri piiri and_2 and_2 komponenttina komponenttina (a, (a, : : IN IN BIT; BIT; : : OUT OUT BIT); BIT); END END COMPONENT; COMPONENT; CONSTANT CONSTANTjakso: TIME:= TIME:= 00 00 ns; ns; -- --määritellään simulointijakso simulointijakso SIGNAL SIGNALat, at, t, t, t: t: BIT; BIT; -- --esitellään sisäiset sisäiset signaalit signaalit BEGIN BEGIN UUT: UUT: and_2 and_2 MAP MAP -- --kytketään testattava testattava piiri piiri UUT UUT (and_2) (and_2) (a (a at, at, t, t, t); t); -- --testigeneraattoriin herate: herate: PROCESS PROCESS BEGIN BEGIN -- --käynnistetään testaus testaus at at <= <= '0'; '0'; t t <= <= '0'; '0'; WAIT WAIT FOR FORjakso; -- --ensimmäinen heräte: heräte: at at = t t = 0 at at <= <= '0'; '0'; t t <= <= ''; ''; WAIT WAIT FOR FORjakso; -- --toinen heräte: heräte: at at = 0, 0, t t = at at <= <= ''; ''; t t <= <= '0'; '0'; WAIT WAIT FOR FORjakso; -- --kolmas heräte: heräte: at at =,, t t = 0 at at <= <= ''; ''; t t <= <= ''; ''; WAIT; WAIT; -- --neljäs heräte: heräte: at at = t t = END END PROCESS PROCESSherate; -- --lopetetaan testaus testaus END ENDtestaus;

Digitaalitekniikka (piirit) Luku 7 Sivu 33 (33) Yhteenveto VHDL VHDLon on Suomessa eniten eniten käytetty laitteiston kuvauskieli VHDL-kuvauksen perusosat ovat ovat suunnitteluyksikön esittely ja ja VHDLarkkitehtuuri VHDL-arkkitehtuuri on on joko joko käyttäytymis- tai tai rakennekuvaus VHDL-kielessä käytetään kommentteja, tunnisteita ja ja ojekteja Keskeisiä tyyppejä ovat ovat itti, itti, standardilogiikka, merkki, merkkijono ja ja VHDL- enumeroitu tyyppi tyyppi VHDL-kielessä käytetään erilaisia operaattoreita Signaalille tai tai portille portille annetaan arvo arvo sijoituslauseella Ehdolliseen ohjaukseen voidaan käyttää käyttääif- IF-ja ja CASE-lauseita Piirin Piirin päälohkokaavio kuvautuu suunnitteluyksikön esittelyksi Kominaatiopiirin toiminnallinen kuvaus kuvaus tehdään sijoituslauseella ASM-kaavion siirtymät kuvataan CASE-lauseella ja ja lähtösignaalit sijoituslauseilla Rakennekuvaus vastaa vastaa piiri- piiri-tai tai lohkokaaviota VHDL-kuvauksen testaamiseen käytetään testipenkkiä