Bevezetés A SystemC célja A SystemC alapjai SystemC típusok Modulok Rendszerek Csatornák. Budapesti Műszaki és Gazdaságtudományi Egyetem
|
|
- Jakab Halász
- 5 évvel ezelőtt
- Látták:
Átírás
1 Budapesti Műszaki és Gazdaságtudományi Egyetem SystemC áttekintés Dr. Czirkos Zoltán, Horváth Péter Elektronikus Eszközök Tanszéke augusztus 18. Dr. Czirkos Zoltán, Horváth Péter SystemC áttekintés 1 / 54
2 Miről lesz szó? 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 Ne kelljen kézzel előállítani HDL kódot, legyen elég egy ismert programozási nyelven elkészíteni a rendszer leírását Miért programozási nyelv segítségével? Nem kell még eldönteni, mi lesz hardverben, mi lesz szoftverben Együtt tervezhető a hardver és a szoftver Mi a hardvertervezés részre koncentrálunk SystemC C++ osztályok gyűjteménye, amelyekkel lehetőségünk van C++ fejlesztői környezetben a hardvert is reprezentálni Ún. compiled code szimuláció is és hardverszintézis is lehetséges Nyílt megoldás Dr. Czirkos Zoltán, Horváth Péter SystemC áttekintés 2 / 54
3 Hardver-szoftver együttes tervezés Hardver-szoftver együttes tervezés ESL: Electronic System Level design HSCD: Hardware-Software Co-Design Lényeg: elsődleges szempontnak tekintjük, hogy az adott rendszert minél magasabb absztrakciós szinten írjuk le. Az ESL szemlélet a rendszerszintű terveknél egyre elterjedtebb. A világ vezető system-on-a-chip (SoC) tervező cégei irányelvüknek tekintik. A hardver-szoftver együttes tervezés céljai: magas absztrakciós szint, könnyebben átlátható terv legyen, hibákat gyorsabban meg lehessen találni, optimalizálni lehessen a hardver/szoftver particionálást, csökkenjen a piacra kerülés átfutási ideje, és hogy csökkenjenek a fejlesztési költségek. SystemC a HSCD jellegzetes eszköze Dr. Czirkos Zoltán, Horváth Péter SystemC áttekintés 3 / 54
4 A SystemC A SystemC I. A SystemC nyelv egy C++ könyvtár és metódus gyűjtemény, ami igen hatékonyan használható szoftveres algoritmusok készítésére, hardver architektúrák modellezésére, valamint SoC és rendszer szintű modellek interfészének megvalósítására. A SystemC és a hagyományos C++ fejlesztői környezet használatával rendszer szintű modellek írhatók le, ezek azután gyorsan szimulálhatók és optimalizálhatók. A rendszert leíró modell egy C++ program, ami futtatva ugyanazt a viselkedést produkálja, amit maga a rendszer Dr. Czirkos Zoltán, Horváth Péter SystemC áttekintés 4 / 54
5 A SystemC A SystemC II. A SystemC olyan osztályokat tartalmaz, amelyekkel a megszokott nyelv és feljesztő eszközök használatával képesek leszünk hardver leírására A SystemC olyan hardverhez közeli modellezési lehetőségeket biztosít, mint a párhuzamosság, időzítések, késleltetések, hardverközeli kommunikációs csatornák (pl. portok), hardver-megvalósításokban használt adattípusok, melyek a C++-ban nincsenek meg, hiszen az egy szekvenciális programozási nyelv, amely szoftverfejlesztéshez való. Dr. Czirkos Zoltán, Horváth Péter SystemC áttekintés 5 / 54
6 A SystemC célja A SystemC célja Rendszerszintű modellek fejlesztése magas absztrakciós szint a működés vizsgálata szimulációval Magasszintű hardverleírásból szintézis szintetizálható kódot kell írni bizonyos nyelvi elemeket pl. pointereket kerülni kell kimenet: Verilog vagy VHDL leírás, ami egy target technológiára valóban szintetizálható Szimulációhoz: SystemC library és egy C++ fordító kell Szintézis: szabad hozzáférésű programokkal megoldható. Pl. SystemC könyvtár CvSDL Waveform Viewer SystemCrafter SC v Xilinx ISE WebPack 8.2i Dr. Czirkos Zoltán, Horváth Péter SystemC áttekintés 6 / 54
7 A SystemC célja SystemC alapú szintézis és szimuláció Dr. Czirkos Zoltán, Horváth Péter SystemC áttekintés 7 / 54
8 A SystemC komponensei A SystemC komponensei Modul egy container, ami más modulokat és process-eket foglalhat magában (C++ osztály) Process folyamat egy adott funkcionalitás leírására szolgál Signal jel támogatott a 2 (0,1) és 4 (0,1,X,Z) értékű logika is Port jelek csatlakozó pontja Adattípusok sokféle típus, különféle szempontok szerint használhatók. Vigyázat szintetizálhatóság! Órajel az idő modellezésére szolgáló spec. jel Szimulációs kernel lehetővé teszi a gyors (compiled kódú) szimulációt Jelalak-figyelés VCD (Value Change Dump), WIF (Waveform Intermediate Format) és ISDB (Integrated Signal Data Base) formátumú jelalak fájlok támogatása Dr. Czirkos Zoltán, Horváth Péter SystemC áttekintés 8 / 54
9 Az idő modellezése Az idő modellezése A SystemC könyvtár egyik legfontosabb komponense a már említett időmodellezés. Ezt a nyelv 64-bites előjel nélküli egész számokkal írja le. Ez a programozó számára az sc_time típus mögé van bújtatva. Ilyen módon történő implementálása miatt az idő nem írható le folytonos, analóg módon, csak diszkrét értékekkel. Ennek következtében van egy legkisebb ábrázolható időkvantum, amit időfelbontásnak nevezünk. Ez a nyelv használója által beállítható. Default egység: ps ps = 213 nap. :) Dr. Czirkos Zoltán, Horváth Péter SystemC áttekintés 9 / 54
10 Hardver adattípusok Hardver adattípusok A hardver modellezés céljára a SystemC-ben hasonló adattípusok léteznek, mint a Verilog-ban, pl. sc_logic, sc_lv. Pl. DSP jellegű hardverekhez, számítási algoritmusok implementálására szolgáló típusok a sc_fixed és az sc_int Mivel a SystemC a C++-on alapul, értelemszerűen minden C++ adattípus használható, ha nem szükséges valamit SystemC típussal reprezentálni. Fontos szempontok az adattípusokkal kapcsolatban: Bizonyos adattípusok használata nem teszi lehetővé a hardverszintézist. Minden olyan modulban, amit esetleg hardverként szeretnénk megvalósítani, az ilyen típusokat kerülni kell. A SystemC adattípusok sok memóriát igényelnek, és jelentősen lassíthatják a szimulációt. Dr. Czirkos Zoltán, Horváth Péter SystemC áttekintés 10 / 54
11 Modulok és metódusok Modulok és metódusok A modulok egy SystemC terv alapvető építőkövei, hasonlóan a C++ osztályokhoz. Egy modul egy másik modulban példányosítható (pl. több flipflop egy számlálóban) Minden alacsonyabb szintű modul példányosítható magasabb szintű modulokban Az SC_METHOD és az SC_THREAD típusú függvények jelentik a modellezés alapját a SystemC-ben. SC_METHOD nem kerül időbe a végrehajtásuk SC_THREAD egy eseményre várnak (pl. órajel pozitív éle), aztán egy adott ideig futnak Dr. Czirkos Zoltán, Horváth Péter SystemC áttekintés 11 / 54
12 Hello world Hello world SystemC-ben modulok szintaxisa # include " systemc.h" SC_MODULE ( hello_world ) { SC_CTOR ( hello_world ) { void say_hello () { cout << " Hello World.\ n"; ; int sc_main ( int argc, char * argv []) { hello_world hello (" hello "); hello. say_hello (); return 0; Dr. Czirkos Zoltán, Horváth Péter SystemC áttekintés 12 / 54
13 Inverter és testbench Második példa: inverter I. a modul Az inverter nevű modulnak egy-egy 1 bites bemene és kimenete van. A működést leíró függvény a bement jelszintjének bármely irányú változására lefut. # include " systemc.h" SC_MODULE ( inverter ) { sc_in <bool > be; sc_out <bool > ki; void inverterproc (); SC_CTOR ( inverter ) { SC_METHOD ( inverterproc ); sensitive << be; ; # include " inverter.h" void inverter :: inverterproc () { ki. write (! be. read ()); A működés egyszerű: beolvassuk a bemenetet (read), invertáljuk (felkiáltójel operátor) és kiírjuk a kimenetre (write). Dr. Czirkos Zoltán, Horváth Péter SystemC áttekintés 13 / 54
14 Inverter és testbench Második példa: inverter II. a testbench # include " inverter.h" int sc_main ( int argc, char * argv []) { sc_signal <bool > BE, KI; inverter i1 (" i1 "); i1.be(be ); i1.ki(ki ); sc_start (1, SC_NS ); sc_trace_file * tf = sc_create_vcd_trace_file (" out "); sc_trace (tf, BE, "BE "); sc_trace (tf, KI, "KI "); BE =0; sc_start (2, SC_NS ); BE =1; sc_start (2, SC_NS ); BE =0; sc_start (2, SC_NS ); BE =1; sc_start (2, SC_NS ); BE =0; sc_start (2, SC_NS ); sc_close_vcd_trace_file ( tf ); return 0; Dr. Czirkos Zoltán, Horváth Péter SystemC áttekintés 14 / 54
15 Inverter és testbench Második példa: inverter III. magyarázatok Az inverter i1("i1"); sorban történik a példányosítás, az i1.be(be); pedig azt jelenti, hogy az i1 néven példányosított inverter be nevű portjához kötjük a fent deklarált BE jelet. Az sc_start(1, SC_NS) lépteti 1 ns-mal a szimulációs kernelt (szimulációs órát). A jelalakfigyeléshez létrehozunk egy out.vcd nevű fájlt, amelyre a kód további részében tf néven fogunk hivatkozni. Az ezt követő két sor mondja meg, hogy mely fájlba melyik jel változásait jegyezze fel a SystemC, és milyen néven jelenítse meg azt. Amint az látható, az inverter bemeneti portjához kötött jelnek értéket adunk, majd léptjük a szimulációt 2 egységgel, stb. A végén lezárjuk a jelalakot tartalmazó fájlt. Dr. Czirkos Zoltán, Horváth Péter SystemC áttekintés 15 / 54
16 Számláló Harmadik példa: számláló SC_MODULE( f i r s t _ c o u n t e r ) { s c _ i n _ c l k c l o c k ; sc_in <bool > r e s e t ; sc_in <bool > e n a b l e ; sc_out<sc_ uint <4> > counter_ out ; sc_ uint <4> count ; SC_CTOR( f i r s t _ c o u n t e r ) { SC_METHOD( incr_ count ) ; s e n s i t i v e << c l o c k. pos ( ) ; v o i d i n c r _ c o u n t ( ) { i f ( r e s e t. r e a d ( ) == 1) { count = 0 ; c o u n t e r _ o u t. w r i t e ( count ) ; e l s e i f ( e n a b l e. r e a d ( ) == 1) { count = count + 1 ; c o u n t e r _ o u t. w r i t e ( count ) ; cout <<"@"<< sc_time_stamp()<< " : : I n c r e m e n t e d Counter " <<c o u n t e r _ o u t. r e a d ()<< e n d l ; ; Dr. Czirkos Zoltán, Horváth Péter SystemC áttekintés 16 / 54
17 Órajelgenerátor Negyedik példa: órajelgenerátor SC_MODULE ( ClockGen ) { sc_out_clk clock_out ; void clockgen () { while ( true ) { clock_out = true ; wait (500, SC_US ); clock_out = false ; wait (500, SC_US ); ; SC_CTOR ( ClockGen ) { SC_THREAD ( clockgen ); Ez nem szintetizálható, tesztelésre (testbench-be) viszont kitűnő. Dr. Czirkos Zoltán, Horváth Péter SystemC áttekintés 17 / 54
18 Típusok Típusok áttekintés A SystemC sok, a hardvermodellezést lehetővé tevő típust támogat. Törtek ábrázolása: fix pontos formátumban A C++ minden típusa hozzáférhető Típusok használatánál szempontok: szintetizálhatóság absztrakciós szint szimulációs sebesség Dr. Czirkos Zoltán, Horváth Péter SystemC áttekintés 18 / 54
19 Bit típus Bit típus régi SystemC-ben sc_bit a bit típus, két értéket vehet fel 0 -át and 1 -et. Akkor célszerű használni, amikor se nagy impedanciás (Z), se ismeretlen állapotot (X) nem kell modellezni. Bitenkénti műveletek: operátor leírás használat & és expr1 & expr2 vagy expr1 expr2 ^ kizáró vagy expr1 ^ expr2 ~ tagadás ~expr &= és értékadás &= expr = vagy értékadás = expr ^= kizáró vagy értékadás ^= expr == egyenlő-e expr1 == expr2!= nem egyenlő-e expr1!= expr2 Új SystemC-ben egyszerűen bool-t használunk helyette. Dr. Czirkos Zoltán, Horváth Péter SystemC áttekintés 19 / 54
20 Bit típus Bit típus példa # include <systemc.h> int sc_main ( int argc, char * argv []) { sc_bit enable ; sc_bit read_en ; enable = 1 ; cout <<" enable : " << enable << endl ; read_en = enable ; cout <<" read_en : " << read_en << endl ; return 0; Dr. Czirkos Zoltán, Horváth Péter SystemC áttekintés 20 / 54
21 Logikai típus Logikai típus Az sc_bit csak két értékű (0,1), buszok nem modellezhetőek vele. sc_logic típus: tényleges hardverben előforduló jel állapotok (értékek): 0, 1, X és Z. 0 : hamis 1 : igaz X or x : ismeretlen, definiálatlan Z or z : nagy impedanciás (high-z), lebegő csomópont értéke Ugyanazok a bitműveletek értelmezettek. Dr. Czirkos Zoltán, Horváth Péter SystemC áttekintés 21 / 54
22 Logikai típus Logikai típus igazságtáblák ÉS 0 1 X Z X X X 0 X X X Z 0 X X X VAGY 0 1 X Z X X X X 1 X X Z X 1 X X NEM 0 1 X Z 1 0 X X Dr. Czirkos Zoltán, Horváth Péter SystemC áttekintés 22 / 54
23 Logikai típus Logikai típus példa # include <systemc.h> int sc_main ( int argc, char * argv []) { sc_logic pad ; sc_logic enable ; sc_logic read_en ; pad = z ; cout <<" pad : " << pad << endl ; enable = 0 ; cout <<" enable : " << enable << endl ; read_en = ~ enable ; cout <<" read_en : " << read_en << endl ;... Dr. Czirkos Zoltán, Horváth Péter SystemC áttekintés 23 / 54
24 Bit vektor Bit vektor sc_bv<m>: több bitből álló vektor. A méretet kacsacsőrök között, egész számmal kell megadni (sablon paraméter). 0 a jobb szélső, legalsó helyiértékű index, M-1 a legnagyobb helyiértékű. Bitenkénti műveletek mellett a továbbiak: operátor leírás használat [] bit kiválasztás vektor[index] (,) összefűzés (expr1,expr2,expr3).range() rész kiválasztása vektor.range(i1,i2).and_reduce() bitek és-elése vektor.and_reduce().or_reduce() bitek vagy-olása vektor.or_reduce().xor_reduce() bitek kizáró vagy-olása vektor.xor_reduce() Kisebb vektor értékadásakor a felső helyiértékű bitek 0-k lesznek, nagyobbnál eldobja a felsőket. Dr. Czirkos Zoltán, Horváth Péter SystemC áttekintés 24 / 54
25 Bit vektor Bit vektor példa # include <systemc.h> int sc_main ( int argc, char * argv []) { sc_bv <8> data_bus ; sc_bv <16> addr_bus ; sc_bit parity ; data_bus = " "; cout <<" data_bus : " << data_bus << endl ; addr_bus. range (7,0) = data_bus ; cout <<" addr_bus : " << addr_bus << endl ; addr_bus. range (0,7) = data_bus ;... Dr. Czirkos Zoltán, Horváth Péter SystemC áttekintés 25 / 54
26 Logikai vektor Logikai vektor sc_lv<m>: mint a bit vektor, csak 4 értékű logikával. Ezzel lehet jól pl. buszokat modellezni. Aritmetikai műveleteket nem lehet végezni! Azokat az sc_int és sc_uint típusokon kell. #i n c l u d e <systemc. h> i n t sc_main ( i n t argc, c h a r a r g v [ ] ) { sc_lv <8> data_bus ( s c _ l o g i c ( z ) ) ; sc_ lv <16> addr_bus ; s c _ l o g i c p a r i t y ; cout <<"data_bus : " << data_bus << e n d l ; data_bus = " " ; cout <<"data_bus : " << data_bus << e n d l ; addr_bus. r a n g e ( 7, 0 ) = data_bus ; cout <<"addr_bus : " << addr_bus << e n d l ; Dr. Czirkos Zoltán, Horváth Péter SystemC áttekintés 26 / 54
27 Aritmetikai típusok Aritmetikai típusok sc_int<m> és sc_uint<m>: max. 64 bites előjeles és előjel nélküli egész szám. sc_bigint<m> és sc_biguint<m>: nagyobb (általában max. 512 bites) számok. Használhatóak rajtuk az aritmetikai műveletek: +, *, /,... Használható a bitkiválasztás [] és az összefűzés (,) is. #i n c l u d e <systemc. h> i n t sc_main ( i n t argc, c h a r a r g v [ ] ) { s c _ i n t <4> n i b b l e _ s i z e = 1 ; s c _ i n t <8> b y t e _ s i z e = 2 ; s c _ i n t <32> dword_size = 3 ; dword_ size++; cout <<"dword_ size : " << dword_ size << e n d l ; b y t e _ s i z e += n i b b l e _ s i z e ; Dr. Czirkos Zoltán, Horváth Péter SystemC áttekintés 27 / 54
28 Moduldefiníció Moduldefiníció SC_MODULE makróval: SC_MODULE ( modul_n év) {... ; SC_CTOR ( modul_n év) {... A modul tulajdonképpen egy C++ osztály, amelyet a konstruktor beregisztrál a SystemC szimulációs kernel számára. Dr. Czirkos Zoltán, Horváth Péter SystemC áttekintés 28 / 54
29 Portok Portok modulok és külvilág SC_MODULE( f i r s t _ c o u n t e r ) { s c _ i n _ c l k c l o c k ; sc_in <bool > r e s e t ; sc_in <bool > e n a b l e ; sc_out<s c _ u i n t <4> > out ;... ; sc_in<típ> bemeneti port sc_out<típ> kimeneti port sc_inout<típ> ki/be port Portokhoz hozzáférés: read() és write() függvényekkel (mert be van csomagolva egy sc_in<>-be vagy sc_out<>-ba). i f ( r e s e t. r e a d ( ) == 1) { count = 0 ; out. w r i t e ( count ) ; e l s e i f ( e n a b l e. r e a d ( ) == 1) { count = count + 1 ; out. w r i t e ( count ) ; Dr. Czirkos Zoltán, Horváth Péter SystemC áttekintés 29 / 54
30 Portok Portok tömbje SC_MODULE ( ports_arrays ) { sc_in <sc_uint <2> > a [4]; sc_in <sc_uint <2> > b [4]; sc_out <sc_uint <3> > o [4]; void body () { for ( int i=0; i <4; i++) o[i]. write (a[i]. read () + b[i]. read ()); SC_CTOR ( ports_arrays ) { SC_METHOD ( body ); for ( int j=0; j <4; j++) sensitive << a[j] << b[j]; ; Dr. Czirkos Zoltán, Horváth Péter SystemC áttekintés 30 / 54
31 Belső változók Modul belső változói Tetszőleges SystemC, C++ vagy felhasználó által definiált belső változó létrehozható. SC_MODULE ( first_counter ) { sc_in_clk clock ; sc_in <bool > reset ; sc_in <bool > enable ; sc_out <sc_uint <4> > out ; sc_uint <4> count ;... first_counter clock out enable reset 4 Ezek szintaktikailag tagváltozóként jelennek meg. Ha szintetizálni szeretnénk, akkor vigyázni kell a típusokkal! Dr. Czirkos Zoltán, Horváth Péter SystemC áttekintés 31 / 54
32 Folyamatok Folyamatok (process) A folyamatok valósítják meg a tényleges tevékenységeket. Mint Verilogban egy always blokk Lehet szintre érzékeny (kombinációs logika) és élre érzékeny (szekvenciális hálózatok) SC_MODULE ( dff ) { sc_in <bool > din ; sc_in <bool > clk ; sc_out <bool > out ; void implement (); SC_CTOR ( dff ) { SC_METHOD ( implement ); sensitive << clk. pos (); ; A folyamatokat a konstruktorban regisztráljuk. Dr. Czirkos Zoltán, Horváth Péter SystemC áttekintés 32 / 54
33 Folyamatok Folyamatok típusai A SystemC-ben 3-féle process van: metódusok (methods) Triggerelő eseményre indulnak. Az eseményeket az ún. érzékenységi listán adjuk meg (sensitive, sensitive_pos) Futás után visszatérés a hívóhoz szálak (threads) Indítás után futnak, pl. amíg egy esemény be nem következik Felfüggeszthetők és újraindíthatóak (az utolsó felfüggesztés helyétől) órajelre indított szálak (clocked threads) Egy ilyen process számára az indító órajelet is definiálni kell (csak 1 bites trigger portja lehet egy ilyen process-nek) Dr. Czirkos Zoltán, Horváth Péter SystemC áttekintés 33 / 54
34 Folyamatok Method SC_MODULE ( first_counter ) { sc_in_clk clock ; sc_in <bool > reset ; sc_in <bool > enable ; sc_out <sc_uint <4> > counter_out ; sc_uint <4> count ; SC_CTOR ( first_counter ) { SC_METHOD ( incr_count ); sensitive << reset ; sensitive << clock. pos (); SC_METHOD ( print_count ); sensitive << counter_out ; void incr_count () { if ( reset. read () == 1) { count = 0; counter_out. write ( count ); else if ( enable. read () == 1) { count = count + 1; counter_out. write ( count ); void print_count () { cout << sc_time_stamp () << " :: Counter Value " << counter_out. read () << endl ; ; Dr. Czirkos Zoltán, Horváth Péter SystemC áttekintés 34 / 54
35 Folyamatok Folyamatok dont_initialize() A folyamatok a konstruktorból indítva egyből lefutnak. Ennek elkerülése: SC_CTOR ( tff_sync_reset ) { SC_METHOD ( tff ); dont_initialize (); sensitive << clk. pos (); Ez SC_METHOD folyamatoknál lehet fontos, hiszen az SC_THREAD-ek elejére/végére könnyű rakni egy wait()-et. Dr. Czirkos Zoltán, Horváth Péter SystemC áttekintés 35 / 54
36 Folyamatok Thread SC_MODULE ( first_counter ) { sc_in_clk clock ; sc_in <bool > reset ; sc_in <bool > enable ; sc_out <sc_uint <4> > counter_out ; sc_uint <4> count ; SC_CTOR ( first_counter ) { SC_THREAD ( incr_count ); sensitive << clock. pos (); SC_THREAD ( print_count ); sensitive << counter_out ; void incr_count () { while ( true ) { wait (); if ( reset. read () == 1) { count = 0; counter_out. write ( count ); else if ( enable. read () == 1) { count = count + 1; counter_out. write ( count );... ; Örökké futnak alszanak triggerek között. Dr. Czirkos Zoltán, Horváth Péter SystemC áttekintés 36 / 54
37 Folyamatok Clocked thread SC_MODULE ( first_counter ) { sc_in_clk clock ; sc_in <bool > reset ; sc_in <bool > enable ; sc_out <sc_uint <4> > counter_out ; sc_uint <4> count ; SC_CTOR ( first_counter ) { SC_CTHREAD ( incr_count, clock. pos ()); SC_THREAD ( print_count ); sensitive << counter_out ; void incr_count () { while ( true ) { wait (); if ( reset. read () == 1) { count = 0; counter_out. write ( count ); else if ( enable. read () == 1) { count = count + 1; counter_out. write ( count );... ; A triggerelő csak egy bites jel lehet. Dr. Czirkos Zoltán, Horváth Péter SystemC áttekintés 37 / 54
38 Folyamatok Folyamatok wait_until() Egy SC_CTHREAD() típusú folyamatban adott feltétel teljesüléséig lehet várni a wait_until() hívással. void incr_count () { while ( true ) { wait_until ( reset. delayed () == true enable. delayed () == true ); if ( reset. read () == 1) { count = 0; counter_out. write ( count ); else if ( enable. read () == 1) { count = count + 1; counter_out. write ( count ); Fontos a.delayed() hiszen különben kiértékelődne az aktuális állapot (C++!), és a wait_until() nem látná a változást! Dr. Czirkos Zoltán, Horváth Péter SystemC áttekintés 38 / 54
39 Példányosítás Modul példányosítása Modul és szignálok: first_counter counter1 (" counter1 "); sc_signal <bool > clocksig, resetsig, enablesig ; sc_signal <sc_uint <4> > outsig ; first_counter clocksig enablesig resetsig clock enable reset out 4 outsig counter1 Dr. Czirkos Zoltán, Horváth Péter SystemC áttekintés 39 / 54
40 Csatlakoztatás Portok csatlakoztatása Minden portot csatlakoztatni (bind) kell. Lehet név szerint: c o u n t e r 1. e n a b l e ( e n a b l e s i g ) ; c o u n t e r 1. r e s e t ( r e s e t s i g ) ; c o u n t e r 1. c l o c k ( c l o c k s i g ) ; c o u n t e r 1. out ( o u t s i g ) ; Vagy pozíció (modulbeli deklaráció sorrendje) szerint: c o u n t e r 1 ( c l o c k s i g, r e s e t s i g, e n a b l e s i g, o u t s i g ) ; first_counter clocksig enablesig resetsig clock enable reset out 4 outsig counter1 Dr. Czirkos Zoltán, Horváth Péter SystemC áttekintés 40 / 54
41 Órajel Órajel objektumok sc_clock osztályból hozható létre: sc_clock cg (" clockgen ", 10, SC_NS, 0.5, 1, SC_NS, true ); clockgen nevű, 10 ns periódusidejű, 50% kitöltési tényezőjű, 1 ns időegységnél, magas (true) szinttel induló. 50% H L 1 10 Dr. Czirkos Zoltán, Horváth Péter SystemC áttekintés 41 / 54
42 Komplex példa Komplex példa: háromszöggenerátor TESTBENCH sc_clock ora_be SDDAHaromszog jel_ki sddaki cg Haromszog SDDA ora_be ora_be jel_ki haromszog_ki szazalek_be hsz1 sdda11 sddahsz sc_main() Dr. Czirkos Zoltán, Horváth Péter SystemC áttekintés 42 / 54
43 Komplex példa SDDAHaromszog modul SC_MODULE ( SDDAHaromszog ) { sc_in_clk ora_be ; sc_out <bool > jel_ki ; SDDA sdda1 ; Haromszog hsz1 ; sc_signal <sc_uint <7> > jel ; SC_CTOR ( SDDAHaromszog ) : sdda1 (" sdda1 "), hsz1 (" hsz1 ") { hsz1. ora_be ( ora_be ); sdda1. ora_be ( ora_be ); hsz1. haromszog_ki ( jel ); sdda1. szazalek_be ( jel ); ; sdda1. jel_ki ( jel_ki ); Dr. Czirkos Zoltán, Horváth Péter SystemC áttekintés 43 / 54
44 Komplex példa Háromszög generátor modul SC_MODULE ( Haromszog ) { // portok sc_in_clk ora_be ; sc_out <sc_uint <7> > haromszog_ki ; bool fel ; int var ; sc_uint <7> mertek ; SC_CTOR ( Haromszog ) { SC_THREAD ( haromszoggen ); sensitive << ora_be. pos (); void haromszoggen () { while ( true ) { var =( var +1)%100; if ( var ==0) { // adott iranyba lép mertek = mertek +( fel?+1: -1); haromszog_ki. write ( mertek ); // irány megfordul? if ( mertek <1) fel = true ; if ( mertek >99) fel = false ; wait (); ; Dr. Czirkos Zoltán, Horváth Péter SystemC áttekintés 44 / 54
45 Komplex példa TestBench: sc_main() törzse sc_set_time_resolution (1, SC_NS ); SDDAHaromszog sddahsz (" sddahsz "); sc_clock cg (" cg", 500, SC_NS, 0.5, 10, SC_NS, true ); sc_signal <bool > sddaki ; sddahsz. ora_be (cg ); sddahsz. jel_ki ( sddaki ); sc_trace_file * tf = sc_create_vcd_trace_file (" sdda "); sc_trace (tf, cg, " orajel "); sc_trace (tf, sddahsz. hsz1. haromszog_ki, " haromszog_ki "); sc_trace (tf, sddaki, " sddaki "); sc_start (100, SC_MS ); sc_close_vcd_trace_file ( tf ); Dr. Czirkos Zoltán, Horváth Péter SystemC áttekintés 45 / 54
46 Buszok Buszok modellezése I. TriState kimenetek esetén fel kell oldani a portok kimeneteit: 0 1 Z X 0 0 X 0 X 1 X 1 1 X Z 0 1 Z X X X X X X Erre valók az sc_in_rv, sc_out_rv és sc_inout_rv (resolved) típusú portok: SC_MODULE ( module_a ) { sc_in_rv <1> in; sc_out_rv <1 > out ; sc_inout_rv <4 > inout ;... ; Dr. Czirkos Zoltán, Horváth Péter SystemC áttekintés 46 / 54
47 Buszok Buszok modellezése II. A _rv típusú portok ilyen szignálokra köthetők: SC_MODULE ( resolve ) { sc_in_rv <1> in; sc_out_rv <1 > out ; sc_inout_rv <4 > inout ;... ; int sc_main ( int argc, char * argv []) { sc_signal_rv <1 > in1 ; sc_signal_rv <1 > out ; sc_signal_rv <4 > inout ; resolve rs1 (" RESOLVE1 "); rs1 (in1, out, inout );... Dr. Czirkos Zoltán, Horváth Péter SystemC áttekintés 47 / 54
48 Fogalmak, létrehozás Csatornák: fogalmak Termelő (Producer) Csatorna (channel) Fogyasztó (Consumer) FIFO írás / olvasás interfész (r/w interface) Kommunikáció absztrakciója A csatlakozás interfészeken (interface) keresztül valósul meg Események (events) zajlanak le Dr. Czirkos Zoltán, Horváth Péter SystemC áttekintés 48 / 54
49 Fogalmak, létrehozás Csatornák: deklaráció struct write_if : public sc_interface { virtual void write ( char ) = 0; virtual void reset () = 0; ; struct read_if : public sc_interface { virtual void read ( char &) = 0; virtual int num_available () = 0; ; Létrehozzuk az írás és az olvasás interfészét. Tisztán virtuális függvényként megadjuk a műveleteket. Dr. Czirkos Zoltán, Horváth Péter SystemC áttekintés 49 / 54
50 FIFO példa Csatornák: FIFO implementáció class fifo : public sc_channel, public write_if, public read_if { private : enum { max_elements =10; char data [ max_elements ]; int num_elements, first ; sc_event write_event, read_event ; bool fifo_empty () {...; bool fifo_full () {...; public : fifo () : num_elements (0), first (0) { ; void write ( char c) { if ( fifo_full ()) wait ( read_event ); data [...] = c; ++ num_elements ; write_event. notify (); void read ( char &c) { if ( fifo_empty ()) wait ( write_event ); c = data [ first ]; -- num_elements ; first =...; read_event. notify ();... Dr. Czirkos Zoltán, Horváth Péter SystemC áttekintés 50 / 54
51 FIFO példa Csatornák: tudnivalók A csatornák: Az sc_channel osztályból kell öröklődjenek És további osztályokból, amelyek az sc_interface-t megvalósítják Meg kell valósítaniuk az összes tisztán virtuális függvényt A wait() hívások: wait(sc_event) eseményig wait(time) wait(time_out, sc_event) Események a szinkronizációhoz: Bekövetkezés jelzése:.notify() Felébred hatásukra a folyamat a wait()-ből a másik oldalon Dr. Czirkos Zoltán, Horváth Péter SystemC áttekintés 51 / 54
52 Termelő, fogyasztó Csatornák: termelő-fogyasztó példa SC_MODULE ( termelo ) { public : sc_port <write_if > out ; ; SC_CTOR ( termelo ) { SC_THREAD ( main ); void main () { char c; while ( true ) { out. write (c); if (...) out. reset (); SC_MODULE ( fogyaszto ) { public : sc_port <read_if > in; ; SC_CTOR ( fogyaszto ) { SC_THREAD ( main ); void main () { char c; while ( true ) { in. read (c); cout << in. num_available (); Dr. Czirkos Zoltán, Horváth Péter SystemC áttekintés 52 / 54
53 Termelő, fogyasztó Csatornák: összekapcsolás Termelő FIFO Fogyasztó SC_MODULE ( top ) { public : fifo fi; termelo term ; fogyaszto fogy ; ; SC_CTOR ( top ) { term. out ( fi ); fogy. in( fi ); Dr. Czirkos Zoltán, Horváth Péter SystemC áttekintés 53 / 54
54 Előnyök Csatornák: előnyök Interfészek: Előnyök: Termelőben: sc_port<write_if> out; írható Fogyasztóban: sc_port<read_if> in; olvasható Egyik sem tudja, hogyan működik a csatorna A kommunikáció módja rejtve van a modulok elől A kommunikáció módját és a funkcionalitást elválasztjuk Kipróbálhatók különféle csatornák! Szoftveres FIFO, okos sorba állítással Hardveres FIFO A csatorna további modulokat tartalmaz... Dr. Czirkos Zoltán, Horváth Péter SystemC áttekintés 54 / 54
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
RészletesebbenVII. Tesztkörnyezet felépítése
VII. Tesztkörnyezet felépítése 1 VII.1. Szimuláció folyamatát vezérlő eszközök SystemC-ben sc_start sc_stop sc_time_stamp sc_simulation_time sc_clock sc_trace sc_cycle és az sc_initialize sc_time 2 sc_start
RészletesebbenIV. A SystemC alapelemei
IV. A SystemC alapelemei Ennek a bevezető előadásnak a célja, hogy röviden és mindenekelőtt érthetően bemutassa a SystemC alkalmazását elektronikai eszközök tervezésére. Részletesen ismertetésre kerül
RészletesebbenMIKROELEKTRONIKA, VIEEA306
Budapesti Műszaki és Gazdaságtudományi Egyetem MIKROELEKTRONIKA, VIEEA306 Tervezés FPGA-ra, Verilog, SystemC http://www.eet.bme.hu/~poppe/miel/hu/18-ictervezes3.ppt http://www.eet.bme.hu Tervezés FPGA-ra
RészletesebbenIII. 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ő
RészletesebbenHardver modellezés SystemC-vel és SDL grafikus könyvtárral Visual Stúdió alatt
BME Hardver modellezés SystemC-vel és SDL grafikus könyvtárral Visual Stúdió alatt Visual Studio, SystemC, SDL Tóth Gergely Endre 2013.03.18. 1 Bevezetés Ebben a dokumentumban leírom, hogy hogyan lehet
RészletesebbenA SystemC programok adattípusai
A SystemC programok adattípusai A negyedik fejezetben bemutatott félösszeadó áramköri példában semmilyen SystemC típus sem szerepelt. Viszont összetettebb áramköri feladatok esetén elengedhetetlen a különböző
RészletesebbenLaborgyakorlat 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
Részletesebben5. 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
RészletesebbenBudapesti 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
RészletesebbenHardver 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.
RészletesebbenMintavé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
RészletesebbenOccam 1. Készítette: Szabó Éva
Occam 1. Készítette: Szabó Éva Párhuzamos programozás Egyes folyamatok (processzek) párhuzamosan futnak. Több processzor -> tényleges párhuzamosság Egy processzor -> Időosztásos szimuláció Folyamatok közötti
Részletesebben8.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
RészletesebbenC++ programozási nyelv Konstruktorok-destruktorok
C++ programozási nyelv Konstruktorok-destruktorok Nyugat-Magyarországi Egyetem Faipari Mérnöki Kar Informatikai Intézet Soós Sándor 2004. szeptember A C++ programozási nyelv Soós Sándor 1/20 Tartalomjegyzék
RészletesebbenProgramozá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
Részletesebbenés az instanceof operátor
Java VIII. Az interfacei és az instanceof operátor Krizsán Zoltán Miskolci Egyetem Általános Informatikai Tanszék Utolsó módosítás: 2005. 10. 24. Java VIII.: Interface JAVA8 / 1 Az interfészről általában
RészletesebbenISA 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
RészletesebbenJava VIII. Az interfacei. és az instanceof operátor. Az interfészről általában. Interfészek JAVA-ban. Krizsán Zoltán
Java VIII. Az interfacei és az instanceof operátor Krizsán Zoltán Miskolci Egyetem Általános Informatikai Tanszék Utolsó módosítás: 2005. 10. 24. Java VIII.: Interface JAVA8 / 1 Az interfészről általában
RészletesebbenProgramozá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
RészletesebbenOOP #14 (referencia-elv)
OOP #14 (referencia-elv) v1.0 2003.03.19. 21:22:00 Eszterházy Károly Főiskola Információtechnológia tsz. Hernyák Zoltán adj. e-mail: aroan@ektf.hu web: http://aries.ektf.hu/~aroan OOP OOP_14-1 - E jegyzet
RészletesebbenBánsághi Anna 2014 Bánsághi Anna 1 of 33
IMPERATÍV PROGRAMOZÁS Bánsághi Anna anna.bansaghi@mamikon.net 7. ELŐADÁS - ABSZTRAKT ADATTÍPUS 2014 Bánsághi Anna 1 of 33 TEMATIKA I. ALAPFOGALMAK, TUDOMÁNYTÖRTÉNET II. IMPERATÍV PROGRAMOZÁS Imperatív
RészletesebbenSysCVideo: fiktív grafikus kártya SystemC modulként, SDL alapú megjelenítéssel
SysCVideo: fiktív grafikus kártya SystemC modulként, SDL alapú megjelenítéssel Czirkos Zoltán 2015. augusztus 26. Kivonat Az ismertetett SystemC modul egy mikroprocesszoros rendszerhez illeszthető megjelenítő
RészletesebbenProgramozás. C++ osztályok. Fodor Attila. Pannon Egyetem Műszaki Informatikai Kar Villamosmérnöki és Információs Rendszerek Tanszék foa@almos.vein.
Programozás C++ osztályok Fodor Attila Pannon Egyetem Műszaki Informatikai Kar Villamosmérnöki és Információs Rendszerek Tanszék foa@almos.vein.hu 2010. április 8. Csak bázisosztályként használt/értelmezhető
RészletesebbenOOP. Alapelvek Elek Tibor
OOP Alapelvek Elek Tibor OOP szemlélet Az OOP szemlélete szerint: a valóságot objektumok halmazaként tekintjük. Ezen objektumok egymással kapcsolatban vannak és együttműködnek. Program készítés: Absztrakciós
RészletesebbenDigitális elektronika gyakorlat
FELADATOK 1. Felhasználva az XSA 50 FPGA lapon található 100MHz-es programozható oszcillátort, tervezzetek egy olyan VHDL modult, amely 1 Hz-es órajelet állít elő. A feladat megoldható az FPGA lap órajelének
RészletesebbenBevezetés a programozásba I 10. gyakorlat. C++: alprogramok deklarációja és paraméterátadása
Pázmány Péter Katolikus Egyetem Információs Technológiai Kar Bevezetés a programozásba I 10. gyakorlat C++: alprogramok deklarációja és paraméterátadása 2011.11.22. Giachetta Roberto groberto@inf.elte.hu
RészletesebbenDigitá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,
RészletesebbenDigitá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,
RészletesebbenJava II. I A Java programozási nyelv alapelemei
Java II. I A Java programozási nyelv alapelemei Miskolci Egyetem Általános Informatikai Tanszék Utolsó módosítás: 2008. 02. 19. Java II.: Alapelemek JAVA2 / 1 A Java formalizmusa A C, illetve az annak
RészletesebbenC++ programozási nyelv
C++ programozási nyelv Gyakorlat - 13. hét Nyugat-Magyarországi Egyetem Faipari Mérnöki Kar Informatikai Intézet Soós Sándor 2004. december A C++ programozási nyelv Soós Sándor 1/10 Tartalomjegyzék Objektumok
RészletesebbenProgramozá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
RészletesebbenProgramozá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,
RészletesebbenHelyes-e az alábbi kódrészlet? int i = 1; i = i * 3 + 1; int j; j = i + 1; Nem. Igen. Hányféleképpen lehet Javaban megjegyzést írni?
A "java Villa -v" parancs jelentése: A java interpreter elindítja a Villa osztály statikus main metódusát, és átadja neki paraméterként a "-v" stringet. A java interpreter elindítja először a Villa osztály
RészletesebbenElektronika, 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
RészletesebbenDigitá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,
RészletesebbenFelhasználó által definiált adattípus
Felhasználó által definiált adattípus C++ Izsó Tamás 2017. február 24. Izsó Tamás Felhasználó által definiált adattípus/ 1 Irodalom Izsó Tamás Felhasználó által definiált adattípus/ 2 Programtervezési
RészletesebbenÚ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:
RészletesebbenPénzügyi algoritmusok
Pénzügyi algoritmusok A C++ programozás alapjai Folyamok kezelése Fájlok írása/olvasása Folyamok kezelése Szabvány folyamok Eddig Kiírás a szöveges konzolra:
RészletesebbenProgramozási alapismeretek :: beadandó feladat. Felhasználói dokumentáció. Molnár Tamás MOTIABT.ELTE motiabt@inf.elte.
Programozási alapismeretek :: beadandó feladat Készítő adatai Név: Molnár Tamás EHA: MOTIABT.ELTE E-mail cím: motiabt@inf.elte.hu Gyakorlatvezető: Horváth László Feladat sorszáma: 23. Felhasználói dokumentáció
RészletesebbenSzövegek C++ -ban, a string osztály
Szövegek C++ -ban, a string osztály A string osztály a Szabványos C++ könyvtár (Standard Template Library) része és bár az objektum-orientált programozásról, az osztályokról, csak később esik szó, a string
RészletesebbenLaborgyakorlat 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) Multiplexer (MPX) A multiplexer egy olyan áramkör, amely több bemeneti adat közül a megcímzett bemeneti adatot továbbítja a kimenetére.
RészletesebbenPé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
RészletesebbenC# Szálkezelés. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) C# Szálkezelés 2013 1 / 21
C# Szálkezelés Tóth Zsolt Miskolci Egyetem 2013 Tóth Zsolt (Miskolci Egyetem) C# Szálkezelés 2013 1 / 21 Tartalomjegyzék 1 Bevezetés 2 Szálkezelés 3 Konkurens Programozás Tóth Zsolt (Miskolci Egyetem)
RészletesebbenA C# PROGRAMOZÁSI NYELV
A C# PROGRAMOZÁSI NYELV 2010.02.23. Bevezetés C# nyelv jellemzői 2 Kis és NAGY betű érzékeny Minden utasítást pontos vessző zár. Utasítás zárójel a:,. .NET Framework keretrendszerek 3 Microsoft.NET Framework
RészletesebbenProgramozás C++ -ban
Programozás C++ -ban 4. Bevezetés az osztályokba 4.1 Az adatokhoz való hozzáférés ellenőrzése Egy C programban a struktúrák minden része mindig elérhető. Ugyanakkor ez nem a legkedvezőbb helyzet. Több
RészletesebbenApple Swift kurzus 3. gyakorlat
Készítette: Jánki Zoltán Richárd Dátum: 2016.09.20. Apple Swift kurzus 3. gyakorlat Kollekciók: Tömb: - let array = [] - üres konstans tömb - var array = [] - üres változó tömb - var array = [String]()
RészletesebbenDigitá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
RészletesebbenProgramozás C++ -ban 2007/4
Programozás C++ -ban 2007/4 1. Az adatokhoz való hozzáférés ellenőrzése Egy C programban a struktúrák minden része mindig elérhető. Ugyanakkor ez nem a legkedvezőbb helyzet. Több szempontból is hasznos
RészletesebbenKombiná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,
RészletesebbenC++ programozási nyelv
C++ programozási nyelv Gyakorlat - 8. hét Nyugat-Magyarországi Egyetem Faipari Mérnöki Kar Informatikai Intézet Soós Sándor 2004. november A C++ programozási nyelv Soós Sándor 1/12 Tartalomjegyzék Miért
RészletesebbenProgramozás II. 3. gyakorlat Objektum Orientáltság C++-ban
Programozás II. 3. gyakorlat Objektum Orientáltság C++-ban Tartalom OOP ismétlés Osztályok létrehozása Adattagok láthatóságai, elnevezési ajánlások Konstruktor, destruktor this pointer Statikus és dinamikus
Részletesebben500. AA Megoldó Alfréd AA 500.
Programozás alapjai 2. NZH 2010.05.13. gyakorlat: / Hiány:0 ZH:0 MEGOLD IB.027/51. Hftest: 0 Minden beadandó megoldását a feladatlapra, a feladat után írja! A megoldások során feltételezheti, hogy minden
RészletesebbenÚ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
RészletesebbenPé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ó
RészletesebbenA C# programozási nyelv alapjai
A C# programozási nyelv alapjai Tisztán objektum-orientált Kis- és nagybetűket megkülönbözteti Ötvözi a C++, Delphi, Java programozási nyelvek pozitívumait.net futtatókörnyezet Visual Studio fejlesztőkörnyezet
Részletesebben.Net adatstruktúrák. Készítette: Major Péter
.Net adatstruktúrák Készítette: Major Péter Adatstruktúrák általában A.Net-ben számos nyelvvel ellentétben nem kell bajlódnunk a változó hosszúságú tömbök, listák, sorok stb. implementálásával, mert ezek
RészletesebbenBevezetés a programozásba II. 5. Előadás: Másoló konstruktor, túlterhelés, operátorok
Bevezetés a programozásba II 5. Előadás: Másoló konstruktor, túlterhelés, operátorok Emlékeztető struct Vektor { int meret, *mut; Vektor(int meret); int szamlal(int mit); }; int Vektor::szamlal(int mit)
RészletesebbenDigitá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,
RészletesebbenModellező eszközök, kódgenerálás
Modellező eszközök, kódgenerálás Budapesti Műszaki és Gazdaságtudományi Egyetem Hibatűrő Rendszerek Kutatócsoport Budapesti Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek
RészletesebbenMechatronika é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
RészletesebbenVerilog 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
RészletesebbenLabor gyakorlat Mikrovezérlők
Labor gyakorlat Mikrovezérlők ATMEL AVR ARDUINO 1. ELŐADÁS BUDAI TAMÁS 2015. 09. 06. Tartalom Labor 2 mikrovezérlők modul 2 alkalom 1 mikrovezérlők felépítése, elmélet 2 programozás, mintaprogramok Értékelés:
RészletesebbenProgramozás I. 3. gyakorlat. Szegedi Tudományegyetem Természettudományi és Informatikai Kar
Programozás I. 3. gyakorlat Szegedi Tudományegyetem Természettudományi és Informatikai Kar Antal Gábor 1 Primitív típusok Típus neve Érték Alap érték Foglalt tár Intervallum byte Előjeles egész 0 8 bit
RészletesebbenMár megismert fogalmak áttekintése
Interfészek szenasi.sandor@nik.bmf.hu PPT 2007/2008 tavasz http://nik.bmf.hu/ppt 1 Témakörök Polimorfizmus áttekintése Interfészek Interfészek kiterjesztése Eseménykezelési módszerek 2 Már megismert fogalmak
RészletesebbenA modell-ellenőrzés gyakorlata UPPAAL
A modell-ellenőrzés gyakorlata UPPAAL Uppsalai Egyetem + Aalborgi Egyetem közös fejlesztése; 1995. első verzió megjelenése; részei: - grafikus modellt leíró eszköz (System editor) - szimulátor (Simulator)
RészletesebbenPerifé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
RészletesebbenBevezeté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
RészletesebbenDigitá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,
RészletesebbenLOGIKAI 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,
RészletesebbenProgramozá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ő
RészletesebbenFejlett programozási nyelvek C++ Iterátorok
Fejlett programozási nyelvek C++ Iterátorok 10. előadás Antal Margit 2009 slide 1 Témakörök I. Bevezetés II. Iterátor definíció III. Iterátorok jellemzői IV. Iterátorkategóriák V. Iterátor adapterek slide
Részletesebben7. fejezet: Mutatók és tömbök
7. fejezet: Mutatók és tömbök Minden komolyabb programozási nyelvben vannak tömbök, amelyek gondos kezekben komoly fegyvert jelenthetnek. Először is tanuljunk meg tömböt deklarálni! //Tömbök használata
RészletesebbenTartalom Tervezési egység felépítése Utasítások csoportosítása Értékadás... 38
Bevezetés... 11 1. A VHDL mint rendszertervező eszköz... 13 1.1. A gépi tervezés... 13 1.2. A VHDL általános jellemzése... 14 1.3. Tervezési eljárás VHDL-lel... 15 2. A VHDL nyelv alapszabályai... 19 2.1.
RészletesebbenDigitá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,
RészletesebbenAz UPPAAL egyes modellezési lehetőségeinek összefoglalása. Majzik István BME Méréstechnika és Információs Rendszerek Tanszék
Az UPPAAL egyes modellezési lehetőségeinek összefoglalása Majzik István BME Méréstechnika és Információs Rendszerek Tanszék Résztvevők együttműködése (1) Automaták interakciói üzenetküldéssel Szinkron
RészletesebbenBevezetés a programozásba 2
Bevezetés a programozásba 2 7. Előadás: STL konténerek, sablonok http://digitus.itk.ppke.hu/~flugi/ Vector int int main() { vector v(10); int int sum=0; for for (int i=0;i
RészletesebbenA szemantikus elemzés helye. A szemantikus elemzés feladatai. A szemantikus elemzés feladatai. Deklarációk és láthatósági szabályok
A szemantikus elemzés helye Forrásprogram Forrás-kezelő (source handler) Lexikális elemző (scanner) A szemantikus elemzés feladatai Fordítóprogramok előadás (A, C, T szakirány) Szintaktikus elemző (parser)
RészletesebbenMé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
RészletesebbenStatikus adattagok. Statikus adattag inicializálása. Speciális adattagok és tagfüggvények. Általános Informatikai Tanszék
Speciális adattagok és tagfüek Miskolci Egyetem Általános Informatikai Tanszék CPP7 / 1 Statikus adattagok Bármely adattag lehet static tárolási osztályú A statikus adattag az osztály valamennyi objektuma
RészletesebbenVé V g é r g e r h e a h j a tá t s á i s s z s ál á ak a Runnable, Thread
Végrehajtási szálak Runnable, Thread Végrehajtási szálak Java-ban A Java program az operációs rendszer egy folyamatán (process) belül fut. A folyamat adat és kód szegmensekből áll, amelyek egy virtuális
Részletesebben1. Template (sablon) 1.1. Függvénysablon Függvénysablon példányosítás Osztálysablon
1. Template (sablon) 1.1. Függvénysablon Maximum függvény megvalósítása függvénynév túlterheléssel. i n l i n e f l o a t Max ( f l o a t a, f l o a t b ) { return a>b? a : b ; i n l i n e double Max (
RészletesebbenLabor gyakorlat Mikrovezérlők
Labor gyakorlat Mikrovezérlők ATMEL AVR ARDUINO 1. ELŐADÁS BUDAI TAMÁS Tartalom Labor 2 mikrovezérlők modul 2 alkalom 1 mikrovezérlők felépítése, elmélet 2 programozás, mintaprogramok Értékelés: a 2. alkalom
RészletesebbenWebprogramozás szakkör
Webprogramozás szakkör Előadás 5 (2012.04.09) Programozás alapok Eddig amit láttunk: Programozás lépései o Feladat leírása (specifikáció) o Algoritmizálás, tervezés (folyamatábra, pszeudokód) o Programozás
RészletesebbenLaborgyakorlat 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ő
RészletesebbenProgramozás C- és Matlab nyelven C programozás kurzus BMEKOKAM603 Függvények. Dr. Bécsi Tamás 6. Előadás
Programozás C- és Matlab nyelven C programozás kurzus BMEKOKAM603 Függvények Dr. Bécsi Tamás 6. Előadás Bevezetés Egy idő után az egyetlen main(){ függvénnyel megírt programunk túl nagy méretű lesz. Vannak
Részletesebben3. 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
Részletesebben6. hét: A sorrendi hálózatok elemei és tervezése
6. hét: A sorrendi hálózatok elemei és tervezése Sorrendi hálózat A Sorrendi hálózat Y Sorrendi hálózat A Sorrendi hálózat Y Belső állapot Sorrendi hálózat Primer változó A Sorrendi hálózat Y Szekunder
RészletesebbenOOP: Java 8.Gy: Abstract osztályok, interfészek
OOP: Java 8.Gy: Abstract osztályok, interfészek 26/1 B ITv: MAN 2019.04.03 Abszrakt metódus és absztrakt osztály. Gyakran előfordul a tervezés során, hogy egy osztály szintjén tudjuk, hogy valamilyen metódus
RészletesebbenSTL gyakorlat C++ Izsó Tamás május 9. Izsó Tamás STL gyakorlat/ 1
STL gyakorlat C++ Izsó Tamás 2016. május 9. Izsó Tamás STL gyakorlat/ 1 Komponensek kapcsolata Deklarálja az alábbi osztálydiagramon szereplő osztályok közül az A, AA és AB osztályokat! A konstruktorokat
Részletesebben128. AA Megoldó Alfréd AA 128.
Programozás alapjai 2. PótZH 2010.05.20. gyakorlat: Hiány:0 ZH: MEGOLD SEHOL/5. Hftest: 0 ZHp: Minden beadandó megoldását a feladatlapra, a feladat után írja! A megoldások során feltételezheti, hogy minden
RészletesebbenTartalomjegyzé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ó!
RészletesebbenProgramozás BMEKOKAA146. Dr. Bécsi Tamás 1. Előadás
Programozás BMEKOKAA146 Dr. Bécsi Tamás 1. Előadás Bemutatkozás Előadó: Dr. Bécsi Tamás St.106, (1)463-1044, becsi.tamas@mail.bme.hu Közlekedés-, és Járműirányítási Tanszék www.kjit.bme.hu Programozás
RészletesebbenA 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
RészletesebbenDigitá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
RészletesebbenDigitá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
RészletesebbenInformatika terméktervezőknek
Informatika terméktervezőknek C# alapok Névterület (namespace) using Osztály (class) és Obejtumok Metódus (function, procedure, method) main() static void string[] arg Szintaxis // /* */ \n \t Névadások
RészletesebbenS z á m í t ó g é p e s a l a p i s m e r e t e k
S z á m í t ó g é p e s a l a p i s m e r e t e k 7. előadás Ami eddig volt Számítógépek architektúrája Alapvető alkotóelemek Hardver elemek Szoftver Gépi kódtól az operációs rendszerig Unix alapok Ami
RészletesebbenBevezetés, a C++ osztályok. Pere László
Programozás módszertan II. p. Programozás módszertan II. Bevezetés, a C++ osztályok Pere László (pipas@linux.pte.hu) PÉCSI TUDOMÁNYEGYETEM TERMÉSZETTUDOMÁNYI KAR INFORMATIKA ÉS ÁLTALÁNOS TECHNIKA TANSZÉK
RészletesebbenLaborgyakorlat 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) Összeadó áramkör A legegyszerűbb összeadó két bitet ad össze, és az egy bites eredményt és az átvitelt adja ki a kimenetén, ez a
Részletesebben