4、SystemC端口和通道

1、sc_port关联sc_interface和channel,channel继承sc_interface。sc_module聚合sc_module、var、process和sc_port。sc_cthread和sc_method继承sc_thread。 

 2、接口:sc_interface中声明很多虚函数,作为接口函数实现接口功能,如send()、recv()等。通道实现(继承)了一个或者多个接口。

        端口总是与一定的接口类关联sc_in<sc_myInterface>,端口只能连接到实现了该类接口的通道上。可以通过发送和接收模块的端口调用(sc_in/sc_port<sc_interface>->send()),实现模块通信。通过端口,模块中的进程可以连接到通道并使用通道提供的方法。sc_port<ram_if<int>,3>一个端口可以绑定多个接口。

3、通道分为基本通道和分层通道,基本通道是非结构化的,不包含进程,也不能直接读写其他基本通道。而分层通道是一个特殊模块,它可以包含子模块和进程,当然也可以直接读写其他通道。 常见基础通道:sc_signal<T>、sc_signal_rv<T>和sc_fifo<T>。

4、实现通道和端口的绑定。fifo_out/in(fifo)实现端口和通道的绑定,在out中写数据就会把数据写到fifo中。sc_fifo的写入和读取需要一定的时间,执行后续操作的时候需要在中间加一个时间间隔。示例:

sc_fifo_out<int> out;

sc_fifo_in<int> in;

sc_fifo<int> fifo;

out(fifo);

in(fifo);

out.write(1);

in.read();

可以通过in.num_available()获取in中的数据数量。

通道允许并行操作,如果同时读写,则读的结果是写入之前的值。

5、sc_fifo是一个模板类。创建:sc_fifo<int> my_fifo(10)创建深度为10的my_fifo。my_fifo.write()写fifo、my_fifo.read()读fifo、my_fifo.nb_write()不阻塞写、my_fifo.nb_read()不阻塞读。my_fifo.num_available()获取my_fifo中的元素个数、my_fifo.num_free()获取fifo中的空闲空间数。

6、wait_for_request()等待请求信号,wait_for_response()等待响应信号。代码中可以添加静态规则检查和动态规则检查,避免异常。sc_get_curr_process_handle()获取当前进程句柄。通道属性描述通道的一些特征,比如优先级等。

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值