利用FPGA找寻极大值点

2019-07-15 22:41发布

      利用FPGA找寻极大值点是不是要先把接收到的数据写入一个二维数组(比如reg [15:0] signal [0:511]),再对进行的数据进行处理?      我的想法是比较该值与左右两边的值的大小,如果signal[i+1]>signal[i]&&signal[i+1]>signal[i+2]则输出该值所在的地址fnum,这样可以么?
      还有就是这么写代码最后得到的FPGA资源的占用太多,是因为处理的数据量太大的缘故么?有没有什么比较好的思路或者方法?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
11条回答
athu
1楼-- · 2019-07-15 23:53
以为没发成功,多发了一遍。。囧
runileking
2楼-- · 2019-07-16 03:42
很简单的冒泡排序法啊,看你接收数据的形式,如果是一个一个接,把前一个寄存一拍,与新来的数据比大小,大的给寄存一拍,再与新来的比,这感觉不占啥资源啊,如果先存数据,那就存到RAM然后往出读,同样的方法比大小就可以
runileking
3楼-- · 2019-07-16 07:19
没注意,极值啊,极致那应该就你这样就可以吧,你这个要注意复用,你不能每次都这么去比较,其实只需要两个比较器就可以了,如果你不复用,那肯定占资源,多少个数据就得多少个比较器
athu
4楼-- · 2019-07-16 10:13
 精彩回答 2  元偷偷看……
runileking
5楼-- · 2019-07-16 12:08
athu 发表于 2016-5-30 09:53
关于复用还是不太明白。可不可以帮忙看一下我的代码,仿真出来fnum一直为0,而且占用的资源很多。
module detection(clk,data_in,fnum);
input clk;

代码太乱,都不知道你这是testbench还是啥,为啥是0自己看波形图分析,首先为什么要把这些数放到二维数组里,二维数组实际是就是512个十六位寄存器,估计这个会费一点资源,如果你的数据是从接口读进去的,那仿真的时候就把他作为输入一拍一拍往进打,这样你只需要三个寄存器不就可以比较了?你的代码问题太多了,你写数据的时候下角标都没有。。。。

评分

参与人数 1积分 +5 收起 理由 athu + 5

查看全部评分

athu
6楼-- · 2019-07-16 13:52
runileking 发表于 2016-5-30 11:09
代码太乱,都不知道你这是testbench还是啥,为啥是0自己看波形图分析,首先为什么要把这些数放到二维数组里,二维数组实际是就是512个十六位寄存器,估计这个会费一点资源,如果你的数据是从接口读进去的,那仿真的时候就把他作为输入一拍一拍往进打,这样你只需要三个寄存器不就可以比较了?你的代码问题太多了,你写数 ...

下角标那个应该是复制过来的时候弄掉的吧。。我再自己看看吧,多谢了。

一周热门 更多>