32
Uvod u VHDL

Uvod u VHDL

Embed Size (px)

DESCRIPTION

Uvod u VHDL. VHDL. VHDL - standardni jezik za opis digitalnih kola i sistema. VHDL standard usvojen 1987. god. (IEEE 1076). Revidiran i trenutno aktuelni VHDL standard, IEEE 1164, usvojen 1993. godine. - PowerPoint PPT Presentation

Citation preview

Page 1: Uvod u VHDL

Uvod u VHDL

Page 2: Uvod u VHDL

Arhitektura mikrosistema

VHDL VHDL - standardni jezik za opis digitalnih

kola i sistema. VHDL standard usvojen 1987. god. (IEEE 1076). Revidiran i trenutno aktuelni VHDL standard,

IEEE 1164, usvojen 1993. godine. Skraćenica od VHSIC Hardware Description

Language. VHSIC skraćenica od Very High Speed Integrated Circuits” (Integrisana kola veoma velike brzine rada)

Page 3: Uvod u VHDL

Arhitektura mikrosistema

VHDL Osnovna namena:

Jezik za dokumentaciju Jezik za simulaciju

Savremena primena: Sinteza hardvera

Naš cilj: Sinteza kombinacionih i sekvencijalnih kola i sistema

niske i srednje složenosti u VHDL-u Obiman i složen jezik

Dobra vest: za sintezu, bitan je samo jedan manji deo mogućnosti VHDL jezika.

Page 4: Uvod u VHDL

Arhitektura mikrosistema

Programski jezik vs. jezik za opis hardvera Programski jezik:

Opis algoritma Sekvencijalni model izračunavanja Kompajlira se u mašinski program radi izvršenja na računaru

Jezik za opis hardvera: Opis algoritma Opis strukture digitalnog sistema Konkurentni model izračunavanja Kompajlira se radi simulacije u RTL simulatoru Sintetiše se radi implementacije u hardveru

Termini: Program - opis algoritma u programskom jeziku Kôd – opis algoritma ili strukture u jeziku za opis hardvera

Page 5: Uvod u VHDL

Arhitektura mikrosistema

Organizacija VHDL kôda Svaki celovit VHDL kôd, tj. onaj koji se može simulirati ili

sintetizovati, sastoji se iz tri sekcije:

LIBRARY(deklaracija)

ENTITY

ARCHITECTURE

VHDL kod

Page 6: Uvod u VHDL

Arhitektura mikrosistema

LIBRARY LIBRARY (biblioteka) Kolekcija često korišćenih

delova VHDL kôda. Jednom se piše više puta koristi Sadrži pakete (PACKAGE), a

paketi sadrže: Funkcije (FUNCTION) Procedure (PROCEDURE) Komponente (COMPONENT) Konstante (CONSTANT) Tipove podataka (TYPE)

FUNCTIONS

PROCEDURES

COMPONENTS

CONSTANTS

TYPES

PACKAGE

LIBRARY

Page 7: Uvod u VHDL

Arhitektura mikrosistema

LIBRARY Biblioteka se uključuje u projekat pomoću dve naredbe:

LIBRARY ime_biblioteke;USE ime_biblioteke.ime_paketa.delovi_paketa;

LIBRARY - definiše ime biblioteke USE – definiše delove biblioteke koje želimo da koristimo

Bar tri paketa iz tri različite biblioteke su neophodna u svakom projektu: std_logic_1164 (iz biblioteke ieee) standard (iz biblioteke std) i work (iz biblioteke work)

LIBRARY ieee; -- tačka-zarez (;) označavaUSE ieee.std_logic_1164.all; -- kraj naredbe ili deklaracijeLIBRARY std; -- dupla crta (--) označava komentarUSE std.sdandard.all;LIBRARY work;USE work.all;

Page 8: Uvod u VHDL

Arhitektura mikrosistema

LIBRARY Standardne biblioteke:

std je biblioteka resursa (standardni tipovi podataka i sl.). work je projektna biblioteka (za smeštanje fajlova projekata)

IEEE biblioteka za sintezu, paketi : std_logic_1164: definiše višenivovske logičke sisteme numeric_std: podrška za aritmetiku

Biblioteke std i work po automatizmu uključene u svaki projekat.

VHDL kôd za sintezu obično počinje linijama: LIBRARY ieee;

USE ieee.std_logic_1164.all;

Page 9: Uvod u VHDL

Arhitektura mikrosistema

ENTITY Entitet (ENTITY): definiše interfejs

(ulaze i izlaze, tj. portove kola) ENTITY ime_entiteta IS

