微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > verilog中有效位判断

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])
  .
   .
   .
   .
   .
请问除了这种简单的麻烦的算法还有更好的简单的么,谢谢!

多级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: .....

这个可以看成是算法了

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

网站地图

Top