微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > 硬件如何实现:9个数取较小的4个值(不要求顺序)

硬件如何实现:9个数取较小的4个值(不要求顺序)

时间:10-02 整理:3721RD 点击:
RT.para0,para1,para2,para3,para4,para5,para6,para7,para8
最终保留4个较小的值

如何用硬件实现?
多耗点资源没有关系,主要是cycle要尽可能的少!

写个小模块比较两个输入的大小
然后在顶层调用
首先比较a0 ,a1,得到较小的一个存起来
依次调用四次,得到四个较小值,存起来
在拿这四个较小值与最后一个数比较,即可



        额,如果a0<a1, a2<a3, 不见得a1比a2大吧。

从最高位开始将数据的每一位与“1”与,舍弃结果是1的数据,至少判断到[i]=2的数据位,然后输入剩余的所有数据。
或者已知数据最大位宽采用中间值比较法依次比较。

实现冒泡算法一般有两种方法,一种是直接用硬件core实现;一种是用减法实现(有点类似软件的冒泡算法)。选择原则,如果用低端FPGA,且比较数位宽不超过4Byte,速度不超过100M的话,直接用减法计算。不过很浪费资源;要是要求较高,那就直接调用IPcore,直接用多个硬件比较器实现。方法一具体比较过程该论坛上有例子,可参考。

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

网站地图

Top