手撕代码:“排序、比较”专题1

本文是数字IC求职的“排序、比较”专题,分享面试中遇到的verilog实现题目,包括:从四个数据中选出最小值及地址、对16个数据进行排序、八个数比大小排序、记录10bit随机数的次大值及其出现次数、求三个数的中位数以及快速找出64个数的最大值。文中提供了各种解题思路和设计方案,适合硬件电路设计者参考。
摘要由CSDN通过智能技术生成

手撕代码:“排序、比较”专题1

本人正在数字IC求职,公众号如下,欢迎大家关注!公众号将会定期推送自己求职过程中实战积累的知识点和题目!

数字IC剑指offer

​注:以下题目均为各大公司面试真题,要求为用verilog语言实现。

1、 给出4个数据,从中选择出最小的数据,同时将该最小数据的地址输出。

  • 思路:分组两两比较,得到的结果再次两两比较,直到比出最终的最小值和地址,推荐的写法是写编写两两比较得出较小数数据和地址的task或function,然后编写组合逻辑调用或者用于DFF触发器D端输入。

2、对输入的16个数据进行排序,找出最大值和次大值(很经典的题目,同理在8个、16个、32个数中找最大、次大值)。

  • 思路:这里都认为16个数一次性全部输入,如果是按照clk一次进一个,可以进来一个数比较一次。
    1)最直接的算法就是遍历,将这16个数存入数组,采用循环语句,将当前最大值、次大值和新数据对比,从而更新最大值、次大值,16个周期之后就可以得到结果。这种方法一方面需要的时钟周期多,另一方面对硬件电路不友好。
    2)从硬件电路的角度出发,这其实是一个16个数据比大小的电路,那么很容易想到比较器,最基本的比较器是2to1比较器。假如只要求最大值&#x
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值