FPGA入门教程 FPGA架构教程 Verilog Verilog-2001SystemC
返回首页
当前位置: FPGA主页 > FPGA教程 > SystemC >

3.20 SystemC-sc_event_queue

时间:2010-04-13 23:09来源:未知 作者:admin 点击:
sc_event_queue 与sc_event的共同点是都有notify()方法,而不同点是sc_event_queue实际上是一个分层通道,它可以有多个等待触发的通知,这些通知不互相覆盖。sc_event_queue实现的接口sc_event_queu

      sc_event_queue 与sc_event的共同点是都有notify(…)方法,而不同点是sc_event_queue实际上是一个分层通道,它可以有多个等待触发的通知,这些通知不互相覆盖。sc_event_queue实现的接口sc_event_queue_if定义如下:

  1. class sc_event_queue_if  
  2. public virtual sc_interface  
  3. {  
  4. public:  
  5. virtual void notify( double , sc_time_unit ) = 0;  
  6. virtual void notify( const sc_time& ) = 0;  
  7. virtual void cancel_all() = 0;  
  8. };  
  9. class sc_event_queue  
  10. public sc_event_queue_if , public sc_module  
  11. {  
  12. public:  
  13. sc_event_queue();  
  14. explicit sc_event_queue( sc_module_name );  
  15. ~sc_event_queue();  
  16. virtual const char* kind() const;  
  17. virtual void notify( double , sc_time_unit );  
  18. virtual void notify( const sc_time& );  
  19. virtual void cancel_all();  
  20. virtual const sc_event& default_event() const;  
  21. }; 


      其中cancel_all()取消所有等待的通知。

  1. sc_event_queue EQ;  
  2. SC_CTOR(Mod)  
  3. {  
  4. SC_THREAD(T);  
  5. SC_METHOD(M);  
  6. sensitive << EQ;  
  7. dont_initialize();  
  8. }  
  9. void T()  
  10. {  
  11. EQ.notify(2, SC_NS); // M在2ns后执行  
  12. EQ.notify(1, SC_NS); // M在1ns后也执行  
  13. EQ.notify(SC_ZERO_TIME); // M在0ns执行  
  14. EQ.notify(1, SC_NS); // M在1ns后再次执行。  
  15. }  

 

(责任编辑:admin)
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名:密码: 验证码:点击我更换图片
推荐内容