21
SVEUČILIŠTE JOSIPA JURJA STROSSMAYERA U OSIJEKU ELEKTROTEHNIČKI FAKULTET Preddiplomski studij BROJAČ STOTIKI Konstrukcijske vježbe Digitalna elektronika Matija Marić Osijek, 2012/2013.

Xilinx ISE 9.2i - Digitalni Sat Koji Prikazuje Stotinke(Spartan 2,3)

Embed Size (px)

DESCRIPTION

"Projektirati digitalni sat koji broji samo stotinke na tri 7segmentna diplaya. Električnu shemu nacrtati u programskom paketu Xilinx. Sat krece od 100, i broji do 0, nakon čega se vraća u stanje 100. Implementirati na FPGA razvojni sustav."

Citation preview

Page 1: Xilinx ISE 9.2i - Digitalni Sat Koji Prikazuje Stotinke(Spartan 2,3)

SVEUČILIŠTE JOSIPA JURJA STROSSMAYERA U OSIJEKUELEKTROTEHNIČKI FAKULTET

Preddiplomski studij

BROJAČ STOTIKI

Konstrukcijske vježbeDigitalna elektronika

Matija Marić

Osijek, 2012/2013.

Page 2: Xilinx ISE 9.2i - Digitalni Sat Koji Prikazuje Stotinke(Spartan 2,3)

Sadržaj

1. Uvod......................................................................................................................................1

1.1. Zadatak konstrukcijskih vježbi......................................................................................................1

2. Shematski prikaz sklopa........................................................................................................2

2.1. Brojač stotinki..............................................................................................................................2

2.2. Djelitelj frekvencije......................................................................................................................4

2.3. Prikaz brojača na sedam segmentnim display - ima.....................................................................5

3. Zaključak............................................................................................................................... 8

4. Literatura.............................................................................................................................. 9

5. Prilozi...................................................................................................................................10

5.1.Prikz brojača na sedam segmentnim display - ima (cijeli kod)....................................................10

Page 3: Xilinx ISE 9.2i - Digitalni Sat Koji Prikazuje Stotinke(Spartan 2,3)

1. Uvod

Potrebno je projektirati brojač koji broji unazad od 100 do 0. Brzina brojanja treba se odvijati na 100 Hz.

Programski VHDL kod treba se sastojati od tri djela: djelitelj frekvencije, brojač, prikaz na display. Djeliteljem

frekvencije treba frekvenciju razvojnog sustava od 50 MHz smanjiti na 100 Hz, a prikaz se treba vršiti na sedam-

segmentnim display-ima koji se također nalaze na razvojnom sustavu. Kada se napiše programski kod, potrebno

ga je pretvoriti u shematski prikaz pomoću Create Schematic Symbol. Tako kreiran program treba se

implementirati na Spartan 2 ili Spartan 3 razvojni sustav.

1.1. Zadatak konstrukcijskih vježbi

"Projektirati digitalni sat koji broji samo stotinke na tri 7segmentna diplaya. Električnu shemu nacrtati u

programskom paketu Xilinx. Sat krece od 100, i broji do 0, nakon čega se vraća u stanje 100. Implementirati na

FPGA razvojni sustav."

1

Page 4: Xilinx ISE 9.2i - Digitalni Sat Koji Prikazuje Stotinke(Spartan 2,3)

2. Shematski prikaz sklopa

Slika 1 prikazuje električnu shemu sklopa Brojač stotinki. Shema se sastoji od jednog ulaza, sedam

izlaza i četiri priključnice tipa inout. Ulaz čini priključnica cp koja predstavlja signal takta i ona se spaja na

signal takta razvojnog sustava. DISPLAY_0, DISPLAY_1, DISPLAY_2 i DISPLAY_3 su tipa inout i oni se

spajaju na četiri sedam - segmentna display-a. Kako sam naziv govori, display-i se sastoje od sedam segmenata,

odnosno dioda koje će se spajati sa preostalih sedam izlaza na shemi (XLXN_33(0), XLXN_33(1), XLXN_33(2),

XLXN_33(3), XLXN_33(4), XLXN_33(5), XLXN_33(6)). Sve te priključnice spojene su na sklop brojac_sto koji

