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.

Slides:



Advertisements
Hasonló előadás
A sin függvény grafikonja
Advertisements

Események formális leírása, műveletek
 Megfigyelhető, hogy amikor több elem közötti összehasonlítás történik, akkor szükség van egyszerre több értékre is, főleg akkor, ha ezek az értékek jóval.
PL/SQL folytatás Kurzorok Alprogramok Tárolt eljárások ADATBÁZIS ALAPÚ RENDSZEREK.
(Digitális rendszertechnika)
Számítástechnika I. 2.konzultáció
Sorrendi (szekvenciális)hálózatok tervezése
Összetett adattípusok 8/b tétel
Függvények Egyenlőre csak valós-valós függvényekkel foglalkozunk.
3. A programozás eszközei, programozás-technikai alapismeretek
LFüggvények Alkalmazott Informatikai Tanszék MŰSZAKI INFORMATIKA dr.Dudás László 20./0. lFüggvények deklarációja és prototípusa lA függvénydefiníció lHivatkozás.
8. előadás (2005. április 19.) Pozicionálás fájlban (folyt.) I/O mechanizmus váltás Hibakezelő függvények Változók tárolási osztályai Parancssor-argumentumok.
Állapotgépek (state machines)
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.
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.
Gyakori hibák C# programozásban
Nemlinearitás: a bináris technika alapja
1.) A programfejlesztés hagyományos életciklus modellje és adattípus.
A számítógépes memória jellemzői
6. előadás (2005. április 5.) Struktúrák Úniók Új adattípus definíálása Dinamikus memória foglalás 1.
Lineáris és nemlineáris regressziók, logisztikus regresszió
Osztályozás -- KNN Példa alapú tanulás: 1 legközelebbi szomszéd, illetve K-legközelebbi szomszéd alapú osztályozó eljárások.
Mikrovezérlők alkalmazástechnikája laboratóriumi gyakorlat A/D konverter Gyakorlás A/D konverter Gyakorlás Makan Gergely, Mellár János, Mingesz Róbert,
Mutatók, tömbök, függvények
Bevezetés a digitális technikába
Szállítási feladatok Optimalitás vizsgálat
Statisztika II. VI. Dr. Szalka Éva, Ph.D..
Matematikai modellek a termelés tervezésében és irányításában
C++ Alapok, első óra Elemi típusok Vezérlési szerkezetek
Alphabet is a type specification = sorts: alphabet oprs: a:  alphabet,...,z:  alphabet end alphabet; nat is a type specification = sorts:nat oprs:zerus:
Csoportosan elkészített önálló feladat
Dr. Szalka Éva, Ph.D.1 Statisztika II. VI.. Dr. Szalka Éva, Ph.D.2 Regresszióanalízis.
Programozás Az adatokról C# -ban.
Függvények.
1. Változótípusok az Object Pascalban 2. Elágazások, ciklusok
Függvények.
Magas szintű hardware szintézis
Alprogramok deklarációja, definíciója és meghívása Páll Boglárka.
Karakterláncok Páll Éva Boglárka. Ismétlés Deklaráció var s:string; Length(karlánc) Concat(karlánc1,...,karláncn) Copy(miből,honnan,hányat) Delete(miből,honnan,hányat)
Ciklusok: 1. Számlálós ciklus
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.
Összetett adattípusok
3.2. A program készítés folyamata Adatelemzés, adatszerkezetek felépítése Típus, változó, konstans fogalma, szerepe, deklarációja.
Példa: a Streeter-Phelps vízminőségi modell kalibrálása
1 Hernyák Zoltán Web: Magasszintű Programozási Nyelvek I. Eszterházy.
Visual Basic 2008 Express Edition
Párhuzamosság, kritikus szakasz, szemaforok Operációs rendszerek.
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
Differenciálegyenletek
ProgramozásProgramozás célja hosszabb számítások elvégzése ill. kiíratása akkor érdemes programot írni, ha sok számolni való van illetve ha ugyanazt az.
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é.
Függvények a C nyelvben 1 Függvényeket a következő esetekben szokás írni: Ha ugyanazt a tevékenységet többször is el kell végeznünk ugyanolyan típusú,
C Programozási alapok.
1. feladat  Készíts olyan függvényt, mely paraméterül kapja két egész típusú változó címét, s hívása után a két változó értéke helyet cserél.
Fejlesztések, változások a Neptun Egységes Tanulmányi Rendszerben (általános, kliens)
OPERÁCIÓKUTATÁS TÖBBCÉLÚ PROGRAMOZÁS. Operáció kutatás Több célú programozás A * x  b C T * x = max, ahol x  0. Alap összefüggés: C T 1 * x = max C.
Informatikai gyakorlatok 11. évfolyam
TÁMOP /1-2F Informatikai gyakorlatok 11. évfolyam Alapvető programozási tételek megvalósítása Czigléczky Gábor 2009.
2004 május 27. GÉPÉSZET Komplex rendszerek szimulációja LabVIEW-ban Lipovszki György Budapesti Műszaki Egyetem Mechatronika, Optika és Gépészeti.
Informatikai gyakorlatok 11. évfolyam
VÍZMINŐSÉGSZABÁLYOZÁSI PÉLDA
Készítette: Révész Lajos Bálint
Digitális Rendszerek és Számítógép Architektúrák
Beépített függvények használata programozáskor
Hernyák Zoltán Magasszintű Programozási Nyelvek I.
1. Írja fel bináris, hexadecimális és BCD alakban a decimális 111-et
Változók.
Informatikai gyakorlatok 11. évfolyam
A valószínűségszámítás alapfogalmai
Előadás másolata:

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 deklarációja downto-val vagy to-val Vektorok deklarációja downto-val vagy to-val Nem teljesen meghatározott kombinációs folyamat Nem teljesen meghatározott kombinációs folyamat

