Konkurentne naredbe dodele Kôd sadržan u sekciji ARCHITECTURE
k db d d l Konkurentne naredbe dodele: Jednostavna konkurentna naredba dodele Naredba WHEN - uslovna naredba dodele Naredba SELECT naredba dodele sa izborom Naredba SELECT - naredba dodele sa izborom
vrednosti
Arhitektura mikrosistema
Jednostavna konkurentna nareba dodele signal <= izraz;
i l ički ili i ički i ( d ži 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
Jednostavna konkurentna nareba dodele Jednostavna konkurentna naredba dodele sa
klauzulom after: signal <= izraz after kašnjenje; a <= b AND c after 10 ns;
K i ti i l iji U i t i iji d lj Koristi se u simulaciji. U sintezi niji dozvoljen.
aa
b
c
ab
c
Tp = 10 ms
Arhitektura mikrosistema
10 ms 10 ms
Generisanje talasnog oblika
sig <= ´0´, ´1´ after 10 ns, ´0´ after 10 ns, ´1´ after 20 ns;
Tipična primena u testbenču za generisanjeTipična primena u testbenču za generisanje pobudnih signala složenog talasnog oblika
Arhitektura mikrosistema
Konceptualna implementacijaKonceptualna implementacija konkurentne naredbe dodele enable <= ´1´; sel <= (r1 AND r2) OR (r3 AND r4); sum <= a + b + c – 1;
Arhitektura mikrosistema
Konkurentna nareba dodeleKonkurentna nareba dodelePrimer: multiplekser 4-u-1LIBRARY ieee;USE ieee.std_logic_1164.all;ENTITY mux ISENTITY mux IS
PORT ( a,b,c,d,s0,s1 : IN STD_LOGIC;y : OUT STD_LOGIC);
END mux;;ARCHITECTURE log_funk OF mux ISBEGIN
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
Konkurentna naredba dodele saKonkurentna naredba dodele sa zatvorenom petljom q <= (q AND NOT en) OR (d AND en);
Nije zabranjeno, ali nije preporučljivo !( t j i t t j i i ti il ij k l )(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 memorijaj
q <= (NOT q AND NOT en) OR (d AND en);Za en=‘0’, q = NOT q - oscilovanje !
Za modelovanje sekvencijalnog ponašanja koriste seArhitektura mikrosistema
Za modelovanje sekvencijalnog ponašanja koriste se sekvencijalne naredbe !
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 ELSEizraz_2 WHEN uslov_2 ELSE...
izraz_n-1 WHEN uslov_n-1 ELSEizraz_n;
˝uslov˝ - logički/relacioni izraz koji može biti tačan ili netačan, npr: (a=’1’ OR b=’0’) ili (a > b)
˝uslovi˝ se ispituju redom a signal dobija vrednost prvog izraza 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
WHEN - primer
outp <= “000” WHEN (inp=΄0΄ OR reset=΄1΄) ELSE“101” WHEN ctl=΄1΄ ELSE“010”“010”;
Ako važi inp=΄0΄ ili reset=΄1΄ tada outp <= “000” inačeAko važi inp= 0 ili reset= 1 , tada outp <= “000”, inače
ako važi ctl=΄1΄ , tada outp <= “101”, inače
outp <= “010”outp <= 010
Arhitektura mikrosistema
WHENWHEN Primer: MultiplekserLIBRARY ieee;USE ieee.std logic 1164.all;_ g _ ;ENTITY mux IS
PORT ( a,b,c,d : IN STD_LOGIC;sel: IN STD_LOGIC_VECTOR(1 DOWNTO 0);y : OUT STD LOGIC);y : OUT STD_LOGIC);
END mux;ARCHITECTURE when_arch OF mux ISBEGIN
y <= a WHEN sel = "00" ELSEb WHEN sel = "01" ELSEc WHEN sel = "10" ELSEc WHEN sel 10 ELSEd;
END when_arch; Pokriva sel=˝11˝, ali i sve preostale nebinarne
Arhitektura mikrosistema
preostale, nebinarne kombinacije, kao što su ˝0-˝,
˝LH˝, ˝ZW˝
WHENWHEN Primer: DekoderLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY dek2u4 ISPORT (d : IN STD_LOGIC_VECTOR(1 DOWNTO 0);
e : IN STD_LOGIC;y : OUT STD LOGIC VECTOR(3 DOWNTO 0));y : OUT STD_LOGIC_VECTOR(3 DOWNTO 0));
END dek2u4;ARCHITECTURE when_arch OF dek2u4 ISBEGINy <= "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
WHENWHEN Primer: KoderLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY encoder ISPORT (x : IN STD_LOGIC_VECTOR(3 DOWNTO 0);
y : OUT STD_LOGIC_VECTOR(1 DOWNTO 0));END encoder;ARCHITECTURE when_arch OF encoder ISBEGIN
y <= "00" WHEN x="0001" ELSE01 0010
x3 x2 x1 x0 y1 y0 "01" WHEN x="0010" ELSE"10" WHEN x="0100" ELSE"11";
END h h
0 0 0 1 0 0 0 0 1 0 0 1 0 1 0 0 1 0 END when_arch; 1 0 0 0 1 1 sve ostale komb. - -
Arhitektura mikrosistema
WHENWHEN Primer: Koder
˝ ˝ k k i iti i lj d t˝-˝ - kako izraziti proizvoljnu vrednost
x3 x2 x1 x0 y1 y0 0 0 0 1 0 0 0 0 1 0 0 1 0 1 0 0 1 0
y <= "00" WHEN x="0001" ELSE"01" WHEN x="0010" ELSE"10" WHEN x="0100" ELSE"11" WHEN "1000" ELSE 0 1 0 0 1 0
1 0 0 0 1 1 sve ostale komb. - -
"11" WHEN x="1000" ELSE"--";
Arhitektura mikrosistema
WHENWHEN Primer: Prioritetni koderLIBRARY 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 ISBEGIN
y <= "11" WHEN x(3) = '1' ELSEx3 x2 x1 x0 y1 y0 z 0 0 0 0 0 0 0 y <= 11 WHEN x(3) = '1' ELSE
"10" WHEN x(2) = '1' ELSE"01" WHEN x(1) = '1' ELSE"00";
0 0 0 1 0 0 1 0 0 1 - 0 1 1 0 1 - - 1 0 1 1 1 1 100 ;
z <= '0' WHEN x = "0000" ELSE '1';
END when arch;
1 - - - 1 1 1
Arhitektura mikrosistema
END when_arch;
Konceptualna implementacija WHEN naredbesig <= izraz_1 WHEN uslov_1 ELSE
izraz 2;_ ;Apstraktni multiplekser:T (true) - uslov je tačan
F (false) - uslov je netačanF (false) uslov je netačan
Konceptualnidijagram
Arhitektura mikrosistema
Konceptualna implementacija WHEN naredbe
sig <= izraz_1 WHEN uslov_1 ELSEizraz_2 WHEN uslov_2 ELSE izraz_3 WHEN uslov_3 ELSEizraz_4;
Arhitektura mikrosistema
Sinteza WHEN naredbeSIGNAL a,b,y : STD_LOGIC;. . .y <= ´0´ WHEN a=b ELSE U sintezi STD_LOGIC ima dve
d i ‘0’ i ‘1’y 0 WHEN a b ELSE´1´;
. . .
vrednosti: ‘0’ i ‘1’
a b a=b 0 00 0 1 0 1 0 1 0 0 1 1 1 1
Arhitektura mikrosistemaU sintezi T - ‘1’, F - ‘0’
Konceptualna implementacija WHENKonceptualna implementacija WHEN naredbe - primerSIGNAL a,b,f : UNSIGNED(7 DOWNTO 0);SIGNAL x,y : UNSIGNED(3 DOWNTO 0);. . .
Nije kraj sinteze !Sledi zamen apstraktnih blokova
f <= a+b WHEN x+y>1 ELSEa-b-1 WHEN x>y AND y!=0 ELSEa+1;
Sledi zamen apstraktnih blokovaOdgovarajućim modulima realizovanim
pomoću logičkih kola. . .
Arhitektura mikrosistema
SELECET - naredba dodele saSELECET naredba dodele sa izborom vrednosti Sintaksa:
WITH selekcioni_izraz SELECTsig <= izraz 1 WHEN vrednost 1sig <= izraz_1 WHEN vrednost_1,
izraz_2 WHEN vrednost_2,...izraz n WHEN vrednost n;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 javilosvih 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 granompokrivena tačno jednom granom.
˝WHEN vrednost˝ može biti: WHEN vrednost; -- jedinstvena vrednost
WHEN d t 1 TO d t 2 d tiArhitektura mikrosistema
WHEN vrednost_1 TO vrednost_2; -- opseg vrednosti WHEN vrednost_1 | vrednost_2 | vrednost_3 ... -- više vrednosti
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: Bira se ako vrednost Primer:
WITH contol SELECToutp <= “000” WHEN “00”
selekcionog izraza nije jednaka ni jednoj
navedenoj vrednostip“111” WHEN “01” | “10”“010” WHEN OTHERS;
Arhitektura mikrosistema
Realizacija tabele istinitosti1 --------------------------------------------- 2 LIBRARY ieee; 3 USE ieee.std_logic_1164.all; 4 --------------------------------------------- 5 ENTITY tabela_istinitosti IS 6 PORT (a,b : IN STD_LOGIC; 7 y : OUT STD LOGIC);7 y : OUT STD_LOGIC); 8 END tabela_istinitosti; 9---------------------------------------------- 10 ARCHITECTURE arch OF tabela_istinitosti IS
b
11 SIGNAL tmp : STD_LOGIC_VECTOR(1 DOWNTO 0); 12 BEGIN 13 tmp <= a & b; 14 WITH tmp SELECTa b y
0 0 0 0 1 1 1 0 1
14 WITH tmp SELECT 15 y <= '0' WHEN "00", 16 '1' WHEN "01", 17 '1' WHEN "10",,
Arhitektura mikrosistema
1 0 1 1 1 1
18 '1' WHEN OTHERS; 19 END arch;
OTHERS grana je neophodna kad seOTHERS grana je neophodna kad se radi s tipom std_logic !
a b y 0 0 0 0 1 1
tmp <= a & b;WITH tmp SELECTy <= '0' WHEN "00",
0 1 1 1 0 0 1 1 1
y'1' WHEN "01",'0' WHEN "10",'1' WHEN "11";
Sve moguće vrednosti selekcionog signala moraju biti pokrivene Za tipSve moguće vrednosti selekcionog signala moraju biti pokrivene. Za tip std_logic to nisu samo ˝00˝, ˝01˝, ˝10˝, ˝11˝, već i ˝0X˝, ˝HL˝, … (ukupno 64).
Arhitektura mikrosistema
Realizacija tabele istinitosti
a b y 0 0 0 0 1 1 1 0 0
Kompaktnije zapisivanje1 0 0 1 1 1
y <= '1' WHEN "01" | "11", '0' WHEN OTHERS;
y <= '0' WHEN "00" | "10", '1' WHEN OTHERS;
Arhitektura mikrosistema
SELECTSELECTPrimer: Multiplekser
ARCHITECTURE select_arch OF mux4u1 ISBEGINWITH 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
SELECTSELECTPrimer: Dekoder
ARCHITECTURE select_arch OF dek2u4 ISSIGNAL ed : STD_LOGIC_VECTOR(2 DOWNTO 0);
BEGINBEGINed <= e & d;WITH ed SELECTy <= “0001" WHEN "100",y < 0001 WHEN 100 ,
"0010" WHEN "101","0100" WHEN "110",“1000" WHEN "111",,"0000" WHEN OTHERS;
END select_arch;
Arhitektura mikrosistema
SELECTSELECTPrimer: KoderARCHITECTURE select_arch OF encoder ISBEGIN
WITH x SELECTWITH x SELECTy <= "00" WHEN "0001",
"01" WHEN "0010", "10" WHEN "0100",10 WHEN 0100 , "11" WHEN OTHERS;
END select_arch;
WITH x SELECTy <= "00" WHEN "0001",
x3 x2 x1 x0 y1 y0 0 0 0 1 0 0 y < 00 WHEN 0001 ,
"01" WHEN "0010", "10" WHEN "0100", "11" WHEN "1000",
0 0 1 0 0 1 0 1 0 0 1 0 1 0 0 0 1 1
Arhitektura mikrosistema
,"--" WHEN OTHERS; sve ostale komb. - -
SELECTSELECTPrimer: Prioritetni koder
x3 x2 x1 x0 y1 y0 z 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 1 - 0 1 1 0 1 - - 1 0 1 1 - - - 1 1 1
ARCHITECTURE select_arch OF pencoder ISBEGINWITH x SELECTy <="00" WHEN "0001",
"01" WHEN "0010" | "0011";"10" WHEN "0100" | "0101" | "0110" | "0111","11" WHEN OTHERS;
WITH x SELECT z <= '0' WHEN "0000",
1Arhitektura mikrosistema
'1' WHEN OTHERS;END select_arch;
SELECTSELECTPrimer: ALU Microsoft Word
Document
sel Operacija Funkcija Jedinica 0000 y <= a Transfer a 0001 y <= a + 1 Inkrement a y0010 y <= a - 1 Dekrement a 0011 y <= b Transfer b 0100 y <= b + 1 Inkrement b 0101 b 1 D k b
Aritmetička
0101 y <= b - 1 Dekrement b 0110 y <= a + b Sabiranje 0111 y <= a-b Oduzimanje 1000 y <= NOT a Komplement a y p1001 y <= NOT b Komplement b 1010 y <= a AND b I 1011 y <= a OR b ILI 1100 y <= a NAND b NI
Logička
1100 y < a NAND b NI 1101 y <= a NOR b NILI 1110 y <= a XOR b Iskljucivo ILI 1111 y <= a NXOR b Iskljucivo NILI
Arhitektura mikrosistema
(a) (b)
Konceptualna implementacija naredbeKonceptualna implementacija naredbe SELECTWITH sel SELECT
sig <= izraz_1 WHEN v1,izraz 2 WHEN v2
WITH sel SELECTsig <= izraz_1 WHEN v1,izraz_2 WHEN v2,
...izraz_n WHEN vn;
izraz_2 WHEN v2,
izraz_3 WHEN OTHERS
Arhitektura mikrosistema
Konceptualna implementacija naredbeKonceptualna implementacija naredbe SELECT - primerSIGNAL s: STD_LOGIC_VECTOR(1 DOWNTO 0);. . .WITH s SELECTWITH s SELECT
x <= (a AND b) WHEN "11",(a OR b) WHEN "01" | "10",’0’ WHEN OTHERS’0’ WHEN OTHERS;
. . .
Arhitektura mikrosistema
Konceptualna implementacija naredbeKonceptualna implementacija naredbe SELECT - primerSIGNAL 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
SELECT vs. WHEN/ELSE SELECT
Kada je kolo opisano tabelom istinitosti ili nekom formom funkcionalne tabele (npr. dekoder, multiplekser, ...) ( p , p , )
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) ELSEa-b-1 WHEN (z>v AND f = ’1’) ELSE
M j fik k d t b i ti t b l i ti it ti Manje efikasna kada treba opisati tabelu istinitosti:
x <= a WHEN (s=“00”) ELSE b WHEN (s=“01”) ELSE
c WHEN (s=“10”) ELSEx <= b WHEN (s=“01”) ELSE a WHEN (s=“00”) ELSE
c WHEN (s=“10”) ELSEx <= c WHEN (s=“10”) ELSE b WHEN (s=“01”) ELSE
a WHEN (s=“00”) ELSE c WHEN (s 10 ) ELSE d;
c WHEN (s 10 ) ELSE d;
a WHEN (s 00 ) ELSE d;
Nije pogrešno, ali uvodi nepotrebna ograničenja (prioriteti) koji mogu otežati sintezu i uneti nepotreban hardver
Arhitektura mikrosistema
´Z´LIBRARY ieee;USE ieee.std_logic_1164.all;ENTITY tri state ISENTITY tri_state IS
PORT (ena : IN STD_LOGIC;input : IN STD_LOGIC_VECTOR(7 DOWNTO 0);
t t OUT STD LOGIC VECTOR(7 DOWNTO 0))output : OUT STD_LOGIC_VECTOR(7 DOWNTO 0));END tri_state;ARCHITECTURE tri_state OF tri_state ISBEGIN
output <= input WHEN (ena = '0') ELSE(OTHERS => 'Z');
ena output0 input ( );
END tri_state; 1 Z
Arhitektura mikrosistema
´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 plogičkim vrednostima ´0´ i ´1´.
Sledeće dve naredbe se ne mogu sintetizovati:g
r <= ’Z’ AND a;g <= d - c WHEN a = ’Z’ ELSE
d - b;d b;
Arhitektura mikrosistema
Bidirekcioni (ulazno/izlazni) port Port koji se po potrebi može koristiti bilo kao ulaz bilo kao
izlaz.
ENTITY bi_port ISPORT(...
Princip:
Za dir=´1´, bi je izlaz
´ ´ j l
bi : INOUT STD_LOGIC;...);
BEGINZa dir=´0´, bi je ulaz...
bi <= sig_out WHEN dir = ’1’ ELSE’Z’;
i i < bisig_in <= bi;...
Arhitektura mikrosistemaSmer: inout
Trostatička magistralaLIBRARY ieee;USE ieee.std_logic_1164.all;ENTITY mux IS sel(1:0)ENTITY mux IS
PORT ( a,b,c,d : IN STD_LOGIC;sel: IN STD_LOGIC_VECTOR(1 DOWNTO 0);
y : OUT STD LOGIC);Dekoder
3 2 1 0
00011011y _ );END mux;ARCHITECTURE tri_state OF mux ISBEGIN
a
00011011
y <= a WHEN sel = "00" ELSE 'Z';y <= b WHEN sel = "01" ELSE 'Z';y <= c WHEN sel = "10" ELSE 'Z';
b
y
y <= d WHEN sel = "11" ELSE 'Z';END tri_state;
c
d
Arhitektura mikrosistema
d
Magistrala
ROM ROM (prema eng. Read-Only Memory) je memorija
sa konstantnim sadržajem - memorijska komponenta k j d ikoja može samo da se čita.
Arhitektura mikrosistema
ROMLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.NUMERIC_STD.ALL;ENTITY ROM ISPORT (addr : IN STD_LOGIC_VECTOR(2 DOWNTO 0);
data : OUT STD_LOGIC_VECTOR(7 DOWNTO 0)); END ROM;ARCHITECTURE rom OF ROM ISTYPE mem_array IS ARRAY (0 TO 7) OF STD_LOGIC_VECTOR(7 DOWNTO 0);CONSTANT ("00000000“CONSTANT memory : mem_array := ("00000000“
"00000010","00000100","00001000""00001000","00010000","00100000","01000000"
Zato što indeks polja može biti samo integer 01000000 ,
"10000000");BEGINdata <= memory(TO INTEGER(UNSIGNED(addr)));
Arhitektura mikrosistema
data < memory(TO_INTEGER(UNSIGNED(addr)));END rom;
Optimizacija konkurentnog koda Cilj: sa što manje hardverskih resursa
reali o ati željen f nkcijrealizovati željenu funkciju Minimizacija broja aritmetičkih i relacionih
operatora u kodu Dve tehnike: Dve tehnike: Deoba operatora i Deoba funkcija
Arhitektura mikrosistema
Deoba operatora Kako smanjiti broj aritmetičkih operatora u kodu?
Preurediti kôd tako da se se isti operator može iskoristiti Preurediti kôd tako da se se isti operator može iskoristiti za obavljanje više različitih operacija.
< + b WHEN l ELSr <= a + b WHEN uslov ELSa + c;
x <= b WHEN uslov ELSEc;
Arhitektura mikrosistema
;r <= a + x;
Složenost vs. kašnjenje
Kašnjenje: max{T T } + T
Složenost: 2 sabirača + multiplekser
Kašnjenje: T + T + T
Složenost: 1 sabirač + multiplekser
Kašnjenje: max{Tsab, Tuslov} + Tmux Kašnjenje: Tsab + Tuslov + Tmux
Arhitektura mikrosistema
Deoba operatora na primeru naredbe select:WITH uslov SELECTr <= a+b WHEN ˝00˝,
+ WHEN ˝01˝a+c WHEN ˝01˝,d+1 WHEN OTHERS;
WITH uslov SELECTx0 <= a WHEN ˝00˝ | ˝01˝,
d WHEN OTHERS;WITH uslov SELECTx1 <= b WHEN ˝00˝,
c WHEN ˝01˝,Nivo ostvarene uštede zavisi odArhitektura mikrosistema
,˝00000001˝ WHEN OTHERS;
r <= x0 + x1;Nivo ostvarene uštede zavisi od relativnog odnosa složenosti operatora i dodatnih multipleksera
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 ISSIGNAL x0, x1, sum : SIGNED(7 DOWNTO 0);BEGINx0 <= SIGNED(a);x1 <= SIGNED(b);
0 1 WHEN t l ‘0’ ELSEk i l b lctrl operacija 0 a + b
sum <= x0 + x1 WHEN ctrl = ‘0’ ELSEx0 - x1;
r <= STD_LOGIC_VECTOR(sum);END arch v1;
Funkcionalna tabela
Arhitektura mikrosistema
1 a - b
END arch_v1;
Deoba funkcija – optimizovanaDeoba funkcija optimizovana realizacija sabirača/oduzimača
Oduzimanje je isto što i sabiranje s potpunim komplementoms 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);
BEGIN0 UNSIGNED( )x0 <= UNSIGNED(a);
x1 <= UNSIGNED(b) WHEN ctrl=´0´ ELSEUNSIGNED(NOT b);
cin <= ˝0˝ WHEN ctrl=´0´ ELSEcin <= 0 WHEN ctrl= 0 ELSE˝1˝;
sum <= x0 + x1 + cin;r <= STD LOGIC VECTOR(sum);˝multiplekser + niz invertora˝ <
Arhitektura mikrosistema
_ _ ( )END arch_v2;
p˝oduzimač˝
Deoba funkcija na primeru komparatoraKomparator (potpuni komparator) gt <= '1' WHEN a > b ELSE
'0';a > b
a < b
'0';lt <= '1' WHEN a < b ELSE
'0';eq <= '1' WHEN a = b ELSEa = b eq <= 1 WHEN a = b ELSE
'0';
ab gt
lt
eq
Arhitektura mikrosistema
eq
Deoba funkcija na primeru komparatora
a je jednako b ako a nije ni ć i j d b
xgt <= '1' WHEN a > b ELSE'0';veće ni manje od b 0 ;
xlt <= '1' WHEN a < b ELSE'0';
gt <= xgt;g glt <= xlt; eq <= xgt NOR xlt;
Još efikasnije (zato što je komparator za ˝=˝ jednostavniji od komparatora za ˝<˝:jednostavniji od komparatora za < :
Arhitektura mikrosistema
Konkurentni kod - Ispitni zadatak
Arhitektura mikrosistema
Konkurentni kod - Ispitni zadatakKonkurentni kod Ispitni zadatakRešenje
Arhitektura mikrosistema
Konkurentni kod - Ispitni zadatak
Arhitektura mikrosistema
Konkurentni kod - Ispitni zadatakKonkurentni kod Ispitni zadatakRešenje
Zašto je neophodanZašto je neophodan pomoćni signal
mux_out ?
Arhitektura mikrosistema