Presentation is loading. Please wait.

Presentation is loading. Please wait.

Konkurentne naredbe dodele

Similar presentations


Presentation on theme: "Konkurentne naredbe dodele"— Presentation transcript:

1 Konkurentne naredbe dodele
Kôd sadržan u sekciji ARCHITECTURE Konkurentne naredbe dodele: Jednostavna konkurentna naredba dodele Nardba WHEN - uslovna naredba dodele Naredba SELECT - naredba dodele sa izborom vrednosti Većina programskih jezika su sekvencijalni, što znači da se programske naredbe izvršavaju jedna za drugom, tako da sledeća naredba počinje tek kad se prethodna završi. Sekvencijalni programski jezici su pogodni za opis algoritama koji definišu neko izračunavanje, funkciju ili proceduru. Međutim, sekvencijalni način opisa nije pogodan za verno modeliranje digitalnih sistema. Tipično, digitalni sistem se sastoji od više podsistema, koji rade nezavisno jedan od drugog, tj. istovremeno ili paralelno. Iako se funkcija svakog podsistema može opisati sekvencijalnim algoritmom, izražavanje paralelizma na sistemskom nivou zahteva posebnu podršku u jeziku za opis hardvera, kakav je VHDL. Takva podrška se nalazi u konkurentnim naredbama, koje se slično podsistemima ili kolima, izvršavaju (rade) istovremeno. VHDL poseduje podršku kako za sekvencijalno, tako i za konkurentno programiranje. U suštini, VHDL je konkurentan jezik, a da bi se nametnulo sekvencijalno izvršenje koriste se posebne konstrukcije: PROCESS, FUNCTION i PROCEDURE. Iako se naredbe u okviru ovih blokova izvršavaju sekvencijalno, svaki blok, kao celina, izvršava se konkurentno u odnosu na druge blokove i eksterne naredbe. Arhitektura mikrosistema

2 Jednostavna konkurentna nareba dodele
signal <= izraz; izraz – logički ili aritmetički izraz (sadrži operatore AND, NOT, +, sll i sl.) s <= a AND (b OR c); enable <= ´1´; sel <= (r1 AND r2) OR (r3 AND r4); sum <= a + b + c – 1; Za opis jednostavnih logičkih i aritmetičkih funkcija Konkurentna naredba dodele oblika je signal <= izraz. Izraz sadrži signale i konstante povezane operatorima, kao što su: AND, NOT, +, *, sll i slični. Vrednost izraza se izračunava i dodeljuje signalu sa leve strane znaka <= uvek kada se promeni vrednost barem jednog signala iz izraza. Ova naredba predstavljaju osnovni način za kreiranje konkurentnog kôda. Na primer, funkcija bilo kog kombinacionog kolo može se predstaviti u vidu logičkog izraza. Međutim, često, opis na ovako niskom nivou nije pogodan za modeliranje digitalnih kola složenije funkcije. Sledeći primer ilustruje primenu konkurentne naredbe dodele. Pored konkurentne naredbe dodele, signal <= izraz , često je u upotrebi i njena varijanta sa odloženim dodelom: signal <= izraz after kašnjenje. Na primer: a <= b AND c after 10 ns; Kao i bez ubačenog kašnjenja, naredba se izvršava u trenutku kada se promeni neki od signala b ili c. Međutim, vrednost izraza b AND c, koja se tom prilikom izračuna, ne dodeljuje se signalu a istog trenutka, već posle (after) kašnjenja od 10 ns. Ovaj oblik naredbe dodele koristi se u simulaciji za modeliranje propagacionog kašnjenja ili kreiranje pobudnih signala željenog talasnog oblika. Prethodni primer modelira I kolo sa propagacionim kašnjenje od ulaza do izlaza od 10 ns. U kôdu za sintezu, nije dozvoljeno koristiti kašnjenja. Arhitektura mikrosistema

