Professional Documents
Culture Documents
Ciric
Ciric
mr Vladimir M. Ćirić
2
Predgovor v
1 Tok projektovanja 1
1.1 Faze u projektovanja kola . . . . . . . . . . . . . . . . . . . . . . 1
1.2 HDL opis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2.1 Izvorni HDL fajlovi . . . . . . . . . . . . . . . . . . . . . 5
1.3 HDL simulacija . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.3.1 VHDL testbench . . . . . . . . . . . . . . . . . . . . . . . 9
1.3.2 Test Bench WaveForm . . . . . . . . . . . . . . . . . . . . 11
1.4 Sinteza . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
1.5 Implementacija . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
1.6 Vremenska simulacija . . . . . . . . . . . . . . . . . . . . . . . . . 17
1.7 Programiranje uredjaja . . . . . . . . . . . . . . . . . . . . . . . 18
1.8 Pomoćni alati za vizuelni opis aritekture kola . . . . . . . . . . . 19
1.8.1 Vizuelni opis strukture kola . . . . . . . . . . . . . . . . . 19
1.8.2 Dijagram stanja . . . . . . . . . . . . . . . . . . . . . . . 20
i
ii SADRŽAJ
3 Laboratorijske vežbe 35
3.1 Bihevioralni opis u VHDL-u . . . . . . . . . . . . . . . . . . . . . 35
3.2 Strukturalni opis i generate petlje . . . . . . . . . . . . . . . . . . 43
3.3 Projektovanje sistema sa memorijom . . . . . . . . . . . . . . . . 50
iii
iv LISTA SLIKA
v
vi 0. PREDGOVOR
Tok projektovanja
Okruženje Xilnx ISE sadrži alate za podršku svim fazama projektovanja FPGA
kola, kao i biblioteke potrebne za implementaciju HDL opisa na Xilinx FPGA
čipovima. U ovom poglavlju ilustrovane su osnovne faze u procesu projektovanja
i implementacije kola u FPGA tehnologiji.
HDL opis (eng. design entry) Project Navigator Xilinx okruženja pred-
stavlja osnovni korisnički interfejs okruženja i omogućava upravljanje diza-
jnom FPGA čipa korišćenjem ISE projekta. Nakon kreiranja projekta,
projektu je neophodno dodati izvorne fajlove opisa kola u nekom od jezika
za opis hardvera (HDL - Hardware Description Language). Project Nav-
igator omogućava pokretanje neophodnih procesa nad svim izvornim fa-
jlovima dizajna.
1
2 1. TOK PROJEKTOVANJA
U daljem tekstu ovog poglavlja prikazan je opis interfejsa Xilinx ISE okruženja.
Pozicije alata za podršku nabrojanim fazama projektovanja FPGA sistema u
Xilinx-ovom Project Navigatoru su takod̄e date.
kao i propisanu brzinu rada kola. Za simulaciju može se iskoristiti ugrad̄eni ISE
Simulator ili neki od raspoloživih ekternih simulatora drugih proizvod̄ača, kao
što je npr ModelSim.
U testbench-u potrebno je opisati talasne oblike signala koji će biti uvedeni
u kolo u postupku simulacije. Za potpuni sabirač iz primera kreirani su sledeći
test vektori:
1 tb : PROCESS
2 begin
3 a <= ’0 ’ , ’1 ’ after 200 ns , ’0 ’ after 400 ns , ’1 ’ after 600 ns , ’0 ’ after
800 ns , ’1 ’ after 1000 ns , ’0 ’ after 1200 ns ;
4
5 b <= ’0 ’ , ’1 ’ after 400 ns , ’0 ’ after 800 ns , ’1 ’ after 1200 ns ;
6 cin <= ’0 ’ , ’1 ’ after 800 ns ;
7 wait ; −− will wait forever
8 end process ;
1.4 Sinteza
Nakon uspešno obavljene HDL simulacije potrebno je izvršiti sintezu kola. U
Xilinx ISE okruženju sintezu je moguće izvršiti na sledeći način:
XST kreira .ngc netlistu za zadatu familiju FPGA kola i smešta je u direk-
torijum projekta. Izgled kola dobijenog sintezom je moguće videti pokretanjem
procesa View RTL Schematic , nakon čega se dobija izgled opisanog kola na
RTL nivou u prozoru Project Navigatora (slika 1.17).
Ispravnost netliste dobijene sintezom potrebno je proveriti. Za proveru is-
pravnosti netliste potrebno je generisati model za simulaciju (opcija Generate
1.5 Implementacija
Nakon sinteze potrebno je izvršiti implementaciju koja obuhvata sledeće korake:
Map - mapira logiku definisanu NGD fajlom u FPGA elemente (kao izlaz se
dobija NCD fajl),
Place & Route koji uzima mapirane NCD fajlove i pravi NCD fajl koji se
koristi kao ulaz za generisanje bitstream-a.
Slika 1.17: Izgled kola na RTL nivou dobijenog sintezom VHDL opisa
titeta za pinove FPGA čipa po svom izboru. Izgled PACE alata je dat na slici
1.18.
Izveštaj o zauzeću se može videti nakon mapiranja u Map Report -u. Ovaj
izveštaj prikazuje broj zauzetih Slice-ova (Number of occupied Slices) FPGA
kola, kao i ukupan ekvivalentni broj gejt-ova dizajna ( Total equivalent gate
count for design ). Izvestaj o kašnjenju signala moguće je dobiti izborom
opcije Analyze Post-Place & Route Static Timing .
Slika 1.20: Podešavanje veze hosta i FPGA čipa preko interfejsa iMPACT alata
unošenje šeme kola prikazano je na slici 1.23. U levom delu prozora nalazi se
Sources tab, a u njemu se nalazi Categories u kome se bira kategorija simbola,
kao i Symbols u kome se vrši izbor odgovarajuće vrste simbola. Dodavanjem
simbola i njihovim povezivanjem dobija se grafička reprezentacija HDL opisa
kola. Na slici 1.24 je prikazana šema jednobitnog potpunog sabirača opisanog u
prethodnom poglavlju.
Za kreirani Schematic fajl postupak toka simulacije, sinteza i implementacija
vrše se na način opisan u prethodnom poglavlju.
dobije skup case struktura na HDL jeziku koji funkcionalno odgovara vizuelno
opisanom automatu.
Da bi se kreirao izvorni fajl dijagram stanja i fajl uključio u projekat, pri-
likom kreiranja novog projekta za tip izvornog fajla potrebno je odabrati State
diagram (slika 1.22). Izgled prozora u kome se vrši unos diagrama stanja
prikazan je na slici 1.25.
Na slici 1.25 prikazan je diagram sa dva stanja: STATE0 i STATE1, i tri
veze. Veze predstavljaju uslove prelaska iz jednog stanja u drugo a definišu se na
osnovu ulaznih signala (u ovom slučaju to su a i b). Stanja STATE0 i STATE1
su povezana sa vrednošću izlaznog signala (u ovom slučaju to je c).
Na osnovu ovako definisanog diagrama stanja generiše se HDL opis kola
izborom opcije Compile (Generate HDL) iz Options menija. Za kreirani vhd
fajl postupak simulacije, sinteze i implementacije isti je kao u prethodna dva
slučaja.
U narednom poglavlju dat je primer projektovanja hardverskog sitema sa
memorijom i upravljačkom jedinicom.
Slika 1.25: Ǐnterfejs alata za vizuelni opis kola korišćenjem dijagrama stanja
25
2. PRIMER: KOLO ZA SABIRANJE PODATAKA SMEŠTENIH U
26 MEMORIJI
10 end Sabirac ;
11
12 architecture Behavioral of Sabirac i s
13 begin
14 process (ulaz1 , ulaz2)
15 begin
16 izlaz <= unsigned(ulaz1) + unsigned(ulaz2) ;
17 end process ;
18 end Behavioral ;
Dmux
1 library IEEE;
2 use IEEE.STD LOGIC 1164.ALL;
3 use IEEE.STD LOGIC ARITH.ALL;
4 use IEEE.STD LOGIC UNSIGNED.ALL;
5
6 entity DMux i s
7 Port ( clk : in STD LOGIC;
8 ulaz : in STDLOGICVECTOR (7 downto 0) ;
9 izlaz1 : out STDLOGICVECTOR (7 downto 0) ;
10 izlaz2 : out STDLOGICVECTOR (7 downto 0)) ;
11 end DMux;
12
13 architecture Behavioral of DMux i s
14 begin
15 process ( clk )
16 begin
Registar
1 library IEEE;
2 use IEEE.STD LOGIC 1164.ALL;
3 use IEEE.STD LOGIC ARITH.ALL;
4 use IEEE.STD LOGIC UNSIGNED.ALL;
5
6 entity Registar i s
7 Port ( clk : in STD LOGIC;
8 ulaz : in STDLOGICVECTOR (7 downto 0) ;
9 izlaz : out STDLOGICVECTOR (7 downto 0)) ;
10 end Registar ;
11
12 architecture Behavioral of Registar i s
13
14 begin
15 process ( clk )
16 begin
17 i f ( clk = ’1 ’ and clk ’ event) then
18 izlaz <= ulaz ;
19 end i f ;
20 end process ;
21 end Behavioral ;
Memorija
1 library IEEE;
2 use IEEE.STD LOGIC 1164.ALL;
3 use IEEE.STD LOGIC ARITH.ALL;
4 use IEEE.STD LOGIC UNSIGNED.ALL;
5
6 entity Memorija i s
7 Port ( WE : in STD LOGIC;
8 clk : in STD LOGIC;
9 addr : in STDLOGICVECTOR (7 downto 0) ;
10 data : in STDLOGICVECTOR (7 downto 0) ;
11 Q : out STDLOGICVECTOR (7 downto 0)) ;
12 end Memorija;
13
14 architecture Behavioral of Memorija i s
15 type ram mem type i s array (7 downto 0) of std logic vector (7 downto 0) ;
16 signal ram mem : ram mem type;
17 begin
18
19 process (CLK)
20
21 variable ADDRTEMP: integer range 31 downto 0;
22 begin
23 i f rising edge (CLK) then
24 i f (WE = ’1 ’) then
25 ADDRTEMP := CONVINTEGER(ADDR) ;
26 ram mem(ADDRTEMP) <= DATA;
27 end i f ;
28 Q<= ram mem(CONVINTEGER(ADDR) ) ;
29 end i f ;
30 end process ;
31 end architecture ;
Upravljačka logika
1 library IEEE;
2 use IEEE.STD LOGIC 1164.ALL;
3 use IEEE.STD LOGIC ARITH.ALL;
4 use IEEE.STD LOGIC UNSIGNED.ALL;
5
6 entity Kontrola i s
7 Port ( clk : in STD LOGIC;
8 WE : out STD LOGIC;
9 addr : out STDLOGICVECTOR (7 downto 0) ;
10 selDMux : out STD LOGIC;
11 upis1 : out STD LOGIC;
12 upis2 : out STD LOGIC) ;
13 end Kontrola ;
14
15 architecture Behavioral of Kontrola i s
16 begin
17 WE<= ’ 0 ’ ;
18 process ( clk )
19 variable a : integer := 0;
20 variable addr1 : unsigned(7 downto 0) := ”00000000” ;
21 begin
22 i f rising edge ( clk ) then
23 addr1 := addr1 + 1;
24 end i f ;
25
26 i f clk = ’0 ’ then
27 i f a = 0 then
28 selDMux <= ’ 1 ’ ;
2.2.2 Simulacija
Na slici 2.3 prikazan je interfejs (spoljni pinovi) kola.
2.2.3 Sinteza
Slika 2.6: Blok dijagram kola na RTL nivou dobijenog sintezom VHDL opisa
2.2.4 Implementacija
Rezultati implementacije opisa na Xilinx Spartan3 familiji FPGA kola, modelu
XC3S50 dobijeno je za
Laboratorijske vežbe
Zadatak 3.1.1
Zadatak 3.1.2
35
36 3. LABORATORIJSKE VEŽBE
Zadatak 3.1.3
Zadatak 3.1.4
Zadatak 3.1.5
Zadatak 3.1.6
Zadatak 3.1.7
Zadatak 3.1.8
Zadatak 3.1.9
Zadatak 3.1.10
FA FA FA FA
Zadatak 3.1.11
c_in c0
FA FA FA FA
Zadatak 3.1.12
c_in c0
FA FA FA FA
Zadatak 3.1.13
Zadatak 3.1.14
Zadatak 3.1.15
bn-1 b2 b1 b0
m
_ _ _ _
bn-1 b2 b1 b0
Zadatak 3.1.16
Zadatak 3.1.17
Zadatak 3.1.18
Zadatak 3.1.19
Zadatak 3.1.20
b0 D
b1 D mux z
b2 D 4u1
b3 D
s1 s0
Zadatak 3.2.1
S
Q
_
Q
R
Zadatak 3.2.2
Zadatak 3.2.3
Zadatak 3.2.4
b0 D
b1 D mux z
b2 4u1
b3
s1 s0
b0
b z
1 mux D
b2 4u1
b3
s1 s0
Zadatak 3.2.5
D b0
z d-mux D b1
4u1 D b2
D b3
s1 s0
Zadatak 3.2.6
Zadatak 3.2.7
Zadatak 3.2.8
Zadatak 3.2.9
Zadatak 3.2.10
Zadatak 3.2.11
Zadatak 3.2.12
Zadatak 3.2.13
Zadatak 3.2.14
Zadatak 3.2.15
Zadatak 3.3.1
data
Upravljacka
MEM jedinica
addr
clk r/w clk
Zadatak 3.3.2
Zadatak 3.3.3
Zadatak 3.3.4
data data
Upravljacka
MEM jedinica MEM
addr addr
clk r/w clk r/w clk
Slika 3.11: Upravljačka jedinica koja čita podatke iz jedne memorije i upisuje u
drugu
Zadatak 3.3.5
data_1
data_1
data_2
Upravljacka
MEM jedinica data_2
addr_1
addr_2
clk r/w clk
[1] Volnei A. Pedroni, Circuit Design with VHDL, MIT Press, Cambridge,
Massachusetts, USA, 2004. (ISBN 0-262-16224-5)
53
54 LITERATURA
55
56 INDEX