chisel - RegEnable 的向量
问题描述
寻找有关如何使用 RegEnable 作为向量的示例/建议。我还想控制输入和使能信号成为向量中寄存器索引的函数。
因此,首先,我如何声明 RegEnable() 的 Vector,其次如何对其进行迭代并连接输入和启用。在 RegEnable() 情况下,声明和连接在同一语句中进行。就像是:
for (j <- 0 until len) {
val pipe(j) = RegEnable(in(j),en(j))
}
上面的代码无法编译。在 & en 中还有向量或位选择
解决方案
RegEnable
对于这种类型的东西,使用它来构造 aSeq[T <: Data]
并从中构造 a可能要容易得多Vec
。该Vec
对象有两个主要的应用方法:一个 varargs one 和一个 seq。为了您自己的参考,请查看 ChiselVec
对象 API 文档。
以下完整示例构建,但相关部分是val pipe
andval pipe2
行。您可以使用 amap
或for
/来执行此操作yield
。
import chisel3._
import chisel3.util.RegEnable
import chisel3.iotesters
import chisel3.experimental.MultiIOModule
class Example(len: Int) extends MultiIOModule {
val in = Seq.fill(len)(IO(Input(UInt(1.W))))
val en = Seq.fill(len)(IO(Input(Bool())))
val mySeq: Seq[Data] = (0 until len).map( j => RegEnable(in(j), en(j)) )
val pipe = Vec(mySeq)
val mySeq2: Seq[Data] = for (j <- 0 until len) yield ( RegEnable(in(j), en(j)) )
val pipe2 = Vec(mySeq2)
}
推荐阅读
- java - Thymeleaf 找不到声明
- angular - 从 Angular 中的子组件更新一个父数组值
- windows - 从 YouTube 下载单个文件中的视频+音频
- oracle-apex - 是否可以向 Apex Oracle 请求添加自定义标头?
- javascript - 触发媒体查询时如何阻止元素移动?
- javascript - 在这个例子中 `this` 有什么用?
- scala - 改进使用 scala 在 List 中查找奇数事件的解决方案
- javascript - 使用 .indexOf() 定义 .getRange()
- python - 我想我在这个 tkinter 小部件上犯了一个错误
- elasticsearch - ElasticSearch Count API vs SearchAPI,track_total_hits 设置为 true