Dator
 |  Startsida |  Hårdvara |  Nätverk |  Programmering |  Programvara |  Felsökning |  System |   
Programmering
  • C /C + + -programmering
  • Computer Programspråk
  • Delphi Programmering
  • Java Programming
  • JavaScript programmering
  • PHP /MySQL Programmering
  • perl Programmering
  • python Programming
  • Ruby programmering
  • Visual Basics Programmering
  • * Dator Kunskap >> Programmering >> C /C + + -programmering >> Content

    Hur förebild Hardware Systems i SystemC

    Hårdvara system brukar modelleras med hårdvarubeskrivande språk såsom Verilog . Sådana språk är avsedda att hjälpa konstruktörer att skriva kod som är mycket nära till den genererade hårdvaran så att verktyget kedjan för chip design kan använda koden för att generera den slutliga maskinvaran . Nackdelen med detta tillvägagångssätt är den begränsade programmering flexibilitet på dessa språk . SystemC är en uppsättning klassbibliotek som bygger på C + + -programmering språk , och dess avsikt är att modellsystem hårdvara och samtidigt , använda alla språkliga funktioner i C + + . Saker du behöver
    C + + kompilator som g+ + Review Operativsystem
    Visa fler instruktioner
    Använda SystemC
    1

    Ladda SystemC paketet . SystemC kan fritt laddas ner från Internet . Innan du laddar ner , kommer du att uppmanas att registrera sig med SystemC samhället . När registreringen är klar , kan paketet hämtas efter att logga in på hemsidan med det angivna användarnamnet och lösenordet . Den komprimerade paketet
    2

    Packa . Det komprimerade paketet kommer att ha en filändelse som heter " tgz " . Antag att namnet på paketet är " . Tgz " . Paketet kan packas upp med följande kommandon :

    gunzip TGZ

    tjära - xvf tjära
    3 < . . p > Byt till den uppackade katalogen genom att använda " cd " kommandot . I denna katalog kan en fil som heter " INSTALL " hittas . Den här filen innehåller steg - för-steg- anvisningar för installation av paketet . Följ stegen och installerar SystemC . När SystemC är installerat , kan hårdvara system modelleras i språket . Paketet har prov mönster i " exemplen " katalogen .
    4

    Använd följande kod som exempel på system modell hårdvara . Exemplet är det av en utformning av ett system med två processer . Den första processen fyller en en - djup buffert närhelst den är tom. Den andra processen rensar det och visar värdet av bufferten. De två processerna verkar på olika klockfrekvenser . Koden förklaras nedan : .

    Innefattar nödvändiga header -filer # include " systemc.h "

    # include

    # omfatta

    Class " mybuf " är har två ingångar klockor, cLK1 och clk2 . Två metoder nämligen , sätta in och ta definieras , där " insert " åberopas vid positiv flank på clk1 , och " ta bort " åberopas vid den positiva kanten av " clk2 "

    klass mybuf : . Offentliga sc_module {

    allmänheten :

    sc_in_clk clk1 ,

    sc_in_clk clk2 ,

    std :: deque värden ,

    SC_HAS_PROCESS ( mybuf ) ;

    mybuf ( sc_module_name namn ) : sc_module ( namn ) {

    initialize ( ) ;

    SC_METHOD ( insats ) ,

    känslig < < clk1.pos ();

    SC_METHOD (ta bort ),

    känslig << clk2.pos ();

    }

    void infoga ( ) ;

    void remove ( ) ;

    void initialize ( ) ;

    };

    följande kodrader genomföra insättning och uttag metoder , tillsammans med en initieringsmetoden

    void mybuf :: initialize ( ) {

    values.clear ( ) ;

    }

    void mybuf . : : ta bort ( ) {

    om ( values.size ( ) > 0 ) {

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

    values.pop_front ( ) ;

    }

    }

    void mybuf :: insert ( ) {

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

    int r = rand ( ) % 100 ;

    values.push_back ( R ) ;

    }

    }

    följande kod segmentet genomför ett test - bänk för exempel . Klockorna CLK1 och clk2 drivs från detta test - bänk

    klass mybuf_tb : offentlig sc_module {

    allmänheten : .

    Sc_out clk1 ;

    sc_out clk2 ,

    SC_HAS_PROCESS ( mybuf_tb ) ;

    mybuf_tb ( sc_module_name namn ) : sc_module ( namn ) {

    SC_THREAD ( clock1 ) ;

    SC_THREAD ( clock2 ) ;

    }

    void clock1 ();

    void clock2 ();

    };

    void mybuf_tb :: clock1 ( ) {

    while ( true ) {

    clk1 = 0 ;

    vänta ( 10 , SC_NS ) ;

    clk1 = 1 ;

    vänta ( 10 , SC_NS ) ;

    }

    }

    void mybuf_tb :: clock2 ( ) {

    while ( true ) {

    clk2 = 0 ;

    vänta ( 20 , SC_NS ) ;

    clk2 = 1 ;

    vänta ( 20 , SC_NS ) ;

    }

    }

    följande kod segmentet instansieras designen modulen och dess test - bänk . Då det binder klockorna så att testet - bänken ger klockan värdena till designmodulen .

    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 ;

    }

    Tidigare:

    nästa:
    relaterade artiklar
    ·Hur man skapar lucka I GtkRadiant
    ·Hur man använder Ströbröd i Masterpage
    ·Hur man skriver ut en triangel i C
    ·Mac OS Development Tools
    ·Hur man använder en kombinationsruta i MFC
    ·Hur du använder banners och dekaler i GTK Radiant
    ·Hur att rensa en mottagnings- socket i C
    ·Hur man skriver ut Enum Värden i C
    ·Hur man skriver en C + + -program i multiplikationstabe…
    ·Turbo C Definition & Process
    Utvalda artiklarna
    ·Hur att skicka en blankett till iFrame
    ·Hur Profil Perlprogram
    ·Hur att identifiera de typer av indata
    ·Hur man tar bort inte väljas listboxes i Silverlight W…
    ·Hur man Byta namn på en fil i Visual Studio C
    ·Hur man bygger ett affiliate system i ColdFusion
    ·Konvertera ett PHP String till Datum
    ·Hur man skapar ett MSChart Control för en XY Scatter i…
    ·Konvertera en ordlista till XML i Python
    ·Fylla ett Visual Basic Listbox med unika objekt från e…
    Copyright © Dator Kunskap http://www.dator.xyz