微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > 请教 带绝对值的乘法

请教 带绝对值的乘法

时间: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谢谢!看了你的解答后有点点的顿悟。

学习了,,,

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top