在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 3452|回复: 8

[求助] 求助!如何寻找32位数据中第一个非零的位置

[复制链接]
发表于 2021-1-11 11:10:42 | 显示全部楼层 |阅读模式
50资产
请问如何确定32位的数据中第一个不为零的位置?并输出将其处于数据中的第几位?
请指教!

发表于 2021-1-11 12:22:34 来自手机 | 显示全部楼层
百度关键词lead zero,或者给你提供个下载链接http://www.pudn.com/Download/item/id/1902769.html  
发表于 2021-1-11 12:30:48 | 显示全部楼层
发表于 2021-1-11 12:43:18 | 显示全部楼层
用个32位的循环,然后计数,如果某位=1就输出计数值.
 楼主| 发表于 2021-1-12 09:33:44 | 显示全部楼层


randolpha 发表于 2021-1-11 12:43
用个32位的循环,然后计数,如果某位=1就输出计数值.


我用了差不多的方法 谢谢
发表于 2021-1-12 12:16:47 | 显示全部楼层
用casex casez就可以  



  1. casez(in)
  2. 32'bxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx1:out<=0;
  3. 32'bxxxxxxxxxxxxxxxxxxxxxxxxxxxxx10:out<=1;
  4. ……………………………………


复制代码
发表于 2021-1-12 14:38:48 | 显示全部楼层
二分法,5个stage就可以了,可以得到5-bit。
发表于 2021-1-13 13:27:07 | 显示全部楼层
本帖最后由 ll_ago 于 2021-1-13 14:01 编辑

module  bit_num_1detect
(
input                    clk,
input                     rst_n,
input                      data_in_vld,
input    [31:0]          data_in,

output  reg [4:0]         bit_num,
output reg             bit_num_vld
);

reg   [31:0]  data_temp;
always@(posedge clk or negedge rst_n) begin
if(!rst_n) begin
         bit_num <=5'h0;
         bit_num_vld <=1'h0;
         data_temp <=32'h0;
end
else  if(data_in_vld) begin
         bit_num <=5'h0;
         bit_num_vld <=1'b0;
         data_temp <=data_in;
end
else if(!data_temp[0]) begin
         bit_num <=bit_num +1'b1;
         bit_num_vld <=1'h0;
         data_temp <=data_temp>>1;
end
else
        bit_num_vld <= 1'b1;
end

endmodule

当bit_num_vld为1时,对应的bit_num 就是第一个1的bit 位。





发表于 2021-1-13 14:50:59 | 显示全部楼层
首先你要确定需求是可以最大32个cycle得结果,还是1个cycle出结果。
32个cycle,面积最小,耗时最大,计数器数一数就可以。
1个cycle,那么直接if...else...根据每个bit来比较。
4个cycle,那么2分法.

初步想法,欢迎讨论。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条

×

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-4-26 19:29 , Processed in 0.028020 second(s), 6 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表