Verilog インスタンス、インスタンシエーションを解り易く説明

FPGA初心者が苦労した事をできるだけ解り易く説明してみたいと思います。

いちり
いちり

FPGAでインスタンスってよく出てきますがインスタンスって何ですか?

ゆい
ゆい

最初はなかなかインスタンスのイメージが分かるまで難しいですよね。 できるだけ分かりやすく説明しますね。

ゆい
ゆい

インスタンス(instance)を日本語にすると『実体』という意味です。

FPGAも他のプログラムで、一度作ったプログラムを後から何回も使えたら、もう一度作り直さなくてもすごく便利で、プログラムの開発も早くなりますね。

例えば、ボードにUSBポートが3つあった場合、USB通信のプログラムを3回作るより一つ作ってコピーできたらいいですよね。 それができるようになっています。

まずUSB通信プログラムを作ります。 これが『ひな形』になります。 これをして、port1やport2等の名前を付ける事で、プログラムを動作させた時に勝手に『ひな型』がコピペされます。 『ひな形』のプログラムは同じなのですが、port1やport2等の名前を付けているので、プログラムや内部の変数やメモリは別々になるので、port1とport2が干渉する事はありません。

このport1やport2と名前を付けてやっと本当の動作するプログラム(実体)となるのです。 この名前を付けてプログラムとなったのがインスタンス(実体)です。 このインスタンス(実体)はこの名前にくっついています。

ハンコと同じです。 ハンコ自体はまだ押していないので効力がありません。 ハンコを書類1に押すと効力がでます。 同じハンコで書類2にも3にも押せます。 ハンコは同じでも、ハンコを押す書類が異なるので、異なる書類に押されたハンコは別のインスタンスです。

下の絵の様に、『ひな形』のプログラムはハンコと同じです。 port1と名前を付けて『ひな形』を使えます。 このようにして上位のプログラムの中に、『ひな形』プログラムをコピーするのです。 これをインスタンス化(実体化)=インスタンシエーションと言います。 port1はインスタンシエーションされたインスタンスです。 インスタンスを作ることをインスタンシエーションです。

この良いところは、バグや改善をする際、『ひな形』プログラム一か所を変更したら、この『ひな形』がもととなるインスタンスのバグの修正や改善がされる事になります。

しかも次に使うときも、インスタンスを作るだけで過去に作ったいろいろな『ひな形』プログラムを使っていけます。 凄い人が作った『ひな形』プログラムもインスタンス化して自分だけでは作れないちょっと凄いプログラムを作ることも可能になります。

ゆい
ゆい

ね、インスタンスべんりでしょ?

最後まで読んでくれてありがとうございます。 間違っている点や、もっといい説明方法などコメントいただけたらうれしいです。

コメント