2017-08-28 19 views
0

數組中Scala的一種方式Chisel3類型不匹配,我們可以宣佈雙打,龍和布爾數組的ArrayBuffer是這樣的:與定點

val A = new ArrayBuffer[Array[(Long, Array[Double], Array[Double], Double, Boolean)]] 

我願做鑿一樣。
在鑿我知道聲明長度爲n的向量的一個方式輸入如下:

val X = Input(Vec(n,FixedPoint(16.W, 8.BP))) 

其中n是int和工作原理。
現在我試圖初始化ň定點數組過了,做了以下內容:

val C = Array(Array.ofDim(FixedPoint(16.W, 8.BP)))(n,0) 

initialisation of an array

啓發但這並沒有工作。 我得到的錯誤

type mismatch; 
[error] found : chisel3.core.FixedPoint 
[error] required: Int 
[error] val tabHash1 = Array(Array.ofDim(FixedPoint(16.W, 8.BP)))(n,0) 

請,能有人給聲明以上定點的正確方式,以及定點數字的鑿數組? 謝謝!爲您的關注和您的迴應。

回答

0

鑿子將遵循斯卡拉集合聲明的普通規則。 我不確定你想在這裏創建什麼,但參數不是很正確 Array.ofDim用於創建多維數組,因此如果你想創建一個你想要的2維固定點數組。

val C = Array.ofDim[FixedPoint](m, n) 

其中n和m是兩維的大小。你已經在另一個數組包裹Array.ofDim,所以也許你真正想要 定點的3維數組,這將是

val C = Array.ofDim[FixedPoint](k, m, n) 

這兩種技術將會給予有FixePoint,但他們所有的插槽陣列不會填寫,那麼可能是你真正想要的是

val C = Array.fill(k, m, n)(FixedPoint(16.W, 8.BP) 

然後您可以連接這些FixedPoints在一起,你想怎麼過。

C(0, 0,0) := C(1, 1, 1) + C(2, 2, 2) 

可能是一個例子。

如果您需要使用硬件索引訪問您的FixedPoint元素,則需要使用Vec而不是Array。初始化Vec的最簡單方法是使用Seq of Elements。定點的二維VEC可以與

val c = Vec(Seq.fill(n)(Vec(Seq.fill(m)(FixedPoint(16.W, 8.BP))))) 

創建我建議在看Scala Land vs Chisel Land對Scala中使用鑿子一些背景。