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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
12
返回列表 发新帖
楼主: target13

设计电路确定当前32bit数能被5整除

[复制链接]
发表于 2009-11-24 15:51:59 | 显示全部楼层
very simple
发表于 2009-11-24 22:17:32 | 显示全部楼层


wire [6:0] sum1; assign sum1 = a[31:28] + a[27:24] + a[23:20] + a[19:16] + a[15:12] + a[11:8] + a[7:4] + a[3:0];
wire [4:0] sum2;
assign sum2 = sum1[6:4] + sum1[3:0];
if (sum2 % 5 ==0) can_be_di ...
layow 发表于 2009-11-18 17:35



学习了。可能有些人还没有明白,我来总结一下:
这个算法很巧妙的地方在于利用了“16的N(N为非负整数)次方除5,余数为1”这个特性,因而判断一个二进制数能否被5整除与判断其十六进制数各位累加和能否被5整除是一样的,这也是上面构造sum1、sum2的原因。用这种方法可以迅速缩小输入值的位数,但计算出sum2后,用“sum2 % 5 ==0”来判断同样会遇到不好综合的问题,不太好。实际上,可以判断出sum2<23,那么在这条件下能被5整除是数只有0、5、10、15、20,5个数而已,可以分别与这5个数比较并将结果或一下就好了。
另外也可以用比较和减法实现,大致如下:
while(1)
{
    if(sum2>=5)
       sum2=sum2-5;
   else
   {
       if( sum2==0 )
           TRUE;
       else
           FALSE;
       break;
   }
}
发表于 2010-9-30 11:33:36 | 显示全部楼层
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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


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

GMT+8, 2024-12-28 14:02 , Processed in 0.018272 second(s), 6 queries , Gzip On, Redis On.

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