3 Jednostavna konkurentna nareba dodele
Jednostavna konkurentna naredba dodele sa klauzulom after: signal <= izraz after kašnjenje; a <= b AND c after 10 ns; Koristi se u simulaciji. U sintezi niji dozvoljen. Arhitektura mikrosistema

4 Generisanje talasnog oblika
sig <= ´0´, ´1´ after 10 ns, ´0´ after 10 ns, ´1´ after 20 ns; Tipična primena u testbenču za generisanje pobudnih signala složenog talasnog oblika Arhitektura mikrosistema

5 Konceptualna implementacija konkurentne naredbe dodele
enable <= ´1´; sel <= (r1 AND r2) OR (r3 AND r4); sum <= a + b + c – 1; Arhitektura mikrosistema

6 Konkurentna nareba dodele Primer: multiplekser 4-u-1
LIBRARY ieee; USE ieee.std_logic_1164.all; ENTITY mux IS PORT ( a,b,c,d,s0,s1 : IN STD_LOGIC; y : OUT STD_LOGIC); END mux; ARCHITECTURE log_funk OF mux IS BEGIN y <= (a AND NOT s1 AND NOT s0) OR (b AND NOT s1 AND s0) OR (c AND s1 AND NOT s0) OR (d AND s1 AND s0); END log_funk; Na Sl. 2‑16(a) prikazan je grafički simbol multipleksera 4-u-1. Vrednost selekcionih ulaza (s1, s0) bira jedan od ulaza, a, b, c ili d čija se vrednost prenosi na izlaz y. Realizacija multipleksera 4-u-1 pomoću logičkih kola prikazana je na Sl. 2‑16(b). Funkcija multipleksera se može opisati u VHDL-u u vidu logičkog izraza na sledeći način Nizak nivo opisa Arhitektura mikrosistema

7 Konkurentna naredba dodele sa zatvorenom petljom
q <= (q AND NOT en) OR (d AND en); Nije zabranjeno, ali nije preporučljivo ! (stvaraju se interna stanja i mogu se izazvati oscilacije u kolu) Za en=‘1’, q = d. Međutim, za en = ‘0’, q = q - zadržava svoju vrednost => stvara se memorija q <= (NOT q AND NOT en) OR (d AND en); Za en=‘0’, q = NOT q - oscilovanje ! Za modelovanje sekvencijalnog ponašanja koriste se sekvencijalne naredbe ! Arhitektura mikrosistema

8 WHEN - konkurentna naredba uslovne dodele
Uopštenje konkurentne naredbe dodele S desne strane znaka <= može se naći više od jednog izraza. Sintaksa: sig <= izraz_1 WHEN uslov_1 ELSE izraz_2 WHEN uslov_2 ELSE ... izraz_n-1 WHEN uslov_n-1 ELSE izraz_n; ˝uslov˝ - logički/relacioni izraz koji može biti tačan ili netačan, npr: (a OR b) ili (a > b) ˝uslovi˝ se ispituju redom, a signal dobija vrednost prvog izraza čiji je uslov tačan Ako ni jedan uslov nije tačan, izvršava se izraz iz poslednje grane Naredba WHEN, u suštini, predstavlja uopštenje konkurentne naredbe dodele. Za razliku od standardne naredba dodele, kod koje se sa desne strane znaka <= može naći sam jedan izraz, naredba WHEN omogućava da se sa desne strane znaka <= nađe više od jednog izraza. Svakom takvom izrazu pridružuje se uslov, a jedinstveni signal sa leve strane znaka <= dobija vrednost onog izraza čiji uslov je ispunjen, tj. tačan. Postoje dva oblika uslovne naredbe dodele: WHEN/ELSE (ili uslovna naredba dodele) i WITH/SELECT/WHEN (ili SELECT naredba). Njihova sintaksa je sledeća Arhitektura mikrosistema

