我是SystemC编程的初学者,我注意到了一件事(查看SystemC官方文档):我在VHDL模拟中处理的所有类型都没有被“移植”到SystemC。
我的意思是:
std_logic
,SystemC中没有等效项,但是,在SystemC文档中,我看到许多使用bool
的示例。std_logic_vector
,我看不到SystemC中的等价物。相反,在许多示例中,我可以看到sc_int
。所以我认为SystemC不提供类型来管理单个位或电信号,但它提供了更高的抽象,就像在每个常见的C / C ++应用程序中一样。
是这样还是我错过了什么?
答案 0 :(得分:2)
它有一些类型:sc_int
,sc_bv
(bitvector)等。
答案 1 :(得分:2)
- 在vhdl标准库中考虑
std_logic
,SystemC中没有等效项,但是,在sysc文档中,我看到许多使用bool
的示例。- 考虑
的使用情况 醇>std_logic_vector
,我看不到sysc中的等价物。相反,在许多示例中,我可以看到sc_int
。
这并非完全正确。
在SystemC中,您可以分别使用sc_logic
和sc_lv< T >
作为std_logic
和std_logic_vector
。
您可以将SC_LOGIC_0
或SC_LOGIC_1
文字分配给sc_logic
。
虽然您可以使用整数,十六进制甚至“特定于位”的文字来为sc_lv< T >
分配值。
例如:
class some_device : sc_module
{
sc_out< sc_lv<32> > address;
sc_out< sc_logic > write_enable;
SC_CTOR (some_device)
{
write_enable.initialize(SC_LOGIC_0);
/* The following three lines do the same thing.
* Obviously you won't use all three at the same time... */
address.initialize(0b00001111000011110000111100001111);
address.initialize(0x0F0F0F0F);
address.iniziatize(252645135);
}
}
希望有所帮助。