Как правильно конвертировать sc_lv в sc_uint?

Для проекта я пытаюсь преобразовать значение, полученное от sc_lv<8> введите входной порт для sc_uint<8> Тип сигнала. Кстати, входной порт подключен к sc_signal_rv<8> канал.

Я попытался привести входные данные, используя эту строку:

sc_in< sc_lv<8> > data_in;

// Other declarations

sc_signal< sc_uint<8> > tx_data;

// Other declarations
// Assume that all else is properly declared

sc_uint<8> temp;
temp = (sc_uint<8>)data_in->read(); // Casting
tx_data.write(temp);

Но я получаю это предупреждение во время симуляции:

Warning: (W211) sc_logic value 'Z' cannot be converted to bool

Я хотя бы делаю на индивидуальный случай, но я не совсем уверен.

Есть идеи?

2 ответа

Это предупреждение, оно уведомляет вас о преобразовании 4-значных в 2-значные значения и теряет информацию. Так что предупреждение - это хорошо, чтобы вы знали, что

Согласен с enchanter. Но хорошей практикой является компиляция вашей программы без каких-либо предупреждений, другими словами, предупреждение - это вопрос, и вы должны ответить, изменив код с явным приведением:

sc_uint<8> temp = static_cast< sc_uint<8> >( data_in->read() );
Другие вопросы по тегам