Jelek és változók A változókat process-ben vagy alprogramban adatok ideiglenes tárolására használják A változókat process-ben vagy alprogramban adatok ideiglenes tárolására használják Így változót csak a VHDL sorrendi részében leeht deklarálni Így változót csak a VHDL sorrendi részében leeht deklarálni A jel hozzárendelés lehet sorrendi és egyidejű is A jel hozzárendelés lehet sorrendi és egyidejű is A jeleket azonban csak az VHDL kód egyidejű részében lehet deklarálni A jeleket azonban csak az VHDL kód egyidejű részében lehet deklarálni A változók legnagyobb haszna, hogy azonnal felveszik az értéküket, míg a jelek csak egy minimum delta késleltetés múlva A változók legnagyobb haszna, hogy azonnal felveszik az értéküket, míg a jelek csak egy minimum delta késleltetés múlva Tegyük fel, hogy a következő Bool-algebrai függvényt kell leírni VHDL-ben: Tegyük fel, hogy a következő Bool-algebrai függvényt kell leírni VHDL-ben: int<=a and b and c q<=int or d; Ezeket közvetlenül is be lehetírni az építménybe egyidejű jel hozzárendeléssel, ami egy adatfolyam szintű leírás lenne, de a következőkben viselkedési szintű leírás látható Ezeket közvetlenül is be lehetírni az építménybe egyidejű jel hozzárendeléssel, ami egy adatfolyam szintű leírás lenne, de a következőkben viselkedési szintű leírás látható

Példa a jelek és változók használatára I. library ieee; use ieee.std_logic_1164.all; entity ex1 is port(a,b,c,d: in std_logic; q: out std_logic); end; Építmény jelnek deklarált belső jel alkalmazásával: architecture sig of ex1 is signal int:std_logic; begin process(a,b,c,d,int) begin int<=a and b and c; q<=int and d; end process; end; Építmény változónak deklarált belső jel alkalmazásával: architecture var of ex1 is begin process(a,b,c,d) variable int:std_logic; begin int:=a and b and c; q<=int and d; end process; end;

