diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/main/scala/utils.scala | 13 |
1 files changed, 13 insertions, 0 deletions
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))) +} |