9 Arhitektura mikrosistema
WHEN - primer outp <= “000” WHEN (inp=΄0΄ OR reset=΄1΄) ELSE “101” WHEN ctl=΄1΄ ELSE “010”; Ako važi inp=΄0΄ ili reset=΄1΄, tada outp <= “000”, inače ako važi ctl=΄1΄ , tada outp <= “101”, inače outp <= “010” Arhitektura mikrosistema

10 WHEN Primer: Multiplekser
LIBRARY ieee; USE ieee.std_logic_1164.all; ENTITY mux IS PORT ( a,b,c,d : IN STD_LOGIC; sel: IN STD_LOGIC_VECTOR(1 DOWNTO 0); y : OUT STD_LOGIC); END mux; ARCHITECTURE when_arch OF mux IS BEGIN y <= a WHEN sel = "00" ELSE b WHEN sel = "01" ELSE c WHEN sel = "10" ELSE d; END when_arch; Pokriva sel=˝11˝, ali i sve preostale, nebinarne kombinacije, kao što su ˝0-˝, ˝LH˝, ˝ZW˝ Arhitektura mikrosistema

11 Arhitektura mikrosistema
WHEN Primer: Dekoder LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY dek2u4 IS PORT (d : IN STD_LOGIC_VECTOR(1 DOWNTO 0); e : IN STD_LOGIC; y : OUT STD_LOGIC_VECTOR(3 DOWNTO 0)); END dek2u4; ARCHITECTURE when_arch OF dek2u4 IS BEGIN y <= "0000" WHEN e = ´0´ ELSE "0001" WHEN d = "00" ELSE "0010" WHEN d = "01" ELSE "0100" WHEN d = "10" ELSE "1000"; END when_arch; Arhitektura mikrosistema

12 Arhitektura mikrosistema
WHEN Primer: Koder LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY encoder IS PORT (x : IN STD_LOGIC_VECTOR(3 DOWNTO 0); y : OUT STD_LOGIC_VECTOR(1 DOWNTO 0)); END encoder; ARCHITECTURE when_arch OF encoder IS BEGIN y <= "00" WHEN x="0001" ELSE "01" WHEN x="0010" ELSE "10" WHEN x="0100" ELSE "11"; END when_arch; Arhitektura mikrosistema

13 Arhitektura mikrosistema
WHEN Primer: Koder ˝-˝ - kako izraziti proizvoljnu vrednost y <= "00" WHEN x="0001" ELSE "01" WHEN x="0010" ELSE "10" WHEN x="0100" ELSE "11" WHEN x="1000" ELSE "--"; Arhitektura mikrosistema

14 WHEN Primer: Prioritetni koder
LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY pencoder IS PORT (x : IN STD_LOGIC_VECTOR(3 DOWNTO 0); y : OUT STD_LOGIC_VECTOR(1 DOWNTO 0); z : OUT STD_LOGIC); END pencoder; ARCHITECTURE when_arch OF pencoder IS BEGIN y <= "11" WHEN x(3) = '1' ELSE "10" WHEN x(2) = '1' ELSE "01" WHEN x(1) = '1' ELSE "00"; z <= '0' WHEN x = "0000" ELSE '1'; END when_arch; Arhitektura mikrosistema

15 Konceptualna implementacija WHEN naredbe
sig <= izraz_1 WHEN uslov_1 ELSE izraz_2; Apstraktni multiplekser: T (true) - uslov je tačan F (false) - uslov je netačan Konceptualni dijagram Arhitektura mikrosistema

16 Konceptualna implementacija WHEN naredbe
sig <= izraz_1 WHEN uslov_1 ELSE izraz_2 WHEN uslov_2 ELSE izraz_3 WHEN uslov_3 ELSE izraz_4; Arhitektura mikrosistema

17 Sinteza WHEN naredbe SIGNAL a,b,y : STD_LOGIC; . . .
y <= ´0´ WHEN a=b ELSE ´1´; U sintezi STD_LOGIC ima dve vrednosti: ‘0’ i ‘1’ U sintezi T - ‘1’, F - ‘0’ Arhitektura mikrosistema