obavlja glavnu funkciju. Sastoji se od tri dijela koja su zadužena za brojanje stotinki i njihov prikaz na display-

ima. Prvi i najvažniji dio je Brojač stotinki. On broji brojeve od 99 do 0 i povezan je s druga dva dijela sklopa

brojac_sto, a to su Djelitelj frekvencije i Prikaz brojača na sedam - segmentnim display-ima. Djelitelj frekvencije

smanjuje frekvenciju razvojnog okruženja od 50 MHz na 100 Hz kako bi se brojevi koje broji Brojač stotinki

mogli brojiti brzinom koja i priliči za stotinke. Ulaz cp sa sheme spaja se upravo na taj dio glavnog sklopa.

Ostale priključnice su spojene na dio Prikaz brojača na sedam - segmentnim display-ima koji ima zadatak

uskladiti rad display-a i segmenata kako bi ispis brojeva bio pravilan.

U sljedećim poglavljima iznesen je i detaljno opisan VHDL kod svakog pojedinog dijela sklopa

brojac_sto.

2.1. Brojač stotinki

library IEEE;

use IEEE.STD_LOGIC_1164.ALL;

use IEEE.STD_LOGIC_ARITH.ALL;

2

Page 5: Xilinx ISE 9.2i - Digitalni Sat Koji Prikazuje Stotinke(Spartan 2,3)

use IEEE.STD_LOGIC_UNSIGNED.ALL;

entity brojac_sto is

port(

cp: in std_logic; -- radni takt

AN0: inout std_logic; -- četvrti 7-seg display(stotinke)

AN1: inout std_logic; -- treći 7-seg display(desetinke)

AN2: inout std_logic; -- drugi 7-seg display

AN3: inout std_logic; -- prvi 7-seg display

led: out std_logic_vector(6 downto 0) -- diode na 7-seg display-u

);

end brojac_sto;

architecture Behavioral of brojac_sto is

signal dekadski:integer range 0 to 99 := 99; -- signal brojača i početna vrijednost

signal cp_o: std_logic; -- signal djelitelja frekvencije

begin

AN2<='1'; -- drugi display isključen

AN3<='1'; -- prvi display isključen

s1:entity work.djelitelj_frek100 port map(cp,cp_o); -- pozivanje djelitelja frekvencije

s2:entity work.dekadski_prikaz port map(cp,AN0,AN1,dekadski,led); -- pozivanje prikaza na display-ima

process(cp_o) -- početak procesa koji radi na taktu od 100 Hz

begin

