From f4f704f0239319428da6288aaefb7d46db3a3972 Mon Sep 17 00:00:00 2001 From: Andrew Waterman Date: Thu, 16 Jul 2015 17:24:37 -0700 Subject: Add PriorityEncoderOH --- src/main/scala/utils.scala | 13 +++++++++++++ 1 file changed, 13 insertions(+) (limited to 'src') diff --git a/src/main/scala/utils.scala b/src/main/scala/utils.scala index 0fb275d6..a86c81e8 100644 --- a/src/main/scala/utils.scala +++ b/src/main/scala/utils.scala @@ -398,3 +398,16 @@ object Queue q.io.deq } } + +object PriorityEncoderOH +{ + private def encode(in: Seq[Bool]): UInt = { + val outs = Vec.tabulate(in.size)(i => UInt(BigInt(1) << i, in.size)) + PriorityMux(in :+ Bool(true), outs :+ UInt(0, in.size)) + } + def apply(in: Seq[Bool]): Vec[Bool] = { + val enc = encode(in) + Vec.tabulate(in.size)(enc(_)) + } + def apply(in: Bits): UInt = encode((0 until in.getWidth).map(i => in(i))) +} -- cgit v1.2.3