18 Konceptualna implementacija WHEN naredbe - primer
SIGNAL a,b,f : UNSIGNED(7 DOWNTO 0); SIGNAL x,y : UNSIGNED(3 DOWNTO 0); . . . f <= a+b WHEN x+y>1 ELSE a-b-1 WHEN x>y AND y!=0 ELSE a+1; Nije kraj sinteze ! Sledi zamen apstraktnih blokova Odgovarajućim modulima realizovanim pomoću logičkih kola Arhitektura mikrosistema

19 SELECET - naredba dodele sa izborom vrednosti
Sintaksa: WITH selekcioni_izraz SELECT sig <= izraz_1 WHEN vrednost_1, izraz_2 WHEN vrednost_2, ... izraz_n WHEN vrednost_n; selekcioni_izraz –aritmetički ili logički izraz Izračunata vrednost selekcioni_izraz, poredi se sa vrednostima iz svih grana, a signal dobija vrednost izraza iz grane gde se javilo slaganje. Zahtev: svaka moguća vrednost selekcionog_izraza mora biti pokrivena tačno jednom granom. ˝WHEN vrednost˝ može biti: WHEN vrednost; -- jedinstvena vrednost WHEN vrednost_1 TO vrednost_2; -- opseg vrednosti WHEN vrednost_1 | vrednost_2 | vrednost_ više vrednosti U drugoj varijanti (WITH/SELECT/WHEN), najpre se izračuna vrednost izraza iz zaglavlja naredbe (selekcioni_izraz); zatim se ova vrednost poredi sa vrednostima iz svih WHEN grana (istovremeno); i konačno, signalu se dodeljuje vrednost izraz iz grane u kojoj se javilo slaganje. Ova varijanta zahteva da svaki mogući rezultat selekcionog izraza bude pokriven tačno jednom WHEN vrednošću. Takođe, dozvoljeno je korišćenje ključne reči OTHERS da bi se označio izraz koji će biti izvršen ako se rezultat selekcionog izraza ne poklapa ni sa jednom eksplicitno navedenom vrednošću: WITH selekcioni_izraz SELECT signal <= izraz WHEN vrednost, izraz WHEN vrednost, ... izraz WHEN OTHERS; ˝WHEN vrednost˝ iz naredbe WITH/SELECT/WHEN može biti navedena na tri načina: WHEN vrednost jedinstvena vrednost WHEN vrednost_1 to vrednost_ opseg vrednosti (samo kod -- nabrojivih tipova) WHEN vrednost_1 | vrednost_2 | vrednost_ vrednost_1 ili vrednost_2 -- ili vrednost_3 ili ... Arhitektura mikrosistema

20 Arhitektura mikrosistema
SELECT Dozvoljeno korišćenje reči OTHERS: WITH selekcioni_izraz SELECT sig <= izraz_1 WHEN vrednost_1, izraz_2 WHEN vrednost_2, ... izraz_n WHEN OTHERS; Primer: WITH contol SELECT outp <= “000” WHEN “00” “111” WHEN “01” | “10” “010” WHEN OTHERS; Bira se ako vrednost selekcionog izraza nije jednaka ni jednoj navedenoj vrednosti Arhitektura mikrosistema

21 Realizacija tabele istinitosti
Arhitektura mikrosistema

22 OTHERS grana je neophodna kad se radi s tipom std_logic !
tmp <= a & b; WITH tmp SELECT y <= '0' WHEN "00", '1' WHEN "01", '0' WHEN "10", '1' WHEN "11"; Sve moguće vrednosti selekcionog signala moraju biti pokrivene. Za tip std_logic to nisu samo ˝00˝, ˝01˝, ˝10˝, ˝11˝, već i ˝0X˝, ˝HL˝, … (sve ukupno 64). Arhitektura mikrosistema

