打印

FPGA实现数据统计

[复制链接]
1765|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
lczhoujq|  楼主 | 2012-9-4 18:05 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 GoldSunMonkey 于 2012-9-4 20:45 编辑

各位大侠,最近在写一个FPGA代码需要实现数据统计,设计要求对1080个数据进行统计,当接收完这1080个数据后要输出里面重复次数最多的那个数,如在这1080个数据中有100个10,150个2,50个14等,则最后要输出出现次数最多的数:
2.
     现在我自己写了一个代码,里面定义了一个RAM,对接收到的数据如为IDX,则就将RAM [IDX] <=  RAM[IDX] + 1,最后统计RAM里面那个数据最大,她对应的IDX便是想要的值,但这种方法在FPGA里面好像实现不了,不知道大家有没有其他好的方法?着急啊....

相关帖子

沙发
lczhoujq|  楼主 | 2012-9-4 18:48 | 只看该作者
怎么没人回答呢?

使用特权

评论回复
板凳
GoldSunMonkey| | 2012-9-4 20:52 | 只看该作者
为深么实现不了?
你这种方法可以啊。
开一个1080的空间。
分别存放1~1080数字的个数值。
比方遇到15,就从地址15里面得到一个值,然后+1, 然后存回去。
同时设一个变量存 数值,一个变量存数值的个数。
当你存回去的时候比较你得到值和存数值的个数值谁大谁小,如果大,就就替换,不过小就不管。

就是不知道同时有10个10 10个11, 只有一个变量输出,不知道是应该输入11还是10。这个是你自己考虑的。

使用特权

评论回复
地板
lczhoujq|  楼主 | 2012-9-5 08:50 | 只看该作者
3# GoldSunMonkey 假如我定义的RAM的确是1080的深度,然后以收到的数据做索引值,做RAM[IDX]<= RAM[IDX] + 1,但这样的还编译器会认为RAM就是寄存器了,导致我的逻辑资源消耗完了,而不是RAM,即RAM好像不允许自己给自己赋值

使用特权

评论回复
5
Backkom80| | 2012-9-5 10:11 | 只看该作者
感觉好象在做视频方面的直方图一类的东东啊

使用特权

评论回复
6
lczhoujq|  楼主 | 2012-9-5 16:28 | 只看该作者
5# Backkom80 的确是视频方面的,做错误数据校准,但现在统计数据分布这个搞不定啊

使用特权

评论回复
7
GoldSunMonkey| | 2012-9-5 23:27 | 只看该作者
5# Backkom80 的确是视频方面的,做错误数据校准,但现在统计数据分布这个搞不定啊
lczhoujq 发表于 2012-9-5 16:28
讲点东西啊。别太泛

使用特权

评论回复
8
GoldSunMonkey| | 2012-9-5 23:28 | 只看该作者
3# GoldSunMonkey  假如我定义的RAM的确是1080的深度,然后以收到的数据做索引值,做RAM
lczhoujq 发表于 2012-9-5 08:50
开RAM 的IP

使用特权

评论回复
9
GoldSunMonkey| | 2012-9-5 23:28 | 只看该作者
3# GoldSunMonkey  假如我定义的RAM的确是1080的深度,然后以收到的数据做索引值,做RAM
lczhoujq 发表于 2012-9-5 08:50
谁让他自己给自己赋值了?
你可以给别的变量啊。

使用特权

评论回复
10
Backkom80| | 2012-9-6 08:16 | 只看该作者
呵呵

使用特权

评论回复
11
lczhoujq|  楼主 | 2012-9-6 09:14 | 只看该作者
谁让他自己给自己赋值了?
你可以给别的变量啊。
GoldSunMonkey 发表于 2012-9-5 23:28
的确可以不用写成自己赋值给自己,我尝试过先将RAM里面的数读出来赋给一个信号,然后将信号加1后再赋值给RAM,但编译器还是将RAM全部用逻辑资源实现,导致资源耗尽

使用特权

评论回复
12
lczhoujq|  楼主 | 2012-9-6 09:16 | 只看该作者
7# GoldSunMonkey
主要是CCD在多通下,不同通道间在拼接处的数据误差,我需要统计处拼接处,不同通道间数据差的分布关系,根据统计结果在FPGA里面做数据校正

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

9

主题

363

帖子

2

粉丝