新闻中心

EEPW首页>手机与无线通信>设计应用> 基于SystemC的异构多核通信模块设计

基于SystemC的异构多核通信模块设计

作者: 时间:2011-01-10 来源:网络 收藏

通信控制模块

  该模块用来专门处理各个核之间的通信指令,对其进行解释翻译,并将最终行为直观的 告诉总线,达到核间通信的目的。新架构设计按照SystemC 交易级建模(TLM)原则,为以后 多核功能的扩展性提供可能性。

  3.2 通信机制

  为了异构多核通信的实现,需要向多核仿真器的每个模拟器内核扩展三条访问共享存储 区的指令,分别是:申请空间、读取和写入。

  在内核代码中对共享存储区访问指令进行译码之后,需要对共享存储区发出操作请求, 与操作请求一起发送的是操作的信息,对于申请、读取和写入三种操作,各自的操作信息如 下表所示:

操作信息

  当 CMCCtrl 受到接收到来自Core1/Core2 的访问请求,模块触发。同时随着请求一起接 收下来的其他信息,包括指令编码、请求的数据类型、地址偏移等等。CMCCtrl 对这些请求 信息进行分析,当判断出核间需要数据通信后,将需要的信息提取发送至总线模块。具体模 块描述如下:

  SC_MODULE(CMCCtrl)

  { sc_inout isCore1, isCore2; //来自Core1/Core2 的访问请求,是本模块的触发信号

  sc_out core1_latency, core2_latency; //返回给Core1/Core2 的延时信息

  sc_inout data_value; //需要传递的数据

  sc_port bus_port; //通信总线模块接口

  /*返回给Core1/Core2 的应答信号,表明CORE1/Core2 获得了共享存储区的访问权,并

  且可以继续执行下一个周期的操作*/

  sc_inout ackCore1, ackCore2;

  /*随着isCore1/isCore2 请求一起接收下来的请求信息,包括指令编码、请求的数据类型、

  地址移等等*/

  sc_inout data_type, array_capacity, data_index, data_id;

  /*随着is Core1/isCore2 请求一起接收下来的,表明当前Core1/Core2 运行的周期数,用

  于进行内核调度判断和访存冲突分析*/

  sc_in core1_cycle, core2_cycle;

  /*对isCore1 或者isCore2 的上升沿敏感的响应函数,它被定义为线程类型,是CMCCtrl

  类的实现函数。函数内部需要对两个内核的访问请求进行判断、控制,并调用相应的其它成员函数。



关键词:收发器

评论


相关推荐

技术专区

关闭