微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > 这个算法verilog怎么实现

这个算法verilog怎么实现

时间:10-02 整理:3721RD 点击:
一帧视频数据640*480,要寻找图像的焦点。焦点:横向数据相加,得到480个横向和,比较记下最大值和的横向坐标;纵向数据相加,得到640个纵向和,比较记下最大值和的纵坐标。(横坐标,纵坐标)为焦点的坐标,这个怎么实现?横向和,可以很快计算出来,一横结束就可以。但是纵向和不行啊,纵向和至少要一个纵向完才可以计算出来。而且中间过程需要太多的数据缓存。有木有什么快速的方法?

原始数据存在2块不同的RAM里,或者双端口RAM里。

纵向和只需要纵向数目的缓存就够了,在对应纵向数据来了,与之前那一列的数据相加的和就做加法就行。

首先说行相加,每一个点进来,做累加,加满一行为止,记录本行累加和,同时用cnt标记行号,每次新来一行都做同样的事情,计算完新的一行,与之前行相加结果最大值比较,大于,则更新最大值结果以及行号并保存。
对于列,需要一行linebuffer,第一行数据进来依次存到linebuffer里面,以后没新来新一行的每个点,都用新一行的点与linebuffer读出的数据累加并存到linebuffer里面,最后一行每个点进来时,依次累加,并用当前点累加结果与之前点累加结果最大值比较,大于,保存最大值以及列坐标(cnt),最后所有数据输入完毕,计算完毕

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

网站地图

Top