verilog中有效位判断
时间:10-02
整理:3721RD
点击:
想问下有没有什么好的算法判断一个乘法结果中第一个1在哪一位?(无符号数)
我只知道 从最高位开始一位一位往下判断
always @(*)
begin
if(a[10])
b <= a[10:0];
else if (a[9])
b <= a[9:0];
else if (a[8])
.
.
.
.
.
请问除了这种简单的麻烦的算法还有更好的简单的么,谢谢!
我只知道 从最高位开始一位一位往下判断
always @(*)
begin
if(a[10])
b <= a[10:0];
else if (a[9])
b <= a[9:0];
else if (a[8])
.
.
.
.
.
请问除了这种简单的麻烦的算法还有更好的简单的么,谢谢!
多级mux可以做到。大致想法就是二分法。
为什么要这么做啊?
你的b到底定义成多少位的啊?
晕倒!if else当然不行。嵌套多了以后,运行速度会下降。
如果单纯找第一个"1"的话可以看下面这个贴子,把回复都看完
http://bbs.eetop.cn/thread-325004-1-6.html
那个问题比LZ的要复杂,当然那个帖子里其实给出了LZ这个问题的解决方案,多级MUX就可以了。
能不能用移位,这时可以只判断一位,不过和你的道理上一样。
好问题…………
case(a[10:0])
10'b10_0000_0000: .....
10'b01_0000_0000: .....
这个可以看成是算法了
