完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
|
利用FPGA找寻极大值点是不是要先把接收到的数据写入一个二维数组(比如reg [15:0] signal [0:511]),再对进行的数据进行处理? 我的想法是比较该值与左右两边的值的大小,如果signal[i+1]>signal[i]&&signal[i+1]>signal[i+2]则输出该值所在的地址fnum,这样可以么?
还有就是这么写代码最后得到的FPGA资源的占用太多,是因为处理的数据量太大的缘故么?有没有什么比较好的思路或者方法? |
|
相关推荐
11个回答
|
|
|
以为没发成功,多发了一遍。。囧
|
|
|
|
|
|
很简单的冒泡排序法啊,看你接收数据的形式,如果是一个一个接,把前一个寄存一拍,与新来的数据比大小,大的给寄存一拍,再与新来的比,这感觉不占啥资源啊,如果先存数据,那就存到RAM然后往出读,同样的方法比大小就可以
|
|
|
|
|
|
没注意,极值啊,极致那应该就你这样就可以吧,你这个要注意复用,你不能每次都这么去比较,其实只需要两个比较器就可以了,如果你不复用,那肯定占资源,多少个数据就得多少个比较器
|
|
|
|
|
runileking 发表于 2016-5-29 16:17 关于复用还是不太明白。可不可以帮忙看一下我的代码,仿真出来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<=0; fnum<=0; end always@(posedge clk) //时钟上升沿i加一 begin if(i!=511) begin i<=i+1; end else begin i<=0; end state<=next_state; end always@(state,i) begin case(state) 1'b1: begin if(i==255) next_state=1'b0; //状态为1时,当i加到255时下一个状态变为0 else next_state=1'b1; end 1'b0: begin //状态为0时,当i加到255时下一个状态变为1 if(i==511) next_state=1'b1; else next_state=1'b0; end endcase end always@(posedge clk) begin case(next_state) 1'b1: //状态为1时,往二维数组里写数据; begin signal <= data_in; end 1'b0: //状态为0时,选取数组里极大值所在的地址 begin if(signal[i+1]>signal&&signal[i+1]>signal[i+2]) begin fnum<=i+1; end else begin fnum<=0; end end endcase end endmodule |
|
|
|
|
athu 发表于 2016-5-30 09:53 代码太乱,都不知道你这是testbench还是啥,为啥是0自己看波形图分析,首先为什么要把这些数放到二维数组里,二维数组实际是就是512个十六位寄存器,估计这个会费一点资源,如果你的数据是从接口读进去的,那仿真的时候就把他作为输入一拍一拍往进打,这样你只需要三个寄存器不就可以比较了?你的代码问题太多了,你写数据的时候下角标都没有。。。。 评分 |
|
|
|
|
runileking 发表于 2016-5-30 11:09 下角标那个应该是复制过来的时候弄掉的吧。。我再自己看看吧,多谢了。 |
|
|
|
|
|
本帖最后由 alasga 于 2016-5-30 21:02 编辑
always@(posedge clk or negedge rst_n) begin if(!rst_n) rlt_data<=0; else if(rlt_data>data_in) rlt_data<=rlt_data; else rlt_data<=data_in; end如果要找最大值的序列号,那么只要在序列号编入data_in,然后对data_in的数值部分比较,然后把最 终结果的序列号部分分出来即可。 over!!!! |
|
|
|
|
|
我是想要找极大值,不是最大值,不过你能回答还是表示非常感谢!! |
|
|
|
|
runileking 发表于 2016-5-30 11:09 已经做出来了,还是感谢你的回复~ |
|
|
|
|
|
|
|
|
|
|
|
楼主求极大值的程序还在吗?想学习一下!
|
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
NVMe高速传输之摆脱XDMA设计50:主要功能测试结果与分析2 nvmePCIe高速存储
252 浏览 0 评论
NVMe高速传输之摆脱XDMA设计49:主要功能测试结果与分析1
1501 浏览 0 评论
907 浏览 0 评论
855 浏览 0 评论
658 浏览 0 评论
4426 浏览 63 评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-2 02:43 , Processed in 1.033943 second(s), Total 96, Slave 76 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
5290