ChiselUtil类中有一个Queue,在手册中描述为:
// Generic hardware queue. Required
// parameter entries controls the
// depth of the queues. The width of
// the queue is determined from the
// inputs.
// Example usage:
// val q = new Queue(UInt(), 16)
// q.io.enq <> producer.io.out
// consumer.io.in <> q.io.deq
class Queue[T <: Data]
(type: T, entries: Int,
pipe: Boolean = false,
flow: Boolean = false
flushable: Boolean = false)
extends Module
但是在scala代码中,接口参数不同: https://github.com/ucb-bar/chisel/blob/master/src/main/scala/ChiselUtil.scala#L426
代码中没有“可刷新的”布尔输入。我找不到“管道”和“流量”参数的含义。
有人知道如何使用队列来冲洗它吗?
答案 0 :(得分:2)
flushable
参数不存在。不确定他们的意思。但是,有一种方法可以通过点击`_reset'参数来清除队列,如下所示:
val my_queue = Module(new Queue(gen = new MyBundle,
entries = queue_sz,
pipe = false,
flow = true,
_reset = (kill_queue || reset.toBool)))
flow
参数指定是否可以在同一周期内使用输入(输入“立即流入队列”)。 “有效”信号是耦合的。
pipe
参数指定“就绪”信号是否是组合耦合的。这允许一个条目队列以完全吞吐量运行(如管道)。