2017-10-21 66 views
0

我有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,需要詮釋。 我嘗試使用功能PEEK()到IDX轉換爲int做

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

,但我得到偷看沒有找到。我還看到,我無法將鑿子UInt轉換爲詮釋here,但不明白在給出的示例中使用偷看。那麼請你有另一種方法來做到這一點嗎? 謝謝!

回答

0

直接的問題是,您不能使用像UInt或SInt這樣的硬件構造來訪問scala集合的元素。它應該工作,如果你將Y包裹在Vec中。根據你的整體模塊,這將可能看起來像

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

看來,這並不適用於strings.I的順序得到錯誤VecInit()不能應用於(SEQ [字符串]) – Foutse

+0

是的,你不能VecInit字符串,但如果你的值是字母,你應該能夠將它們表示爲8位或16位的UI。如果你想做完整的琴絃,你必須製作Vec Vec Vec的內部Vec。更多的硬件來管理所有這些。 –

相關問題