2016-11-26 1 views
3

私はチゼル3を飼っています。チゼルについての構文:Vec&Wire

私はコードについていくつか質問があります。

val myVec = Wire(Vec(5、SInt(width = 23)))// 5つの23ビット符号付き整数のベクトル。

私はベクトルを宣言し、 "ワイヤ"と書く必要があると思いましたが、これらのコードを見たときに間違っていました。

クラスBigBundle 5 23ビット符号付き整数のバンドル{

ヴァルmyVec = Vecと(5、SIntの(幅= 23)) //ベクトルを拡張します。

val flag = Bool() //以前に定義されたバンドル。

ヴァル・F =新しいMyFloat

}

それは突然私の顔の上にパンチスので、私は、私は、「ワイヤー」を使用しないとき知りたいですか?

ありがとうございます。

答えて

2

値を再割り当てする可能性のあるチゼルノードには、Wireを使用します。

val a = Wire(Bool()) 
a := Bool(false) 
... 
3

ここで重要なのは、Chisel3の「種類」と「値」の区別です。

VecBundleUIntSInt、及びBoolは一例である "タイプ"。

WireRegInputOutput、及びMemでの一例である "値"。上記からBigBundle

Vec(5, SInt(width = 23))があるだけのよう

class BigBundle extends Bundle { 
    val myVec = Vec(5, SInt(width = 23)) // Vector of 5 23-bit signed integers. 
    val flag = Bool() 
    val f = new MyFloat // Previously defined bundle. 
} 

BigBundleは、 "タイプ" で "タイプ。"

これらのタイプを使用する場合は、Wireのいずれかを作成することができます。

val myVecWire = Wire(Vec(5, SInt(width = 23))) 
val myBundleWire = Wire(new BigBundle) 
+0

myBundleWireを操作する方法の例を挙げることができますか?私には分かりやすくなります。 – jjlin

+0

BigBundle型のWire(またはその他の値)のフィールドにドット表記を使用してアクセスし、接続演算子 ':='でそれらに接続できます。したがって、myBundleWireのフラグフィールドをfalseに接続したい場合は、次のように書くことができます: 'myBundleWire.flag:= false.B' – jkoenig

+0

ありがとう私は完全に理解しています。 – jjlin

関連する問題