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

FPGA求取极大值

时间:10-02 整理:3721RD 点击:
FPGA求取极大值是要先定义一个二维数组(比如reg [15:0] signal [0:511]),然后将输入的数据存进去再进行处理么?
我的思路是采用状态机,状态1时进行数据的写入,完成状态1后进入状态0进行极大值的求取,逐个将每个值都与左右两边的值进行比较,如果signal[i+1]>signal[i]&&signal[i+1]>signal[i+2]的话就把该值所在地址i+1输出,有没有别的更好的思路什么的?
再就是最后编译得到的结果FPGA占用的资源太大,用的Cyclone IV E total logic elements达到了87%,是因为处理的数据太多的原因还是算法太过麻烦的缘故呢?有没有更好的解决办法?多谢了!

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<=i+1;
                                                end
                                        else
                                                begin
                                                        fnum<=0;
                                                end        
                                end
                endcase
        end
endmodule
这个是自己写的代码,仿真出来的结果,fnum一直为0,而且耗费的FPGA资源很多。

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

网站地图

Top