倍数模块读取相同的fifo

时间:2017-04-21 05:48:05

标签: module fifo systemc

是否可以实例化多个模块以从同一个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;
}

1 个答案:

答案 0 :(得分:1)

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

对于样本实施,可以在Accellera SystemC下载页面的SystemC源代码下找到更接近您要求的示例。

下载“ Core SystemC语言和示例”zip文件:

  • 解压缩文件。
  • 导航到目录并查找“ examples ”目录。

以下示例更接近您的要求:

  • 实例/ SYSC / pkt_switch /
    注意:此示例不使用sc_fifo,而是使用sc_in / out端口。
  • 实例/ SYSC / simple_bus /
    注意:此示例展示了用于建模CPU总线模型的用例。此示例当前也未使用sc_fifo。

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