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
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
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
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
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
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
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
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
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
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˝
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
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. - -
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
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
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)
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’
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
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
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
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)
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).
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
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
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
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. - -
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
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)
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)
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; . . .
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
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
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;
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; ...
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
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
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
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
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;
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
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
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
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č˝
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
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
Arhitektura mikrosistema
Konkurentni kod - Ispitni zadatak
Arhitektura mikrosistema
Konkurentni kod - Ispitni zadatakRešenje
Arhitektura mikrosistema
Konkurentni kod - Ispitni zadatak
Arhitektura mikrosistema
Konkurentni kod - Ispitni zadatakRešenje
Zašto je neophodan pomoćni signal
mux_out ?