1 / 32

VHDL-kieli

VHDL-kieli. Standardoitujen kuvauskielten kytn perusteetRiippumattomuus piirivalmistajista. sama kuvaus voidaan toimittaa usealle eri piirivalmistajalle (ainakinperiaatteessa).Riippumattomuus suunnittelutykaluista. stardardimuotoinen tekstitiedosto voidaan helposti siirtsuunnitteluty

kyne
Download Presentation

VHDL-kieli

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


    1. VHDL-kieli Johdanto 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ä. • 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.

    2. VHDL-kieli 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.

    3. VHDL-kieli VHDL = VHSIC Hardware Description Language • VHSIC = Very High Speed Integrated Circuit (USA:n DoD:n hanke) Alkuperäinen versio IEEE 1076-1987 vuonna 1987 Päivitys versioksi IEEE 1076-1993 vuonna 1993 Kehitystyö jatkuu 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

    4. VHDL-kieli VHDL-suunnittelussa on tavoitteena saada aikaan VHDL-malli. VHDL-kieli on täysin simuloituvaa, mutta ei täysin syntesoituvaa. -osaa kielen rakenteista ei pystytä toteuttamaan piiritasolla. Malli voi kuvata: - VHDL-komponenttia, - kokonaista ASIC/FPGA piiriä, - piirikorttia - tai korttien muodostamaa järjestelmää, - tai se voi olla niin sanottu testipenkki. VHDL-malli on tekstiä (merkkijono), joka kirjoitetaan tekstinkäsittelyohjelman avulla.

    5. VHDL-kieli VHDL-mallin rakenne 1. Entity Declaration (primary) Suunnitteluyksikön esittely 2. Package Declaration (primary) Kokoelman esittely 3. Configuration Declaration (p) Kokoonpanon esittely 4. Architecture (secondary) VHDL-arkkitehtuuri 5. Package Body (secondary) Kokelman ydin. Entity Declaration on kirjastoyksikkö, jossa määritellään mallinnetun logiikan liittyminen ympäristöönsä, liittimen kuvaus Architecture on kirjastoyksikkö, jossa määritellään varsinainen mallinnettava logiikka Design Unit = Entity + Architecture on kokonaisuus, jota voidaan simuloida.

    6. VHDL-kieli Yksinkertaisin malli Mallissa on Entity + Architecture = yksi suunnitteluyksikkö Simuloitava VHDL-malli voidaan aina esittää tässä muodossa. Esim. AND-portti VHDL-kielellä.

    7. VHDL-kieli Esim. Nand-portti. ENTITY nand2 IS PORT ( a: IN BIT; b: IN BIT; f: OUT BIT); END nand2; ARCHITECTURE behavior OF nand2 IS BEGIN f <= a NAND b; END behavior;

    8. VHDL-kieli Kommentti, varattu sana ja tunniste Kommentti (COMMENT) • rivi tai rivin osa, joka alkaa -- (kaksi tavuviivaa) on kommentti -- Ulkoisten tulosignaalien esittely PORT (in1, in2, clk, reset): IN BIT; -- kaikkien tulosignaalien tyyppi BIT Varattu sana ja tunniste Avainsanat (keyword) ja operaattorit (operator) ovat varattuja sanoja tunnisteet (identifier) 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: IN1 = in1 = In1 PORT, IN, NAND ovat varattuja sanoja in1, nand2, toiminta ovat tunnisteita

    9. VHDL-kieli Varatut sanat: abs access after alias all and architecture array assert attribute begin block body buffer bus case component configuration constant disconnect downto else elsif end entity exit file for function generate generic guarded if impure in inertial inout is label library linkage literal loop map mod nand new next nor not null of on open or others out package port postponed process pure range record register reject rem report return rol ror select severity shared signal sla sll sra srl subtype then to transport type unaffected units until use variable wait when while with xnor xor

    10. VHDL-kieli Objekti Objekteja ovat portit, signaalit, muuttujat ja vakiot. Portti (PORT) on suunnitteluyksikön tulo- tai lähtösignaali. Signaali (SIGNAL) on suunnitteluyksikön sisäinen signaali. PORT (in1, in2, clk, reset: IN BIT; -- tulosignaalit outa, outb, outc: OUT BIT); -- lähtösignaalit SIGNAL sis1, sis2, sis3: BIT; -- sisäiset signaalit Muuttuja (VARIABLE) on VHDL-kuvauksen sisäinen objekti VARIABLE p, q, sum: INTEGER; -- kolme kokonaislukumuuttujaa Vakio (CONSTANT) on nimetty objekti, jolle on annettu vakioarvo CONSTANT arvo0: STRING := "00"; -- vakion arvo0 arvo on jono "00"

    11. VHDL-kieli Tyyppi Tyyppi (TYPE) määrittelee objektin (esimerkiksi signaalin tai muuttujan) arvot VHDL-kielen keskeisiä tyyppejä

    12. VHDL-kieli Bittijonon pituus ja kokonaisluvun arvoalue Bittijonon bittien lukumäärä ja numerointi BIT_VECTOR (1 TO 8); -- 8-bittinen bittijono, bitit 1…8 BIT_VECTOR (8 DOWNTO 1); -- 8-bittinen bittijono, bitit 8…1 Yksittäiseen bittiin viitataan sen numerolla eli indeksillä SIGNAL bj: BIT_VECTOR (8 DOWNTO 1); -- 8-bittinen bittijono bj bj(8) <= '0'; bj(1) <= '1'; -- sijoitetaan 1. bitille arvo '0' ja 8. bitille '1‘ Kokonaisluvun arvoalue esitetään antamalla sen rajat INTEGER RANGE 0 TO 255; -- etumerkitön 8-bittinen luku INTEGER RANGE 127 DOWNTO -128; -- 2:n kompl.-muot. 8-bittinen luku

    13. VHDL-kieli Enumeroitu tyyppi ja operaattori Enumeroitu tyyppi on käyttäjän itse määrittelemä tyyppi arvot tunnisteita, merkkejä tai merkkijonoja käytetään esimerkiksi sekvenssipiirien toiminnallisissa kuvauksissa tilojen määrittelyyn -- Nelitilaisen sekvenssipiirin tilat ovat alku, vali1, vali2 ja loppu TYPE tilatyyppi IS (alku, vali1, vali2, loppu); • Operaattori (operator) • 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

    14. VHDL-kieli Sijoituslauseet 1 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 <= '1'; -- sijoitetaan signaalille a vakioarvo 1 f <= a OR (b AND c); -- sijoitetaan signaalin f arvoksi lausekkeen arvo • Ehdollinen (conditional) signaalin sijoituslause f <= '0' WHEN a = '0' AND b = '0' ELSE -- 0, kun a = b = 0 c WHEN a = '0' AND b = '1' ELSE -- c, kun a = 0 ja b = 1 NOT c WHEN a = '1' AND b = '0' ELSE -- EI c, kun a = 1 ja b = 0 '1'; -- 1 muutoin

    15. VHDL-kieli Sijoituslauseet 2 • Valikoiva (selected) signaalin sijoituslause WITH ab SELECT f <= '0' WHEN "00", -- 0, kun bittijono ab = 00 c WHEN "01", -- c, kun bittijono ab = 01 NOT c WHEN "10", -- EI c, kun bittijono ab = 10 '1' WHEN OTHERS; -- 1 muutoin • Usea samaan sijoitukseen johtava ehto voidaan esittää yhdistettyinä • käytetään mm. Mooren koneen lähtösignaalien sijoituksessa WITH tila SELECT f <= '1' WHEN alku | loppu, -- f = 1 tiloissa alku ja loppu '0' WHEN OTHERS; -- f = 0 kaikissa muissa tiloissa

    16. VHDL-kieli Ehdollinen ohjaus: IF- ja CASE-lauseet

    17. VHDL-kieli Attribuutti • Attribuutti (attribute) eli lisämääre • liitetään objektiin ja ilmaisee sen ominaisuuden arvon • muoto objekti'ATTRIBUTE • valmiina yli kolmekymmentä, käyttäjä voi määritellä omia • synkronisissa sekvenssipiireissä tärkeä attribuutti on 'EVENT • käytetään kellosignaalin muutoksen havaitsemiseen -- Nousevalla reunalla liipaistavan D-kiikun tilanmuutoksen kuvaus IF clk'EVENT AND clk = '1' THEN -- kellosignaalin nouseva reuna q <= d; -- q:n arvoksi d:n arvo END IF;

    18. VHDL-kieli Prosessi (process) • Herätesignaalin muutoksen jälkeen tapahtuvat tapahtumat PROCESS (clk) -- D-kiikku kuvataan prosessina BEGIN IF clk'EVENT AND clk = '1' THEN -- kellosign. nouseva reuna q <= d; -- kiikun tilaksi d-tulon arvo END IF; END PROCESS; • Ajallisesti peräkkäiset tapahtumat (testipenkin kuvaus) PROCESS -- testataan 2-tuloinen portti BEGIN a <= '0'; b <= '0'; WAIT FOR 100 NS; -- 1. heräte, odotet. 100 ns a <= '0'; b <= '1'; WAIT FOR 100 NS; -- 2. heräte, odotet. 100 ns a <= '1'; b <= '0'; WAIT FOR 100 NS; -- 3. heräte, odotet. 100 ns a <= '1'; b <= '1'; WAIT; -- 4. heräte, pysäytetään END PROCESS;

    19. VHDL-kieli Yksinkertainen esimerkki prosessista: Com_XOR: process (b,c) begin a<= b xor c; end process; - Com_XOR on prosessin nimi - Sana process aloittaa prosessin määrittelyn (b,c) on ns. sensitivity list. Tämä tarkoittaa, että jos b:ssä tai c:ssä tapahtuu muutoksia, niin lähtö a arvioidaan uudelleen. Sulkujen sisällä olevat signaalit kertovat minkä signaalien muutosten jälkeen uudelleen arviointi tehdään. Uudelleen arviointi tehdään siten, että jokainen toiminto sanojen begin ja end välillä tehdään uudelleen. Prosessi on vain kuvaus siitä, mitä tulisi tapahtua lohkon sisällä.

    20. VHDL-kieli Signaalin attribuutit s’EVENT palauttaa tosiarvon (true) kun tapahtuma tapahtuu s’STABLE: palauttaa tosiarvon kun signaalissa ei ole tapahtunut tapahtumaa s’ACTIVE: palauttaa tosiarvon jos s=’1’ s’QUIET <time>palauttaa tosiarvon jos signaalissa ei ole tapahtunut mitään ajan time aikana s’LAST_EVENT palauttaa ajan edellisestä tapahtumasta s’LAST_ACTIVE: palauttaa ajan edellisestä kerrasta kun s=’1’ s’LAST_VALUE: palauttaa s:n tapahtumaa edeltäneen arvon

    21. VHDL-kieli Komponentti ja komponentin asennus • Komponentti (component) • komponenttimäärittelyä käytetään rakennekuvauksessa • erikseen kuvattu suunnitteluyksikkö esitellään komponenttina COMPONENT and2 PORT (a, b: IN BIT; f: OUT BIT); END COMPONENT • Komponentin asennus (component instantiation) • esitellyn komponentin ilmentymä kytketään suunnitteluyksikön signaaleihin • komponenttia voidaan käyttää monta kertaa eri paikoissa eka_and2: and2 PORT MAP (a => a1, b => b1, f => f1); toka_and2: and2 PORT MAP (a => a2, b => b2, f => f2);

    22. VHDL-kieli Esimerkki signaalin attribuuteista IF (clk'EVENT AND clk='1') IF (NOT clk'STABLE AND clk='1') WAIT UNTIL (clk'EVENT AND clk='1'); IF RISING_EDGE(clk) Kaikki yllä olevat ovat samalla tavalla syntesoituvia koodeja. (Eli odottavat kellon nousevaa reunaa.)

    23. VHDL-kieli Suunnitteluyksikön esittely päälohkokaaviosta Laitteen tai piirin päälohkokaavio kuvautuu suunnitteluyksikön esittelyksi:

    24. VHDL-kieli

    25. VHDL-kieli VHDL-käyttäytymiskuvaus totuustaulusta ENTITY muistutin IS PORT ( cold, rain, onmat: IN BIT; coat, umbr: OUT BIT); END muistutin; ARCHITECTURE tottaulu OF muistutin IS BEGIN coat <= '1' WHEN cold = '1' AND rain = '0' AND onmat = '1' ELSE '1' WHEN cold = '1' AND rain = '1' AND onmat = '1' ELSE '0'; umbr <= '1' WHEN cold = '0' AND rain = '1' AND onmat = '1' ELSE '0'; END tottaulu;

    26. VHDL-kieli VHDL-käyttäytymiskuvaus lausekkeista ENTITY muistutin IS PORT ( cold, rain, onmat: IN BIT; coat, umbr: OUT BIT); END muistutin; ARCHITECTURE lauseke OF muistutin IS BEGIN coat <= cold AND onmat; umbr <= NOT cold AND rain AND onmat; END lauseke;

    27. VHDL-kieli

    28. VHDL-kieli ENTITY - Kaikki I/O-rajapinnan pinnien määrittelyt - MODE - in, out, inout, buffer - TYPE - bit, std_logic, integer, …

    29. VHDL-kieli SEKVENSSIPIIRIT • Sekvenssipiirin lähtösignaalien arvot riippuvat piirin tilasta • piirin alkutilasta • tulosignaalien historiasta Lähtösignaalien arvot voivat riippua myös tulosignaaleiden nykyisistä arvoista • Sekvenssipiiri tallettaa ja muistaa oman tilansa ‘• Sekvenssipiirissä on sisäisiä takaisinkytkentöjä •Kaksi päätyyppiä: • asynkroniset sekvenssipiirit • synkroniset sekvenssipiirit Asynkroninen sekvenssipiiri vaihtaa tilaansa tulosignaalin muuttuessa Synkroninen sekvenssipiiri vaihtaa tilaansa erityisen tulosignaalin - kellosignaalin - tahdissa

    30. VHDL-kieli SR-salpa • SR-salpa (S = Set, R = Reset) on yksinkertaisin sekvenssipiiri • Se voidaan toteuttaa joko TAI-EI-porteilla (SR-salpa) tai JA-EI-porteilla • SR-salpa asetetaan S-tulolla ja nollataan R-tulolla • Tulosignaaliyhdistelmä S = R = 1 on kielletty entity srlatch is Port ( s : in STD_LOGIC; r : in STD_LOGIC; q : buffer STD_LOGIC; qnot : buffer STD_LOGIC); end srlatch; architecture Behavioral of srlatch is begin q <= '0' when r = '1' else '1' when s = '1' else q; qnot <= '1' when r = '1' else '0' when s = '1' else qnot; end Behavioral;

    31. VHDL-kieli Kellotulolla varustettu D-kiikku entity dkiikku is port ( d : in STD_LOGIC; clk : in STD_LOGIC; q : out STD_LOGIC); end dkiikku; architecture Behavioral of dkiikku is begin p0: process (clk) is begin if (clk = '1') then q <= d; end if; end process p0; end Behavioral;

    32. VHDL-kieli D-kiikku resetillä ja setillä. ENTITY dff_asynch IS PORT( D, Clk, Clr, Pre : IN STD_LOGIC; Q, Qbar : OUT STD_LOGIC); END dff_asynch; ARCHITECTURE behavioral OF dff_asynch IS BEGIN PROCESS(D, Clk, Clr, Pre) BEGIN IF Clr = '0' THEN -- Don’t wait for clock Q <= '0'; Qbar <= '1'; ELSIF Pre = '0' THEN Q <= '1'; Qbar <= '0'; ELSIF (Clk'event) AND (Clk='1') THEN -- Positive Edge Q <= D; Qbar <= not D; END IF; END PROCESS; END behavioral;

    33. VHDL-kieli Laskuri entity counter is generic(n: natural :=2); port( clock: in std_logic; clear: in std_logic; count: in std_logic; Q: out std_logic_vector(n-1 downto 0) ); end counter; architecture behv of counter is signal Pre_Q: std_logic_vector(n-1 downto 0); begin -- behavior describe the counter process(clock, count, clear) begin if clear = '1' then Pre_Q <= Pre_Q - Pre_Q; elsif (clock='1' and clock'event) then if count = '1' then Pre_Q <= Pre_Q + 1; end if; end if; end process; Q <= Pre_Q; end behv;

More Related