Példa a jelek és változók használatára II. A jelként deklarált belső jel esetén az q<=int and d; jelhozzárendelés végrehajtásakor az int még a régi értékét tartja A jelként deklarált belső jel esetén az q<=int and d; jelhozzárendelés végrehajtásakor az int még a régi értékét tartja  Ezért fel kellett venni a folyamat érzékenységi listájába, így egy delta késleltetés után a folyamat újra aktiválódik A példából is látható a változó használatának előnye: A példából is látható a változó használatának előnye:  a jel esetében figyelni kell a delta késleltetésre  a folyamatnak kétszer kell lefutnia A változó használatának viszont előnye, hogy kapcsolható hozzá késleltetés A változó használatának viszont előnye, hogy kapcsolható hozzá késleltetés A logikai szintézis szempontjából a kétféle módszer nem okoz eltérést a szintézis eredményében A logikai szintézis szempontjából a kétféle módszer nem okoz eltérést a szintézis eredményében  Ugyanakkor a logikai szintézisben rejtett hibához vezethet a belső jel használata, mivel a folyamat érzékenységi listáját figyelmen kívül hagyja sok hardver szintézis eszköz Mindezek alapján a legjobb a változók használata egy érték ideiglenes tárolására Mindezek alapján a legjobb a változók használata egy érték ideiglenes tárolására

Bufferek és belső jelek I. Amikor egy kimeneti jel értékét újra kell olvasni, három lehetőség kínálkozik: Amikor egy kimeneti jel értékét újra kell olvasni, három lehetőség kínálkozik:  Az egyedmegadásnál egy jelet buffernek deklarálni  Belső dummy jel használata az építményben  A ‘driving_value új jel-jelzőérték (attribute) alkalmazása Az alábbiakban mind a háromra látható egy-egy példa: Az alábbiakban mind a háromra látható egy-egy példa: library ieee; library ieee; use ieee.std_logic_1164.all; entity ex3a is port(clk,resetn,din1: in std_logic; q1: buffer std_logic; q2: out std_logic); end; port(clk,resetn,din1: in std_logic; q1: buffer std_logic; q2: out std_logic); end; architecture buf of ex3a is begin process(clk,resetn) process(clk,resetn) begin begin if resetn=‘0’ then q1<=‘0’; q2<=‘0’; if resetn=‘0’ then q1<=‘0’; q2<=‘0’; elsif clk’event and clk=‘1’ then q1<=din1; q2<=q1; -- A q1 jel olvasása elsif clk’event and clk=‘1’ then q1<=din1; q2<=q1; -- A q1 jel olvasása end if; end if; end process; end process;end;

Bufferek és belső jelek II. Dummy jel használata Dummy jel használata library ieee; use ieee.std_logic_1164.all; entity ex3b is port(clk,resetn,din1: in std_logic; q1: out std_logic; q2: out std_logic); end; port(clk,resetn,din1: in std_logic; q1: out std_logic; q2: out std_logic); end; architecture buf of ex3b is signal q1_b: std_logic; -- A dummy jel begin q1<=q1_b; q1<=q1_b; process(clk,resetn) process(clk,resetn) begin begin if resetn=‘0’ then q1_b<=‘0’; q2<=‘0’; if resetn=‘0’ then q1_b<=‘0’; q2<=‘0’; elsif clk’event and clk=‘1’ then q1_b<=din1; q2<=q1_b; -- A q1_b jel olvasása elsif clk’event and clk=‘1’ then q1_b<=din1; q2<=q1_b; -- A q1_b jel olvasása end if; end if; end process; end process;end;

Bufferek és belső jelek III. ‘driving_value használata - csak a VHDL-93-ban érvényes ‘driving_value használata - csak a VHDL-93-ban érvényes library ieee; use ieee.std_logic_1164.all; entity ex3c is port(clk,resetn,din1: in std_logic; q1: out std_logic; q2: out std_logic); end; port(clk,resetn,din1: in std_logic; q1: out std_logic; q2: out std_logic); end; architecture buf of ex3c is begin process(clk,resetn) process(clk,resetn) begin begin if resetn=‘0’ then q1<=‘0’; q2<=‘0’; if resetn=‘0’ then q1<=‘0’; q2<=‘0’; elsif clk’event and clk=‘1’ then q1<=din1; q2<=q1’driving_value; elsif clk’event and clk=‘1’ then q1<=din1; q2<=q1’driving_value; end if; end if; end process; end process;end;