PORT ( ime_porta : smer_signala tip_signala;ime_porta : smer_signala tip_signala;... );

END ime_entiteta; Port (PORT): izlazni ili izlazni signal

kola Smer signala

IN – ulaz, OUT – izlaz, INOUT – dvosmerni port (ulaz/izlaz), BUFFER - izlaz koji se može koristiti kao interni signal.

Tip signala: BIT, STD_LOGIC, INTEGER . . .

KoloIN

OUT

INOUT

BUFFER

Page 10: Uvod u VHDL

Arhitektura mikrosistema

ENTITYENTITY ni_kolo IS

PORT (a, b : IN BIT; c : OUT BIT);END ni_kolo;

ab c

Opisuje spoljni pogled na kolo, a ne funkciju kola Više portova istog smera i tipa mogu biti deklarisani u istoj liniji Linije PORT konstrukcije završavaju se znakom ΄;΄, osim

poslednje, nakon koje sledi zatvorena zagrada Ime entiteta može da sadrži slova, cifre i crtu za podvlačenje.

Ograničenja: ne može početi cifrom, ne može biti ključna reč VHDL ne pravi razliku između velikih i malih slova

Page 11: Uvod u VHDL

Arhitektura mikrosistema

ARCHITECTURE

Arhitektura (ARCHITECTURE) – sadržati opis funkcionisanja (ponašanja) ili opis unutrašnje strukture kola ARCHITECTURE ime_arhitekture OF ime_entiteta IS

[deklaracije]BEGIN [kôd]END ime_arhitekture;

Uvek pridružena jednom entitetu (ime_entiteta) [deklaracije]: definiše interne signale i konstante [kôd]: kôd arhitekture

Page 12: Uvod u VHDL

Arhitektura mikrosistema

ARCHITECTURE

ARCHITECTURE ni_funkcija OF ni_kolo ISBEGIN

c <= a NAND b;

END ni_funkcija;

ab c

Kolo obavlja NI operaciju (NAND) nad dva ulazna signala, a i b, i rezultat dodeljuje (˝<=˝) izlaznom pinu c.

Naredba dodele se izvršava uvek kad se na nekom od signala a ili b desi događaj.

Događaj na signalu - promene vrednosti signala. Naredba dodele je senzitivna na promenu vrednosti bilo kog

signala s leve strane znaka <=.

Page 13: Uvod u VHDL

Arhitektura mikrosistema

Stilovi projektovanja u VHDL-u Funkcionalni (ili bihejvioralni)

Konkurentne naredbe (dataflow, tj. model toka podataka)

Sekvencijalne naredbe (sekvencijalni model, kao kod programskih jezika)

Strukturni (ekvivalentno blok dijagramu) Mešovit (kombinacija konkurentnih/

sekvencijalnih naredbi i strukturnog opisa)

Page 14: Uvod u VHDL

Arhitektura mikrosistema

Konkurentno izvršenje naredbiENTITY primer IS PORT(a, b, c: IN BIT; y : OUT BIT);END primer;ARCHITECTURE dataflow OF primer IS SIGNAL x : BIT;BEGIN y <= x NAND c; x <= a NAND b;END dataflow;

abc

yx

Arhitektura sadrži konkurentni kod Naredbe se iniciraju promenama signala Redosled naredbi nije od značaja (isti efekat ima sledeći kod):

x <= a NAND b;

y <= x NAND c;

Konkurentne naredbe

Deklaracija internog signala

Page 15: Uvod u VHDL

Arhitektura mikrosistema

Naredba dodele proširena klauzulom after:

x <= a NAND b after 20 ns;

δ - kašnjenje: beskonačno malo kašnjenje

x <= a NAND b; isto što i x <= a NAND b after 0 ns;

Navođenje propagacionog Navođenje propagacionog kašnjenja nije dozvoljeno u kašnjenja nije dozvoljeno u kodu za sintezu!kodu za sintezu!

Modeliranje propagacionog kašnjenja

ENTITY primer IS PORT(a, b, c: IN BIT; y : OUT BIT);END primer;ARCHITECTURE dataflow OF primer IS SIGNAL x : BIT; BEGIN y <= x NAND c after 20 ns; x <= a NAND b after 20 ns;END dataflow;

abc

yx

20 ns20 ns

Page 16: Uvod u VHDL

Arhitektura mikrosistema

Port smera OUT se ne može koristiti kao ulazni signal!

ab x

y

ab

(a)

