Datamaskin
  | Hjem | Hardware | Nettverk | Programmering | Software | Feilsøking | Systems | 
Programmering  
  • C /C + + Programming
  • Computer Programmeringsspråk
  • Delphi Programming
  • Java Programming
  • JavaScript Programmering
  • PHP /MySQL programmering
  • Perl Programming
  • Python Programming
  • Ruby Programming
  • Visual Basics Programming
  •  
    Datamaskin >> Programmering >> C /C + + Programming >> Content
    Hvordan Model Hardware Systems i SystemC
    Hardware systemer er vanligvis modellert med maskinvare beskrivelse språk som Verilog . Slike språk er ment å hjelpe designere skrive kode som er svært nær den genererte hardware slik at verktøyet kjeden for chip design kan bruke koden til å generere den endelige maskinvaren . Ulempen med denne tilnærmingen er begrenset programmering fleksibilitet på disse språkene . SystemC er et sett av klasse biblioteker bygget på C + + programmeringsspråk, og dens hensikt er å modellere maskinvaresystemene og på samme tid, bruker alle de språklige funksjoner i C + + . Du trenger
    C + + kompilator som g+ + Online Operativsystem
    Vis mer Instruksjoner
    Bruke SystemC
    en

    Last ned SystemC pakken. SystemC kan fritt lastes ned fra Internett . Før du laster ned , vil du bli bedt om å registrere seg hos SystemC samfunnet. Når registreringen er fullført, kan pakken lastes ned etter å ha logget inn på nettstedet med det angitte brukernavnet og passordet.
    2

    Pakk ut komprimerte pakken. Den komprimerte pakken vil ha en filtype som heter " tgz " . Anta at navnet på pakken er " . Tgz " . Pakken kan pakkes ut med følgende kommandoer : en

    gunzip tgz

    tjære - xvf tjære
    3 < . . p> Endring av pakket katalogen ved hjelp av "cd "-kommandoen . I denne katalogen , kan en fil som heter " Install" bli funnet. Denne filen inneholder trinn-for- trinn retningslinjer for å installere pakken. Følg trinnene og installere SystemC . Når SystemC er installert, kan maskinvaresystemene være modellert i språket. Pakken har prøven design i " eksempler " katalogen.
    4

    Bruk følgende kode som eksempel å modellere maskinvare systemer. I eksempelet er det av en utforming av et system med to prosesser . Den første prosessen fyller en ett - dyp buffer når den er tom. Den andre prosessen tømmer den og viser verdien for bufferen. De to prosesser fungerer på ulike klokkefrekvenser . Koden er forklart nedenfor : .

    Inkluder de nødvendige header filer

    # include " systemc.h "

    # include

    # inkludere

    Class " mybuf " er har to input klokker, CLK1 og CLK2 . To metoder nemlig sette inn og fjerne defineres , der " sett inn" startes på positiv flanke av CLK1 , og " remove " startes på positiv flanke på " CLK2 "

    klasse mybuf : . Offentlig sc_module {

    offentlige : en

    sc_in_clk CLK1 ;

    sc_in_clk CLK2 ;

    std :: deque verdier,

    SC_HAS_PROCESS ( mybuf ) ;

    mybuf ( sc_module_name navn) : sc_module ( navn) {

    initialize ();

    SC_METHOD (innsats) ;

    sensitive < < clk1.pos ();

    SC_METHOD (fjern) ;

    sensitive << clk2.pos ();

    }

    ugyldig sett ();

    void fjerne ();

    void initialize ();

    };

    følgende linjer med kode gjennomføre innsetting og fjerning metoder , sammen med en initialisering metoden

    ugyldig mybuf :: initialisere ( ) {

    values.clear ();

    }

    ugyldig mybuf . : : fjerne ( ) {

    if ( values.size ( ) > 0 ) {

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

    values.pop_front ();

    }

    }

    ugyldig mybuf :: insert ( ) {

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

    int r = rand ( ) % 100;

    values.push_back ( r ) ;

    }

    }

    følgende kode segmentet implementerer en test - benk for eksempel. Klokkene CLK1 og CLK2 er drevet fra denne testen - benk

    klasse mybuf_tb : public sc_module {

    public: .

    Sc_out CLK1 ;
    < p> sc_out CLK2 ;

    SC_HAS_PROCESS ( mybuf_tb ) ;

    mybuf_tb ( sc_module_name navn) : sc_module ( navn) {

    SC_THREAD ( clock1 ) ;

    SC_THREAD ( clock2 ) ;

    }

    ugyldig clock1 ();

    ugyldig clock2 ();

    };
    < p> tomrommet mybuf_tb :: clock1 ( ) {

    while ( true) {

    CLK1 = 0;

    vente ( 10 , SC_NS ) ;

    CLK1 = 1;

    vente ( 10 , SC_NS ) ;

    }

    }

    ugyldig mybuf_tb :: clock2 ( ) {
    < p > while ( true) {

    CLK2 = 0;

    vente ( 20 , SC_NS ) ;

    CLK2 = 1;

    vente ( 20 , SC_NS ) ;

    }

    }

    følgende kode segmentet instantiates utformingen modulen og dens test - benk . Så det binder klokkene slik at test- benk gir klokken verdiene til design modulen .

    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 ;

    }

    früher :

     Weiter:
      Relatert Artike
    ·Hvordan sette standardverdien for WPF ComboBox 
    ·Hvordan endre en Blocking Socket til ikke-blokkerende 
    ·Hvordan få produktet på en Array i C + + 
    ·Hvordan lage DropDownList Med Key Søk i C 
    ·Hvordan lese en linje ved hjelp CPP 
    ·Hvordan redigere DataGrid Cell i Silverlight 
    ·Hvordan ta en streng fra en Input File og reversere den…
    ·Hvordan få en funksjon Prototype i DLL 
    ·Hvordan sjekke for en understreng Switch 
    ·Slik konverterer Radians til grader i C + + språk i tr…
      Anbefalte artikler
    ·Forklaring av Big O notasjon 
    ·Hvordan skrive et program som oversetter en bokstavkara…
    ·Slik installerer Core Java JDK 1.5.03 
    ·Visual Basic 5.0 Opplæring 
    ·Hvordan til å be om et svar i Java 
    ·Hvordan kan jeg installere Java til My HP datamaskin 
    ·Hvordan bruke cURL PHP side Innhold Strings 
    ·Hvordan skrive til CSV Med ColdFusion 
    ·Hvordan endre størrelsen på bilder i Visual Basic 
    ·Slik installerer mailet APK filer 
    Copyright ©  Datamaskin  http://www.datamaskin.biz/