risc-v中文社区

 找回密码
 立即注册
查看: 977|回复: 0

[原创] chisel N输入中求最大值

[复制链接]

347

主题

564

帖子

2237

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
2237
发表于 2021-9-17 09:44:51 | 显示全部楼层 |阅读模式
import chisel3._
class MaxN(val n:Int,val w:Int) extends Module{
  private def Max2(x:UInt,y:UInt) = Mux(x>y,x,y) //返回x和y中的大的数据
  val io = IO(new Bundle {
    val ins = Input(Vec(n,UInt(w.W)))
    val out = Output(UInt(w.W))
  })
  io.out := io.ins.reduceLeft(Max2)
  //在n个UInt(w.W)输入数据中,reduceLeft的处理流程如下:
  //先取ins(0)当作Max2的x,ins(1)当作Max2的y,进行Mux处理,处理的结果是找出大的值,暂叫这个处理结果值MAXVALUE1
  //将这个MAXVALUE1当作Max2的x,再取下一个数据ins(2)当作y,进行Mux处理,处理的结果也是找出最大值,暂叫这个处理结果值MAXVALUE2
  //一直不停这样处理,直到最后一次处理时,取最后一个数据rds(n-1)当作x,上次Mux处理结果值MAXVALUE(n-1),处理的结果即是io.out的值
  //所以io.out就是所有输入中的最大值
}


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



Archiver|手机版|小黑屋|risc-v中文社区

GMT+8, 2024-5-2 23:27 , Processed in 0.015756 second(s), 17 queries .

risc-v中文社区论坛 官方网站

Copyright © 2018-2021, risc-v open source

快速回复 返回顶部 返回列表