2017-04-21 2 views
0

Est-il possible d'instancier plusieurs modules à lire à partir du même FIFO en supposant qu'ils ne lisent pas en même temps, mais à tour de rôle?Modules multiples lisant le même FIFO

Par exemple:

int _tmain(int argc, _TCHAR* argv[]) 
{ 
    sc_fifo<int> PacketTx(24); 
    sc_fifo<int> PacketRx(20); 

    Transmit t1("Transmit"); 
    t1.PacketRx(PacketRx); 
    t1.PacketTx(PacketTx); 

    Receive r1("Receive1"); 
    r1.PacketTx(PacketRx); 
    r1.PacketRx(PacketTx); 

    Receive r2("Receive2"); 
    r2.PacketTx(PacketRx); 
    r2.PacketRx(PacketTx); 

    sc_start(); 

    return 0; 
} 

Répondre

0

Il est possible, mais vous devez ajouter des signaux de synchronisation au module de.

Pour un exemple de mise en œuvre plus proche de vos besoins est disponible sous code source SystemC à partir de la page de téléchargement Accellera SystemC.

Téléchargez le "de base SystemC langage et des exemples" fichier zip:

  • Décompressez le fichier. Naviguez dans le répertoire et recherchez le répertoire "exemples".

L'exemple suivant sont beaucoup plus proches de vos besoins:

  • exemples/SYSC/pkt_switch/
    Remarque: Cet exemple n'utilise pas des années sc_fifo mais utilise le sc_in/port de sortie de.
  • Exemples/sysc/simple_bus/
    Remarque: Cet exemple présente le cas d'utilisation pour modéliser le modèle de bus CPU. Cet exemple n'utilise pas actuellement le sc_fifo.

Mais vous pouvez obtenir de bien meilleures idées pour vos détails d'implémentation.