如何正确地将sc_lv转换为sc_uint?

时间:2013-11-28 08:39:00

标签: systemc

对于项目,我试图将从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 个答案:

答案 0 :(得分:0)

这是一个警告,它会注意到4值到2值的转换,它会丢失信息。所以警告很有可能让你觉得

答案 1 :(得分:0)

同意魔法师。 但是,在没有任何警告的情况下编译程序是一个好习惯,换句话说,警告是一个问题,您应该通过使用显式强制转换修改代码来回答:

sc_uint<8> temp = static_cast< sc_uint<8> >( data_in->read() );