Bufferek és belső jelek IV. A három előbbi példa közül az első használata gondot okozhat akkor, ha szerkezeti modellben egy összetevőt be akarnak ültetni A három előbbi példa közül az első használata gondot okozhat akkor, ha szerkezeti modellben egy összetevőt be akarnak ültetni Ilyenkor szükség lenne egy buffer módú kapocs kiosztására egy out módú kapocsra, ami tilos Ilyenkor szükség lenne egy buffer módú kapocs kiosztására egy out módú kapocsra, ami tilos  Ez akkor jön létre, ha az összetevő kapcsa buffer módú, s ezt kellene kivezetni az összetevőt tartalmazó egyed out módú kapcsára  Ilyenkor nem jó megoldás a magasabb szintű egyed szóban forgó kapcsát is buffer módúnak deklarálni, mert azon a szinten az már tiszta out módban működik A buffer mód helyett az inout használata szintén nem jó megoldás, mivel ebben az esetben mások is tudnak az összetevő inout módú kapcsára írni A buffer mód helyett az inout használata szintén nem jó megoldás, mivel ebben az esetben mások is tudnak az összetevő inout módú kapcsára írni  Az inout mód csak kétirányú jeleknál vagy wired-logikánál (wired-or, stb) használandó

Vektorok deklarálása downto- vagy to-val Két módon lehet deklarálni vektrokat VHDL-ben: Két módon lehet deklarálni vektrokat VHDL-ben: signal a:std_logic_vector(0 to 3); signal b:std_logic_vector(3 downto 0); -- Javasolt Az ajánlott módszer az, hogy a vektorokat mindig downto-val érdemes deklarálni Az ajánlott módszer az, hogy a vektorokat mindig downto-val érdemes deklarálni Ennek az az oka, hogy ha a vektorokat downto-val deklarálják, akkor a legfontosabb bit (Most Significant Bit, MSB) mindig a legnagyobb indexű lesz, míg to-val való deklarációnál az MSB lesz a 0 indexű Ennek az az oka, hogy ha a vektorokat downto-val deklarálják, akkor a legfontosabb bit (Most Significant Bit, MSB) mindig a legnagyobb indexű lesz, míg to-val való deklarációnál az MSB lesz a 0 indexű

Nem teljesen meghatározott kombinációs folyamat I. Egy kombinációs folyamatban (nem egy tároló elemben) minden kimeneti jelnek értéket kell adni, azaz nem szabad előfordulnia, hogy egy folyamat lefut úgy, hogy legalább egyszer nem adott értéket minden kimeneti jelnek Egy kombinációs folyamatban (nem egy tároló elemben) minden kimeneti jelnek értéket kell adni, azaz nem szabad előfordulnia, hogy egy folyamat lefut úgy, hogy legalább egyszer nem adott értéket minden kimeneti jelnek A következő példa mutat egy nem teljes folyamatot: A következő példa mutat egy nem teljes folyamatot: architecture ROSSZ is begin process(a,b) process(a,b) begin begin if a>b then a b then a<=‘0’; elsif a<b then a<=‘1’; elsif a<b then a<=‘1’; end if; end if; end process; end process;end; Ezt az építményt szintetizálva, a program egy latch-et fog elhelyezni a kimenetre Ezt az építményt szintetizálva, a program egy latch-et fog elhelyezni a kimenetre

Nem teljesen meghatározott kombinációs folyamat II. Az előző példa helyes leírása a következő: Az előző példa helyes leírása a következő: architecture HELYES is begin process(a,b) process(a,b) begin begin if a>b then a b then a<=‘0’; else a<=‘1’; else a<=‘1’; end if; end if; end process; end process;end; Ezt az építményt szintetizálva, tiszta kombinációs hálózat lesz az eredmény Ezt az építményt szintetizálva, tiszta kombinációs hálózat lesz az eredmény