1 ---------------------------------------- 2 LIBRARY ieee; 3 USE ieee.std-logic-1164.all; 4 ----------------------------------------5 ENTITY mode-demo IS 6 PORT (a,b: IN STD_LOGIC; 7 x,y: OUT STD_LOGIC); 8 END mode-demo; 9 ---------------------------------------- 10 ARHITECTURE pogresno OF mode-demo IS 11 BEGIN 12 x <= a AND b; 13 y <= NOT x; 14 END pogresno; 15 ---------------------------------------

9 ---------------------------------------- 10 ARHITECTURE ispravno OF mode-demo IS 11 SIGNAL ab : STD_LOGIC; 12 BEGIN 13 ab <= a AND b; 14 x <= ab; 15 y <= NOT ab; 16 END ispravno; 17 ---------------------------------------

(b) (c)

Neispravno

Ispravno

x je izlazni port! Interni signali se mogu koristiti i kao ulazi i kao izlazi

Page 17: Uvod u VHDL

Arhitektura mikrosistema

Opis tabele istinitosti Omogućava modeliranje (opisivanje) funkcije ili

ponašanja kola bez ulaženja u strukturne detalje

a b c y

0 0 0 1

0 0 1 0

0 1 0 1

0 1 1 0

1 0 0 1

1 0 1 0

1 1 0 1

1 1 1 1

ARCHITECTURE dataflow OF primer ISBEGIN WITH (a & b & c) SELECT y <= '1' WHEN "000", '0' WHEN "001", '1' WHEN "010", '0' WHEN "011", '1' WHEN "100", '0' WHEN "101", '1' WHEN "110", '1' WHEN "111";END dataflow;

I ovo je konkurentan kod

Page 18: Uvod u VHDL

Arhitektura mikrosistema

Sekvencijalne naredbe Proces: sekvencijalna sekcija kôda (naredbe u procesu se

izvršavaju jedna za drugom)

DFF

clk

d q

rst

