| Home  | Casa  | Hardware  | Networking  | Programmazione  | Software  | Domanda  | Sistemi  |   
Programmazione  
  • C /C + + Programming

  • Computer Programming Languages

  • Delphi Programming

  • Java Programming

  • Programmazione Javascript

  • PHP /MySQL Programmazione

  • Perl Programming

  • Python Programming

  • rubino Programmazione

  • Nozioni di base di Visual Programming
  •  
    Conoscenza Informatica >> Programmazione >> C /C + + Programming >> Content
    Come modellare sistemi hardware in SystemC
    sistemi hardware sono solitamente modellati con linguaggi di descrizione hardware come Verilog . Tali lingue sono destinati ad aiutare i progettisti a scrivere codice che è molto vicino all'hardware generato in modo che la catena strumento per la progettazione di chip in grado di utilizzare il codice per generare l' hardware finale . Lo svantaggio di questo approccio è la flessibilità di programmazione limitata in queste lingue . SystemC è un insieme di librerie di classi costruite sul linguaggio di programmazione C + + , e la sua intenzione è quella di sistemi hardware del modello e, allo stesso tempo , utilizzare tutte le caratteristiche del linguaggio di C + + . Cose che ti serviranno
    compilatore C + + come g+ + Commercio sistema operativo
    Mostra Altre istruzioni
    Utilizzando SystemC
    1

    Scarica il pacchetto SystemC . SystemC può essere scaricato gratuitamente da Internet . Prima di scaricare , vi verrà richiesto di registrarsi con la comunità SystemC . Una volta che il processo di registrazione è completo, il pacchetto può essere scaricato dopo l'accesso al sito con il nome utente e la password specificati .
    2

    Estrarre il pacchetto compresso . Il pacchetto compresso avrà una estensione file " tgz " . Si supponga che il nome del pacchetto è " . Tgz " . Il pacchetto può essere spacchettato con i seguenti comandi :

    gunzip tgz

    tar - xvf tar
    3 < . . p > Passare alla directory scompattato con il comando "cd " . In questa directory , un file chiamato " INSTALL " può essere trovato. Questo file fornisce le linee guida passo -passo per l'installazione del pacchetto . Seguire la procedura e installare SystemC . Una volta SystemC è installato, sistemi hardware possono essere modellati in lingua . Il pacchetto ha disegni di esempio nella directory " esempi " .
    4

    Usa il seguente codice come esempio di sistemi hardware del modello. L'esempio è quello di un disegno di un sistema con due processi . Il primo processo riempie un buffer da un profondo ogni volta che è vuota . Il secondo processo libera e visualizza il valore del buffer . I due processi funzionano a differenti frequenze di clock . Il codice è spiegato di seguito : .

    Includere i file di intestazione necessari

    # include " systemc.h "

    # include

    # includere

    Class " mybuf " è ha due orologi di ingresso , clk1 e clk2 . Due metodi cioè , inserire e rimuovere sono definiti , in cui "inserire" viene richiamato al fronte positivo di CLK1 , e "Rimuovi ", viene richiamato al fronte positivo del " clk2 "
    classe

    mybuf : . Sc_module pubblico {

    pubblico :

    sc_in_clk CLK1 ;

    sc_in_clk clk2 ;

    std :: valori deque ;

    SC_HAS_PROCESS ( mybuf ) ;

    mybuf ( sc_module_name nome) : sc_module (nome) {

    initialize ();

    SC_METHOD ( inserto) ;

    sensibile < < clk1.pos ();

    SC_METHOD ( rimuovi) ;

    sensibile << clk2.pos (); }


    vuoto inserisci ( ) ;

    vuoto remove () ;

    vuoto initialize ();

    } ;

    le seguenti righe di codice implementano l' inserimento e la rimozione metodi , insieme a un metodo di inizializzazione

    vuoto mybuf :: initialize () {

    values.clear (); }


    vuoto mybuf . : : remove () {

    se ( values.size ( ) > 0 ) {

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

    values.pop_front (); }


    }

    vuoto mybuf :: insert ( ) {

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

    int r = rand ( ) % 100 ;

    values.push_back ( r) ;

    }

    }

    il seguente segmento di codice implementa un banco di prova per l'esempio . Gli orologi clk1 e clk2 sono guidati da questo banco di prova
    classe

    mybuf_tb : sc_module pubblica {

    pubblico : .

    Sc_out CLK1 ;
    < p > sc_out clk2 ;

    SC_HAS_PROCESS ( mybuf_tb ) ;

    mybuf_tb ( sc_module_name nome) : sc_module (nome) {

    SC_THREAD ( clock1 ) ; < br

    SC_THREAD > ( clock2 ) ;

    }

    vuoto clock1 ();

    vuoto clock2 ();

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

    while (true ) {

    CLK1 = 0;

    attesa ( 10 , SC_NS ) ;

    CLK1 = 1;

    attesa ( 10 , SC_NS ) ;

    }

    }

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

    clk2 = 0;

    attesa ( 20 , SC_NS ) ;

    clk2 = 1;

    attesa ( 20 , SC_NS ) ;

    }

    }

    Il seguente frammento di codice crea un'istanza del modulo di progettazione e il suo banco di prova . Poi si lega gli orologi in modo che il banco di prova fornisce i valori di clock per il modulo di disegno .

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

    sc_signal CLK1 ;

    sc_signal clk2 ;

    mybuf newbuf ( " buff " ) ;

    newbuf.clk1 ( CLK1 ) ;

    newbuf . clk2 ( clk2 ) ;

    mybuf_tb 1 ;

    }

    Previous :

    next :
      Articoli Correlati
    ·Come aggiungere due matrici Utilizzare i puntatori 
    ·Come scorrere di una riga in un DataGridView 
    ·Come accedere a una struttura di C da Fortran 
    ·Come aggiungere una DLL in Visual C 
    ·Come trovare la dimensione di una matrice Char che ha u…
    ·Come creare una lista Vector 
    ·Come convertire una stringa in un INT C 
    ·Come scrivere un programma C per convertire esadecimale…
    ·Come saltare fuori di una funzione void in C + + 
    ·Come compilare il codice C con G+ + 
      Articoli in evidenza
    ·Come leggere un file in VBS 
    ·Come creare Porta In GtkRadiant 
    ·Come determinare la precisione numerica in FORTRAN 
    ·Come fare una installazione in VB.NET 
    ·Come creare un file JAR per la distribuzione in Eclipse…
    ·PowerShell di Windows 7 Tutorial 
    ·Come esecuzione di Eclipse in JDK 
    ·Come aggiungere righe in JTable 
    ·Come sostituire un backslash 
    ·Come inviare un fax con PHP 
    Copyright © Conoscenza Informatica http://it.wingwit.com