2017-04-26 4 views
3

私はこのベクトルのレジスタを初期化するには?

val my_reg = Reg(Vec(n, Bits(32.W))) 

ようなベクターのレジスタを定義していると私はmy_reg(i)を使用してループするために、このレジスタの要素にアクセスします。私は

を登録し、このの要素にアクセスしたいとき

さて、私はこのレジスタを0に初期化するのが好きなので、私はこの

val my_reg = Reg(Vec(n, Bits(32.W)), init = UInt(0)) 

に変数の定義を変更するには、しかし、私は、次のコンパイルエラーが発生します

chisel3.core.Data does not take parameters 
my_reg(i) := io.a(i) 

ベクトルのレジスタを定義し、それらを同期して正しく初期化するにはどうすればよいですか?

答えて

4

代わりにRegInitを使用してください。私は、次の文は、あなたが

val my_reg = RegInit(Vec(Seq.fill(n)(0.U(32.W)))) 

ベクトルが

+0

おかげでたくさんの32ビット幅である配列UINTのゼロで初期化されるがやりたいと考えています。最後に別の右かっこを追加するだけです。 – Mahdi

+0

"that are"を削除することもできます。それは二度書きました。ソリューションを編集できません。 – Mahdi

+0

私はChiselとScalaを初めて使っています - Seq.fillは要素の「配列」を作成するScala関数ですが、私は "0.U(32.W)"の構文に慣れていませんが、誰かが構文の仕組みを説明できますか? (私は値が0のUIntを定義していますが、構文機構の詳細は外国語ですので、ScalaやChiselのマニュアルのどこを見てもわかりません - これを検索するための実際のキーワードはありません)ありがとう! – seanhalle

関連する問題