请教 带绝对值的乘法
时间:10-02
整理:3721RD
点击:
有个公式
|Y| = (|X| * mf + bias)>> abits;
sign(Y)= sign(X);
其中,mf和abits是常数,bias是防止右移操作导致数据误差而加上的一个偏差。
请问这个式子用verilog怎么来实现呀?对有符号数的运算一直拿不准。
请高手不吝赐教,O(∩_∩)O谢谢!
乘法在通常情况下是符号位与数据位分离的
二进制补码
谢谢ls两位的解答,可是用verilog实现的时候,符号位怎么办呢?怎么实现sign(Y)= sign(X)呀。可能是很简单的问题,但是我真的不会,还请指教,O(∩_∩)O谢谢!
ASIC处理有符号数的几种方法:反吗,补码。
假如你输入的X是补码形式的话,去绝对值就是看符号位
Y=abs(X),用verilog写来就是(假设X为10bit,最高位为符号位):
assign Y[8:0] = X[9] ? X[8:0] + 9'd1 : X[8:0];
如果X是反码的形式,verilog则是
assign Y[8:0] = X[9] ? X[8:0] : X[8:0];
O(∩_∩)O谢谢!看了你的解答后有点点的顿悟。
学习了,,,
