Implements stage 5
This commit is contained in:
31
src/main/scala/projet/ImmediateDecoder.scala
Normal file
31
src/main/scala/projet/ImmediateDecoder.scala
Normal file
@@ -0,0 +1,31 @@
|
||||
package projet
|
||||
|
||||
import chisel3._
|
||||
import chisel3.util.switch
|
||||
import chisel3.util.is
|
||||
import chisel3.util.Cat
|
||||
import chisel3.util.Fill
|
||||
|
||||
class ImmediateDecoder extends Module {
|
||||
import projet.OpType
|
||||
|
||||
val io = IO(new Bundle {
|
||||
val op_type = Input(OpType())
|
||||
val instruction = Input(UInt(32.W))
|
||||
val immediate = Output(UInt(32.W))
|
||||
})
|
||||
io.immediate := 0.U
|
||||
|
||||
// Decode imm-u
|
||||
val imm_u = Cat(io.instruction(31, 12), 0.U(12.W));
|
||||
// Decode imm-i
|
||||
val imm_i = Cat(Fill(20, io.instruction(31)), io.instruction(31, 20));
|
||||
switch(io.op_type) {
|
||||
is(OpType.U) {
|
||||
io.immediate := imm_u
|
||||
}
|
||||
is(OpType.I) {
|
||||
io.immediate := imm_i
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user