Szerkezeti leírás Összetevők és beültetésük Összetevők és beültetésük Általános kiosztás (generic map) Általános kiosztás (generic map) Generate parancs.

Slides:



Advertisements
Hasonló előadás
BT Szakkör 3. előadás. BT Szakkör Zóna szám : Busz vonal száma Bővítő címe Érzékelő kötése.
Advertisements

2012. tavaszi félév Vitéz Gergely. A diasor ismerete nem helyettesíti a tankönyvet, és a példatárat. A diasor ismerete szükséges, de nem elégséges feltétele.
LOGICA System.
PL/SQL folytatás Kurzorok Alprogramok Tárolt eljárások ADATBÁZIS ALAPÚ RENDSZEREK.
Digitális technika II. Rész: Sorrendi hálózatok
Digitális rendszerek I. rész
Digitális rendszerek II. rész
A MÉRŐESZKÖZÖK CSOPORTOSÍTÁSA
Az integrált áramkörök (IC-k) tervezése
Slide title 70 pt CAPITALS Slide subtitle minimum 30 pt HDL mindset & RTL coding style László Lajkó.
RAM és ROM Mind RAM, mind ROM beépíthető ASIC vagy FPGA/EPLD tervbe Mind RAM, mind ROM beépíthető ASIC vagy FPGA/EPLD tervbe A következőkben a szükséges.
BMEEOVKMKM4 Házi feladat megoldás áttekintés
LéptetésVHDL A léptetés műveletek (Shift Operators) n Áttekintés n Példák.
FelültöltésVHDL Felültöltés (Overloading) n Áttekintés n Példák.
Az igazolás Igazolás (verification) Igazolás (verification) Próbapad (vizsgálati összeállítás) Próbapad (vizsgálati összeállítás) Órajel előállítás Órajel.
Benczúr Zsolt VBA gyorstalpaló Benczúr Zsolt
© Kozsik Tamás Beágyazott osztályok A blokkstrukturáltság támogatása –Eddig: egymásba ágyazható blokk utasítások Osztálydefiníciók is egymásba.
Programozási alapismeretek 9. előadás. ELTE Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 9. előadás2/
Ez a dokumentum az Európai Unió pénzügyi támogatásával valósult meg. A dokumentum tartalmáért teljes mértékben Szegedi Tudományegyetem vállalja a felelősséget,
Programozás II. 3. Gyakorlat C++ alapok.
A verem működése fpga-n
Készítette: Pető László
Szintézis Keresztes Péter, 2005 A GAJSKI-KUHN DIAGRAM Alapelv: Rendezzük a digitális- rendszerek leírásait célok és szintek szerint.
ORACLE ORDBMS adminisztrációs feladatok 6. rész dr. Kovács László 2004.
6. előadás Parametrikus polimorfizmus. Generikus programozás. Az Ada sablonok.
5. előadás Parametrikus polimorfizmus. Generikus programozás
2. előadás Programegység, fordítási egység, könyvtári egység, beágyazás, blokkszerkezet, alprogramok, csomagok.
Az Input-Output használata Az input-outputot a nyelv előredefiniált csomagokon keresztül valósítja meg. Mindegyik csomag az Ada alapcsomag gyereke.
8. előadás Dinamikus memóriakezelés. Mutatók. Láncolt adatszerkezetek.
2. előadás Programegység, fordítási egység, könyvtári egység, beágyazás, blokkszerkezet, alprogramok, csomagok.
6. előadás Hatókör, láthatóság, élettartam. Változók leképzése a memóriára. Blokkszerkezetes nyelvek. Kivételkezelés.
5. előadás Parametrikus polimorfizmus. Generikus programozás. Az Ada sablonok.
© Kozsik Tamás Csomagok. © Kozsik Tamás A program tagolása Típusdefiníciók (osztályok, interfészek) Metódusok Blokk utasítások Csomagok.
A következtetés „axiómái” Következtetés távolságalapú operátorokkal.
Fázishasító kapcsolás Feszültségerősítések Au1 Au2 Egyforma nagyság
Ciklusok: 1. Számlálós ciklus
Alprogramok paraméterei. Procedure ( ); Function ( ): ; [var] p1,...,pn:típus1; q1,...,q2:típus2; cím szerinti parméterátadaás (értékváltozás hatással.
Listák, Vermek és Várakozási Sorok. Listák Pl: Kirándulók listája Bevásárló lista Alma Kenyér Krumpli Szappan Mosópor Bevásárló lista.
2012. tavaszi félév Vitéz Gergely. A diasor ismerete nem helyettesíti a tankönyvet, és a példatárat. A diasor ismerete szükséges, de nem elégséges feltétele.
1.3. Pascal program felépítése Az els ő program. Program ; … Begin … End. Program fej Deklarációs rész Végrehajtó rész.
Tervezési példák és ötletek Összeadók Összeadók Vektor szorzás Vektor szorzás Erőforrás megosztás Erőforrás megosztás Összehasonlítók (comparators) Összehasonlítók.
Gyakran előforduló tervezési hibák és elkerülésük Jelek és változók Jelek és változók Bufferek és belső dummy jelek Bufferek és belső dummy jelek Vektorok.
Könyvtár, csomag és alprogramokVHDL Könyvtár, csomag és alprogram n Library és use n Package n Alprogramok –Procedure –Function –Resolution function Egy.
Típusváltás (Type Conversion) n Áttekintés n Példák.
Digitális rendszerek II.
AAO Csink László november.
A PLC programozási nyelvek bemutatása
c.) Aszimmetrikus kimenettel Erősítések Bemenetek:
C++11. TÖRTÉNETI ÁTTEKINTŐ Bjarne Stroustrup, AT&T 1979 C with classes 1983 ipari alkalmazás 1998 első szabvány 2003 apróbb módosítások 2005 tr
Normál feladat megoldása és érzékenységvizsgálata
1 Mivel foglalkozunk a laborokon? 7. hét: Do-Loop-Until Do-Until-Looptömbök Function 7. hét: Do-Loop-Until és Do-Until-Loop ciklusok. Egy indexes tömbök,
A Visual Basic nyelvi elemei
CAD Az elvi kapcsolási rajz szerkesztése Tananyag
Pole (array of...).  Zložený datový typ na ukladanie viacerých premených  Zápis: var meno_pola : array [ konce intervala ] of základný typ ; Základné.
Pipeline példák. Pipe 1. feladat Adott a következő utasítás sorozat i1: R0 MEM [R1+8] i2: R2 R0 * 3 i3: R3 MEM [R1+12] i4: R4 R3 * 5 i5: R0 R2 + R4 A.
I/O terület és I/O allokáció Áttekintés A CPU egység beépített, általános felhasználású I/O –inak kiosztása A CP1H Y CPU egység allokációja.
1 Mivel foglalkoz(t)unk a laborokon? 1.Labor: Word alapok Excel alapok: Excel alapok: Cellahivatkozás, munkalapfüggvény, diagram varázsló, trendvonal 2.
5. előadás Parametrikus polimorfizmus. Generikus programozás. Az Ada sablonok.
Excel programozás (makró)
1 Függvények használata – az első függvénynél a formulát háromszor be kell írni, rendre az x, x+h, x-h argumentumokkal, – a második függvénynél az új (feltételes.
FPGA oktatás a PTE MIK -n
Excel programozás (makró)
Szervó motor helyzetének vezérlése potenciométer segítségével
World map.
Depth First Search Backtracking
Dijkstra algoritmusa: legrövidebb utak
Dijkstra algoritmusa: legrövidebb utak
Dijkstra algoritmusa: legrövidebb utak
5. előadás Parametrikus polimorfizmus. Generikus programozás
Vasas Lívia Dart Europe European Portal for the discovery of Electronic Theses and Dissertations (ETDs), and they participate in advocacy.
Előadás másolata:

Szerkezeti leírás Összetevők és beültetésük Összetevők és beültetésük Általános kiosztás (generic map) Általános kiosztás (generic map) Generate parancs Generate parancs Összetevők a csomagokban Összetevők a csomagokban

Rövid áttekintés I. Utasítások<= after 10 ns block utasítás egyidejű eljáráshívás generate utasítás assert utasítás Értelmezésük Egyidejű jelhozzárendelés, adatáramláson végzett művelet leírására szolgál Szimuláció kezdetétől számított idő Egyidejű utasítások csoportba foglalása Eljárások egyidejű hívására való Többször beültetés hatékony leírására szolgál Valamilyen követelmény megfogalmazása, amely ha nem teljesül, egy üzenet jön létre

Rövid áttekintés II. Utasítások Összetevő beültetési utasítás Eljárás, függvény Process (folyamat) utasítás Típusok és állandók bejelentése when-else, with Értelmezésük Ez más néven példányosítás Eljárás és függvény leírása Elvonatkoztatás, amelyen belül algoritmikusan adható meg a hardver feladatkör Átfogóak, mindenhonnan láthatóak Adatáramláson végzet művelet leírására szolgál

Példa a szerkezeti leírásra Entity mux is port (d0,d1,sel: in std_logic; q: out std_logic); port (d0,d1,sel: in std_logic; q: out std_logic);end; Architecture struct_mux of mux is -- Összetevő deklaráció -- Összetevő deklaráció component and_comp port (a,b: in std_logic; c: out std_logic); end component; component and_comp port (a,b: in std_logic; c: out std_logic); end component; component or_comp port (a,b: in std_logic; c: out std_logic); end component; component or_comp port (a,b: in std_logic; c: out std_logic); end component; component inv_comp port (a: in std_logic; b: out std_logic); end component; component inv_comp port (a: in std_logic; b: out std_logic); end component; signal i1,i2,sel_n:std_logic; -- Összetevő specifikáció for U1: inv_comp Use Entity work.inv_comp(rtl); for U2,U3: and_comp Use Entity work.and_comp(rtl); for U4: or_comp Use Entity work.or_comp(rtl);

Példa a szerkezeti leírásra (folyt.) begin -- Összetevő beültetés -- Összetevő beültetés U1: inv_comp port map(sel,sel_n); U1: inv_comp port map(sel,sel_n); U2: and_comp port map(d0,sel,i1); U2: and_comp port map(d0,sel,i1); U3: and_comp port map(sel_n,d1,i2); U3: and_comp port map(sel_n,d1,i2); U4: or_comp port map(i1,i2,q); U4: or_comp port map(i1,i2,q);end;

Bekötetlen kimenetek Előfordulhat beültetésnél, hogy az összetevő nem minden kapcsa kerül kiosztásra Előfordulhat beültetésnél, hogy az összetevő nem minden kapcsa kerül kiosztásra Ezt a helyzetet kezeli az open VHDL kulcsszó Ezt a helyzetet kezeli az open VHDL kulcsszó Tegyük fel, hogy az ex4 összetevő q2 kimenete bekötetlen a beültetésnél: Tegyük fel, hogy az ex4 összetevő q2 kimenete bekötetlen a beültetésnél: Architecture rtl of top_level is component ex4 component ex4 port (a,b: in std_logic; q1,q2: out std_logic); port (a,b: in std_logic; q1,q2: out std_logic); end component; end component; For U1: ex4 use entity work.ex4(rtl); begin U1: ex4 port map(a=>a, b=>b, q1=>dout, q2=>open); U1: ex4 port map(a=>a, b=>b, q1=>dout, q2=>open);end;

Bekötetlen kimenetek (folyt.) A port map parancsból el is hagyható a bekötetlen kimenet, ilyenkor a következő alakban írható: A port map parancsból el is hagyható a bekötetlen kimenet, ilyenkor a következő alakban írható: U1: ex4 port map(a=>a, b=>b, q1=>dout); A rövidített port map felírási módnál a bekötetlen kimenet csak akkor hagyható el, ha az az utolsó A rövidített port map felírási módnál a bekötetlen kimenet csak akkor hagyható el, ha az az utolsó Ez egy hátránya a rövidített felírásnak Ez egy hátránya a rövidített felírásnak

Bekötetlen bemenetek I. A bemeneti kapocs nem lebeghet (floating) beültetés után A bemeneti kapocs nem lebeghet (floating) beültetés után Ha egy összetevő bemenete nem használt, akkor a jelnek vagy VCC-re vagy GND-re kell kapcsolódnia Ha egy összetevő bemenete nem használt, akkor a jelnek vagy VCC-re vagy GND-re kell kapcsolódnia A VHDL-87 szabványban nem lehetett közvetlenül kiosztani ezekre a kapcsokat a port map parancsban, hanem egy belső jelet kellett használni A VHDL-87 szabványban nem lehetett közvetlenül kiosztani ezekre a kapcsokat a port map parancsban, hanem egy belső jelet kellett használni Ezt a belső jelet hozzá kell rendelni a ‘0’-hoz vagy az ‘1’-hez, s a nem használt bementet erre a belső jelre kellett kiosztani: Ezt a belső jelet hozzá kell rendelni a ‘0’-hoz vagy az ‘1’-hez, s a nem használt bementet erre a belső jelre kellett kiosztani: Architecture rtl of top_level is component ex1 port (a,b: in std_logic; q1,q2: out std_logic); end component; component ex1 port (a,b: in std_logic; q1,q2: out std_logic); end component; For U1: ex1 use entity work.ex4(rtl); signal gnd: std_logic; begin gnd<=‘0’; gnd<=‘0’; U1: ex1 port map(a=>gnd, b=>b, q1=>dout, q2=>d2); U1: ex1 port map(a=>gnd, b=>b, q1=>dout, q2=>d2); end;

Bekötetlen bemenetek II. Egy hibás példa: Egy hibás példa: Architecture rossz of top_level is component ex1 component ex1 port (a,b: in std_logic; q1,q2: out std_logic); port (a,b: in std_logic; q1,q2: out std_logic); end component; end component; For U1: ex1 use entity work.ex4(rtl); begin U1: ex1 port map(a=>open, b=>b, q1=>dout, q2=>d2); U1: ex1 port map(a=>open, b=>b, q1=>dout, q2=>d2); -- Előző sor hibás -- Előző sor hibás end;

Bekötetlen bemenetek III. VHDL-93-ban megengedett a kapcsok közvetlen kiosztása ‘0’-ra vagy ‘1’- re: VHDL-93-ban megengedett a kapcsok közvetlen kiosztása ‘0’-ra vagy ‘1’- re: Architecture rossz of top_level is component ex1 component ex1 port (a,b: in std_logic; q1,q2: out std_logic); port (a,b: in std_logic; q1,q2: out std_logic); end component; end component; For U1: ex1 use entity work.ex4(rtl); begin U1: ex1 port map(a=>’0’, b=>b, q1=>dout, q2=>d2); U1: ex1 port map(a=>’0’, b=>b, q1=>dout, q2=>d2); -- VHDL-87-ben hibás, VHDL-93-ban érvényes -- VHDL-87-ben hibás, VHDL-93-ban érvényes end;

Általános kiosztás (generic map) parancs Ha általános összetevőt írnak elő a beültetendő összetevőben, akkor az értékei a generic map paranccsal módosíthatók a beültetés során Ha általános összetevőt írnak elő a beültetendő összetevőben, akkor az értékei a generic map paranccsal módosíthatók a beültetés során Jelölésmód: Jelölésmód: generic map( ); Az általánosságok használatával paraméterezhető összetevők tervezhetők Az általánosságok használatával paraméterezhető összetevők tervezhetők A következő példa általánosságokat használ mind az összetevő késleltetésre, mind a bemenetek számára A következő példa általánosságokat használ mind az összetevő késleltetésre, mind a bemenetek számára  Ha az összetevőt beültetik, az összetevő késleltetését és a bemenetek számát meghatározzák: entity and_comp is generic (tdelay:time:=10 ns; n:positive:=2); generic (tdelay:time:=10 ns; n:positive:=2); port (a: in bit_vector(n-1 downto 0); c: out bit); port (a: in bit_vector(n-1 downto 0); c: out bit); end;

Általános kiosztási példa folytatása Architecture bhv of and_comp is begin po: process(a) po: process(a) variable int:bit; variable int:bit; begin begin int:=‘1’; int:=‘1’; for i in a’length-1 downto 0 loop for i in a’length-1 downto 0 loop if a(i)=‘0’ then if a(i)=‘0’ then int:=‘0’; int:=‘0’; end if; end if; end loop; end loop; c<=int after tdelay; c<=int after tdelay; end process; end process; end;

Általános összetevő felhasználása Az előző példában meghatározott összetevő felhasználásával ha egy tervben egy három bemenetű and összetevő szükséges 12 ns késleltetéssel és egy két bemenetű 8 ns késleltetéssel, akkor a jelölésmód a következő: Az előző példában meghatározott összetevő felhasználásával ha egy tervben egy három bemenetű and összetevő szükséges 12 ns késleltetéssel és egy két bemenetű 8 ns késleltetéssel, akkor a jelölésmód a következő: entity ex is port (d1,d2,d3,d4,d5: in bit; q1,q2: out bit); end; Architecture bhv of ex is component and_comp generic(tdelay:time; n:positive); component and_comp generic(tdelay:time; n:positive); port (a: in bit_vector(n-1 downto 0); c: out bit); end component; port (a: in bit_vector(n-1 downto 0); c: out bit); end component; for U1,U2: and_comp use entity work.and_comp(bhv) for U1,U2: and_comp use entity work.and_comp(bhv)begin U1: and_comp generic map(n=>2, tdelay=>8 ns) U1: and_comp generic map(n=>2, tdelay=>8 ns) port map(a(0)=>d1, a(1)=>d2, c=>q1); port map(a(0)=>d1, a(1)=>d2, c=>q1); U2: and_comp generic map(n=>3, tdelay=>12 ns) U2: and_comp generic map(n=>3, tdelay=>12 ns) port map(a(0)=>d3, a(1)=>d4, a(2)=>d5, c=>q2); port map(a(0)=>d3, a(1)=>d4, a(2)=>d5, c=>q2); end;

A generate parancs Ha azonos összetevőt sokszor kell beültetni ugyanazon építménybe, hatékonyabb a port map parancsot hurokba helyezni Ha azonos összetevőt sokszor kell beültetni ugyanazon építménybe, hatékonyabb a port map parancsot hurokba helyezni Tegyük fel, hogy a c1 összetevőt hatszor kell beültetni a top összetevőbe Tegyük fel, hogy a c1 összetevőt hatszor kell beültetni a top összetevőbe Ez a generate paranccsal tehető meg: Ez a generate paranccsal tehető meg: entity top is port(a,b: in std_logic_vector(4 downto 0); q:out std_logic_vector(4 downto 0)); port(a,b: in std_logic_vector(4 downto 0); q:out std_logic_vector(4 downto 0)); end; architecture rtl of top is component c1 port(a,b: in std_logic; q:out std_logic); end component; component c1 port(a,b: in std_logic; q:out std_logic); end component; for U1: c1 use entity work.c1(rtl); for U1: c1 use entity work.c1(rtl);begin c_gen: for i in 0 to 5 generate c_gen: for i in 0 to 5 generate U: c1 port map(a(i), b(i), q(i)); U: c1 port map(a(i), b(i), q(i)); end generate c_gen; end generate c_gen; end;

Közvetlen beültetés A közvetlen beültetést a VHDL-93 szabvány vezette be A közvetlen beültetést a VHDL-93 szabvány vezette be Eszerint sem az összetevő bejelentés, sem az összeállítás nem szükséges egy összetevő beültetéséhez Eszerint sem az összetevő bejelentés, sem az összeállítás nem szükséges egy összetevő beültetéséhez A következő példa bemutatja a kétféle beültetés közti különbséget: A következő példa bemutatja a kétféle beültetés közti különbséget: -- VHDL-87 szerinti leírás architecture rtl of top_level is component c1 component c1 port(a,b: in std:logic; q: out std_logic); port(a,b: in std:logic; q: out std_logic); end component; end component; for U1: c1 use entity work.c1(rtl); begin U1: c1 port map(a,b,q); U1: c1 port map(a,b,q); end; -- VHDL-93 szerinti leírás architecture rtl of top_level is begin U1: entity work.c1(rtl) port map(a,b,q); U1: entity work.c1(rtl) port map(a,b,q); end;

Összetevők a csomagokban I. Ha a csomagokban határozzák meg az összetevőket, akkor az építményben nincs szükség összetevő bejelentésre a beültetésnél Ha a csomagokban határozzák meg az összetevőket, akkor az építményben nincs szükség összetevő bejelentésre a beültetésnél Példa: Példa: package mypack is function minimum (a,b:in std_logic_vector) return std_logic_vector; function minimum (a,b:in std_logic_vector) return std_logic_vector; component c1 port(clk,resetn,din:in std_logic; q1,q2:out std_logic); end component; component c1 port(clk,resetn,din:in std_logic; q1,q2:out std_logic); end component; component c2 port(a,b:in std_logic; q:out std_logic); end component; component c2 port(a,b:in std_logic; q:out std_logic); end component; end mypack; package body mypack is function minimum (a,b:in std_logic_vector) return std_logic_vector is function minimum (a,b:in std_logic_vector) return std_logic_vector is begin begin if a<b then return a; if a<b then return a; else return b; else return b; end if; end if; end minimum; end minimum; end mypack;

Összetevők a csomagokban II. Az összetevő felhasználásához csak a csomagot kell bejelenteni a VHDL-kód elején: Az összetevő felhasználásához csak a csomagot kell bejelenteni a VHDL-kód elején: library ieee; use ieee.std_logic_1164.ALL; use work.mypack.ALL; entity ex is port(clk,resetn:in std_logic; d1,d2:out std_logic; a,b: in std_logic_vector(3 downto 0); port(clk,resetn:in std_logic; d1,d2:out std_logic; a,b: in std_logic_vector(3 downto 0); q1,q2,q3: out std_logic; q4:out std_logic_vector(3 downto 0)); q1,q2,q3: out std_logic; q4:out std_logic_vector(3 downto 0)); end; Architecture rtl of ex is begin U1: c1 port map(clk,resetn,d1,q1,q2); U1: c1 port map(clk,resetn,d1,q1,q2); U2: c2 port map(d1,d2,q3); U2: c2 port map(d1,d2,q3); q4<=minimum(a,b); q4<=minimum(a,b); end;