Magas szintű szintézis (High Level Synthesis)
|
|
- Csenge Veres
- 6 évvel ezelőtt
- Látták:
Átírás
1 Budapesti Műszaki és Gazdaságtudományi Egyetem Elektronikus Eszközök Tanszéke (High Level Synthesis) Timár András Április 8.
2 A hagyományos tervezési folyamat Indulás: specifikáció Lehet szöveges is, de általában C/C++/SystemC Tisztán funkcionális a leírás, nincsenek hardveres részletek Célja hogy ellenőrizze és finomhangolja a működést Tesztelés leírás módosítása tesztelés módosítás sok iteráció Funkció: mit csinál a rendszer, architektúra: hogyan csinálja Teljesítmény, fogyasztás és területigény definiálása A tervezők lekódolják HDL nyelven (Verilog vagy VHDL) Április 8. 2
3 A tervezési folyamat problémái Mi a megfelelő architektúra? Mi az optimális architektúra? Probléma: kézi megközelítés Minden kézi beavatkozás hibák forrása lehet. A hibák levadászása sok idő Április 8. 3
4 Elavult tervezési módszerek Egyre bonyolultabb rendszertervek Minden egyre bonyolultabb és kifinomultabb lesz: a minimális csíkszélesség csökken, az órajelek gyorsulnak, a beágyazott magok száma növekszik Az RTL készítés folyamata a régi A mai modern rendszereket (4G okostelefonok, H264 dekóderek, stb.) a 90-es évek közepéről származó eszközökkel akarjuk megtervezni Április 8. 4
5 Magasabb szintű leírások SystemC vagy Algorithmic C (Mentor Graphics) Egyetlen algoritmikus C++ leírásból sok különböző RTL leírás születhet automatikusan, mindegyik más és más terület igénnyel és teljesítménnyel A kézi HDL kódolással ez napokat vehet igénybe, míg az új módszerrel ez teljesen automatizált és néhány másodpercig tart A magas szinten (pl. C++) leírt rendszer vagy algoritmus végül HDL nyelvű leírássá alakul (Verilog, VHDL) A C++ kód minősége nagyban befolyásolhatja a keletkező RTL leírás minőségét. Nagyon fontos, hogy a nem megfelelően megírt C++ kód rossz hatásfokú, rossz minőségű RTL kódot eredményez Április 8. 5
6 Algoritmikus C A C++ kódból szintetizált HDL leírás nem úgy néz ki, ahogy azt kézzel írtuk volna Mégis optimálisabban működik, mint a kézi leírás A kézi leírás jóval hosszabb lenne. Lehet, hogy nem is jó elsőre A magas szintű szintézis (HLS) automatizál egy egyébként manuális folyamatot miközben több olyan lépést lehet kihagyni, mely hibákat vihet a rendszerbe. Gyorsítja az egyébként hosszú és iteratív fejlesztési ciklust Április 8. 6
7 A magas szintű szintézis előnyei Hibamentes út az absztrakt specifikációktól az RTL leírásig. Sokkal rövidebb tervezési idő Egyszerűbb verifikáció correct-per-construction RTL A magas szintű leírás elkészítésekor sokkal kevesebb részlettel kell foglalkozni A funkcionális tervezéskor nem kell törődni a megvalósítás részleteivel: az órajellel, a technológiával, a hierarchiával Csak a kívánt viselkedéssel kell foglalkozni Egyszerűbb így elkészíteni a leírást. A kevesebb kóddal a hibák esélye is lecsökken. Egyszerűbb kimerítően tesztelni és verifikálni a tervet Április 8. 7
8 Előnyök A magas szintű modellből az RTL készítés lépése teljesen automatikus! A hibalehetőségek megszűnnek, de megmarad a tervezői beavatkozás lehetősége Kényszerek beállítása a HLS eszközben szintézer a megfelelő RTL kódot generálja A HLS eszköz automatizálja a hardver erőforrások kiosztását és ütemezését, kiépíti az adatutakat és vezérlési szerkezeteket Létrejön egy teljesen működőképes és optimális megvalósítás RTL leírás gyorsan elkészül és hibáktól mentes. Gyorsabb verifikáció, hibakeresés és tesztelés Április 8. 8
9 Hatékony újrafelhasználhatóság Intellectual Property (IP) Egyszer kitalálni, sokszor felhasználni Az RTL IP-blokkok problémája: Túlságosan alacsony szinten definiálják a működést. A definíció szorosan kapcsolódik egy bizonyos órajelhez és technológiához Egy RTL leírás átültetése más órajelre és technológiára általában a terület és fogyasztás növekedésével és a teljesítmény csökkenésével jár Ha tisztán funkcionális specifikációkkal dolgozunk, akkor nincsenek olyan részletek, mint az órajel, technológia vagy mikro-architektúra Ezek az információk a magas szintű szintézis közben automatikusan kerülnek beépítésre A HLS használatával az IP-blokkok újrafelhasználása sokkal egyszerűbb Április 8. 9
10 Kutatási és fejlesztési (K+F) erőforrások A HLS segítségével több hónapi kutatást és fejlesztést tudunk megspórolni Kevesebb erőforrást kell az RTL kódolásra és a verifikációra szánni Ha több erőforrás jut algoritmusok fejlesztésére, architektúra optimalizálásra, rendszerszintű teljesítmény-optimalizálásra az lényegesen befolyásolja a termék sikerét A Time-to-market mellett nagyon fontos a funkciógazdagság, az alacsony ár és a kis fogyasztás is Április 8. 10
11 Tervezési szintek Visszatekintve: tranzisztorok kapuk RTL Rendszer RENDSZER (SYSTEM) + RÉSZEGYSÉG (MODULE) KAPU (GATE) ÁRAMKÖR (CIRCUIT) V in V out ESZKÖZ (DEVICE) G S n+ D n Április 8. 11
12 Paradigmaváltás A magas szintű szintézis nem új ötlet Az ipar állandóan növekvő igényei miatt a minél magasabb szintű és egyszerűbb tervezés központi kérdés Az első magas szintű C szintézis eszközök 2004-ben jelentek meg Azóta rengetegszer bebizonyosodott, hogy ezeknek az eszközöknek óriási jelentősége van és, hogy a jövő rendszereit ilyen tervezőeszközökkel kell megalkotni Szükséges egy paradigmaváltás, akárcsak a párhuzamos programozásban Április 8. 12
13 Általános C++ stílus Hogyan írjunk jó minőségű, szintetizálható kódot? Quality of Results (QoR) Egy általános C++ kód általában nem illeszthető be módosítás nélkül egy magas szintű hardver leírásba Fontos, hogy hardver készül a leírásból Meg kell tanulni a hardver szintézishez megfelelő programozási gyakorlatot Április 8. 13
14 Ajánlott könyvtárstruktúra Példa egy ajánlott könyvtárstruktúrára project src ccs dat sim project: az aktuális terv munkakönyvtára src: minden C/C++ forrásfájl, makefile, futtatható állományok (*.cpp, *.cxx, *.C, *.h, *.hpp, *.exe, Makefile) ccs: TCL fájlok a szintézishez dat: minden fájl I/O a teszt környezethez sim: Matlab és Simulink szkriptek Április 8. 14
15 Makefile Unix/Linux alatt előszeretettel használjuk Automatizálja a fordítást Windows alatt is működik kis módosításokkal # Example Makefile #MACROS CAT_HOME = $(MGC_HOME) TARGET = my_tb OBJECTS = main.o hello.o DEPENDS = hello.h INCLUDES = - I $(CAT_HOME)/shared/include DEFINES = CXX = /usr/bin/g++ CXXFLAGS = -g -o3 $(DEFINES) $(INCLUDES) $(TARGET): $(OBJECTS) $(CXX) $(CXXFLAGS) -o $(TARGET) $(OBJECTS) $(OBJECTS): $(DEPENDS) #phony target to remove all objetcs and executables.phony: clean clean: rm -f *.o *.exe Április 8. 15
16 Fejléc/Inlcude fájlok Függvény prototípusok Elődeklarációk Típusdefiniciók Konstans definíciók //guard string to prevent multiple inclusion #ifndef HELLO #define HELLO //Forward declaration of fucntion void hello(); const int ITERATIONS = 22; typedef int dtype; #endif Április 8. 16
17 Teszt környezetek (testbench) nél a C++ testbench egyaránt teszteli a funkcionális C++ kódot és a szintetizált RTL leírást is Nagyon fontos a jó programozási stílus Úgy kell megírni, hogy mindig az eredeti specifikációnak megfelelő funkcionalitást tesztelje, akárhogyan is változott a magas szintű kód A kód szintetizálhatóvá tétele nem szabad, hogy elrontsa a funkcionalitást Minden lépés után verifikálni kell a tervet Tehát: testbench-et kell írni! Április 8. 17
18 Első prototípus Mindig legyen meg az első verzió a kódból Így lehet aztán később összehasonlítani a QoR-t teljesítmény és terület szempontjából Pl. egy meglévő fix- vagy lebegőpontos algoritmust módosítani kell jobb QoR elérése és/vagy szintetizálhatóság miatt CatapultC Minden változtatás egy revízió Vissza lehet követni minden változtatást (mint a verziókövetés) Április 8. 18
19 Kód módosítása A két kód funkcionálisan egyforma Az új kód jobb teljesítményű, a működés párhuzamosítható Eredeti kód #include test.h void test(dtype a[2], dtype b[2], dtype dout[2], bool sel){ Módosított kód #include test_mod.h void test_mod(dtype a[2], dtype b[2], dtype dout[2], bool sel){ if(sel){ dout[0] = a[0] + b[0]; dout[1] = a[1] + b[1]; } else { dout[0] = a[0] - b[0]; dout[1] = a[1] - b[1];} } for(int i=0;i<2;i++){ if(sel){ dout[i] = a[i] + b[i]; } else{ dout[i] = a[i] - b[i]; } } } Április 8. 19
20 Módosított testbench Mindkét kódot teszteljük, ha megváltozott a funkcionalitás, hibát jelzünk Minden módosítás után futtassuk le a tesztet! #include <iostream> using namespace std; #include test.h #include test_mod.h int main(){ dtype a[2] = {10, 20}; dtype b[2] = {10, 20}; dtype dout[2]; dtype dout_mod[2]; bool sel = true; bool error = false; //DUT original test(a,b,dout,sel); //DUT modified test_mod(a,b,dout_mod,sel); } for(int i=0;i<2;i++){ if(dout_mod[i]!= dout[i]){ cout << ERROR << endl; error = true; } else cout << dout[i] << endl; } if(error) return -1; //indicates test failure else return 0; //test passed Április 8. 20
21 Javított testbench Minden lehetséges kombinációt teszteljünk! Ellenkező esetben a kód nagyobb módosítása után derülhet fény a hibára Az előző példában csak sel=true feltételre teszteltünk #include <iostream> using namespace std; #include test.h #include test_mod.h int main(){ dtype a[2] = {10, 20}; dtype b[2] = {10, 20}; dtype dout[2]; dtype dout_mod[2]; bool sel = true; for(int j=0;j<2;j++){ sel = j; //DUT original test(a,b,dout,sel); //DUT modified test_mod(a,b,dout_mod,sel); } } for(int i=0;i<2;i++){ if(dout_mod[i]!= dout[i]) cout << ERROR << endl; else cout << dout[i] << endl; } Április 8. 21
22 Nem inicializált változók A nem inicializált változók nagy bajt okozhatnak don t care -nek minősíti a szintézer Minden változót inicializálni kell! tmp = (don t care) + din[i]; void acc(int din[4], int &dout){ int tmp; for(int i=0;i<4;i++) tmp += din[i]; } dout = tmp; Április 8. 22
23 Adott bithosszúságú típusok A C++ kódból hardver készül, ezért szükség van az adattípusok pontos bitméretének beállítására Angol terminológia: Bit Accurate Data Type Sok saját készítésű osztálykönyvtár létezik, de ezek csak szimulációkra alkalmasak, szintézisnél túl lassú kódot eredményeznek (rossz QoR) Két szabványos bit-accurate osztálykönyvtár létezik a piacon A SystemC adattípusai Mentor Graphics Algorithmic C adattípusok 1 Az első a SystemC volt, de túl lassúnak bizonyult futásidőben ezért a Mentor kifejlesztette a saját adattípusát Az Algorithmic C nemcsak gyorsabb szimulációt tesz lehetővé, de jobb QoR is érhető el vele (jobb HDL készül) Április 8. 23
24 Fordítás, hibakeresés, szimuláció sebesség Header fájlok #include <ac_int.h> #include <ac_fixed.h> Szimulációnál érdemes beállítani legjobb optimalizálást (-O3) g++ -O3 -I<path to Alogrithmic C data types> -o hello.exe hello.cpp Hibakeresésnél -O0 g++ -g -Wall -I<path to Alogrithmic C data types> -o hello.exe hello.cpp Szimulációnál érdemes lehet áttérni natív típusokra a sebesség miatt #ifndef TYPEDEFS #define TYPEDEFS #include <ac_int.h> #ifdef NATIVE_TYPES typedef short int dtype; typedef int otype; #else typedef ac_int<7,true> dtype; typedef ac_int<14,true> otype; #endif #endif #include typedefs.h void test(dtype a, dtype b, otype &c){ otype tmp; tmp = a*b; c = tmp; } Április 8. 24
25 Egész adattípusok (integers) Unsigned integer ac_int<w,false> x; W: bitszélesség 0 <= x <= 2 W -1 körbefordulás #include <ac_int.h> #include <fstream> #include <cmath> using namespace std; const double pi = 3.14; const int OFFSET = 64; int main(){ fstream fptr; fptr.open( tmp.txt, fstream::out); ac_int<7,false> x[128]; for(int i=0;i<128;i++){ x[i] = OFFSET + 63*sin(2*pi*i/64); fptr << x[i] <<endl; } fptr.close(); } Április 8. 25
26 Egész adattípusok (integers) Signed integer ac_int<w,true> x; W: bitszélesség -2 W-1 <= x <= 2 W-1-1 körbefordulás #include <ac_int.h> #include <iostream.h> #include <fstream.h> #include <math.h> const double pi = 3.14; const int OFFSET = 0; int main(){ fstream fptr; fptr.open( tmp.txt, fstream::out); ac_int<7,true> x[128]; for(int i=0;i<128;i++){ x[i] = OFFSET + 63*sin(2*pi*i/64); fptr << x[i] <<endl; } fptr.close(); } Április 8. 26
27 Fixpontos adattípusok Unsigned fixed point ac_fixed<w,i,false> x; W: teljes bitszélesség I: egész bitek száma 0 <= x <= (1-2 -W )2 I #include <ac_fixed.h> #include <iostream.h> #include <fstream.h> #include <math.h> const double pi = 3.14; const double OFFSET = 1.0; int main(){ fstream fptr; fptr.open( tmp.txt, fstream::out); ac_fixed<7,1,false> x[128]; for(int i=0;i<128;i++){ x[i] = OFFSET *sin(2*pi*i/64); fptr << x[i] <<endl; } fptr.close(); } Április 8. 27
28 Fixpontos adattípusok Signed fixed point ac_fixed<w,i,true> x; W: teljes bitszélesség I: egész bitek száma -0,5*2 I <= x <= (0,5-2 -W )2 I #include <ac_fixed.h> #include <iostream.h> #include <fstream.h> #include <math.h> const double pi = 3.14; const double OFFSET = 0.0; int main(){ fstream fptr; fptr.open( tmp.txt, fstream::out); ac_fixed<7,1,true> x[128]; for(int i=0;i<128;i++){ x[i] = OFFSET *sin(2*pi*i/64); fptr << x[i] <<endl; } fptr.close(); } Április 8. 28
29 Kvantálás és túlcsordulás A fixpontos adattípusok több lehetőséget is biztosítanak a túlcsordulások és a kvantálás finomhangolására Alapértelmezetten úgy működik, mint az ac_int<> Az alapértelmezett beállítás nem foglal több helyet Az alapértelmezett beállítás nem mindig megfelelő ac_fixed<w,i,q,o> x Q: quantization O: overflow Április 8. 29
30 Csonkolás és kerekítés Alapértelmezés: csonkolás és LSB-től jobbra lévő bitek eldobása Pl: ac_fixed<7,7,true> x = 0.5; x-nek nincs tört bitje, x == 0 Lehet kerekíteni ac_fixed<7,7,true,ac_rnd> x = 0.5; AC_RND + felé kerekít X == Április 8. 30
31 Telítés és túlcsordulás A bitek átfordulása sokszor nemkívánatos Szükség van az átfordulás megakadályozására Pl. Ez kritikus körülmények között végzetes lehet Április 8. 31
32 Telítés és túlcsordulás Engedélyezzük a telítést a fixpontos típusra Csak a legszükségesebb esetben használjuk! Zajt visz a rendszerbe és megnöveli a helyfoglalást #include <ac_fixed.h> #include <iostream.h> #include <fstream.h> #include <math.h> const double pi = 3.14; const double OFFSET = 0.2; int main(){ fstream fptr; fptr.open( tmp.txt, fstream::out); ac_fixed<7,1,true,ac_trn,ac_sat> x[128]; for(int i=0;i<128;i++){ x[i] = OFFSET *sin(2*pi*i/(double)64); fptr << x[i] <<endl; } fptr.close(); } Április 8. 32
33 Operátorok Minden C++ operátor rendelkezésre áll az ac_fixed<> és ac_int<> típusokra A moduló (%) és osztás (/) operandusok is, de ezekkel óvatosan Nagy területet foglal és vannak olcsóbb megoldások is, mint pl. a CORDIC algoritmus A HLS eszközök nagy része támogatja ezeket Moduló vagy osztás konstanssal már elfogadható Moduló vagy osztás 2 egész többszörösével OK (shift) Április 8. 33
34 Aritmetikai operátorok *, +, -, /, &,, ^, % Figyeli a bitszélesség növekedést és az előjeles/előjel nélküli operandusokat is kezeli Pl. ac_int<8,true> a,b; // 8-bits unsigned a*b ac_int<16,true> típussal tér vissza, mert két 8 bites szám szorzatához 16 bit szükséges Miért? Pl. 11 bin * 11 bin = 3 dec * 3 dec = 9 dec = 1001 bin 2 bit 4 bit a+b ac_int<9,true> típussal tér vissza, mert két 8 bites szám összegéhez 9 bit szükséges Április 8. 34
35 Bit kiválasztó operátor ([]) ac_int<11,true> x; bool is_neg; if(x[10]) //test for sign bit treated as bool is_neg = true; else is_neg = false; ac_fixed<9,1,false> x = 0; bool add_one = true; if(add_one) x[8] = 1; //set MSB of x Április 8. 35
36 Léptető operátorok A baloldali operandus pontosságával térnek vissza! Unsigned shift right (>>) ac_int<4,false> x = -1; //set all bits to 1's int idx; ac_int<4,false> y = x >> idx; Április 8. 36
37 Léptető operátorok Signed shift right (>>) Előjeles változó jobbra léptetése megtartja az előjelet! ac_int<4,true> x = 0; x[3] = 1 //set x equal -8 int idx; ac_int<4,true> y = x >> idx; Április 8. 37
38 Léptető operátorok Unsigned shift left (<<) ac_int<4,false> x = -1; //set all bits to 1's int idx; ac_int<4,false> y = x << idx; Április 8. 38
39 Léptető operátorok Signed shift left (<<) ac_int<4,true> x = -1; //set all bits to 1's int idx; ac_int<4,true> y = x << idx; Április 8. 39
40 Nem várt pontosság csökkenés Balra léptetésnél következhet be, nem várt, de korrekt ac_int<4,false> x = -1; //set all bits to 1's int idx; ac_int<8,false> y = x << idx; Egy 4 bites változót léptetünk balra és az eredmény egy 8 bites változóba kerül. Az eredmény: Április 8. 40
41 Nem várt pontosság csökkenés Emlékeztető: a léptetés pontossága mindig a bal oldali operandus pontossága ac_int<4,false> x = -1; //set all bits to 1's int idx; ac_int<8,false> y = x << idx; Megoldás: castolás 8 bitesre ac_int<4,false> x = -1; //set all bits to 1's int idx; ac_int<8,false> y = (ac_int<8,false>) x << idx; Április 8. 41
42 Metódusok Szelet olvasás (slice read) slc<w>(int lsb) W: a szelet szélessége lsb: a szelet kezdete (hányadik bit) ac_int<8,false> x = 100; ac_int<3,false> y; y = x.slc<3>(2); Április 8. 42
43 Metódusok Szelet írás (slice write) set_slc(int lsb, const ac_int<w,s> &slc) W: a szelet szélessége S: előjeles (true)/előjel nélküli (false) lsb: a szelet kezdete (hányadik bit) ac_int<8,false> x = 0; ac_int<3,false> y = 5; x.set_slc(2,y); Április 8. 43
44 Explicit konverzió Tipikusan akkor kell, ha pl. ac_fixed<> típust akarunk értékül adni egy ac_int<> típusnak printf() hívással ki szeretnénk írni a tartalmát ac_fixed<8,3,false> x = 3.185; ac_int<8,false> y; y = x; // Compiler error! Megoldás: y = x.to_int(); Futási időben printf() printf( %d\n,y); // Segmentation fault! printf( %d\n,y.to_int()); // OK! Április 8. 44
45 Segítő funkciók ac::init_array Tömb inicializálása és un-inicializálása A szintézer így tudja, hogy nem kell hardvert szintetizálni egy for() ciklushoz, ami feltölti vagy don t care -be teszi a tömböt bool ac::init_array<"init value">("base address of array", "number of elements"); static int a[1000]; static bool dummy = ac::init_array<ac_val_dc>(a,1000); ceil(), floor() és nbits() Pl. a 175-ös szám ábrázolásához szükséges bitek száma 2 x = 175 x = log const int WORDS = 175; void foo(int data[words], ac_int<ac::log2_ceil<words>::val,false> idx, int &dout){ dout = data[idx]; } Komplex adattípusok: ac_complex<> Április 8. 45
46 A HLS alapjai Nem mindegy, hogy milyen stílusban írjuk meg a C++ kódot Hardver készül! Egy rosszul megírt C++ kód szub-optimális RTL-t eredményez, ha egyáltalán szintetizálható A javasolt kódolási stílust kell használni Figyelni kell a memória architektúrára, stb Április 8. 46
47 Top modul Meg kell mondani a HLS eszköznek, hogy melyik modul a hierarchia teteje Mint Verilogban, vagy VHDL-ben Interfész a külvilággal (portok, irányaik, szélesség, stb.) D FF aszinkron reset (Verilog) module top(clk,arst,din,dout); input clk; input arst; input [31:0] din; output [31:0] dout; reg [31:0] dout; always@(posedge clk or posedge arst) begin if(arst == 1 b1) dout = 1 b0; else dout = din; end endmodule C++ #pragma design top void top(int din, int& dout){ dout = din; } Április 8. 47
48 Alapértelmezett viselkedés Regiszter kimenetek Minden szinkron, a kimenetek regiszterek Vezérlő portok Nincs időzítés, órajel, enable, reset. Ezeket a szintézer adja hozzá és kényszerekkel állíthatók be. Port szélességek Az adattípus határozza meg (pl. int = 32 bit, ac_int<8,true>) Port iránya A kódból kiderül Bemenő portok Ha egy interfész portot csak olvasunk, az bemeneti port lesz Kimenő portok Ha egy interfész portot csak írunk, az kimeneti port lesz (referencia) Kétirányú portok Írjuk és olvassuk is Április 8. 48
49 Magas szintű C++ szintézis 4 számot összadó áramkör #include accum.h void accumulate(int a, int b, int c, int d, int &dout){ int t1,t2; } t1 = a + b; t2 = t1 + c; dout = t2 + d; Adatfolyam gráf analízis (Data Flow Graph, DFG) Minden csomópont egy utasításnak felel meg A kapcsolatok meghatározzák a sorrendet (t2 előtt t1) Április 8. 49
50 Erőforrás kiosztás Ha megvan a DFG, minden művelet egy HW erőforrásra képződik le Erőforrás == hardver implementáció Időzítés és terület adatok (több fajta erőforrás ua. típus) Különböző időzítés, terület, késleltetés, lappangás, stb. A szintézer egy előre karakterizált könyvtárból válogatja ki az erőforrásokat a kényszerek alapján Április 8. 50
51 Ütemezés Megjelenik az idő fogalma az ütemezés lépésben Az ütemezés eldönti, hogy a DFG műveletei mikor (melyik órajel ciklusban) hajtódjanak végre Ez regiszterek hozzáadását jelenti a cél órajel frekvencia alapján Az RTL tervezők ezt hívják pipeline-osításnak Tegyük fel, hogy az összadás művelet 3ns-ig tart egy 5nsos órajel ciklusnál Április 8. 51
52 Ütemezés Minden összeadás művelet a saját órajel ciklusába kerül (C1,C2,C3) Minden összadó közé automatikusan egy regiszter kerül C4 azért kell, mert itt tudjuk kiolvasni először eredményt (szinkron hálózat!) Április 8. 52
53 Ütemezés Egy adatút állapotgép (Data Path State Machine, DPFSM) készül az ütemezett terv vezérlésére Az állapotgép 4 csomópontot tartalmaz, melyek az egyes órajel ciklusokhoz tartoznak Ezek a control step -ek, vagy c-step -ek Az állapot diagrammból látszik, hogy minden 4. óraciklusban jelenik meg egy új kimenet (C4 után újra C1, stb.) Április 8. 53
54 A szintetizált hardver A generált hardver a kényszerek és az ütemezés alapján készül el A kényszerek nélküli tervet a szintézer a minimális számú erőforrással valósítja meg (itt: minimális számú összeadó) Adatút: 32 bit az int miatt #include accum.h void accumulate(int a, int b, int c, int d, int &dout){ int t1,t2; } t1 = a + b; t2 = t1 + c; dout = t2 + d; Április 8. 54
55 Klasszikus RISC csővezeték (pipeline) A HLS-ben a ciklus csővezeték (loop pipelining) hasonló, mint a klasszikus RISC csővezeték Az alap 5 fokozatú pipeline a RISC architektúrában Instruction Fetch (IF) Instruction Decode (ID) Execute (EX) Memory Access (MA) Register write back (WB) Április 8. 55
56 Klasszikus RISC csővezeték (pipeline) Az egyes fokozatok egymás után aktiválódnak Ramp up : ennyi idő kell, hogy minden fokozat bekapcsoljon Ramp down : ennyi idő kell, hogy minden fokozat inaktívvá váljon Április 8. 56
57 Loop pipelining Egy új ciklus-iteráció kezdődhet el miközben az aktuális még fut A példában ugyan nincs explicit ciklus, de az accumulate() függvény ciklikusan hívódik, ezt hívjuk main loop -nak A main loop minden iterációja a már ismert ütemezést hajtja végre A loop pipelining segítségével az iterációk átlapolhatók Gyorsítja a rendszert és párhuzamosít Az átlapolás nagyságát az Initiation Interval (II) adja meg #include accum.h void accumulate(int a, int b, int c, int d, int &dout){ int t1,t2; } t1 = a + b; t2 = t1 + c; dout = t2 + d; Április 8. 57
58 Indítási intervallum (Initiation Interval,II) II: mennyi óraciklus telik el az új iteráció megkezdéséig Pl. II = 1, minden óraciklusban kezdődjőn egy iteráció Latency (lappangás): az idő, óraciklusban mérve, az első bemenettől az első kimenet megjelenéséig Throughput (áteresztőképesség): mennyi időnként lesz egy új kimenetünk (óraciklusban mérve) A kényszermentes példában: nincs pipeline, L=3, TP= Április 8. 58
59 Initiation Interval = 3 Ha a fő cikluson (main loop) II=3 kényszert állítunk be, az eredmény kiírása és az új adat beolvasása átlapolódhat Még mindig csak 1 összadó szükséges II=3, L=3, TP= Április 8. 59
60 II = 2 2 órajelciklus átlapolódik Már 2 összadóra van szükség, de TP=2 II=2, L=3, TP= Április 8. 60
61 II = 1 3 órajelciklus átlapolódik Már 3 összadóra van szükség, de TP=1 II=1, L=3, TP= Április 8. 61
62 Esettanulmány Egy egyszerű stopper megvalósítása Verilog/C++ szintézissel Április 8. 62
63 Felhasznált eszközök Mentor Graphics CatapultC (C/C++ RTL) Precision Synthesis RTL Altera Quartus II Altera DE2 Development board Április 8. 63
64 Top modul Verilog modul Számláló Hextobcd modul, mely C-ben lett megírva Szintézis után Verilog/VHDL RTL modul készül, ami itt példányosítható Április 8. 64
65 Hex2BCD C modul Egy 8 bites hexadecimális számot BCD-re alakít C modul Verilog RTL modul Április 8. 65
66 Irodalomjegyzék Michael Fingeroff, High-Level Synthesis Blue Book, Mentor Graphics Corporation, 2010, ISBN: Április 8. 66
Laborgyakorlat 3 A modul ellenőrzése szimulációval. Dr. Oniga István
Laborgyakorlat 3 A modul ellenőrzése szimulációval Dr. Oniga István Szimuláció és verifikáció Szimulációs lehetőségek Start Ellenőrzés után Viselkedési Funkcionális Fordítás után Leképezés után Időzítési
Programozás II. 2. Dr. Iványi Péter
Programozás II. 2. Dr. Iványi Péter 1 C++ Bjarne Stroustrup, Bell Laboratórium Első implementáció, 1983 Kezdetben csak precompiler volt C++ konstrukciót C-re fordította A kiterjesztés alapján ismerte fel:.cpp.cc.c
Elektronika, 5. gyakorlat: algoritmikus C szintézis
Elektronika, 5. gyakorlat: algoritmikus C szintézis Bevezetés A digitális elektronikai rendszerek bonyolultsága és a gyors technológiai fejlődés folyamatos kihívás elé állítja a tervezőket, mert a tervezési
Újrakonfigurálható technológiák nagy teljesítményű alkalmazásai
Újrakonfigurálható technológiák nagy teljesítményű alkalmazásai Xilinx System Generator Szántó Péter BME MIT, FPGA Laboratórium Xilinx System Generator MATLAB Simulink Toolbox Simulink Modell alapú grafikus
Dr. Oniga István DIGITÁLIS TECHNIKA 9
r. Oniga István IGITÁLIS TEHNIKA 9 Regiszterek A regiszterek több bites tárolók hálózata S-R, J-K,, vagy kapuzott tárolókból készülnek Fontosabb alkalmazások: adatok tárolása és adatmozgatás Funkcióik:
Digitális technika VIMIAA01 9. hét Fehér Béla BME MIT
BUDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM VILLAMOSMÉRNÖKI ÉS INFORMATIKAI KAR MÉRÉSTECHNIKA ÉS INFORMÁCIÓS RENDSZEREK TANSZÉK Digitális technika VIMIAA01 9. hét Fehér Béla BME MIT Eddig Tetszőleges
Digitális technika VIMIAA01 9. hét
BUDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM VILLAMOSMÉRNÖKI ÉS INFORMATIKAI KAR MÉRÉSTECHNIKA ÉS INFORMÁCIÓS RENDSZEREK TANSZÉK Digitális technika VIMIAA01 9. hét Fehér Béla BME MIT Eddig Tetszőleges
1. Alapok. Programozás II
1. Alapok Programozás II Elérhetőség Név: Smidla József Elérhetőség: smidla dcs.uni-pannon.hu Szoba: I916 2 Irodalom Bjarne Stroustrup: A C++ programozási nyelv 3 Irodalom Erich Gamma, Richard Helm, Ralph
Pénzügyi algoritmusok
Pénzügyi algoritmusok A C++ programozás alapjai Az Integrált Fejlesztői Környezet C++ alapok Az Integrált Fejlesztői Környezet Visual Studio 2013 Community Edition Kitekintés: fordítás Preprocesszor Fordító
Bevezetés a programozásba. 8. Előadás: Függvények 2.
Bevezetés a programozásba 8. Előadás: Függvények 2. ISMÉTLÉS Helló #include using namespace std; int main() cout
Programozás II. 2. gyakorlat Áttérés C-ről C++-ra
Programozás II. 2. gyakorlat Áttérés C-ről C++-ra Tartalom Új kommentelési lehetőség Változók deklarációjának helye Alapértelmezett függvényparaméterek Névterek I/O műveletek egyszerűsödése Logikai adattípus,
1. Gyakorlat. Rövid elméleti összefoglaló. <tárolási osztály>típus <típus > változónév <= kezdőérték><, >;
Rövid elméleti összefoglaló 1. Gyakorlat A C++ nyelv hatékony, általános célú programozási nyelv, amely hagyományos fejlesztőeszközként és objektum-orientált programozási nyelvként egyaránt használható.
5. KOMBINÁCIÓS HÁLÓZATOK LEÍRÁSÁNAK SZABÁLYAI
5. KOMBINÁCIÓS HÁLÓZATOK LEÍRÁSÁNAK SZABÁLYAI 1 Kombinációs hálózatok leírását végezhetjük mind adatfolyam-, mind viselkedési szinten. Az adatfolyam szintű leírásokhoz az assign kulcsszót használjuk, a
Digitális technika (VIMIAA02) Laboratórium 3
BUDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM VILLAMOSMÉRNÖKI ÉS INFORMATIKAI KAR MÉRÉSTECHNIKA ÉS INFORMÁCIÓS RENDSZEREK TANSZÉK Digitális technika (VIMIAA02) Laboratórium 3 Fehér Béla Raikovich Tamás,
Mérési jegyzőkönyv. az ötödik méréshez
Mérési jegyzőkönyv az ötödik méréshez A mérés időpontja: 2007-10-30 A mérést végezték: Nyíri Gábor kdu012 mérőcsoport A mérést vezető oktató neve: Szántó Péter A jegyzőkönyvet tartalmazó fájl neve: ikdu0125.doc
Digitális technika II. (vimia111) 5. gyakorlat: Tervezés adatstruktúra-vezérlés szétválasztással, vezérlőegység generációk
Digitális technika II. (vimia111) 5. gyakorlat: Tervezés adatstruktúra-vezérlés szétválasztással, vezérlőegység generációk Elméleti anyag: Processzoros vezérlés általános tulajdonságai o z induló készletben
III. Alapfogalmak és tervezési módszertan SystemC-ben
III. Alapfogalmak és tervezési módszertan SystemC-ben A SystemC egy lehetséges válasz és egyben egyfajta tökéletesített, tovább fejlesztett tervezési módszertan az elektronikai tervezés területén felmerülő
Digitális technika (VIMIAA02) Laboratórium 3
BUDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM VILLAMOSMÉRNÖKI ÉS INFORMATIKAI KAR MÉRÉSTECHNIKA ÉS INFORMÁCIÓS RENDSZEREK TANSZÉK Digitális technika (VIMIAA02) Laboratórium 3 Fehér Béla Raikovich Tamás,
Bevezetés Kiíratás Beolvasás Formázás Fájlkezelés Gyakorló feladatok C++ I/O. Bevezetés. Izsó Tamás február 20. Izsó Tamás C++ I/O / 1
C++ I/O Bevezetés Izsó Tamás 2014. február 20. Izsó Tamás C++ I/O / 1 Section 1 Bevezetés Izsó Tamás C++ I/O / 2 Irodalom Izsó Tamás C++ I/O / 3 Paraméter illesztés függvénynév túlterhelés esetén 1 Pontos
Programozási alapismeretek beadandó feladat: ProgAlap beadandó feladatok téma 99. feladat 1
Programozási alapismeretek beadandó feladat: ProgAlap beadandó feladatok téma 99. feladat 1 Készítette: Gipsz Jakab Neptun-azonosító: A1B2C3 E-mail: gipszjakab@vilaghalo.hu Kurzuskód: IP-08PAED Gyakorlatvezető
Digitális rendszerek. Mikroarchitektúra szintje
Digitális rendszerek Mikroarchitektúra szintje Mikroarchitektúra Jellemzők A digitális logika feletti szint Feladata az utasításrendszer-architektúra szint megalapozása, illetve megvalósítása Példa Egy
Tartalomjegyzék. Általános Információ! 2. Felhasználói dokumentáció! 3. Feladat! 3. Környezet! 3. Használat! 3. Bemenet! 3. Példa!
Tartalomjegyzék Általános Információ! 2 Felhasználói dokumentáció! 3 Feladat! 3 Környezet! 3 Használat! 3 Bemenet! 3 Példa! 3 A program eredménye! 3 Példa! 3 Hibalehetőségek! 3 Példa! 3 Fejlesztői dokumentáció!
Mintavételes szabályozás mikrovezérlő segítségével
Automatizálási Tanszék Mintavételes szabályozás mikrovezérlő segítségével Budai Tamás budai.tamas@sze.hu http://maxwell.sze.hu/~budait Tartalom Mikrovezérlőkről röviden Programozási alapismeretek ismétlés
Bevezetés a programozásba I.
Bevezetés a programozásba I. 6. gyakorlat C++ alapok, szövegkezelés Surányi Márton PPKE-ITK 2010.10.12. Forrásfájlok: *.cpp fájlok Fordítás: a folyamat, amikor a forrásfájlból futtatható állományt állítunk
Digitális technika (VIMIAA02) Laboratórium 5
BUDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM VILLAMOSMÉRNÖKI ÉS INFORMATIKAI KAR MÉRÉSTECHNIKA ÉS INFORMÁCIÓS RENDSZEREK TANSZÉK Digitális technika (VIMIAA02) Laboratórium 5 Fehér Béla Raikovich Tamás,
Digitális technika (VIMIAA02) Laboratórium 5
BUDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM VILLAMOSMÉRNÖKI ÉS INFORMATIKAI KAR MÉRÉSTECHNIKA ÉS INFORMÁCIÓS RENDSZEREK TANSZÉK Digitális technika (VIMIAA02) Laboratórium 5 Fehér Béla Raikovich Tamás,
Digitális technika (VIMIAA02) Laboratórium 4
BUDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM VILLAMOSMÉRNÖKI ÉS INFORMATIKAI KAR MÉRÉSTECHNIKA ÉS INFORMÁCIÓS RENDSZEREK TANSZÉK Digitális technika (VIMIAA02) Laboratórium 4 Fehér Béla Raikovich Tamás,
Dr. Schuster György október 14.
Real-time operációs rendszerek RTOS 2011. október 14. A fordítás vázlata prog.c Előfeldolgozó Átmenti állomány Fordító prog.obj más.obj-tek könyvtárak indító kód Linker futtatható kód Ismétlés Előfeldolgozó
Budapesti Műszaki és Gazdaságtudományi Egyetem. A Verilog HDL II. Nagy Gergely. Elektronikus Eszközök Tanszéke (BME) szeptember 26.
Áramkörtervezés az absztrakciótól a realizációig BMEVIEEM284 Budapesti Műszaki és Gazdaságtudományi Egyetem A Verilog HDL II. Nagy Gergely Elektronikus Eszközök Tanszéke (BME) 2013. szeptember 26. Nagy
Programozás C és C++ -ban
Programozás C és C++ -ban 2. További különbségek a C és C++ között 2.1 Igaz és hamis A C++ programozási nyelv a C-hez hasonlóan definiál néhány alap adattípust: char int float double Ugyanakkor egy új
Maximum kiválasztás tömbben
ELEMI ALKALMAZÁSOK FEJLESZTÉSE I. Maximum kiválasztás tömbben Készítette: Szabóné Nacsa Rozália Gregorics Tibor tömb létrehozási módozatok maximum kiválasztás kódolása for ciklus adatellenőrzés do-while
Máté: Számítógép architektúrák
Az GOTO offset utasítás. P relatív: P értékéhez hozzá kell adni a két bájtos, előjeles offset értékét. Mic 1 program: Main1 P = P + 1; fetch; goto() goto1 OP=P 1 // Main1 nél : P=P+1 1. bájt goto P=P+1;
Xilinx Vivado HLS gyakorlat (2018.) C implementáció és testbench
Xilinx Vivado HLS gyakorlat (2018.) C implementáció és testbench 1. Töltse le a tárgy honlapjáról a gyakorlathoz tartozó file-t. 2. Hozzon létre egy Vivado HLS projektet az alábbi beállításokkal. a. Adja
Újrakonfigurálható eszközök
Újrakonfigurálható eszközök 5. A Verilog sűrűjében: véges állapotgépek Hobbielektronika csoport 2017/2018 1 Debreceni Megtestesülés Plébánia Felhasznált irodalom és segédanyagok Icarus Verilog Simulator:
Programozás alapjai gyakorlat. 2. gyakorlat C alapok
Programozás alapjai gyakorlat 2. gyakorlat C alapok 2016-2017 Bordé Sándor 2 Forráskód, fordító, futtatható állomány Először megírjuk a programunk kódját (forráskód) Egyszerű szövegszerkesztőben vagy fejlesztőkörnyezettel
Mechatronika és mikroszámítógépek 2017/2018 I. félév. Bevezetés a C nyelvbe
Mechatronika és mikroszámítógépek 2017/2018 I. félév Bevezetés a C nyelvbe A C programozási nyelv A C egy általános célú programozási nyelv, melyet Dennis Ritchie fejlesztett ki Ken Thompson segítségével
Bevezetés a programozásba Előadás: Objektumszintű és osztályszintű elemek, hibakezelés
Bevezetés a programozásba 2 7. Előadás: Objektumszű és osztályszű elemek, hibakezelés ISMÉTLÉS Osztály class Particle { public: Particle( X, X, Y); virtual void mozog( ); ); virtual void rajzol( ) const;
Digitális technika (VIMIAA02) Laboratórium 4
BUDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM VILLAMOSMÉRNÖKI ÉS INFORMATIKAI KAR MÉRÉSTECHNIKA ÉS INFORMÁCIÓS RENDSZEREK TANSZÉK Digitális technika (VIMIAA02) Laboratórium 4 Fehér Béla Raikovich Tamás,
Programozás BMEKOKAA146. Dr. Bécsi Tamás 2. előadás
Programozás BMEKOKAA146 Dr. Bécsi Tamás 2. előadás Szintaktikai alapok Alapvető típusok, ismétlés C# típus.net típus Méret (byte) Leírás byte System.Byte 1Előjel nélküli 8 bites egész szám (0..255) char
Digitális technika VIMIAA hét
BUDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM VILLAMOSMÉRNÖKI ÉS INFORMATIKAI KAR MÉRÉSTECHNIKA ÉS INFORMÁCIÓS RENDSZEREK TANSZÉK VIMIAA02 14. hét Fehér Béla BME MIT Rövid visszatekintés, összefoglaló
Összetett feladatok megoldása
Összetett feladatok megoldása F1. A laboratóriumi feladat a legnagyobb közös osztó kiszámító algoritmusának realizálása digitális hardver eszközökkel. Az Euklideszi algoritmus alapja a maradékos osztás,
Bevezetés a programozásba I.
Bevezetés a programozásba I. 5. gyakorlat Surányi Márton PPKE-ITK 2010.10.05. C++ A C++ egy magas szint programozási nyelv. A legels változatot Bjarne Stroutstrup dolgozta ki 1973 és 1985 között, a C nyelvb
Dr. Oniga István DIGITÁLIS TECHNIKA 8
Dr. Oniga István DIGITÁLIS TECHNIA 8 Szekvenciális (sorrendi) hálózatok Szekvenciális hálózatok fogalma Tárolók RS tárolók tárolók T és D típusú tárolók Számlálók Szinkron számlálók Aszinkron számlálók
Digitális eszközök típusai
Digitális eszközök típusai A digitális eszközök típusai Digitális rendszer fogalma Több minden lehet digitális rendszer Jelen esetben digitális integrált áramköröket értünk a digitális rendszerek alatt
Programozás C++ -ban 2007/1
Programozás C++ -ban 2007/1 1. Különbségek a C nyelvhez képest Több alapvető különbség van a C és a C++ programozási nyelvek szintaxisában. A programozó szempontjából ezek a különbségek könnyítik a programozó
ISA szimulátor objektum-orientált modell (C++)
Budapesti Műszaki és Gazdaságtudományi Egyetem ISA szimulátor objektum-orientált modell (C++) Horváth Péter Elektronikus Eszközök Tanszéke 2015. február 12. Horváth Péter ISA szimulátor objektum-orientált
2011.11.29. JUnit. JUnit használata. IDE támogatás. Parancssori használat. Teszt készítése. Teszt készítése
Tartalom Integrált fejlesztés Java platformon JUnit JUnit használata Tesztelési technikák Demo 2 A specifikáció alapján teszteljük a program egyes részeit, klasszikus V-modell szerint Minden olyan metódust,
Egyszerű RISC CPU tervezése
IC és MEMS tervezés laboratórium BMEVIEEM314 Budapesti Műszaki és Gazdaságtudományi Egyetem Egyszerű RISC CPU tervezése Nagy Gergely Elektronikus Eszközök Tanszéke (BME) 2013. február 14. Nagy Gergely
Digitális Technika. Dr. Oniga István Debreceni Egyetem, Informatikai Kar
Digitális Technika Dr. Oniga István Debreceni Egyetem, Informatikai Kar 3. Laboratóriumi gyakorlat A gyakorlat célja: Négy változós AND, OR, XOR és NOR függvények realizálása Szimulátor használata ciklussal
Programozás alapjai II. (1. ea) C++
Programozás alapjai II. (1. ea) C++ C++ kialakulása, nem OO újdonságok: Szeberényi Imre, Somogyi Péter BME IIT M Ű E G Y E T E M 1 7 8 2 C++ programozási nyelv BME-IIT Sz.I. 2019.02.05.
Programozás alapjai II. (1. ea) C++
Programozás alapjai II. (1. ea) C++ C++ kialakulása, nem OO újdonságok: Szeberényi Imre, Somogyi Péter BME IIT M Ű E G Y E T E M 1 7 8 2 C++ programozási nyelv BME-IIT Sz.I. 2019.02.05.
Számítógépek felépítése, alapfogalmak
2. előadás Számítógépek felépítése, alapfogalmak Lovas Szilárd, Krankovits Melinda SZE MTK MSZT kmelinda@sze.hu B607 szoba Nem reprezentatív felmérés kinek van ilyen számítógépe? 2 Nem reprezentatív felmérés
Hardver leíró nyelvek (HDL)
Hardver leíró nyelvek (HDL) Benesóczky Zoltán 2004 A jegyzetet a szerzıi jog védi. Azt a BME hallgatói használhatják, nyomtathatják tanulás céljából. Minden egyéb felhasználáshoz a szerzı belegyezése szükséges.
PROGRAMOZÁS tantárgy. Gregorics Tibor egyetemi docens ELTE Informatikai Kar
PROGRAMOZÁS tantárgy Gregorics Tibor egyetemi docens ELTE Informatikai Kar Követelmények A,C,E szakirány B szakirány Előfeltétel Prog. alapismeret Prog. alapismeret Diszkrét matematika I. Óraszám 2 ea
Digitális technika VIMIAA hét
BUDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM VILLAMOSMÉRNÖKI ÉS INFORMATIKAI KAR MÉRÉSTECHNIKA ÉS INFORMÁCIÓS RENDSZEREK TANSZÉK Digitális technika VIMIAA02 14. hét Fehér Béla BME MIT Digitális technika
Az MSP430 mikrovezérlők digitális I/O programozása
10.2.1. Az MSP430 mikrovezérlők digitális I/O programozása Az MSP430 mikrovezérlők esetében minden kimeneti / bemeneti (I/O) vonal önállóan konfigurálható, az P1. és P2. csoportnak van megszakítás létrehozó
Egyszerű mikroprocesszor RTL modellek (VHDL)
Budapesti Műszaki és Gazdaságtudományi Egyetem Egyszerű mikroprocesszor RTL modellek (VHDL) Horváth Péter Elektronikus Eszközök Tanszéke 2014. augusztus 11. Horváth Péter Egyszerű mikroprocesszor RTL modellek
Programozás alapjai C nyelv 4. gyakorlat. Mit tudunk már? Feltételes operátor (?:) Típus fogalma char, int, float, double
Programozás alapjai C nyelv 4. gyakorlat Szeberényi Imre BME IIT Programozás alapjai I. (C nyelv, gyakorlat) BME-IIT Sz.I. 2005.10.10.. -1- Mit tudunk már? Típus fogalma char, int, float,
Laborgyakorlat Logikai áramkörök számítógéppel segített tervezése (CAD)
Laborgyakorlat Logikai áramkörök számítógéppel segített tervezése (CAD) Bevezetés A laborgyakorlatok alapvető célja a tárgy későbbi laborgyakorlataihoz szükséges ismeretek átadása, az azokban szereplő
3. Osztályok II. Programozás II
3. Osztályok II. Programozás II Bevezető feladat Írj egy Nevsor osztályt, amely legfeljebb adott mennyiségű nevet képes eltárolni. A maximálisan tárolható nevek számát a konstruktorban adjuk meg. Az osztályt
C programozási nyelv
C programozási nyelv Előfeldolgozó utasítások Dr Schuster György 2011 május 3 Dr Schuster György () C programozási nyelv Előfeldolgozó utasítások 2011 május 3 1 / 15 A fordítás menete Dr Schuster György
Digitális technika (VIMIAA01) Laboratórium 4
BUDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM VILLAMOSMÉRNÖKI ÉS INFORMATIKAI KAR MÉRÉSTECHNIKA ÉS INFORMÁCIÓS RENDSZEREK TANSZÉK Digitális technika (VIMIAA01) Laboratórium 4 Fehér Béla Raikovich Tamás,
8.3. AZ ASIC TESZTELÉSE
8.3. AZ ASIC ELÉSE Az eddigiekben a terv helyességének vizsgálatára szimulációkat javasoltunk. A VLSI eszközök (közöttük az ASIC) tesztelése egy sokrétűbb feladat. Az ASIC modellezése és a terv vizsgálata
Függvények. Programozás I. Hatwágner F. Miklós november 16. Széchenyi István Egyetem, Gy r
Programozás I. Széchenyi István Egyetem, Gy r 2014. november 16. Áttekintés kel kapcsolatos fogalmak deklaráció Több, kompatibilis változat is elképzelhet. Meg kell el znie a fv. hívását. Mindenképp rögzíti
Bevezetés a C++ programozásba
Bevezetés a C++ programozásba A program fogalma: A program nem más, mint számítógép által végrehajtható utasítások sorozata. A számítógépes programokat különféle programnyelveken írhatjuk. Ilyen nyelvek
Digitális technika (VIMIAA02) Laboratórium 2
BUDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM VILLAMOSMÉRNÖKI ÉS INFORMATIKAI KAR MÉRÉSTECHNIKA ÉS INFORMÁCIÓS RENDSZEREK TANSZÉK Digitális technika (VIMIAA02) Laboratórium 2 Fehér Béla Raikovich Tamás,
Algoritmizálás + kódolás C++ nyelven és Pascalban
Algoritmizálás + kódolás nyelven és ban Motiváció A Programozási alapismeretek tárgyban az algoritmizáláshoz struktogramot, a kódoláshoz nyelvet használunk, a Közismereti informatikában (a közoktatásban
A Memory Interface Generator (MIG) beállítása a Logsys Kintex-7 FPGA kártyához
A Memory Interface Generator (MIG) beállítása a Logsys Kintex-7 FPGA kártyához Ellenőrizzük a projektből importált adatokat. Ha rendben vannak, akkor kattintsunk a Next gombra. Válasszuk a Create Design
Digitális technika (VIMIAA02) Laboratórium 1
BUDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM VILLAMOSMÉRNÖKI ÉS INFORMATIKAI KAR MÉRÉSTECHNIKA ÉS INFORMÁCIÓS RENDSZEREK TANSZÉK Digitális technika (VIMIAA02) Laboratórium 1 Fehér Béla Raikovich Tamás,
0.1. Mi az a standard be- és kimenet?... 1. 0.2. A két mintafeladat leírása
KöMaL Technikai tanácsok az I- és S-jelű pontversenyhez A standard be- és kimenet kezelése Tartalomjegyzék 0.1. Mi az a standard be- és kimenet?............................. 1 0.2. A két mintafeladat leírása.................................
Digitális Technika. Dr. Oniga István Debreceni Egyetem, Informatikai Kar
Digitális Technika Dr. Oniga István Debreceni Egyetem, Informatikai Kar 2. Laboratóriumi gyakorlat gyakorlat célja: oolean algebra - sszociativitás tétel - Disztributivitás tétel - bszorpciós tétel - De
LOGSYS EGYSZERŰ ALKALMAZÁS KÉSZÍTÉSE A LOGSYS KINTEX-7 FPGA KÁRTYÁRA A XILINX VIVADO FEJLESZTŐI KÖRNYEZET HASZNÁLATÁVAL június 16. Verzió 1.
EGYSZERŰ ALKALMAZÁS KÉSZÍTÉSE A LOGSYS KINTEX-7 FPGA KÁRTYÁRA A XILINX VIVADO FEJLESZTŐI KÖRNYEZET HASZNÁLATÁVAL 2017. június 16. Verzió 1.0 http://logsys.mit.bme.hu A dokumentum célja egy egyszerű alkalmazás
Felvételi vizsga mintatételsor Informatika írásbeli vizsga
BABEȘ BOLYAI TUDOMÁNYEGYETEM MATEMATIKA ÉS INFORMATIKA KAR A. tételsor (30 pont) Felvételi vizsga mintatételsor Informatika írásbeli vizsga 1. (5p) Egy x biten tárolt egész adattípus (x szigorúan pozitív
Digitális technika (VIMIAA02) Laboratórium 1
BUDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM VILLAMOSMÉRNÖKI ÉS INFORMATIKAI KAR MÉRÉSTECHNIKA ÉS INFORMÁCIÓS RENDSZEREK TANSZÉK Digitális technika (VIMIAA02) Laboratórium 1 Fehér Béla Raikovich Tamás,
DIGITÁLIS TECHNIKA 7. Előadó: Dr. Oniga István
IGITÁLIS TECHNIKA 7 Előadó: r. Oniga István Szekvenciális (sorrendi) hálózatok Szekvenciális hálózatok fogalma Tárolók S tárolók JK tárolók T és típusú tárolók Számlálók Szinkron számlálók Aszinkron számlálók
Verilog HDL ismertető 2. hét : 1. hét dia
BUDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM VILLAMOSMÉRNÖKI ÉS INFORMATIKAI KAR MÉRÉSTECHNIKA ÉS INFORMÁCIÓS RENDSZEREK TANSZÉK Verilog HDL ismertető 2. hét : 1. hét + 15 25 dia Fehér Béla, Raikovich
A C programozási nyelv I. Bevezetés
A C programozási nyelv I. Bevezetés Miskolci Egyetem Általános Informatikai Tanszék A C programozási nyelv I. (bevezetés) CBEV1 / 1 A C nyelv története Dennis M. Ritchie AT&T Lab., 1972 rendszerprogramozás,
Rendszerszintű tervezés: SystemC I.
Rendszerszintű tervezés: SystemC I. Czirkos Zoltán BME EET 2016. február 24. Miről lesz szó? Magas szintű tervezés programozási nyelvek segítségével HDL leírás (Verilog / VHDL) is emlékeztet egy programra
Kombinációs áramkörök modelezése Laborgyakorlat. Dr. Oniga István
Kombinációs áramkörök modelezése Laborgyakorlat Dr. Oniga István Funkcionális kombinációs egységek A következő funkcionális egységek logikai felépítésével, és működésével foglalkozunk: kódolók, dekódolók,
7.hét: A sorrendi hálózatok elemei II.
7.hét: A sorrendi hálózatok elemei II. Tárolók Bevezetés Bevezetés Regiszterek Számlálók Memóriák Regiszter DEFINÍCIÓ Tárolóegységek összekapcsolásával, egyszerű bemeneti kombinációs hálózattal kiegészítve
C++ programok fordítása
C++, 1/ 33 C++ programok fordítása Pataki Norbert 2012. február 24. C++, 2/ 33 Információk Pataki Norbert, patakino@elte.hu http://patakino.web.elte.hu/levelezo Jegy: gyakorlat, Szűgyi Zalán C++, 3/ 33
Pénzügyi algoritmusok
Pénzügyi algoritmusok A C++ programozás alapjai Tömbök (3. rész) Konstansok Kivételkezelés Tömbök 3. Többdimenziós tömbök Többdimenziós tömbök int a; Többdimenziós tömbök int a[5]; Többdimenziós tömbök
Dr. Oniga István DIGITÁLIS TECHNIKA 9
r. Oniga István IGITÁLIS TEHNIKA 9 Regiszterek A regiszterek több bites tárolók hálózata S-R, J-K,, vagy kapuzott tárolókból készülnek Fontosabb alkalmazások: adatok tárolása és adatmozgatás Funkcióik:
Mit tudunk már? Programozás alapjai C nyelv 4. gyakorlat. Legnagyobb elem keresése. Feltételes operátor (?:) Legnagyobb elem keresése (3)
Programozás alapjai C nyelv 4. gyakorlat Szeberényi Imre BME IIT Mit tudunk már? Típus fogalma char, int, float, double változók deklarációja operátorok (aritmetikai, relációs, logikai,
Előadó: Nagy István (A65)
Programozható logikai áramkörök FPGA eszközök Előadó: Nagy István (A65) Ajánlott irodalom: Ajtonyi I.: Digitális rendszerek, Miskolci Egyetem, 2002. Ajtonyi I.: Vezérléstechnika II., Tankönyvkiadó, Budapest,
Architektúra, megszakítási rendszerek
Architektúra, megszakítási ek Mirıl lesz szó? Megszakítás fogalma Megszakítás folyamata Többszintű megszakítási ek Koschek Vilmos Példa: Intel Pentium vkoschek@vonalkodhu Koschek Vilmos Fogalom A számítógép
Programozási nyelvek JAVA EA+GY 1. gyakolat
Programozási nyelvek JAVA EA+GY 1. gyakolat EÖTVÖS LORÁND TUDOMÁNYEGYTEM INFORMATIKAI KAR PROGRAMOZÁSI NYELVEK ÉS FORDÍTÓPROGRAMOK TANSZÉK 2018/2019. tavaszi félév Tartalom 1 A Java alapjai 2 Java program
A C programozási nyelv I. Bevezetés
A C programozási nyelv I. Bevezetés Miskolci Egyetem Általános Informatikai Tanszék A C programozási nyelv I. (bevezetés) CBEV1 / 1 A C nyelv története Dennis M. Ritchie AT&T Lab., 1972 rendszerprogramozás,
Programozás II. 4. Dr. Iványi Péter
Programozás II. 4. Dr. Iványi Péter 1 inline függvények Bizonyos függvények annyira rövidek, hogy nem biztos hogy a fordító függvényhívást fordít, hanem inkább az adott sorba beilleszti a kódot. #include
Újrakonfigurálható eszközök
Újrakonfigurálható eszközök 8. Egy minimalista 8-bites mikrovezérlő tervezése 1 Felhasznált irodalom és segédanyagok Icarus Verilog Simulator: htttp:iverilog.icarus.com/ University of Washington Comttputer
Összeadás BCD számokkal
Összeadás BCD számokkal Ugyanúgy adjuk össze a BCD számokat is, mint a binárisakat, csak - fel kell ismernünk az érvénytelen tetrádokat és - ezeknél korrekciót kell végrehajtani. A, Az érvénytelen tetrádok
Számítógépek felépítése, alapfogalmak
2. előadás Számítógépek felépítése, alapfogalmak Lovas Szilárd SZE MTK MSZT lovas.szilard@sze.hu B607 szoba Nem reprezentatív felmérés kinek van ilyen számítógépe? Nem reprezentatív felmérés kinek van
LOGIKAI TERVEZÉS HARDVERLEÍRÓ NYELVEN. Előadó: Dr. Oniga István
LOGIKAI TERVEZÉS HARDVERLEÍRÓ NYELVEN Előadó: Dr. Oniga István Összeállította Dr. Oniga István A következő anyagok felhasználásával Digitális rendszerek tervezése FPGA áramkörökkel. Fehér Bela Szanto Peter,
A PROGAMOZÁS ALAPJAI 1. Függvény mint függvény paramétere. Függvény mint függvény paramétere. Függvény mint függvény paramétere
2012. április 10. A PROGAMOZÁS ALAPJAI 1 Vitéz András egyetemi adjunktus BME Híradástechnikai Tanszék vitez@hit.bme.hu Miről lesz ma szó? alaki szabályok használata - mintapélda használata - mintapélda
Mikroelektronikai tervezés
Budapesti Műszaki és Gazdaságtudományi Egyetem Elektronikus Eszközök Tanszéke Mikroelektronikai tervezés Tervezőrendszerek Egy kis történelem Hogyan is terveztek digitális IC-t pl. az 1970-es években?
Számítástechnika I. BMEKOKAA152 BMEKOKAA119 Infokommunikáció I. BMEKOKAA606. Dr. Bécsi Tamás 2. előadás
Számítástechnika I. BMEKOKAA152 BMEKOKAA119 Infokommunikáció I. BMEKOKAA606 Dr. Bécsi Tamás 2. előadás Console I/O bővebben Lásd mintaprogram 2015.09.21. Számítástechnika I. 2. Előadás 2 Számábrázolásról
Magas szintű optimalizálás
Magas szintű optimalizálás Soros kód párhuzamosítása Mennyi a várható teljesítmény növekedés? Erős skálázódás (Amdahl törvény) Mennyire lineáris a skálázódás a párhuzamosítás növelésével? S 1 P 1 P N GPGPU
Perifériák hozzáadása a rendszerhez
Perifériák hozzáadása a rendszerhez Intellectual Property (IP) katalógus: Az elérhető IP modulok listája Bal oldalon az IP Catalog fül Ingyenes IP modulok Fizetős IP modulok: korlátozások Időkorlátosan
Dinamikus csatolású függvénykönyvtár készítése és használata Plugin-szerű betöltés Egyszeű C++ osztályok készítése
FEJLETT PROGRAMOZÁSI NYELVEK, 2009 2. GYAKORLAT - Linux alatti C/C++ programozás Cél: Dinamikus csatolású függvénykönyvtár készítése és használata Plugin-szerű betöltés Egyszeű C++ osztályok készítése
Szekvenciális hálózatok és automaták
Szekvenciális hálózatok a kombinációs hálózatokból jöhetnek létre tárolási tulajdonságok hozzáadásával. A tárolás megvalósítása történhet a kapcsolás logikáját képező kombinációs hálózat kimeneteinek visszacsatolásával