了解SystemC中的类型

时间:2011-04-05 11:27:56

标签: c++ c vhdl systemc

我是SystemC编程的初学者,我注意到了一件事(查看SystemC官方文档):我在VHDL模拟中处理的所有类型都没有被“移植”到SystemC。

我的意思是:

  1. 在VHDL标准库中考虑std_logic,SystemC中没有等效项,但是,在SystemC文档中,我看到许多使用bool的示例。
  2. 考虑std_logic_vector,我看不到SystemC中的等价物。相反,在许多示例中,我可以看到sc_int
  3. 的使用情况

    所以我认为SystemC不提供类型来管理单个位或电信号,但它提供了更高的抽象,就像在每个常见的C / C ++应用程序中一样。

    是这样还是我错过了什么?

2 个答案:

答案 0 :(得分:2)

它有一些类型:sc_intsc_bv(bitvector)等。

答案 1 :(得分:2)

  
      
  1. 在vhdl标准库中考虑std_logic,SystemC中没有等效项,但是,在sysc文档中,我看到许多使用bool的示例。
  2.   
  3. 考虑std_logic_vector,我看不到sysc中的等价物。相反,在许多示例中,我可以看到sc_int
  4. 的使用情况   

这并非完全正确。

在SystemC中,您可以分别使用sc_logicsc_lv< T >作为std_logicstd_logic_vector

您可以将SC_LOGIC_0SC_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);
    }
}

希望有所帮助。