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

我的意思是:

  • 考虑VHDL标准库中的std_logic,在SystemC中没有等效项,但是,在SystemC文档中,我看到了许多使用bool的示例。
  • 考虑到std_logic_vector,我在SystemC中没有看到等效的代码。相反,在许多示例中,我可以看到sc_int的用法。

  • 因此,我认为SystemC不提供用于管理单个位或电信号的类型,而是像在每个常见的C / C++应用程序中一样提供更高的抽象度。

    是这样还是我缺少什么?

    最佳答案



    这还不是全部正确。

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

    希望能有所帮助。

    关于c++ - 了解SystemC中的类型,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5551071/

    10-11 23:01