47
Arhitekture mikrosistema Konkurentne naredbe dodele Kôd sadržan u sekciji ARCHITECTURE Konkurentne naredbe dodele: Jednostavna konkurentna naredba dodele Naredba WHEN - uslovna naredba dodele Naredba SELECT - naredba dodele sa izborom vrednosti

Konkurentne naredbe dodele

  • Upload
    sachi

  • View
    44

  • Download
    2

Embed Size (px)

DESCRIPTION

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

Citation preview

Page 1: Konkurentne naredbe dodele

Arhitekture mikrosistema

Konkurentne naredbe dodele Kôd sadržan u sekciji ARCHITECTURE Konkurentne naredbe dodele:

Jednostavna konkurentna naredba dodele Naredba WHEN - uslovna naredba dodele Naredba SELECT - naredba dodele sa izborom

vrednosti

Page 2: Konkurentne naredbe dodele

Arhitektura mikrosistema

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

Page 3: Konkurentne naredbe dodele

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; Koristi se u simulaciji. U sintezi niji dozvoljen.

a

b

c

10 ms 10 ms

a

bc

Tp = 10 ms

Page 4: Konkurentne naredbe dodele

Arhitektura mikrosistema

Generisanje talasnog oblika

sig <= ´0´, ´1´ after 10 ns, ´0´ after 10 ns, ´1´ after 20 ns;

0 ns 10 ns 40 ns20 ns

Tipična primena u testbenču za generisanje pobudnih signala složenog talasnog oblika

Page 5: Konkurentne naredbe dodele

Arhitektura mikrosistema

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

enable

sel

++

-1

ab

csum

r1r2

r3r4

1

Page 6: Konkurentne naredbe dodele

Arhitektura mikrosistema

Konkurentna nareba dodelePrimer: multiplekser 4-u-1LIBRARY 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 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;

y

a

b

c

d

s1

s0

Nizak nivo opisa

Page 7: Konkurentne naredbe dodele

Arhitektura mikrosistema

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

Page 8: Konkurentne naredbe dodele

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”

Page 9: Konkurentne naredbe dodele

Arhitektura mikrosistema

WHEN Primer: MultiplekserLIBRARY 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 ISBEGIN y <= a WHEN sel = "00" ELSE b WHEN sel = "01" ELSE c WHEN sel = "10" ELSE d;END when_arch;

a

bcd

y

2sel

00011011

Pokriva sel=˝11˝, ali i sve preostale, nebinarne

kombinacije, kao što su ˝0-˝, ˝LH˝, ˝ZW˝

Page 10: Konkurentne naredbe dodele

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 ISBEGIN 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;

Dekoder2-u-4

e

d0 y0

y1

y2

y3

d1

e d1 d0 y3 y2 y1 y0

1 0 0 0 0 0 11 0 1 0 0 1 01 1 0 0 1 0 01 1 1 1 0 0 00 X X 0 0 0 0

Page 11: Konkurentne naredbe dodele

Arhitektura mikrosistema

WHEN Primer: KoderLIBRARY 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 ISBEGIN y <= "00" WHEN x="0001" ELSE "01" WHEN x="0010" ELSE "10" WHEN x="0100" ELSE "11";END when_arch;

Koder4-u-2

x3

x2

x1

x0

y1

y0

x3 x2 x1 x0 y1 y0 0 0 0 1 0 0 0 0 1 0 0 1 0 1 0 0 1 0 1 0 0 0 1 1 sve ostale komb. - -

Page 12: Konkurentne naredbe dodele

Arhitektura mikrosistema

WHEN 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' ELSE "10" WHEN x(2) = '1' ELSE "01" WHEN x(1) = '1' ELSE "00"; z <= '0' WHEN x = "0000" ELSE '1';END when_arch;

Prioritetnikoder4-u-2

x3

x2

x1

x0

y1

y0

z

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

Page 13: Konkurentne naredbe dodele

Arhitektura mikrosistema

Konceptualna implementacija WHEN naredbe sig <= izraz_1 WHEN uslov_1 ELSE izraz_2;

T

F

izraz_1

izraz_2

uslov_1

sig

(a)

Apstraktni multiplekser:T (true) - uslov je tačan

F (false) - uslov je netačan

Konceptualnidijagram

Page 14: Konkurentne naredbe dodele

Arhitektura mikrosistema

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;

T

F

izraz_1

izraz_2

izraz_3

izraz_4

uslov_3

T

F

T

F

uslov_2

uslov_1

sig

(b)

Page 15: Konkurentne naredbe dodele

Arhitektura mikrosistema

Sinteza WHEN naredbeSIGNAL a,b,y : STD_LOGIC;. . .y <= ´0´ WHEN a=b ELSE ´1´;. . .

T

F

=ab

y0

1

