Как правильно конвертировать 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() );