1
0

LFSR now a util

This commit is contained in:
Henry Cook 2012-01-24 14:39:52 -08:00
parent 7f26fe2c44
commit aa3465699b
2 changed files with 13 additions and 5 deletions

View File

@ -17,11 +17,8 @@ class RandomReplacementWayGen extends Component {
val way_en = Bits(width = NWAYS, dir = INPUT)
val way_id = UFix(width = log2up(NWAYS), dir = OUTPUT)
}
val width = max(6,log2up(NWAYS))
val lfsr = Reg(resetVal = UFix(1, width))
when (io.way_en.orR) { lfsr <== Cat(lfsr(0)^lfsr(2)^lfsr(3)^lfsr(5), lfsr(width-1,1)).toUFix }
//TODO: Actually limit selection based on which ways are available (io.ways_en)
if(NWAYS > 1) io.way_id := lfsr(log2up(NWAYS)-1,0).toUFix
//TODO: Actually limit selection based on which ways are allowed (io.ways_en)
if(NWAYS > 1) io.way_id := LFSR16(io.way_en.orR)
else io.way_id := UFix(0)
}

View File

@ -56,6 +56,17 @@ object UFixToOH
}
}
object LFSR16
{
def apply(increment: Bool) =
{
val width = 16
val lfsr = Reg(resetVal = UFix(1, width))
when (increment) { lfsr <== Cat(lfsr(0)^lfsr(2)^lfsr(3)^lfsr(5), lfsr(width-1,1)).toUFix }
lfsr
}
}
class Mux1H(n: Int, w: Int) extends Component
{
val io = new Bundle {