Chiselのカーネル例、カウンタかな?
引用 package sdaccel_utils import chisel3._ import chisel3.util.Counter /** * Created by lorenzo on 05/09/17. */ class MyKernel extends Module{ val io = IO(new Bundle{ val ap_start = Input(UInt(1.W)) val ap_idle = Input(UInt(1.W)) val ap_done = Output(UInt(1.W)) }) val counter = Counter(30) val regFlagStart = Reg(init = false.B) val doneReg = Reg(init = false.B) val startReg = Reg(init = false.B) val idleReg = Reg(init = true.B) idleReg := io.ap_idle startReg := io.ap_start io.ap_done := doneReg when(io.ap_start === true.B && regFlagStart === false.B){ counter.inc() regFlagStart := true.B } when(counter.value > 0.U){ doneReg := true.B } }
Chiselについては、ScalaとChiselで電子回路をつくる高位合成の話
FPGAマガジンNo.19の中澤さんの記事
FPGAマガジンNo.19の中澤さんの記事
◎プログラミング言語Scalaベースのハードウェア記述言語 RISC-Vコミュニティで使われる代替HDL“Chisel" 中澤 慧を参考に。。。