LIBRARY ieee;USE ieee.std_logic_1164.all;ENTITY dff IS PORT (d, clk, rst: IN STD_LOGIC; q: OUT STD_LOGIC);END dff;ARCHITECTURE behavior OF dff ISBEGIN PROCESS (rst,clk) BEGIN IF(rst='1') THEN q <= '0'; ELSIF (clk'EVENT AND clk='1') THEN q <= d; END IF; END PROCESS;END behavior;

lista senzitivnosti (promena bilo kog signala iz liste pokreće proces)

Detektuje rastuću ivicu taktaDesio se događaj na signalu

Page 19: Uvod u VHDL

Arhitektura mikrosistema

Mešovit opis- Konkurentni/sekvencijalni kod

Arhitektura je okvir za konkurentni, a proces za sekvencijalni kod

d1d2

DFF

clk

qx

ARCHITECTURE primer OF primer IS SIGNAL x : BIT;BEGIN x <= d1 NAND d2; PROCESS(clk) BEGIN IF(clk'EVENT AND clk='1') THEN q <= x; END IF; END PROCESS;END primer;

Proces se izvršava konkurentno sa ostalim naredbama iz arhitekture

Page 20: Uvod u VHDL

Arhitektura mikrosistema

Strukturni opis

Opisuje složenije kolo kao skup povezanih kola manje složenosti

Zasnovano na konceptu komponenti Komponenta:

Celoviti VHDL opisi (entitet plus arhitektura) koji se jednom piše, a onda koristi za konstrukciju složenijih modela

Pakuju se u pakete

Page 21: Uvod u VHDL

Arhitektura mikrosistema

Strukturni opis - primer Primer

d1d2

DFF

clk

qx

Microsoft Word Document

Komponente

Sistem se opisuje kao skup povezanih kola manje složenosti.

U suštini, tekstualni opis blok dijagrama

Page 22: Uvod u VHDL

Arhitektura mikrosistema

Mešovit opis - konkurentni/strukturni kod ARCHITECTURE struct OF pr9 IS -- komponenta dff ----------- COMPONENT dff IS PORT (d, clk: IN STD_LOGIC; q: OUT STD_LOGIC); END COMPONENT; SIGNAL x : STD_LOGIC; BEGIN x <= d1 NAND d2; K2: dff PORT MAP(x, clk, q);

END struct;

d1d2

DFF

clk

qx

Konkurentna naredba dodeleNaredba za instanciranje

komponente

Page 23: Uvod u VHDL

Arhitektura mikrosistema

Projektne jedinice Nedeljiva sekcija VHDL kôda U potpunosti sadržana u jednoj projektnoj datoteci

(projektna datoteka može sadržati proizvoljan broj projektnih jedinica)

To su: Entitet Arhitektura Deklaracija paketa Telo paketa Konfiguracija

Primarna

Sekundarna

Jedna primarna, više sekundarnih

Definiše spoj primarne i sekundarne jedinice

Page 24: Uvod u VHDL

Arhitektura mikrosistema

Procesiranje VHDL koda Faze u procesiranju koda:

1. Analiza (posebno svaka projektana jedinca) Sintaksna analiza i kompilacija. Rezultat je međukod

projektinih jedinica koji se smešta u biblioteku work.

2. Elaboracija Hijerarhijski kod u ´ravanski´ kod. Zamena instanci

komponenti njihovim arhitekturama

3. Izvršenje Simulacija ili sinteza

Page 25: Uvod u VHDL

Arhitektura mikrosistema

Simulacija VHDL koda

DFF

clk

d q

rst

stimulansi

odziv

Page 26: Uvod u VHDL

Arhitektura mikrosistema

Testbenč

PROCESS BEGIN test_in <= "000"; WAIT FOR 200 ns; test_in <= "001"; WAIT FOR 200 ns; . . .END PROCESS;

PROCESS VARIABLE ... BEGINWAIT ON test_in;WAIT FOR 100 ns;IF((test_in="000" AND test_out='1') OR (test_in="000" AND test_out='0') OR. . END PROCESS;

test_in test_outa,b,c y

simple_circuit

Kod koji se testira

Dodatni kod koji analizira

odziv

Dodatni kod koji generiše stimulanse

testbenč

Microsoft Word Document

Page 27: Uvod u VHDL

Arhitektura mikrosistema

CONFIGURATION Jedan entitet više arhitektura. Konfiguracija - spoj entiteta i arhitekture Kako arhitekturu povezati sa entitetom?

Entitet

Arhitektura1

Arhitektura2

Arhitektura3

IC2 IC3IC1

Štampana ploča

Kućište

(a) (b)

Analogija

Odgovara entitetu

Odgovaraju arhitekturama

Page 28: Uvod u VHDL

Arhitektura mikrosistema

CONFIGURATION

-- Instanciranje kola koje se testira ------------------------ uut: simple_circuitPORT MAP(a=>test_in(2),b=>test_in(1),c=>test_in(0),y=>test_out);

CONFIGURATION demo_config OF simple_circuit_testbench IS FOR tb_arch FOR uut : simple_circuit USE ENTITY work.simple_circuit(behavior); END FOR; END FOR;END demo_config;

Definiše arhitekturu komponenta simple_circuit koja se koristi

Ako postoji samo jedna arhitektura, CONFIGURATION nije neophodno!

Page 29: Uvod u VHDL

Arhitektura mikrosistema

Sinteza VHDL koda Preslikavanje jezičkih konstrukcija iz VHDL kôda

na hardverske elemente identičnog ponašanja (funkcije)

Nije moguće sintetizovati proizvoljan VHDL opis ! Pojedine jezičke konstrukcije se ne mogu sintetizovati. Pojedine se mogu sintetizovati uz određena ograničenja Pojedine se mogu sintetizovati

Page 30: Uvod u VHDL

Arhitektura mikrosistema

Primer sinteze. . .

f1 <= x AND y;

f2 <= x AND NOT y;

f <= f1 OR (f2 AND z) OR (f2 AND w);

. . .

AND

NOT

ANDAND

AND

OR

xy

z

w

f

f1

f2

Funkcionalna mreža

1. korak

ORAND

NOTOR

AND f

x

y

z

w

2. korak

Optimizovana funkcionalna mreža

x

y

zw

f

Logička mreža - konačni rezultat sinteze

3. korak

Page 31: Uvod u VHDL

Arhitektura mikrosistema

Složeniji primer sinteze

Konceptualni dijagram

. . .f <= a + b WHEN ctrl=´0´ ELSE a – b:. . .

VHDL kod

+

-

a

b0

1

ctrl

f

Funkcionalna mreža

+0

1

ra

b

ctrl

cin

Optimizovana funkcionalna mreža

Aktivnosti projektanta Aktivnosti softvera za sintezu

Page 32: Uvod u VHDL

Arhitektura mikrosistema

Uloga VHDL-a u procesu projektovanja

RTLopis

Testbenč

Sinteza Simulacija

NetlistaDatotekakašnjenja

Raspoređivanje i povezivanje

Konfiguracionifajl

Datotekakašnjenja

Programiranjekomponente

Simulacija

Simulacija/Vremenska

analiza

FPGAčip

VHDLfajl

Legenda:

Funkcionalna simulacija

Vremenska simulacija nakon sinteze

Vremenska simulacija nakon fizičkog projektovanja