2

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

我是说:

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

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

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

4

2 回答 2

2

它确实有一些类型:sc_int, sc_bv(bitvector) 等。

于 2011-04-05T12:46:38.610 回答
2
  1. 考虑std_logic在 vhdl 标准库中,SystemC 中没有等效项,但是,在 sysc 文档中,我看到许多使用bool.
  2. 考虑一下std_logic_vector,我在 sysc 中看不到等价物。相反,在许多示例中,我可以看到sc_int.

这并不是那么正确。

在 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);
    }
}

希望有帮助。

于 2011-06-24T23:46:24.800 回答