1 / 50

Konkurentne naredbe dodele

Konkurentne naredbe dodele. Kôd sad ržan u sekciji ARCHITECTURE Konkurentne naredbe dodele : Jednostavna konkurentna naredba dodele Nardba WHEN - uslovna naredba dodele Naredba SELECT - naredba dodele sa izborom vrednosti. Jednostavna konkurentna nareba dodele. signal <= izraz;

binah
Download Presentation

Konkurentne naredbe dodele

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. 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 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 Arhitektura mikrosistema

  3. Jednostavna konkurentna nareba dodele • Jednostavna konkurentna naredba dodele sa klauzulom after: • signal <= izraz afterkaš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 dodelePrimer: 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; 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 Arhitektura mikrosistema

  9. 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. 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. 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. 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_3 ... -- više vrednosti Arhitektura mikrosistema

  20. 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. SELECTPrimer: 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. SELECTPrimer: 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. SELECTPrimer: 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. SELECTPrimer: 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; WITH x SELECT z <= '0' WHEN "0000", '1' WHEN OTHERS; END select_arch; Arhitektura mikrosistema

  28. SELECTPrimer: 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. 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: Nije pogrešno, ali uvodi nepotrebna ograničenja (prioriteti) koji mogu otežati sintezu i uneti nepotreban hardver Arhitektura mikrosistema

  33. ´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'); END tri_state; 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. 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 := ("00000000“ "00000010", "00000100", "00001000", "00010000", "00100000", "01000000", "10000000"); 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. 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; WITH uslov SELECT x1 <= b WHEN ˝00˝, c WHEN ˝01˝, ˝00000001˝ WHEN OTHERS; r <= x0 + x1; Nivo ostvarene uštede zavisi od relativnog odnosa složenosti operatora i dodatnih multipleksera Arhitektura mikrosistema

  43. 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 '0'; eq <= '1' WHEN a = b ELSE '0'; 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 '0'; gt <= xgt; lt <= xlt; eq <= xgt NOR xlt; Još efikasnije: Arhitektura mikrosistema

  47. Konkurentni kod - Ispitni zadatak Arhitektura mikrosistema

  48. Konkurentni kod - Ispitni zadatakRešenje Arhitektura mikrosistema

  49. Konkurentni kod - Ispitni zadatak Arhitektura mikrosistema

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

More Related