2017-04-21 78 views
0

是否有可能实例化多个模块以从同一个FIFO读取,假设它们不是在同一时间读取,而是轮流?多模块读取相同的fifo

例如:

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; 
} 

回答

0

这是可能的,但你需要同步信号添加到模块的。

欲了解更接近您需求的示例实现,请在SystemC源代码Accellera SystemC的下载页面下获取。

下载 “核心的SystemC语言和例子” zip文件:

  • 将文件解压缩。
  • 导航到该目录并查找“示例”目录。

下面的例子中更接近您的要求:

  • 例子/ SYSC/pkt_switch/
    注:这个例子不使用sc_fifo的,但利用sc_in /输出端口的。
  • 示例/ sysc/simple_bus/
    注意:本示例展示用于建模CPU总线模型的用例。这个例子目前也不使用sc_fifo。

但是你可以为你的实现细节获得更好的想法。