1 / 47

VHDL

VHDL. V ery High Speed H ardware D escription L anguage Vývoj VHDL jazyka bol iniciovaný Americkým ministerstvom obrany. Požadovali vyvinúť jazyk, ktorým by sa dala popísať funkcia (správanie sa) hardvéru a ktorý by bol zrozumiteľný pre ľudí a aj počítače. Medzinárodné štandardy

thanos
Télécharger la présentation

VHDL

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 • Very High Speed Hardware Description Language • Vývoj VHDL jazyka bol iniciovaný Americkým ministerstvom obrany. Požadovali vyvinúť jazyk, ktorým by sa dala popísať funkcia (správanie sa) hardvéru a ktorý by bol zrozumiteľný pre ľudí a aj počítače. • Medzinárodné štandardy • IEEE Std 1076-1987 • IEEE Std 1076-1993 • Analógovo/číslicové rozšírenie: VHDL-AMS • Analogue Mixed Signal • IEEE Std 1076.1-1999 VHDL_1, Ján Butaš, FEI STU, KME

  2. Aplikácia HDL • HDL Modelovanie • Tvorba modelu systému pomocou HDL. • Simulácia • Syntéza • Existujúce nástroje syntézy sú schopné mapovať špecifické VHDL konštrukcie priamo na opis na úrovni hradiel. • Neexistuje štandard pre syntézu Z A[1:0] Z<=‘1’ when A=“01” else ‘0’ A[1] A[0] Z A[1] NOR Z A[0] NOT VHDL_1, Ján Butaš, FEI STU, KME

  3. VýhodyVHDL • Automatizovaný návrh • Opätovné použitie popísaných častí systému • Technologická nezávislosť • Viacej menej technologicky nezávislýopis systému model Blok B model Blok C model Blok A Projekt ASIC Project FPGA A B C A B VHDL_1, Ján Butaš, FEI STU, KME

  4. Postup návrh číslicového obvodu(FPGA, VHDL) • Knižnica hradiel •  AND •  NAND • ……… • Parametre hradiel • V/V vetvenie • oneskorenie • Plocha Požiadavky na syntézu Špecifikácia Vstupné stimuly VHDL model VHDL Simulácia Syntéza Popis na hradlovej úrovni Vstupné stimuly Uživateľské požiadavky na implementáciu VHDL Simulácia Implementácia do FPGA VHDL_1, Ján Butaš, FEI STU, KME

  5. Úrovne abstrakcie Popis blokov RTL syntéza Rýchla simulácia RTL Logická syntéza logická Uloženie a prepojenia Presnejšia simulácia Topografia VHDL_1, Ján Butaš, FEI STU, KME

  6. VHDL koncept • Spracovávanie priradení • Sekvenčné výrazy (priradenie)sú spracovávané jeden za druhým, tak ako v klasických programovacích jazykoch (C, Pascal, ...). Preto nasledujúci výraz anuluje (zruší, nahradí) predchádzajúci výraz. Poradie v akom sú zapísané tieto výrazy má svoj význam a musíme ho brať do úvahy. • Paralelné výrazy (priradenia)sú vykonávané súčastne, preto poradie v akom sú zapísané tieto výrazy je nepodstatné. Paralelné výrazy sú vhodné na modelovanie hárdveru, ktorý je prirodzene paralelný. • Techniky modelovania • Rôzne úrovne abstrakcie: dovoľuje modelovať rozličné časti navrhovaného systému s rôznym stupňom detailného popisu. Časti ktoré sú určené iba pre simuláciu nepotrebujú byť popísané veľmi detailne a naopak časti ktoré sú určené pre syntézu môžu byť popísané detailnejšie. • Modulárnosť umožňuje návrhárovi rozložiť zložitejšie veľké funkčné bloky na menšie a popísať každý blok zvlášť. • Hierarchický návrhumožňuje návrhárovi navrhnúť obvod s už navrhnutých podobvodov a pritom každý podobvod môže obsahovať ďalšie podobvody. VHDL_1, Ján Butaš, FEI STU, KME

  7. VHDL Syntax • Všeobecné pravidlá • Nerozlišuje sa medzi malými a veľkými písmenami • Komentár: ‘--’ až po koniec riadku • Výrazy • Ukončujú sa ‘;’ • Môžu byť rozložené na viacerých riadkoch • Oddelenie zoznamov : ‘,’ • Priradenie do signálu : ‘<=’ • Priradenie do premenej : ‘:=’ • Užívateľom definované mená, identifikátory • písmená, číslice, _ • Vždy sa musí začínať písmenom VHDL_1, Ján Butaš, FEI STU, KME

  8. Hlavné objekty vo VHDL • Entity(Entita) : Popis rozhrania navrhovaného bloku • Architecture (Architektúra): • Štrukturálny popis : vnútorné zapojenie obvodu • Funkčný popis : pomocou výrazov definované vzťahy medzi vstupmi a výstupmi • Process (Proces): • Výrazy vo VHDL sú vo všeobecnosti vykonávané paralelne. Ak chceme aby nejaká skupina výrazov bola vykonávaná sekvenčne tak ju „vložíme“ do procesu. Kód obsiahnutý v procese nie je vždy vyhodnocovaný ale čaká na konkrétne podmienky aktivácie. • Package (Balík): • Obsahuje definície typov, konštánt, podprogramov a procedúr, ktoré sa používajú na rôznych miestach projektu. Vo všeobecnosti umožňuje sprehľadnenie zapísaného kódu rozsiahlejšieho projektu. • Library (Knižnica) : • Je adresár v ktorom sú uložené skompilované časti VHDL kódu. VHDL_1, Ján Butaš, FEI STU, KME

  9. Entity (Entita) Architecture (Architektúra) Process/Subprogram (Proces/Podpogram) Package (Balík) Subprogram (Podprogram) x x x x Component (Komponent) x x Configuration (Konfigurácia) x Constant (Konštanta) x x x x Data type (Dátový typ) x x x x Port (Port) x Signal (Signál) x x x Variable (Premenná) x Umiestnenie deklarácií VHDL objektov VHDL_1, Ján Butaš, FEI STU, KME

  10. Entita A B Syntax entitymeno_entityis port(zoznam_v/v signálov); end entitymeno_entity; HA Príklad entity HA is port ( A, B :in bit; sum, carry: out bit); end entity HA; carry sum Čo je vo vnútri ? Ako sa nám tento blok chová ? VHDL_1, Ján Butaš, FEI STU, KME

  11. Vždy patrí ku konkrétnej entite Jedna entitamôže mať viacej architektúr Porty definované v entitesú viditeľné vo vnútri architektúry a pracuje sa s nimi podobne ako s lokálnymi signálmi Obsahuje paralelné výrazy procesy Architektúra Syntax architecturemeno_archofmeno_entityis deklarácie; begin opis správania; end[ architecture ] [ meno_arch ]; Example architectureConcurrentofHalfAdderis begin sum <= A xor B; carry <= A and B; endarchitectureHalfAdder; VHDL_1, Ján Butaš, FEI STU, KME

  12. Architecture architectureMenoArchofMenoEntityis begin end[ architecture ] [ MenoArch ]; Dátové typy Konštanty Deklaračná časť Interné signály Deklarácia komponentov Priradenie do signálov Procesy Popis správania Inštancie komponentov Paralelné výrazy (order is not important) !!! VHDL_1, Ján Butaš, FEI STU, KME

  13. Porty - Definícia port ( : ); MenoPortu Mód Typ in out buffer inout VHDL_1, Ján Butaš, FEI STU, KME

  14. in Iba na čítanie out Iba na zápis Viac ovládačov (ale musí byť rezolučný dátový typ) buffer Na zápisa aj na čítanie Iba jeden ovládač Inout Iba na zápis Viac ovládačov (ale musí byť rezolučný dátový typ) Interný signál Nemá smer Porty- módy out Interný signál in buffer inout VHDL_1, Ján Butaš, FEI STU, KME

  15. Porty - Príklady entityTEST2is port(A : out bit; B : in bit); end entityTEST2; entityTEST1is port(A : in bit; B : in bit); end entityTEST1; architectureBEHAVofTEST2is begin A <= B; endarchitectureBEHAV; architectureBEHAVofTEST1is begin A <= B; endarchitectureBEHAV; Object „A“ may not be written !!! Do objektu „A“ nemožno zapisovať !!! OK !!! VHDL_1, Ján Butaš, FEI STU, KME

  16. Porty - Príklady entityTEST4is port(A : out bit; B : buffer bit); end entityTEST4; entityTEST3is port(A : out bit; B : out bit); end entityTEST3; architectureBEHAVofTEST4is begin A <= B; endarchitectureBEHAV; architectureBEHAVofTEST3is begin A <= B; endarchitectureBEHAV; Cannot read output : "B“ !!! Výstup „B“ sa nemôže čítať !!! OK !!! VHDL_1, Ján Butaš, FEI STU, KME

  17. Porty - Príklady entityTEST5is port(A : in bit; B : in bit Q : buffer bit); end entityTEST5; entityTEST6is port(A : in bit; B : in bit Q : out bit); end entityTEST6; architectureBEHAVofTEST5is begin Q <= A; Q <= B; endarchitectureBEHAV; architectureBEHAVofTEST6is begin Q <= A; Q <= B; endarchitectureBEHAV; Signal „Q“ has two sources, but is not resolved signal !!! Signál „Q“ má dva ovládače a pritom nieje rezolučného dátového typu !!! Signal „Q“ has two sources, but is not resolved signal !!! Signál „Q“ má dva ovládače a pritom nieje rezolučného dátového typu !!! VHDL_1, Ján Butaš, FEI STU, KME

  18. Porty - Príklady library ieee; use ieee.std_logic_1164.all; library ieee; use ieee.std_logic_1164.all; entityTEST7is port(A : in bit; B : in bit Q : std_logic); end entityTEST7; entityTEST8is port(A : in std_logic; B : in std_logic; Q : out std_logic); end entityTEST8; architectureBEHAVofTEST7is begin Q <= A; Q <= B; endarchitectureBEHAV; architectureBEHAVofTEST8is begin Q <= A; Q <= B; endarchitectureBEHAV; Assignment target incompatible with right side.!!! Nekompatibilné dátové typy !!! OK!!! VHDL_1, Ján Butaš, FEI STU, KME

  19. Porty - Príklady library ieee; use ieee.std_logic_1164.all; Aká bude hodnota signálu „Q“ ??? entityTEST8is port(A, B : in std_logic; Q : out std_logic); end entityTEST8; architectureBEHAVofTEST8is begin Q <= A; Q <= B; endarchitectureBEHAV; OK!!! VHDL_1, Ján Butaš, FEI STU, KME

  20. Rezolučná tabuľka • ‘U’ Neinicializovaný • ‘X’ Silneneznámi • ‘0’ Silnálogická 0 • ‘1’ Silná logická 1 • ‘Z’ Vysoká impedancia • ‘W’ Slaboneznámi • ‘L’ Slabá logická 0 • ‘H’ Slabá logická 1 • ‘-’ Nevýznamný bit VHDL_1, Ján Butaš, FEI STU, KME

  21. Komponent Deklarácia komponentu componentmeno_komponentuis port(zoznam portov); end component; B A KOMP1 Q2 Q1 Inštancia komponentu Návestie : meno komponentu portmap( meno_portu => meno_signálu, meno_portu => meno_signálu, ); Sig1 Sig2 B A KOMP1 Q2 Q1 Sig3 Sig4 VHDL_1, Ján Butaš, FEI STU, KME

  22. Hierarchický model AND_OR_GATE AND1 D1 A OR1 AND_GATE N1 Q A OR_GATE Y D2 Deklarácia interného signálu B Q D3 B Deklarácie komponentov Inštancie komponentov VHDL_1, Ján Butaš, FEI STU, KME

  23. Štandartné dátové typy • Boolean (false, true) • Bit (‘0’, ‘1’) • Character – ASCI znaky • Integer (-2 147 483 647 to 2 147 483 647) - 32 bits • Real (-1.0E308 to 1.0E308 ) • Bit_vector • Time VHDL_1, Ján Butaš, FEI STU, KME

  24. Bit Typ bit je preddefinovaný v balíku „Standard“ a je to vymenovaný dátový typ. Môže nadobúdať iba dve hodnoty: logickú 0 a logickú 1. type bit is (‘0’, ‘1’); Tento typ nie je možné použiť napríklad na modelovanie trojstavového budiča zbernice. signal A, B : bit; port ( C : in bit ); A <= ‘1’; B <= not A; Boolean signal Cond : boolean; Typ boolean je preddefinovaný v balíku „Standard“ a je to vymenovaný dátový typ. Môže nadobúdať iba dve hodnoty: false a true. type boolean is (false, true); Cond <= true; … If Cond then … If Cond = true then VHDL_1, Ján Butaš, FEI STU, KME

  25. Bit_vector signal DataBus : bit_vector (7 downto 0); signal DataBit : bit; DataBus(0) <= ‘1’; DataBus <= ‘0’&“111000”&FlagC; DataBus <= (‘0’, other => ‘1’); DataBus <= (6 downto 0)&DataBus(7); DataBus <= “01110001”; type bit_vectoris array (natural range <>) of bit; Bit_vector je neohraničený vektor (jeho veľkosť sa ohraničuje pri deklarácii), ktorého jednotlivé prvky sú typu bit. VHDL_1, Ján Butaš, FEI STU, KME

  26. Zápis bitových vektorov Binárny B“11000” Oktálový O“456” Hexadecimálny X“FFA5” Signal A : bit_vector (11 downto 0); A <= B“1011_1100_0011”; A <= B“101111000011”; A <= X“BC3”; A <= X “B_C3”; VHDL_1, Ján Butaš, FEI STU, KME

  27. Integer type integer is range-2 147 483 648 to 2 147 483 647; Dátový typ integer je množina celých čísel v určitom rozsahu. VHDL štandard nedefinuje rozsah pre typ integer. Rozsah je závislý od konkrétneho návrhového prostriedku. Vo väčšine návrhových prostriedkov je jeho rozsah 32 bitov. type Voltage_Level is range 0 to 5; type Int_64K is range -65536 to 65535; subtype subint is integer range 0 to 256; port ( A : in integer range 0 to 256; Q : out integer range 0 to 512 ); VHDL_1, Ján Butaš, FEI STU, KME

  28. Character type character is ( NUL,SOH, STX, ETX, EOT, ENQ, ACK, BEL, BS, HT, LF, VT, FF, CR, SO, SI, DLE, DC1, DC2, DC3, DC4, NAK, SYN, ETB, CAN, EM, SUB, ESC, FSP, GSP, RSP, USP, ‘ ’, ‘!’, ‘”’, ‘#’, ‘$’, ‘%’, ‘&’, ‘’’, ‘(’, ‘)’, ‘*’, ‘+’, ‘,’, ‘-’, ‘.’, ‘/’, ‘0’, ‘1’, ‘2’, ‘3’, ‘4’, ‘5’, ‘6’, ‘7’, ‘8’, ‘9’, ‘:’, ‘;’, ‘<’, ‘=’, ‘>’, ‘?’, ‘@’, ‘A’, ‘B’, ‘C’, ‘D’, ‘E’, ‘F’, ‘G’, ‘H’, ‘I’, ‘J’, ‘K’, ‘L’, ‘M’, ‘N’, ‘O’, ‘P’, ‘Q’, ‘R’, ‘S’, ‘T’, ‘U’, ‘V’, ‘W’, ‘X’, ‘Y’, ‘Z’, ‘[’, ‘\’, ‘]’, ‘^’, ‘_’, ‘`’, ‘a’, ‘b’, ‘c’, ‘d’, ‘e’, ‘f’, ‘g’, ‘h’, ‘i’, ‘j’, ‘k’, ‘l’, ‘m’, ‘n’, ‘o’, ‘p’, ‘q’, ‘r’, ‘s’, ‘t’, ‘u’, ‘v’, ‘w’, ‘x’, ‘y’, ‘z’, ‘{’, ‘|’, ‘}’, ‘~’, DEL VHDL_1, Ján Butaš, FEI STU, KME

  29. Time TIMEje numerický dátový typ ktorý špecifikuje časový údaj. Tento údaj je zapisaný použitím celého kladného čísla a časovej jednotky.Časové jednotky môžu byť : fs– femtosekunda, ps– pikosekunda,ns– nanosekunda,us– mikrosekunda, ms– milisekunda,sec– sekunda,min– minuta,hr- hodina typeTime is range-(2**31-1) to(2**31-1) Units fs; ps=1000 fs; ns=1000 ps; us=1000 ns; ms=1000 us; sek=1000 ms; min=60 sec; hr=60 min; end units VHDL_1, Ján Butaš, FEI STU, KME

  30. Dátové typy definované v knižnici IEEE a balíku STD_LOGIC_1164 • std_ulogic • ‘U’ Neinicializovaný • ‘X’ Silneneznámi • ‘0’ Silnálogická 0 • ‘1’ Silná logická 1 • ‘Z’Vysoká impedancia • ‘W’Slaboneznámi • ‘L’ Slabá logická 0 • ‘H’Slabá logická 1 • ‘-’ Nevýznamný bit • std_logic • subtypestd_logicis resolvedstd_ulogic; • std_ulogic_vector • typestd_ulogic_vectoris array (natural<>) ofstd_ulogic; • std_logic_vector • typestd_logic_vectoris array (natural <>) ofstd_logic; VHDL_1, Ján Butaš, FEI STU, KME

  31. Užívateľom definované dátové typy Vo VHDL je možné definovať nové vymenované dátové typy. Principiálne tieto dátové typy môžu nadobúdať rozličné hodnoty. Používajú sa potom hlavne pri návrhu stavových automatov. type state_type is (start, idle, waiting, run); signal state : state_type; VHDL_1, Ján Butaš, FEI STU, KME

  32. Viacrozmerné polia ROM(7) 0 0 0 0 ROM(6) 0 0 0 1 ROM(5) 0 0 1 0 ROM(4) 0 0 1 1 ROM(3) 0 1 0 0 ROM(2) 0 1 0 1 ROM(1) 0 1 1 0 ROM(0) 0 1 1 1 VHDL_1, Ján Butaš, FEI STU, KME

  33. Záznamy VHDL_1, Ján Butaš, FEI STU, KME

  34. Operátory Logické and or nand nor xor xnor not Aritmetické addition subtraction multiplication division modulus remainder exponentation absolute value Relačné = /= < <= > >= Posuvné sll srl sla sra rol ror Koncentrovanie VHDL_1, Ján Butaš, FEI STU, KME

  35. Priorita operátorov VHDL_1, Ján Butaš, FEI STU, KME

  36. Relačné operátory signal Real_1: REAL := 100.0; signal VB_1 : BIT_VECTOR(7 downto 0) := ('0','0','0','0','0','0','0','0'); signal VB_2, VB_3 : BIT_VECTOR(1 to 0); Real_1 /= 342.54;-- True Real_1 = 100.0; -- True VB_1 = ('1', '0', '0', '0', '0', '0', '0', '0');-- False VB_2 = VB_3;-- True =Rovnosť /=Nerovnosť <Menší <=Menší rovný >Väčší >=Väčší rovný Oba operandy musia byť toho istého dátového typu a výsledok porovnania je vždy Boolean typ !!! VHDL_1, Ján Butaš, FEI STU, KME

  37. Posuvné operátory sllLogický posuv doľava srlLogický posuv doprava slaAritmetický posuv doľava sraAritmetický posuv doprava rolRotácia logická doľava rorRotácia logická doprava Posuvné operátory sú definované pre jednorozmerné polia, ktorých elementy sú typu BIT alebo BOOLEAN. Result <= Operand Operator Integer ; sll srl sla sra rol ror VHDL_1, Ján Butaš, FEI STU, KME

  38. Posuvné operátory signal VEC : BIT_VECTOR(7 downto 0) := “10111011”; <= sll 1 0 1 1 1 0 1 1 0 1 0 1 1 1 0 1 1 0 <= srl 1 0 1 0 1 1 1 0 1 0 1 0 1 1 1 0 1 1 <= sla 1 0 1 1 1 0 1 1 1 1 0 1 1 1 0 1 1 <= sra 1 1 1 0 1 1 1 0 1 1 0 1 1 1 0 1 1 <= rol 1 0 1 1 1 0 1 1 1 1 0 1 1 1 0 1 1 <= ror 1 1 1 0 1 1 1 0 1 1 0 1 1 1 0 1 1 VHDL_1, Ján Butaš, FEI STU, KME

  39. Aritmetické operátory +sčítanie -odčítanie +identita -negácia Operátory sčítanie,odčítanie, identitaanegáciasú matematické operácie a vyžadujú operandynumerického typu. VHDL_1, Ján Butaš, FEI STU, KME

  40. Násobenie a delenie * násobenie /delenie modmodulus -zvyšok The multiplication and division operators are predefined for all integers, floating point numbers. The mod and rem operators, on the other hand, are defined only for the integers. When mod and rem operators are used, then both the operands and the result are of the same integer type. VHDL_1, Ján Butaš, FEI STU, KME

  41. Jednoduché priradenie do signálu <= Signál Výraz ; Q <= A or B; -- bez oneskorenia Q <= A or B after 5 ns; -- 5 ns oneskorenie – nie je podporované syntézou Q <= ‘1’, ‘0’ after 10 ns, A after 20 ns; -- nie je podporované syntézou VHDL_1, Ján Butaš, FEI STU, KME

  42. Priradenie do signálu VHDL_1, Ján Butaš, FEI STU, KME

  43. Priradenie do signálu (Paralelné) Hardvér spracováva vstupné údaje paralelne a preto aj VHDL obsahuje konštrukcie, ktoré toto správanie popisujú. = Tieto dva príklady popisujú to isté, pretože použité priradenie sú paralelné. Nezáleží na poradí v akom sú zapísané. VHDL_1, Ján Butaš, FEI STU, KME

  44. Priradenie do signálu (Paralelné) VHDL_1, Ján Butaš, FEI STU, KME

  45. Priradenie do signálu(WHENkonštrukcia) LABEL1:-- nepovinné návestie meno_signálu<= <výraz> when <podmienka> else <výraz> when <podmienka> else <výraz>; VHDL_1, Ján Butaš, FEI STU, KME

  46. Priradenie do signálu(WHENkonštrukcia) Toto nie je to isté !!! VHDL_1, Ján Butaš, FEI STU, KME

  47. Priradenie do signálu(WITHkonštrukcia) LABEL1:-- nepovinné návestie with <výberový výraz> select meno_signálu <= <výraz> when <výber>, < výraz > when <výber>, < výraz > when others; VHDL_1, Ján Butaš, FEI STU, KME

More Related