23 Realizacija tabele istinitosti
Kompaktnije zapisivanje Arhitektura mikrosistema

24 SELECT Primer: Multiplekser
ARCHITECTURE select_arch OF mux4u1 IS BEGIN WITH sel SELECT y <= a WHEN "00", -- "," umesto ";" b WHEN "01", c WHEN "10", d WHEN OTHERS; -- ne moze d WHEN "11" END select_arch; Arhitektura mikrosistema

25 SELECT Primer: Dekoder
ARCHITECTURE select_arch OF dek2u4 IS SIGNAL ed : STD_LOGIC_VECTOR(2 DOWNTO 0); BEGIN ed <= e & d; WITH ed SELECT y <= "1000" WHEN "100", "0100" WHEN "101", "0010" WHEN "110", "0001" WHEN "111", "0000" WHEN OTHERS; END select_arch; Arhitektura mikrosistema

26 Arhitektura mikrosistema
SELECT Primer: Koder ARCHITECTURE select_arch OF encoder IS BEGIN WITH x SELECT y <= "00" WHEN "0001", "01" WHEN "0010", "10" WHEN "0100", "11" WHEN OTHERS; END select_arch; WITH x SELECT y <= "00" WHEN "0001", "01" WHEN "0010", "10" WHEN "0100", "11" WHEN "1000", "--" WHEN OTHERS; Arhitektura mikrosistema

27 SELECT Primer: Prioritetni koder
ARCHITECTURE select_arch OF pencoder IS BEGIN WITH x SELECT y <="00" WHEN "0001", "01" WHEN "0010" | "0011"; "10" WHEN "0100" | "0101" | "0110" | "0111", "11" WHEN OTHERS; z <= '0' WHEN "0000", '1' WHEN OTHERS; END select_arch; Arhitektura mikrosistema

28 Arhitektura mikrosistema
SELECT Primer: ALU Arhitektura mikrosistema

29 Konceptualna implementacija naredbe SELECT
WITH sel SELECT sig <= izraz_1 WHEN v1, izraz_2 WHEN v2, ... izraz_n WHEN vn; WITH sel SELECT sig <= izraz_1 WHEN v1, izraz_2 WHEN v2, izraz_3 WHEN OTHERS Arhitektura mikrosistema

30 Konceptualna implementacija naredbe SELECT - primer
SIGNAL s: STD_LOGIC_VECTOR(1 DOWNTO 0); . . . WITH s SELECT x <= (a AND b) WHEN "11", (a OR b) WHEN "01" | "10", ’0’ WHEN OTHERS; Arhitektura mikrosistema

31 Konceptualna implementacija naredbe SELECT - primer
SIGNAL a,b,r: UNSIGNED(7 DOWNTO 0); SIGNAL s: STD_LOGIC_VECTOR(1 DOWNTO 0); . . . WITH s SELECT r <= a+1 WHEN "11", a-b-1 WHEN "10", a+b WHEN OTHERS; Arhitektura mikrosistema

32 Arhitektura mikrosistema
SELECT vs. WHEN/ELSE SELECT Kada je kolo opisano tabelom istinitosti ili nekom formom funkcionalne tabele (npr. dekoder, multiplekser, ...) WHEN/ELSE Kada se nekim ulazima ili operacijama daje viši prioritet (npr. prioritetni koder) Koncizno opisivanje složenih uslova, kao na primer: r <= a+b WHEN (x+y>1 AND x>3) ELSE a-b-1 WHEN (z>v AND f = ’1’) ELSE Manje efikasna kada treba opisati tabelu istinitosti: Naredba SELECT je pogodna za opisivanje kola definisanih tabelom istinitosti ili nekom formom funkcionalne tabele (kao što su dekoder ili multiplekser) – svaka grana SELECT naredbe odgovara jednoj vrsti tabele istinitosti. Sa druge strane, WHEN/ELSE naredba omogućava opis kola kod kojih se nekim ulazima ili operacijama daje viši prioritet (kao što je to slučaj kod prioritetnog kodera). Takođe, WHEN/ELSE naredba omogućava koncizno opisivanje složenih uslova, kao na primer r <= a+b WHEN (x+y>1 AND x>3) ELSE a-b-1 WHEN (z>v AND f = ’1’) ELSE . . . Nije pogrešno, ali uvodi nepotrebna ograničenja (prioriteti) koji mogu otežati sintezu i uneti nepotreban hardver Arhitektura mikrosistema

