怎样统计输入端‘1’的个数
时间:10-02
整理:3721RD
点击:
现在有一个问题,假设有32位的输入,怎样统计‘1’的个数和‘0’的个数,要求在1~3个周期内搞定?
请大牛指点一下,急用,谢谢了!
请大牛指点一下,急用,谢谢了!
把32bit的数据每个bit相加应该可以统计“1”和“0”的个数吧,data[0]+data[1]+data[2]...+data[31]
这个可以统计,但是无法在一个时钟周期内搞定啊!
为什么不能在一个cycle内完成呢,我觉得可以完成的。
就是这个理
上述的方法理论上可行,但是加法器太多,而时钟速度太快的话,会有亚稳态的出现。可以采用RAM查找表来实现,或者CASE语句
查表的方法可以在1个时钟周期内实现,不过表会比较大。也可以考虑将输入分成4个8比特,分别查表,再将查表结果分两个时钟周期加起来得到结果
楼上AmoiBB的思路不错,可以实行
可以理解为这是一个多路译码器、编码器,只是因为输入太多,所以可能比较占用资源。如果非要做LUT,用CASE在语句中例化,用RAM可能比较慢,但节省LE。
两种方法:
1. case语句:这个比较容易实现,而且占用资源少。推荐。
2. RAM查表:资源消耗大,而且繁琐。