if(cp_o'event and cp_o='1')then -- provjera rastućeg brida

dekadski<=dekadski-1; -- brojač prema dolje, smanjuje se za 1

if dekadski=0 then dekadski<=99; -- reset brojača na početnu vrijednost

end if;

end if;

end process;

end Behavioral;

Program obavlja funkciju brojača koji broji brojeve od 99 do 0. Kada dođe do 0, brojač se vraća na 99

te ponovno broji do 0. Sve se to obavlja brzinom od 100 Hz te šalje na ispis. Kako bi postigli ovakvu funkciju

programa u entity dijelu moramo deklarirati sljedeće: cp, AN0, AN1, AN2, AN3 i led. Iako ni jedan od ovih šest

elemenata nije nužan za izvedbu samog brojača, moraju se deklarirati jer se iz ovog programa pozivaju druga

dva programa (za dijeljenje frekvencije i za ispis) kojima se prosljeđuje upravo ovih šest elemenata.

U architecture dijelu potrebna su još dva signala. Signal dekadski je signal koji će direktno služiti za

brojač dok će signal cp_o biti povratni signal iz dijelitelja frekvencije. Nakon ključne riječi begin isključujemo

prvi i drugi (od četiri) display-a jer za naš brojač su potrebna samo dva pošto se radi o dvoznamenkastim

brojevima. Sljedeće dvije linije koda: s1:entity work.djelitelj_frek100 port map(cp,cp_o); i s2:entity

3

Page 6: Xilinx ISE 9.2i - Digitalni Sat Koji Prikazuje Stotinke(Spartan 2,3)

work.dekadski_prikaz port map(cp,AN0,AN1,dekadski,led); su linije kojima povezujemo brojač sa djeliteljem

frekvencije i ispisom brojača. Prva nam osigurava frekvenciju od 100 Hz kojom brojač treba brojati, a druga

ispis na sedam - segmentne display-e. Oba programa koja se pozivaju s ove dvije linije koda detaljno su opisana

u naredna dva poglavlja.

U process dijelu detaljno je opisan rad brojača. Lista osjetljivosti popunjena je signalom cp_o koji je

vraćen iz djelitelja frekvencije i osigurava izvođenje procesa brzinom od 100 Hz. Nakon ključne riječi begin, if

petljom provjerava se rastući brid signala kojim će početi odbrojavanje brojača. Kako bi brojač brojio unazad

potrebna je slijedeća linija koda: dekadski<=dekadski-1;. Signal dekadski je tipa integer i ima raspon od 0 do 99

te je postavljen na početnu vrijednost 99 pri deklariranju. Kada brojač dođe do kraja, odnosno kada dođe do 0,

mora se osigurati njegov povratak na početnu vrijednost i ponovno brojanje u nazad. To se osigurava sljedećom

if petljom: if dekadski=0 then dekadski<=99;. Cijeli process se ponavlja kod ga korisnik ne zaustavi.

2.2. Djelitelj frekvencije

library IEEE;

use IEEE.STD_LOGIC_1164.ALL;

use IEEE.STD_LOGIC_ARITH.ALL;

use IEEE.STD_LOGIC_UNSIGNED.ALL;

entity djelitelj_frek100 is

port(

cp:in std_logic; -- radni takt

cp_o:buffer std_logic --novi radni takt

);

end djelitelj_frek100;

architecture Behavioral of djelitelj_frek100 is

begin

process(cp)

variable temp:integer range 0 to 250000; -- varijabla brojača

begin

if(cp'event and cp='1')then -- provjera rastućeg brida

temp:=temp+1; -- brojač prema gore, povećava se za 1

if(temp>=250000)then -- provjera brojača

cp_o<=not cp_o; -- postavljanje cp_o

temp:=0; -- postavljenje brojača na početnu vrijednost

end if;

end if;

end process;

end Behavioral;

4

Page 7: Xilinx ISE 9.2i - Digitalni Sat Koji Prikazuje Stotinke(Spartan 2,3)

Zadaća programa je podijeliti frekvenciju razvojnog sustava od 50 MHz na 100 Hz. To je potrebno kako

bi brojač iz Brojač stotinki mogao brojiti stotinke pripadajućom brzinom. Sve što je potrebno u entity dijelu

programa je jedan ulaz cp kojem će se dodijeliti radni takt razvojnog sustava i cp_o koji će poprimiti

odgovarajuću vrijednost podijeljene frekvencije.

U architecture dijelu programa postavljamo process kojem u listu osjetljivosti stavljamo cp. Prije

ključne riječi begin deklariramo varijablu temp koja je tipa integer i koja će služit kao brojač. Raspon varijable

temp ovisi o željenoj frekvenciji nakon podjele. Broj se dobije tako da se željena frekvencija pomnoži s dva, a

zatim 50 000 000 (50MHz) podijelimo s dobivenim brojem. U ovom slučaju gdje je željena frekvencija 100 Hz

to je broj 250 000. Nakon begin postavljamo if petlju koja osigurava rad procesa samo na rastući brid. Unutar te

petlje postavljamo brojač koji broji prema gore. Kada brojač dođe do maksimalne vrijednosti, postavlja se

sljedeća if petlja koja i omogućuje očekivano dijeljenje frekvencije: if(temp>=250000) then cp_o<=not cp_o; .

Unutar te iste petlje varijablu temp postavljamo na početno stanje i tako cijeli proces kreće ispočetka.

2.3. Prikaz brojača na sedam - segmentnim display-ima

library IEEE;

use IEEE.STD_LOGIC_1164.ALL;

use IEEE.STD_LOGIC_ARITH.ALL;

use IEEE.STD_LOGIC_UNSIGNED.ALL;

entity dekadski_prikaz is

port(

cp: in std_logic; -- radni takt

AN0: inout std_logic; -- četvrti 7-seg display(stotinke)

AN1: inout std_logic; -- treći 7-seg display(desetinke)

dekadski: in integer range 0 to 99; -- stotinke

led: out std_logic_vector(0 to 6) -- diode na 7-seg display-u

);

end dekadski_prikaz;

architecture Behavioral of dekadski_prikaz is

signal CTR:std_logic_vector(12 downto 0); -- signal brojača

begin

process (cp)

begin

if (cp'event and cp = '1') then -- provjera rastućeg brida

if(CTR="0000000000000") then -- provjera stanja brojača

if (AN0='0') then -- provjera stanja četvrtog display-ja

AN0 <= '1'; -- isključi četvrti display

5

Page 8: Xilinx ISE 9.2i - Digitalni Sat Koji Prikazuje Stotinke(Spartan 2,3)

if dekadski=0 then led<="1000000"; -- postavljanje dioda na display-u

elsif dekadski=1 then led<="1000000";

elsif dekadski=2 then led<="1000000";

.

.

.

elsif dekadski=99 then led<="0010000";

end if;

AN1 <= '0'; -- uključi treći display

elsif (AN1='0') then -- provjera stanja trećeg display-a

AN1 <= '1'; -- isključi treći display

if dekadski=0 then led<="1000000" ; -- postavljanje dioda na display-u

elsif dekadski=1 then led<="1111001" ;

elsif dekadski=2 then led<="0100100" ;

.

.

.

elsif dekadski=99 then led<="0010000";

end if;

AN0 <= '0'; -- uključi četvrti display

end if;

end if;

CTR<=CTR+"0000000000001"; -- brojač prema gore, povećava se za 1

if(CTR>"1000000000000") then -- provjera stanja brojača

CTR<="0000000000000"; -- postavljanje brojača na početnu vrijednost

end if;

end if;

end process;

end Behavioral;

Prikazani kod je skraćeni kod, a potpuni se nalazi u poglavlju Prilozi jer sadrži puno linija koda. Zadaća

ovog programa je prikazivanje brojača na sedam-segmentnim display-ima. U entity dijelu programa najvažniju

ulogu ima ulaz dekadski koji prima brojeve od brojača i pomoću njega se određuje koji broj treba ispisati. Uz

dekadski tu je i izlaz led pomoću kojeg formiramo broja na display-u.

U architecture dijelu programa deklariran je vrlo važan signal CTR koji će nam poslužiti umjesto još

jednog dijelitelja frekvencije. Naime u listu osjetljivosti procesa unesen je radni takt razvojnog sustava cp koji

ima vrijednost 50 MHz. Ta frekvencija prevelika je za ispis brojeva na display-ima te ju treba smanjiti. Kako se

ne bi radio još jedan djelitelj frekvencije, koristi se brojač velikog raspona i ispis se vrši samo u vremenu kada je

brojač na nuli. U svim ostalim kombinacijama ne postoji ispis, a to se postiže sljedećom if petljom:

6

Page 9: Xilinx ISE 9.2i - Digitalni Sat Koji Prikazuje Stotinke(Spartan 2,3)

if(CTR="0000000000000") then... . Kada je brojač na nuli prvo se provjerava koji je display uključen. Pošto se

želi prikazati dva različita broja na dva display-a, prvo se mora jedan upaliti, prikazati broj, ugasiti isti, upaliti

drugi, prikazati broj, ugasiti isti. Ovo se mora raditi zbog ograničenja razvojnog sustava, a ovdje je to riješeno na

slijedeći način:

if (AN0='0') then AN0 <= '1'; -- ako je prvi display uključen, isključi ga

if dekadski=0 then led<="1000000"; -- pripremi broj za ispis

AN1 <= '0'; -- uključi drugi display i prikaži broj

elsif (AN1='0') then AN1 <= '1'; -- ili ako je drugi display uključen, isključi ga

if dekadski=0 then led<="1000000" ; --pripremi broj za ispis

AN0 <= '0'; -- uključi prvi display i ispiši broj

end if;

U ovom primjeru kao i u programskom kodu AN0 predstavlja četvrti display razvojnog sustava koji prikazuje

stotinke, AN1 treći display koji predstavlja desetinke, dekadski je broj koji je poslao glavni brojač iz Brojač

stotinki i led je izlaz koji se spaja na led diode sedam-segmentnog display-a. Diode su aktivne na logičku 0 te

samo u tom stanju svijetle. Ovaj program se izvodi u razvojnom okruženju koje zahtjeva Spartan 2 - Pegasus

stoga raspored bitova za svijetljenje led dioda je zrcalan u odnosu na Spartan 3. Na primjer za prikaz nule na

Spartan 2 koristi se sljedeći raspored bitova: "1000000"; dok je na Spartan 3: "0000001". Ovo se odnosi i na sve

ostale brojeve. Kada CTR brojač dosegne svoju maksimalnu vrijednost, potrebno ga je vratiti na nulu čime opet

omogućujemo ispis brojeva i nastavak brojanja prema gore (prestanak ispisa brojeva). Sve ovo se odvija na

rastući brid signala takta, a to je određeno prvom if petljom u procesu nakon ključne riječi begin: if (cp'event

and cp = '1') then... .

7

Page 10: Xilinx ISE 9.2i - Digitalni Sat Koji Prikazuje Stotinke(Spartan 2,3)

Zaključak

Zadatak zahtijeva dobro poznavanje programskog paketa Xilinx ISE 9.2i, VHDL koda i razvojnog sustava

Spartan. Potrebno je dobro proučiti dodatnu literaturu kako bi se razumio princip izvršavanja naredbi VHDL

koda uslijed mnogih ograničenja razvojnog sustava. Problematika zadatka rješiva je na više načina, a ovdje je

prikazan samo jedan način koji je možda i najlakši za shvatiti. Ovo se prvenstveno odnosi na ispis brojača

pomoću sedam-segmentnih display-a koji se mogao riješiti na puno kraći, ali kompleksniji način. Osim ispisa,

sve ostalo je napisano sa što manje linija koda koje su jednostavne i lako shvatljive. Uz određene dopune i

izmjene koda, vrlo lako se mogu, osim stotinki, prikazati i sekunde, minute, sati. Stoga gore napisani kod ima i

praktičnu primjenu.

8

Page 11: Xilinx ISE 9.2i - Digitalni Sat Koji Prikazuje Stotinke(Spartan 2,3)

3. Literatura

1. Željko Hocenski, Tomislav Matić, Goran Martinović: Priručnik za laboratorijske vježbe iz digitalne

elektronike

2. Tomislav Matić: Auditorne vježbe iz digitalne elektronike

3. Željko Hocenski: Predavanja iz digitalne elektronike

9

Page 12: Xilinx ISE 9.2i - Digitalni Sat Koji Prikazuje Stotinke(Spartan 2,3)

4. Prilozi

4.1. Prikaz brojača na sedam segmentnim display - ima (cijeli kod)

library IEEE;

use IEEE.STD_LOGIC_1164.ALL;

use IEEE.STD_LOGIC_ARITH.ALL;

use IEEE.STD_LOGIC_UNSIGNED.ALL;

entity dekadski_prikaz is

port(

cp: in std_logic; -- radni takt

AN0: inout std_logic; -- četvrti 7-seg display(stotinke)

AN1: inout std_logic; -- treći 7-seg display(desetinke)

dekadski: in integer range 0 to 99; -- stotinke

led: out std_logic_vector(0 to 6) -- diode na 7-seg display-u

);

end dekadski_prikaz;

architecture Behavioral of dekadski_prikaz is

signal CTR:std_logic_vector(12 downto 0); -- signal brojača

begin

process (cp)

begin

if (cp'event and cp = '1') then -- provjera rastućeg brida

if(CTR="0000000000000") then --provjera stanja brojača

if (AN0='0') then --provjera stanja četvrtog display-ja

AN0 <= '1'; -- isključi četvrti display

if dekadski=0 then led<="1000000"; -- postavljanje dioda na display-u

elsif dekadski=1 then led<="1000000";

elsif dekadski=2 then led<="1000000";

elsif dekadski=3 then led<="1000000";

elsif dekadski=4 then led<="1000000";

elsif dekadski=5 then led<="1000000";

elsif dekadski=6 then led<="1000000";

elsif dekadski=7 then led<="1000000" ;

elsif dekadski=8 then led<="1000000";

elsif dekadski=9 then led<="1000000";

10

Page 13: Xilinx ISE 9.2i - Digitalni Sat Koji Prikazuje Stotinke(Spartan 2,3)

elsif dekadski=10 then led<="1111001" ;

elsif dekadski=11 then led<="1111001" ;

elsif dekadski=12 then led<="1111001";

elsif dekadski=13 then led<="1111001" ;

elsif dekadski=14 then led<="1111001" ;

elsif dekadski=15 then led<="1111001" ;

elsif dekadski=16 then led<="1111001" ;

elsif dekadski=17 then led<="1111001" ;

elsif dekadski=18 then led<="1111001" ;

elsif dekadski=19 then led<="1111001" ;

elsif dekadski=20 then led<="0100100" ;

elsif dekadski=21 then led<="0100100" ;

elsif dekadski=22 then led<="0100100" ;

elsif dekadski=24 then led<="0100100" ;

elsif dekadski=25 then led<="0100100" ;

elsif dekadski=23 then led<="0100100" ;

elsif dekadski=26 then led<="0100100" ;

elsif dekadski=27 then led<="0100100" ;

elsif dekadski=28 then led<="0100100" ;

elsif dekadski=29 then led<="0100100" ;

elsif dekadski=30 then led<="0110000" ;

elsif dekadski=31 then led<="0110000" ;

elsif dekadski=32 then led<="0110000" ;

elsif dekadski=33 then led<="0110000" ;

elsif dekadski=34 then led<="0110000" ;

elsif dekadski=35 then led<="0110000" ;

elsif dekadski=36 then led<="0110000" ;

elsif dekadski=37 then led<="0110000" ;

elsif dekadski=38 then led<="0110000" ;

elsif dekadski=39 then led<="0110000" ;

elsif dekadski=40 then led<="0011001" ;

elsif dekadski=41 then led<="0011001" ;

elsif dekadski=42 then led<="0011001";

elsif dekadski=43 then led<="0011001" ;

elsif dekadski=44 then led<="0011001" ;

elsif dekadski=45 then led<="0011001" ;

elsif dekadski=46 then led<="0011001" ;

elsif dekadski=47 then led<="0011001" ;

elsif dekadski=48 then led<="0011001" ;

elsif dekadski=49 then led<="0011001" ;

11

Page 14: Xilinx ISE 9.2i - Digitalni Sat Koji Prikazuje Stotinke(Spartan 2,3)

elsif dekadski=50 then led<="0010010" ;

elsif dekadski=51 then led<="0010010" ;

elsif dekadski=52 then led<="0010010" ;

elsif dekadski=53 then led<="0010010" ;

elsif dekadski=54 then led<="0010010" ;

elsif dekadski=55 then led<="0010010" ;

elsif dekadski=56 then led<="0010010" ;

elsif dekadski=57 then led<="0010010" ;

elsif dekadski=58 then led<="0010010" ;

elsif dekadski=59 then led<="0010010" ;

elsif dekadski=60 then led<="0000010" ;

elsif dekadski=61 then led<="0000010" ;

elsif dekadski=62 then led<="0000010" ;

elsif dekadski=63 then led<="0000010" ;

elsif dekadski=64 then led<="0000010" ;

elsif dekadski=65 then led<="0000010" ;

elsif dekadski=66 then led<="0000010" ;

elsif dekadski=67 then led<="0000010" ;

elsif dekadski=68 then led<="0000010" ;

elsif dekadski=69 then led<="0000010" ;

elsif dekadski=70 then led<="1111000" ;

elsif dekadski=71 then led<="1111000" ;

elsif dekadski=72 then led<="1111000" ;

elsif dekadski=73 then led<="1111000" ;

elsif dekadski=74 then led<="1111000" ;

elsif dekadski=75 then led<="1111000" ;

elsif dekadski=76 then led<="1111000" ;

elsif dekadski=77 then led<="1111000" ;

elsif dekadski=78 then led<="1111000" ;

elsif dekadski=79 then led<="1111000" ;

elsif dekadski=80 then led<="0000000" ;

elsif dekadski=81 then led<="0000000" ;

elsif dekadski=82 then led<="0000000" ;

elsif dekadski=83 then led<="0000000" ;

elsif dekadski=84 then led<="0000000" ;

elsif dekadski=85 then led<="0000000" ;

elsif dekadski=86 then led<="0000000" ;

elsif dekadski=87 then led<="0000000" ;

elsif dekadski=88 then led<="0000000" ;

elsif dekadski=89 then led<="0000000" ;

12

Page 15: Xilinx ISE 9.2i - Digitalni Sat Koji Prikazuje Stotinke(Spartan 2,3)

elsif dekadski=90 then led<="0010000" ;

elsif dekadski=91 then led<="0010000" ;

elsif dekadski=92 then led<="0010000" ;

elsif dekadski=93 then led<="0010000" ;

elsif dekadski=94 then led<="0010000" ;

elsif dekadski=95 then led<="0010000";

elsif dekadski=96 then led<="0010000" ;

elsif dekadski=97 then led<="0010000" ;

elsif dekadski=98 then led<="0010000" ;

elsif dekadski=99 then led<="0010000";

end if;

AN1 <= '0'; -- uključi treći display

elsif (AN1='0') then -- provjera stanja trećeg display-a

AN1 <= '1'; -- isključi treći display

if dekadski=0 then led<="1000000" ; -- postavljanje dioda na display-u

elsif dekadski=1 then led<="1111001" ;

elsif dekadski=2 then led<="0100100" ;

elsif dekadski=3 then led<="0110000" ;

elsif dekadski=4 then led<="0011001" ;

elsif dekadski=5 then led<="0010010" ;

elsif dekadski=6 then led<="0000010" ;

elsif dekadski=7 then led<="1111000" ;

elsif dekadski=8 then led<="0000000" ;

elsif dekadski=9 then led<="0010000" ;

elsif dekadski=10 then led<="1000000" ;

elsif dekadski=11 then led<="1111001" ;

elsif dekadski=12 then led<="0100100" ;

elsif dekadski=13 then led<="0110000" ;

elsif dekadski=14 then led<="0011001" ;

elsif dekadski=15 then led<="0010010" ;

elsif dekadski=16 then led<="0000010" ;

elsif dekadski=17 then led<="1111000" ;

elsif dekadski=18 then led<="0000000" ;

elsif dekadski=19 then led<="0010000" ;

elsif dekadski=20 then led<="1000000" ;

elsif dekadski=21 then led<="1111001" ;

elsif dekadski=22 then led<="0100100" ;

elsif dekadski=23 then led<="0110000" ;

elsif dekadski=24 then led<="0011001" ;

13

Page 16: Xilinx ISE 9.2i - Digitalni Sat Koji Prikazuje Stotinke(Spartan 2,3)

elsif dekadski=25 then led<="0010010" ;

elsif dekadski=26 then led<="0000010" ;

elsif dekadski=27 then led<="1111000" ;

elsif dekadski=28 then led<="0000000" ;

elsif dekadski=29 then led<="0010000" ;

elsif dekadski=30 then led<="1000000" ;

elsif dekadski=31 then led<="1111001" ;

elsif dekadski=32 then led<="0100100" ;

elsif dekadski=33 then led<="0110000" ;

elsif dekadski=34 then led<="0011001" ;

elsif dekadski=35 then led<="0010010" ;

elsif dekadski=36 then led<="0000010" ;

elsif dekadski=37 then led<="1111000" ;

elsif dekadski=38 then led<="0000000" ;

elsif dekadski=39 then led<="0010000" ;

elsif dekadski=40 then led<="1000000" ;

elsif dekadski=41 then led<="1111001" ;

elsif dekadski=42 then led<="0100100" ;

elsif dekadski=43 then led<="0110000" ;

elsif dekadski=44 then led<="0011001" ;

elsif dekadski=45 then led<="0010010" ;

elsif dekadski=46 then led<="0000010" ;

elsif dekadski=47 then led<="1111000" ;

elsif dekadski=48 then led<="0000000" ;

elsif dekadski=49 then led<="0010000" ;

elsif dekadski=50 then led<="1000000" ;

elsif dekadski=51 then led<="1111001" ;

elsif dekadski=52 then led<="0100100" ;

elsif dekadski=53 then led<="0110000";

elsif dekadski=54 then led<="0011001";

elsif dekadski=55 then led<="0010010" ;

elsif dekadski=56 then led<="0000010" ;

elsif dekadski=57 then led<="1111000" ;

elsif dekadski=58 then led<="0000000" ;

elsif dekadski=59 then led<="0010000" ;

elsif dekadski=60 then led<="1000000" ;

elsif dekadski=61 then led<="1111001" ;

elsif dekadski=62 then led<="0100100" ;

elsif dekadski=63 then led<="0110000" ;

elsif dekadski=64 then led<="0011001" ;

14

Page 17: Xilinx ISE 9.2i - Digitalni Sat Koji Prikazuje Stotinke(Spartan 2,3)

elsif dekadski=65 then led<="0010010" ;

elsif dekadski=66 then led<="0000010" ;

elsif dekadski=67 then led<="1111000" ;

elsif dekadski=68 then led<="0000000" ;

elsif dekadski=69 then led<="0010000" ;

elsif dekadski=70 then led<="1000000" ;

elsif dekadski=71 then led<="1111001" ;

elsif dekadski=72 then led<="0100100" ;

elsif dekadski=73 then led<="0110000" ;

elsif dekadski=74 then led<="0011001" ;

elsif dekadski=75 then led<="0010010" ;

elsif dekadski=76 then led<="0000010" ;

elsif dekadski=77 then led<="1111000" ;

elsif dekadski=78 then led<="0000000" ;

elsif dekadski=79 then led<="0010000" ;

elsif dekadski=80 then led<="1000000" ;

elsif dekadski=81 then led<="1111001" ;

elsif dekadski=82 then led<="0100100" ;

elsif dekadski=83 then led<="0110000" ;

elsif dekadski=84 then led<="0011001" ;

elsif dekadski=85 then led<="0010010" ;

elsif dekadski=86 then led<="0000010" ;

elsif dekadski=87 then led<="1111000" ;

elsif dekadski=88 then led<="0000000" ;

elsif dekadski=89 then led<="0010000" ;

elsif dekadski=90 then led<="1000000" ;

elsif dekadski=91 then led<="1111001" ;

elsif dekadski=92 then led<="0100100" ;

elsif dekadski=93 then led<="0110000" ;

elsif dekadski=94 then led<="0011001" ;

elsif dekadski=95 then led<="0010010" ;

elsif dekadski=96 then led<="0000010" ;

elsif dekadski=97 then led<="1111000" ;

elsif dekadski=98 then led<="0000000" ;

elsif dekadski=99 then led<="0010000";

end if;

AN0 <= '0'; -- uključi četvrti display

end if;

end if;

CTR<=CTR+"0000000000001"; -- brojač prema gore, povećava se za 1

15

Page 18: Xilinx ISE 9.2i - Digitalni Sat Koji Prikazuje Stotinke(Spartan 2,3)

if(CTR>"1000000000000") then -- provjera stanja brojača

CTR<="0000000000000"; -- postavljanje brojača na početnu vrijednost

end if;

end if;

end process;

end Behavioral;

16