a b a=b 0 0 1 0 1 0 1 0 0 1 1 1

ab

1

0

y

(a) (b) (c)

U sintezi STD_LOGIC ima dve vrednosti: ‘0’ i ‘1’

U sintezi T - ‘1’, F - ‘0’

Page 16: Konkurentne naredbe dodele

Arhitektura mikrosistema

Konceptualna implementacija WHEN naredbe - primerSIGNAL 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;. . .

T

F

T

Ff

a+b

a-b-1

a+1

x>y and y!=0

x+y>1

+

- -1

+1

>

!=

+

T

F

T

F

0

>1

xy

ab

f

(a) (b)

Nije kraj sinteze !Sledi zamen apstraktnih blokova

Odgovarajućim modulima realizovanim pomoću logičkih kola

Page 17: Konkurentne naredbe dodele

Arhitektura mikrosistema

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

Page 18: Konkurentne naredbe dodele

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

Page 19: Konkurentne naredbe dodele

Arhitektura mikrosistema

Realizacija tabele istinitosti

a b y 0 0 0 0 1 1 1 0 1 1 1 1

1 --------------------------------------------- 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); 8 END tabela_istinitosti; 9---------------------------------------------- 10 ARCHITECTURE arch OF tabela_istinitosti IS 11 SIGNAL tmp : STD_LOGIC_VECTOR(1 DOWNTO 0); 12 BEGIN 13 tmp <= a & b; 14 WITH tmp SELECT 15 y <= '0' WHEN "00", 16 '1' WHEN "01", 17 '1' WHEN "10",, 18 '1' WHEN OTHERS; 19 END arch;

(a) (b)

Page 20: Konkurentne naredbe dodele

Arhitektura mikrosistema

OTHERS grana je neophodna kad se radi s tipom std_logic !

a b y 0 0 0 0 1 1 1 0 0 1 1 1

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).

Page 21: Konkurentne naredbe dodele

Arhitektura mikrosistema

Realizacija tabele istinitosti

y <= '1' WHEN "01" | "11", '0' WHEN OTHERS;

y <= '0' WHEN "00" | "10", '1' WHEN OTHERS;

a b y 0 0 0 0 1 1 1 0 0 1 1 1

Kompaktnije zapisivanje

Page 22: Konkurentne naredbe dodele

Arhitektura mikrosistema

SELECTPrimer: Multiplekser

ARCHITECTURE select_arch OF mux4u1 ISBEGIN 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;

a

bcd

y

2sel

00011011

Page 23: Konkurentne naredbe dodele

Arhitektura mikrosistema

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;

Dekoder2-u-4

e

d0 y0

y1

y2

y3

d1

Page 24: Konkurentne naredbe dodele

Arhitektura mikrosistema

SELECTPrimer: KoderARCHITECTURE select_arch OF encoder ISBEGIN 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;

Koder4-u-2

x3

x2

x1

x0

y1

y0

x3 x2 x1 x0 y1 y0 0 0 0 1 0 0 0 0 1 0 0 1 0 1 0 0 1 0 1 0 0 0 1 1 sve ostale komb. - -

Page 25: Konkurentne naredbe dodele

Arhitektura mikrosistema

SELECTPrimer: Prioritetni koder

ARCHITECTURE select_arch OF pencoder ISBEGIN 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;

Prioritetnikoder4-u-2

x3

x2

x1

x0

y1

y0

z

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

Page 26: Konkurentne naredbe dodele

Arhitektura mikrosistema

SELECTPrimer: ALU

Microsoft Word Document

Logickajedinica

Aritmetickajedinica

Mux

sel(3)sel(3 : 0)

a(7 : 0)b(7 : 0)

y(7 : 0)

sel Operacija Funkcija Jedinica 0000 y <= a Transfer a

0001 y <= a + 1 Inkrement a

0010 y <= a - 1 Dekrement a

0011 y <= b Transfer b

0100 y <= b + 1 Inkrement b

0101 y <= b - 1 Dekrement b

0110 y <= a + b Sabiranje

0111 y <= a-b Oduzimanje

Aritmetička

1000 y <= NOT a Komplement a 1001 y <= NOT b Komplement b 1010 y <= a AND b I 1011 y <= a OR b ILI 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

Logička

(a) (b)

Page 27: Konkurentne naredbe dodele

Arhitektura mikrosistema

Konceptualna implementacija naredbe SELECTWITH 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

izraz_1

izraz_2

izraz_n

sel

v1

sig

v2

vn

.

.

....

izraz_1

izraz_2

izraz_3

v1

v2

v3

v4

v5

sel

sig

(a) (b)

Page 28: Konkurentne naredbe dodele

Arhitektura mikrosistema

and

or

11

10

01

00

x

ab

0

s

x

ab

0

s(1)

