1 Type Casting
1.1 Verilog使用赋值语句进行变量类型转换
- 阻塞赋值: =
- 非阻塞赋值: <=
1.2 systemVerilog增加了变量类型转换符
- 变量类型转换符可以在任何时刻对表达式进行类型转换
- 而不像Verilog一样只能发生在赋值语句中
logicint a,y;
real r;
y=a+longint’(r**3);
2 $cast强制类型转换
3 变量位宽转换
size’(expression)
SystemVerilog增加了矢量位宽转换
- 表达式转换成较小位宽时,左侧的比特位被删除
- 表达式转换为较大位宽时,左侧的比特位被扩充
logic [15:0] a,b,c,sum;
logic carry;
sum = a+ 16'(5)
{carry,sum} = 17'(a+3);
sum = a+16'(b-2)/c;
4 变量符号位转换
SystemVerilog可以转换符合位
- 操作数符号位转换
- 表达式符号位转换
signed’(expression)
unsigned’(expression)
sum = signed’(a) + signed’(b); //操作数符号转换
if(unsigned’(a-b)<=5) //表达式中间结果转换