Advertisement

Chisel Tutorial (9) — 状态单元

阅读量:

以下内容依据2015-7-10版的Chisel 2.2 Tutorial整理

Chisel实现了最基本的存储单元架构——基于上升沿触发的寄存器结构。通过以下方式可以具体实现这一核心组件:

复制代码
    val reg = Reg(next = in)

由上述代码所形成的电路相当于将输入赋值给输出;然而输出相对于输入延迟了一个时钟周期。未对变量reg的数据类型进行声明会导致Chisel能够根据输入变量in推断出变量reg的类型;在Chisel环境中clock与reset被视为全局信号因此无需显式声明它们。

例如,在这里给出了一个上升沿检测电路的代码:

\text{当捕获到上升沿时会输出} \texttt{true}

其中,

D = Q_{\text{high}} \quad (\text{即} Q \text{的上一位变化的状态码})

这个电路的工作原理是:通过观察布尔变量 Q 的变化状态来判断是否存在上升沿信号。

复制代码
    def risingedge(x: Bool) = x && !Reg(next = x)

如下是一个计数器的代码,计数到最大值,然后从0开始重新计数:

复制代码
 def counter(max: UInt) = {

    
   val x = Reg(init = UInt(0, ma

全部评论 (0)

还没有任何评论哟~