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)
还没有任何评论哟~
