Понимание типов в SystemC

Я новичок в программировании на SystemC, и я заметил одну вещь (просматривая официальную документацию SystemC): все типы, с которыми я имел дело в симуляциях VHDL, не были «перенесены» в SystemC.

Я имею в виду:

  1. Рассмотрим std_logic в стандартной библиотеке VHDL, в SystemC нет эквивалента, однако в документации SystemC я вижу много примеров с использованием bool.
  2. Рассмотрим std_logic_vector, я не вижу эквивалента в SystemC. Вместо этого я вижу во многих примерах использование sc_int.

Поэтому я думаю, что SystemC не предоставляет типы для управления отдельными битами или электрическими сигналами, но обеспечивает более высокую абстракцию, как и во всех распространенных приложениях C/C++.

Так ли это или я что-то упускаю?


person Andry    schedule 05.04.2011    source источник


Ответы (2)


  1. Рассмотрим std_logic в стандартной библиотеке vhdl, в SystemC нет эквивалента, однако в документации sysc я вижу много примеров с использованием bool.
  2. Рассмотрим 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);
    }
}

Надеюсь, это поможет.

person dave    schedule 24.06.2011

У него есть несколько типов: sc_int, sc_bv (битвектор) и т.д.

person Marty    schedule 05.04.2011
comment
Они предоставляются, но следует добавить, что обычно вы действительно используете SystemC для моделирования более высокого уровня (протоколы/шины...). Можно битбанить, но когда я его увидел, его почти использовали для моделирования/симуляции на чуть более высоком уровне (вплоть до уровня системы). - person flolo; 05.04.2011