s(0)

(a) (b)

Konceptualna implementacija naredbe SELECT - primerSIGNAL 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; . . .

Page 29: Konkurentne naredbe dodele

Arhitektura mikrosistema

Konceptualna 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; . . .

11

10

01

00

+1

-

+

-1

a

b

s

r

Page 30: Konkurentne naredbe dodele

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 ISBEGIN output <= input WHEN (ena = '0') ELSE (OTHERS => 'Z');END tri_state;

input(7 : 0) output(7 : 0)

ena

ena output 0 input 1 Z

Page 31: Konkurentne naredbe dodele

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 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;

Page 32: Konkurentne naredbe dodele

Arhitektura mikrosistema

Bidirekcioni (ulazno/izlazni) port Port koji se po potrebi može koristiti bilo kao ulaz bilo kao

izlaz.

dir

sig_out

sig_in

bi

Princip:

Za dir=´1´, bi je izlaz

Za dir=´0´, bi je ulaz

Smer: inout

ENTITY bi_port IS PORT(... bi : INOUT STD_LOGIC; ...);BEGIN ... bi <= sig_out WHEN dir = ’1’ ELSE ’Z’; sig_in <= bi; ...

Page 33: Konkurentne naredbe dodele

Arhitektura mikrosistema

Trostatička magistralaLIBRARY 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 ISBEGIN 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;

a

b

c

d

Dekoder

3 2 1 0

sel(1:0)

y

00011011

Magistrala

Page 34: Konkurentne naredbe dodele

Arhitektura mikrosistema

ROM ROM (prema eng. Read-Only Memory) je memorija

sa konstantnim sadržajem - memorijska komponenta koja može samo da se čita.

reč 0

reč 1

reč 2

. . .

ROM

addr data

reč m-1

r n

n bita

Page 35: Konkurentne naredbe dodele

Arhitektura mikrosistema

ROMLIBRARY 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

Page 36: Konkurentne naredbe dodele

Arhitektura mikrosistema

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

Page 37: Konkurentne naredbe dodele

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;

uslov

+T

F+

ab

c

ostaliulazi

r

+

uslov

T

F

ra

b

c

ostaliulazi

x

x <= b WHEN uslov ELSE c;r <= a + x;

Page 38: Konkurentne naredbe dodele

Arhitektura mikrosistema

Složenost vs. kašnjenje

uslov

+T

F+

ab

c

ostaliulazi

r

+

uslov

T

F

ra

b

c

ostaliulazi

x

Kašnjenje: max{Tsab, Tuslov} + Tmux

Složenost: 2 sabirača + multiplekser

Kašnjenje: Tsab + Tuslov + Tmux

Složenost: 1 sabirač + multiplekser

Page 39: Konkurentne naredbe dodele

Arhitektura mikrosistema

Deoba operatora na primeru naredbe select:WITH uslov SELECT r <= a+b WHEN ˝00˝, a+c WHEN ˝01˝, d+1 WHEN OTHERS;

+

+

ab

c

+1d

00011011

uslovostaliulazi

r

00011011

00011011

+ r

uslovostaliulazi

a

d

bc1

x0

x1

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

Page 40: Konkurentne naredbe dodele

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.

+

-

ab

01

ctrl

r

ctrl operacija 0 a + b 1 a - b

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;

Sabirač/oduzimač

Funkcionalna tabela

Page 41: Konkurentne naredbe dodele

Arhitektura mikrosistema

Deoba funkcija – optimizovana realizacija sabirača/oduzimača

+01

ra

b

ctrl

cin

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č˝

Page 42: Konkurentne naredbe dodele

Arhitektura mikrosistema

Deoba funkcija na primeru komparatora

Ka

b

gt

lt

eq

a > b

a < b

a = b

Komparator (potpuni komparator)gt <= '1' WHEN a > b ELSE '0';lt <= '1' WHEN a < b ELSE '0';eq <= '1' WHEN a = b ELSE '0';

>

<

=

ab

gt

lt

eq

Page 43: Konkurentne naredbe dodele

Arhitektura mikrosistema

Deoba funkcija na primeru komparatora

>

<

ab

gt

lt

eq

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:

>

=

ab

gt

lt

eq

Page 44: Konkurentne naredbe dodele

Arhitektura mikrosistema

Konkurentni kod - Ispitni zadatak

Page 45: Konkurentne naredbe dodele

Arhitektura mikrosistema

Konkurentni kod - Ispitni zadatakRešenje

Page 46: Konkurentne naredbe dodele

Arhitektura mikrosistema

Konkurentni kod - Ispitni zadatak

Page 47: Konkurentne naredbe dodele

Arhitektura mikrosistema

Konkurentni kod - Ispitni zadatakRešenje

Zašto je neophodan pomoćni signal

mux_out ?