33 Arhitektura mikrosistema
´Z´ LIBRARY ieee; USE ieee.std_logic_1164.all; ENTITY tri_state IS PORT (ena : IN STD_LOGIC; input : IN STD_LOGIC_VECTOR(7 DOWNTO 0); output : OUT STD_LOGIC_VECTOR(7 DOWNTO 0)); END tri_state; ARCHITECTURE tri_state OF tri_state IS BEGIN output <= input WHEN (ena = '0') ELSE (OTHERS => 'Z'); Arhitektura mikrosistema

34 ´Z´ - ograničenja u sintezi
Ne može se koristiti kao ulazna vrednost, niti se s ovom vrednošću može manipulisati na način kao sa logičkim vrednostima ´0´ i ´1´. Sledeće dve naredbe se ne mogu sintetizovati: r <= ’Z’ AND a; g <= d - c WHEN a = ’Z’ ELSE d - b; Arhitektura mikrosistema

35 Bidirekcioni (ulazno/izlazni) port
Port koji se po potrebi može koristiti bilo kao ulaz bilo kao izlaz. ENTITY bi_port IS PORT(... bi : INOUT STD_LOGIC; ...); BEGIN ... bi <= sig_out WHEN dir = ’1’ ELSE ’Z’; sig_in <= bi; Princip: Za dir=´1´, bi je izlaz Za dir=´0´, bi je ulaz Smer: inout Arhitektura mikrosistema

36 Trostatička magistrala
LIBRARY ieee; USE ieee.std_logic_1164.all; ENTITY mux IS PORT ( a,b,c,d : IN STD_LOGIC; sel: IN STD_LOGIC_VECTOR(1 DOWNTO 0); y : OUT STD_LOGIC); END mux; ARCHITECTURE tri_state OF mux IS BEGIN y <= a WHEN sel = "00" ELSE 'Z'; y <= b WHEN sel = "01" ELSE 'Z'; y <= c WHEN sel = "10" ELSE 'Z'; y <= d WHEN sel = "11" ELSE 'Z'; END tri_state; Arhitektura mikrosistema Magistrala

37 Arhitektura mikrosistema
ROM ROM (prema eng. Read-Only Memory) je memorija sa konstantnim sadržajem - memorijska komponenta koja može samo da se čita. Arhitektura mikrosistema

