Vitajte na [www.pocitac.win] Pripojiť k domovskej stránke Obľúbené stránky

Domáce Hardware Siete Programovanie Softvér Otázka Systémy

Ako Model hardvérových systémov v SystemC

sú Hardvérové ​​systémy zvyčajne modelované s jazykmi pre popis hardware, ako Verilog . Tieto jazyky majú pomôcť návrhárom písať kód , ktorý je veľmi blízko vygenerované hardware tak , aby nástroj reťaz pre čipov môžete použiť kód na vygenerovanie finálnej hardware . Nevýhodou tohto prístupu je obmedzená flexibilita programovania v týchto jazykoch . SystemC je sada knižníc tried postavených na C + + programovací jazyk , a jeho zámerom je , aby modelovanie hardvérových systémov a súčasne , používať všetky funkcie jazyka C + + . Veci , ktoré budete potrebovať
C + + kompilátor , ako g+ +
Operačný systém
Zobraziť ďalšie inštrukcie for S SystemC
1

Stiahnuť balíček SystemC . SystemC možné voľne stiahnuť z internetu . Pred stiahnutím , budete vyzvaní k registrácii s SystemC komunity . Akonáhle je registračný proces je kompletný , balíček možno stiahnuť po prihlásení na webové stránky so zadaným užívateľským menom a heslom .
2

Rozbaľte komprimovaný balíček . Komprimovaný súbor bude mať príponu súboru s názvom " tgz " . Predpokladajme , že názov súboru je " . Tgz " . Balíček , možno ho rozbaliť pomocou nasledujúcich príkazov :

gunzip tgz

tar - XVF decht
3 < .. p > Prejdite do rozbaleného adresára pomocou " cd " príkaz . V tomto adresári súbor s názvom " INŠTALÁCIA " možno nájsť. Tento súbor obsahuje pokyny krok - za - krokom pre inštaláciu balíčka . Postupujte podľa pokynov a nainštalujte SystemC . Po inštalácii SystemC , hardvérové ​​systémy môžu byť modelované v jazyku . Balíček má ukážkovej vzory v " príkladoch " adresára .
4

použite nasledujúci kód ako napríklad modelovať hardvérové ​​systémy . Príkladom je , že z návrhu systému s dvoma procesmi . Prvý proces vyplní jeden hlboký vyrovnávacej pamäti vždy , keď je prázdna . Druhý proces sa vymaže a zobrazí hodnotu vyrovnávacej pamäti . Obidva procesy pracujú na rôznych frekvenciách hodiny . Kód je vysvetlené ďalej :

Zahrnúť potrebné hlavičkové súbory

# include " systemc.h "

# include

# . patrí klipart

triedy " mybuf " je má dva vstupné hodiny , CLK1 a clk2 . Dve metódy a to , vložiť a odstrániť je definovaná , kde " vložiť " je vyvolaná pri pozitívnom okraji CLK1 , a " odstrániť " je vyvolaná pri pozitívnom okraji " CLK2 "

trieda mybuf : . Verejné sc_module {

verejnosť :

sc_in_clk clk1 ;

sc_in_clk clk2 , Spojené

std :: deque hodnoty ;

SC_HAS_PROCESS ( mybuf ) ;

mybuf ( meno sc_module_name ) : sc_module ( meno ) {

inicializácia ( ) ;

SC_METHOD ( vložka ) ;

citlivá < < clk1.pos ( ) ;

SC_METHOD ( odstrániť ) , Spojené

citlivé << clk2.pos ( ) ;

}

void insert ( ) ;

void remove ( ) ;

void initialize ( ) ;

} ;

Nasledujúce riadky kódu implementovať vkladanie a vyberanie metódy , spolu s metódou inicializačný

void mybuf :: inicializácia ( ) {

values.clear ( ) ;

}

neplatné mybuf . : : odstráňte ( ) {

if ( values.size ( ) > 0 ) {

std :: cout << sc_time_stamp ( ) << " " << values.front ( ) << endl ;

values.pop_front ( ) ;

}

}

void mybuf :: insert ( ) {

if ( values.size ( ) == 0 ) {

int r = rand ( ) % 100 ;

values.push_back ( r) ;

}

}

Nasledujúci úsek kódu implementuje skúšobnej lavice pre príklad . Hodiny clk1 a clk2 sú poháňané z tejto skúšobni klipart

triedy mybuf_tb : public sc_module {

verejnosti : .

Sc_out clk1 ;

sc_out clk2 ;

SC_HAS_PROCESS ( mybuf_tb ) ;

mybuf_tb ( meno sc_module_name ) : sc_module ( meno ) {

SC_THREAD ( CLOCK1 ) ;

SC_THREAD ( clock2 ) ;

}

void CLOCK1 ( ) ;

void clock2 ( ) ;

} ;

void mybuf_tb :: CLOCK1 ( ) {

while ( true ) {

clk1 = 0 ;

čakať ( 10 , SC_NS ) ;

clk1 = 1 ;

čakať ( 10 , SC_NS ) ;

}

}

void mybuf_tb :: clock2 ( ) {

while ( true ) {

clk2 = 0 ;

čakať ( 20 , SC_NS ) ;

clk2 = 1 ;

čakať ( 20 , SC_NS ) ;

}

}

Nasledujúci úsek kódu inštanciu návrhu modulu a jeho skúšobnej lavice . Potom sa viaže na hodiny tak , aby skúšobné lavica poskytuje hodnoty , hodiny na navrhovanie module .

Int sc_main ( int argc , char * argv [ ] ) {

sc_signal clk1 ;

sc_signal clk2 ;

mybuf newbuf ( " mybuffer " ) ;

newbuf.clk1 ( clk1 ) ;

newbuf . clk2 ( clk2 ) ;

mybuf_tb 1 ;

}

Najnovšie články

Copyright © počítačové znalosti Všetky práva vyhradené