構造体
概要
概念、使い道
強く関連をもつ変数・定数をグルーピングして使用するための方法です。
同じ型をまとめる場合は、配列を使います。同様に、異なる型をまとめる場合に構造体を使います。
おもな構成
- 構造体は、複数の異なる変数・定数を持つことができます。
- 構造体に含まれる変数・定数をメンバと呼びます。
使用例
配列と構造体の比較
bit [7:0] data;
data = 8'h5A;
data[1] = 1'b0;
data[2:0] = 3'b110;
bit型を8個まとめて扱います。
struct {
int x;
int y;
real dx;
real dy;
} point;
point.x = 10;
point.y = 20;
point.dx = 0.925;
point.dy = 3.2;
座標や加速度を示す変数をpointという名前でまとめて扱います。
構文
無名構造体
- 構造体を直接インスタンスします。
- 基本的に使用することはないと思います。
サンプル
- 宣言する
hogeという無名構造体を宣言します。
無名構造体は宣言と同時にインスタンスが行われます。
struct {
int a;
int b;
bit [7:0] data;
bit [7:0] address;
} hoge;
- 使用する
hoge.a = 5;
hoge.b = hoge.a + 2; // hoge.bは7になる
型名付き構造体
構造体をユーザー定義型として、宣言します。
typedef struct {
int a;
int b;
bit [7:0] data;
bit [7:0] address;
} hoge_type;
あくまで「型の宣言」なので、実体はありません。
moduleやfunction,taskもそうですが、宣言しただけでは使われません。
hoge_type foo;
hoge_type bar;
foo.a = 5;
bar.data = 8'hD0;
通常は、ユーザー定義型として型を定義(→hoge_type)したのち、名前をつけてインスタンスします。
hoge_type foo[10];
hoge_type bar[];
bar = new[20];
foo[1].address = 8'h20;
bar[8].data[3:0] = 4'b0110;
配列での確保も可能です。
代入
初期化
インスタンス時に、初期値を設定できます。
hoge_type foo = { 10, 20, 8'h55 ,8'hAA };
a=10,b=20,data=8'h55,address=8'hAAに設定されます。
代入
注意
最終更新:2008年12月03日 16:01