微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > 利用FPGA找寻极大值点

利用FPGA找寻极大值点

时间:10-02 整理:3721RD 点击:
      利用FPGA找寻极大值点是不是要先把接收到的数据写入一个二维数组(比如reg [15:0] signal [0:511]),再对进行的数据进行处理?      我的想法是比较该值与左右两边的值的大小,如果signal[i+1]>signal[i]&&signal[i+1]>signal[i+2]则输出该值所在的地址fnum,这样可以么?
      还有就是这么写代码最后得到的FPGA资源的占用太多,是因为处理的数据量太大的缘故么?有没有什么比较好的思路或者方法?

以为没发成功,多发了一遍。囧

很简单的冒泡排序法啊,看你接收数据的形式,如果是一个一个接,把前一个寄存一拍,与新来的数据比大小,大的给寄存一拍,再与新来的比,这感觉不占啥资源啊,如果先存数据,那就存到RAM然后往出读,同样的方法比大小就可以

没注意,极值啊,极致那应该就你这样就可以吧,你这个要注意复用,你不能每次都这么去比较,其实只需要两个比较器就可以了,如果你不复用,那肯定占资源,多少个数据就得多少个比较器

关于复用还是不太明白。可不可以帮忙看一下我的代码,仿真出来fnum一直为0,而且占用的资源很多。
module detection(clk,data_in,fnum);
input clk;
input [15:0]data_in;
output fnum;
reg [15:0]fnum;
reg [15:0] signal [0:511];
reg [9:0]i;
reg state,next_state=1;               //初始化状态为1,准备往二维数组中写数据
initial
begin
        //$readmemh("memory.txt", signal);
        i signal&&signal[i+1]>signal[i+2])
                                                begin
                                                        fnum data_in)
      rlt_data<=rlt_data;
else
     rlt_data<=data_in;
end如果要找最大值的序列号,那么只要在序列号编入data_in,然后对data_in的数值部分比较,然后把最
终结果的序列号部分分出来即可。
over!

我是想要找极大值,不是最大值,不过你能回答还是表示非常感谢!

已经做出来了,还是感谢你的回复~

不客气。

小编求极大值的程序还在吗?想学习一下!

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top