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ä