| maison  | Hardware  | réseaux  | programmation  | Logiciel  | Dépannage  | systèmes |  
programmation  
  • C /C + + Programming

  • Computer Programming Languages

  • Delphi Programming

  • Programmation Java

  • Programmation JavaScript

  • PHP /MySQL Programmation

  • programmation Perl

  • Programmation Python

  • Ruby Programming

  • Visual Basics programmation
  •  
    Connaissances Informatiques >> programmation >> C /C + + Programming >> Content
    Comment modéliser des systèmes matériels en SystemC
    installations matérielles sont généralement modélisées par des langages de description de matériel tels que Verilog . Ces langues sont destinés à aider les concepteurs à écrire du code qui est très proche du matériel généré de sorte que la chaîne d'outils pour la conception de la puce peut utiliser le code pour générer le matériel final. L'inconvénient de cette approche est la flexibilité limitée de la programmation dans ces langues. SystemC est un ensemble de bibliothèques de classes de construction de langage C + + de programmation , et son but est de systèmes matériels modèle et dans le même temps , l'utilisation de toutes les fonctionnalités du langage de C + + . Choses que vous devez
    compilateur C + + comme g+ +
    système d'exploitation
    Afficher plus Instructions
    utilisant SystemC
    1

    Télécharger le package SystemC . SystemC peut être téléchargé gratuitement à partir d'Internet . Avant de télécharger , vous serez invité à s'inscrire auprès de la communauté SystemC . Une fois le processus d'enregistrement est terminé , le package peut être téléchargé après s'être identifié sur le site avec le nom d'utilisateur et mot de passe spécifié.
    2

    Décompressez le package compressé . Le paquet compressé aura une extension de fichier appelé " tgz " . Supposons que le nom du package est " . Tgz " . Le package peut être déballé avec les commandes suivantes:

    gunzip tgz

    tar - xvf goudron
    3 < . . p> Allez dans le répertoire décompressé en utilisant la commande "cd " . Dans ce répertoire , un fichier nommé "Installer" peut être trouvée. Ce fichier fournit des directives étape par étape pour l'installation du package. Suivez les étapes et installer SystemC . Une fois SystemC est installé, les systèmes matériels peuvent être modélisés dans la langue . Le paquet a des plans d'échantillonnage dans le répertoire " exemples" .
    4

    Utilisez le code suivant comme exemple de systèmes matériels de modèle. L'exemple est celui d'une conception d'un système à deux processus . Le premier processus répond à un tampon de profondeur une fois qu'il est vide . Le second procédé efface et affiche la valeur de la mémoire tampon. Les deux procédés fonctionnent à des fréquences d'horloge différentes . Le code est expliqué ci-après : .

    Inclure les fichiers d'en-tête nécessaires

    # include " systemc.h "

    # include

    # inclure
    Classées " mybuf " est a deux horloges d'entrée, Clk1 et clk2 . Deux méthodes à savoir , insérer et à retirer sont définis , où « insert » est invoquée au bord positif de clk1 , et « remove » est invoquée au bord positif de " clk2 "
    classe

    mybuf : . Sc_module publique { Photos

    publique :

    sc_in_clk clk1 ;

    sc_in_clk clk2 ;

    std :: deque valeurs ;

    SC_HAS_PROCESS ( mybuf ) ;

    mybuf ( sc_module_name nom) : sc_module (nom) {

    initialize ();

    SC_METHOD (insert) ;

    sensible < < clk1.pos ();

    SC_METHOD ( supprimer) ;

    sensible << clk2.pos (); }



    vide insert () ;

    vide remove () ;

    void initialize (); }

    ;

    les lignes de code suivantes implémentent l' insertion et le retrait méthodes , avec une méthode d'initialisation

    vide mybuf :: initialize () {

    values.clear (); }


    vide mybuf . : : remove () {

    if ( values.size () > 0) {

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

    values.pop_front (); }


    }

    vide mybuf :: insert () {

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

    int r = rand ()% 100;

    values.push_back (r) ;

    } }



    le segment de code suivant implémente un banc d'essai pour l'exemple. Les horloges Clk1 et clk2 sont chassés de ce banc d'essai
    classe

    mybuf_tb : de sc_module publique {

    publique : .

    Sc_out clk1 ;
    < p> sc_out clk2 ;

    SC_HAS_PROCESS ( mybuf_tb ) ;

    mybuf_tb ( sc_module_name nom) : sc_module (nom) {

    SC_THREAD ( clock1 ) ; < br >

    SC_THREAD ( clock2 ) ;


    }

    vide clock1 ();

    vide clock2 (); }

    ;
    < p> vide mybuf_tb :: clock1 () {

    while ( true) {

    clk1 = 0;

    attente (10, SC_NS ) ;

    clk1 = 1;

    attente (10, SC_NS ) ;

    } }


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

    clk2 = 0;

    attente (20, SC_NS ) ;

    clk2 = 1;

    attente (20, SC_NS ) ;

    } }


    le segment de code suivant instancie le module de conception et de son banc d'essai . Ensuite, il lie les horloges de sorte que le banc d'essai fournit les valeurs d'horloge au module de conception .

    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;

    }

    Previous :

    next :
      articles connexes
    ·Comment supprimer un index dans un tableau dynamique d'…
    ·Comment convertir Int Char 
    ·Comment faire pour convertir un flotteur à une chaîne…
    ·Comment utiliser LINQ to XML 
    ·Comment faire pour convertir DataView Dans un TreeView 
    ·Comment calculer le nombre de lignes dans un fichier en…
    ·Comment compiler un C + + avec CMD & CL 
    ·Comment faire pour créer une instruction switch en C 
    ·Comment comparer les 2 entiers dans une fonction en C +…
    ·Comment créer une copie instantanée d'une liste chaî…
      articles en vedette
    ·Comment faire pour convertir une image en binaire et bi…
    ·Comment accéder aux colonnes DataSet 
    ·A PHP Inviter un ami Tutoriel 
    ·Comment utiliser une chaîne comme une variable en Pyth…
    ·Forms dans Visual Basic dans le projet du système scol…
    ·Inconvénients PERT 
    ·Comment désinstaller Gems 
    ·VB6 Run Time Error 70 : Permission Denied 
    ·Comment: iReport pour NetBeans 
    ·Comment copier un fichier dans PowerShell 
    Copyright © Connaissances Informatiques http://fr.wingwit.com