这样得到的bit_num即为位置。但电路出现自锁,求解其他算法?

[复制链接]
1961|4
 楼主| mentoscui 发表于 2013-1-26 22:33 | 显示全部楼层 |阅读模式
怎样求一个向量a[15:0]的最高位1的位置?这样写过,会自锁。
always@(posedge clk or negedgerst)
begin
if(!rst)
   bit_num=15;
else
  if(a[bit_num]==1'b0)
     bit_num=bit_num-1;
end
 楼主| mentoscui 发表于 2013-1-26 22:35 | 显示全部楼层
这样得到的bit_num即为位置。但电路出现自锁,求解其他算法?
hechnology 发表于 2013-1-28 10:57 | 显示全部楼层
这是有优先级的选择结构,直接if-else就行;
reg [4:0] pos;
if(data[15]) pos <= 5'd16;
else if(data[14]) pos <= 5'd15;
......
else if(data[0]) pos <= 5'd1;
else pos <= 5'd0;

要是时序不满足的话,可以改为用16周期依次判断每一个bit
ifpga 发表于 2013-1-28 11:17 | 显示全部楼层
bit_num 定义为 reg, 然后使用非阻塞语句
hawksabre 发表于 2013-1-28 21:05 | 显示全部楼层
不是很了解  帮你顶一个   呵呵    这个应该是逻辑错误  或者是指令发生冲突  呵呵
您需要登录后才可以回帖 登录 | 注册

本版积分规则

10

主题

176

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部