【问题标题】:Indexing of elements in a Seq of string with chisel用凿子对字符串 Seq 中的元素进行索引
【发布时间】:2017-10-21 17:36:07
【问题描述】:

我有,tab=Array(1.U, 6.U, 5.U, 2.U, 4.U, 3.U) 和 Y=Seq(b,g,g,g,b,g ), tab 是一个 UInt 数组。 我想在标签上做一个地图如下:

tab.map(case idx=>Y(idx))

但我不断收到 错误:找到 chisel3.core.UInt, required Int. 我尝试使用函数 peek() 通过执行

将 idx 转换为 Int
tab.map(case idx=>Y(peek(idx).toInt)

但我没有找到 peek。我还看到我无法将凿子 UInt 转换为 Int here,但在给出的示例中不理解 peek 的使用。那么请问,是否有另一种方法来执行上述操作? 谢谢!

【问题讨论】:

    标签: chisel


    【解决方案1】:

    直接的问题是您无法使用 UInt 或 SInt 等硬件构造访问 scala 集合的元素。如果将 Y 包装在 Vec 中,它应该可以工作。根据您的整体模块,这可能看起来像

    val YVec = VecInit(Y)
    val mappedY = tab.map { case idx => YVec(idx) }
    

    【讨论】:

    • 这似乎不适用于字符串序列。我收到错误 VecInit() cannot be applied to (Seq[String])
    • 是的,你不能 VecInit 字符串,但如果你的值是字母,你应该能够将它们表示为 8 或 16 位 UInt。如果你想做完整的字符串,你必须制作 Vec 的 Vec,其中内部 Vec 是字符串。更多的硬件来管理所有这些。
    猜你喜欢
    • 2015-12-03
    • 2015-11-25
    • 2022-07-10
    • 1970-01-01
    • 2021-09-27
    • 1970-01-01
    • 2019-01-08
    • 1970-01-01
    相关资源
    最近更新 更多