问题描述
当在操作中一起使用有符号和无符号数据类型操作数时,XST将不正确地签署扩展签名数据类型信号:
输出[5:0] O;
输入[5:0] in1;
输入签名[3:0] in2;
赋值O = in1 + in2;
在上面的示例中,XST将不正确地签署扩展in1。
解决/修复方法
在Verilog 2001标准中,如果在操作中使用有符号和无符号操作数,则操作变为无符号,并且有符号数据类型变为无符号数据类型。执行操作时,请勿混合使用有符号和无符号数据类型。如果必须混合有符号和无符号,则使用中间信号:
:
:
电线签[3:0] a;
电线[3:0] b;
电线[7:0] c;
电线[7:0] d;
分配c = a * b;
:
:
改成:
:
:
电线签[3:0] a;
wire [3:0] a_temp;
电线[3:0] b;
电线[7:0] c;
电线[7:0] d;
分配a_temp = a;
分配c = a_temp * b;
:
:
没有回复内容