带清零的计数器

此示例定义了一个具有 clear 输入和 value 输出的组件。每个时钟周期 value 输出都会递增,但是当 clear 为高电平时,value 被清零。

case class Counter(width: Int) extends Component {
  val io = new Bundle {
    val clear = in Bool()
    val value = out UInt(width bits)
  }

  val register = Reg(UInt(width bits)) init 0
  register := register + 1
  when(io.clear) {
    register := 0
  }
  io.value := register
}