38 ROM LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.NUMERIC_STD.ALL; ENTITY ROM IS PORT (addr : IN STD_LOGIC_VECTOR(2 DOWNTO 0); data : OUT STD_LOGIC_VECTOR(7 DOWNTO 0)); END ROM; ARCHITECTURE rom OF ROM IS TYPE mem_array IS ARRAY (0 TO 7) OF STD_LOGIC_VECTOR(7 DOWNTO 0); CONSTANT memory : mem_array := (" “ " ", " ", " ", " ", " ", " ", " "); BEGIN data <= memory(TO_INTEGER(UNSIGNED(addr))); END rom; Zato što indeks polja može biti samo integer Arhitektura mikrosistema

39 Optimizacija konkurentnog koda
Cilj: sa što manje hardverskih resursa realizovati željenu funkciju Minimizacija broja aritmetičkih i relacionih operatora u kodu Dve tehnike: Deoba operatora i Deoba funkcija Arhitektura mikrosistema

40 Arhitektura mikrosistema
Deoba operatora Kako smanjiti broj aritmetičkih operatora u kodu? Preurediti kôd tako da se se isti operator može iskoristiti za obavljanje više različitih operacija. r <= a + b WHEN uslov ELS a + c; x <= b WHEN uslov ELSE c; r <= a + x; Arhitektura mikrosistema

41 Složenost vs. kašnjenje
Složenost: 2 sabirača + multiplekser Složenost: 1 sabirač + multiplekser Kašnjenje: max{Tsab, Tuslov} + Tmux Kašnjenje: Tsab + Tuslov + Tmux Arhitektura mikrosistema

42 Deoba operatora na primeru naredbe select:
WITH uslov SELECT r <= a+b WHEN ˝00˝, a+c WHEN ˝01˝, d+1 WHEN OTHERS; WITH uslov SELECT x0 <= a WHEN ˝00˝ | ˝01˝, d WHEN OTHERS; x1 <= b WHEN ˝00˝, c WHEN ˝01˝, ˝ ˝ WHEN OTHERS; r <= x0 + x1; Nivo ostvarene uštede zavisi od relativnog odnosa složenosti operatora i dodatnih multipleksera Arhitektura mikrosistema

43 Arhitektura mikrosistema
Deoba funkcija Više funkcija realizuju se tako da dele neke zajedničke delove ili se jedna funkcija koristi za realizaciju neke druge funkcije. Sabirač/oduzimač ARCHITECTURE arch_v1 OF ADDSUB IS SIGNAL x0, x1, sum : SIGNED(7 DOWNTO 0); BEGIN x0 <= SIGNED(a); x1 <= SIGNED(b); sum <= x0 + x1 WHEN ctrl = ‘0’ ELSE x0 - x1; r <= STD_LOGIC_VECTOR(sum); END arch_v1; Funkcionalna tabela Arhitektura mikrosistema

44 Deoba funkcija – optimizovana realizacija sabirača/oduzimača
Oduzimanje je isto što i sabiranje s potpunim komplementom umanjioca: a - b = a + b’ + 1 ARCHITECTURE arch_v2 OF ADDSUB IS SIGNAL x0, x1, sum : UNSIGNED(7 DOWNTO 0); SIGNAL cin : UNSIGNED(0 DOWNTO 0); BEGIN x0 <= UNSIGNED(a); x1 <= UNSIGNED(b) WHEN ctrl=´0´ ELSE UNSIGNED(NOT b); cin <= ˝0˝ WHEN ctrl=´0´ ELSE ˝1˝; sum <= x0 + x1 + cin; r <= STD_LOGIC_VECTOR(sum); END arch_v2; ˝multiplekser + niz invertora˝ < ˝oduzimač˝ Arhitektura mikrosistema

45 Deoba funkcija na primeru komparatora
Komparator (potpuni komparator) gt <= '1' WHEN a > b ELSE '0'; lt <= '1' WHEN a < b ELSE eq <= '1' WHEN a = b ELSE a > b a < b a = b Arhitektura mikrosistema

46 Deoba funkcija na primeru komparatora
a je jednako b, ako a nije ni veće ni manje od b xgt <= '1' WHEN a > b ELSE '0'; xlt <= '1' WHEN a < b ELSE gt <= xgt; lt <= xlt; eq <= xgt NOR xlt; Još efikasnije: Arhitektura mikrosistema

47 Konkurentni kod - Ispitni zadatak
Arhitektura mikrosistema

48 Konkurentni kod - Ispitni zadatak Rešenje
Arhitektura mikrosistema

49 Konkurentni kod - Ispitni zadatak
Arhitektura mikrosistema

50 Konkurentni kod - Ispitni zadatak Rešenje
Zašto je neophodan pomoćni signal mux_out ? Arhitektura mikrosistema


Download ppt "Konkurentne naredbe dodele"

Similar presentations


Ads by Google