在SystemC中,事件提供了一个底层的处理程序间同步及重新启动的方式,它能用来实现通道的功能,定义事件的语法如下:
sc_event event_name;
另外,要触发或引起一个事件,要使用通知函数notify(
),语法如下:
event_name.notify(参数); 或 notify(参数,event_name);
作为C++语言的扩展,SystemC支持所有C++的数据类型,包括long、int、short、char、unsigned
long、unsigned int、unsigned short、unsigned char、float、double、long double和bool。另外,也能根据需求自行定义数据类型。
此外,SystemC还新增描述硬件的数据类型,这些类型都以sc_开头,这些数据类型包括sc_bit、sc_logic、sc_int、sc_uint、sc_bigint、sc_biuint、sc_bv、sc_lv、sc_fixed、sc_ufixed、sc_fix、sc_ufix。各个数据类型的说明如表4-4所示。
在这里插入图片描述
为了能够实现描述电路的行为,SystemC增加了对时钟的支持。在SystemC的库中,定义了两个特殊的对象:sc_time类和sc_clock类。
这两个对象在SystemC库中定义的时候分别都有不同的构造函数,因此用户可以根据不同的需要定义自己的时钟模型。在SystemC中,支持的时间单位包括SC_FS、SC_PS、SC_NS、SC_US、SC_MS和SC_SEC,它们分别表示不同的时间精度。下面是定义一个时钟的例子,用来简单说明SystemC中定时的概念。
如果要产生一个周期为10ns的时钟信号,可以这样实现:
sc_time time(10,SC_NS);
sc_clock clk("clk",time);
也可以这样定义一个完整的时钟(包含占空比、开始时间、初始逻辑等参数):
sc_clock clk("clk",10,SC_NS,0.5,5,SC_NS,false);
这个时钟周期为10ns,占空比(高电平持续时间与时钟周期的比)为0.5(0.5∶1),时钟初始第一逻辑值的保持时间是5ns,第一个逻辑值是高电平(false)。
另一个和时间概念相关的是wait(
)函数。wait( )函数可以用来描述系统的等待时间。例如,在一个进程中wait(10,SC_NS)表示进程在等待10ns后被激活。
全部0条评论
快来发表一下你的评论吧 !