joe 发表于 2021-9-17 09:44:51

chisel N输入中求最大值

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就是所有输入中的最大值
}


页: [1]
查看完整版本: chisel N输入中求最大值