在verilog中,直接使用除法/,消耗资源较大,一般精度要求不高的地方使用逻辑左移》实现除法操作,但移位除法精度较低。
如果除数为2^n,可采用以下方法对除法精度做以补偿:
1)计算出被除数a对除数的余数:rem1=a&(2^n -1).
2)设计一个人lfsr,计算出其对除数的余数:rem2=lfsr&(2^n -1).
3)判断如果rem1小于rem2,则给计算的商加1,否则商保持不变。
以上步骤可以实现根据余数大小,概率性地去给商加1,对结果进行精度补偿。
在verilog中,直接使用除法/,消耗资源较大,一般精度要求不高的地方使用逻辑左移》实现除法操作,但移位除法精度较低。
如果除数为2^n,可采用以下方法对除法精度做以补偿:
1)计算出被除数a对除数的余数:rem1=a&(2^n -1).
2)设计一个人lfsr,计算出其对除数的余数:rem2=lfsr&(2^n -1).
3)判断如果rem1小于rem2,则给计算的商加1,否则商保持不变。
以上步骤可以实现根据余数大小,概率性地去给商加1,对结果进行精度补偿。