2006年08月29日

SPARTAN-3E開発最初の一歩の疑問

前回の「SPARTAN-3E開発最初の一歩」は、サンプルにいわれるがままにコーディングを行ったわけですが、意味不明な点が多々あるわけです。(すみません。実は、前回のコード、全然、理解していません。)
そこで、ド素人なりに考察してみたので、下記に記述しておきます。(※ド素人が自分勝手に考察したものですので、間違っている可能性が高いことをお断りしておきます。)

●I/Oは何を示す?
通常のプログラミングであれば、標準入出力やFILE、Socketから、データをin/outすることにより、プログラムとして動作するわけですが、FPGAでは、この部分が何になるのかという疑問です。

そのヒントは、「1-4」と「3-3-1」で出てきた下記の設定部分にあるようです。

1-4の設定:
・一行目

Port Name:led

Direction:output

・二行目

Port Name:sw

Direction:input



3-3-1の設定:
led1 = F12

sw = L13

これを合わせて読めば、下記のようになるかと思います。
・「led1」が、「F12」へ、「output」される

・「sw」が、「L13」へ、「input」される

「led1」や「sw」が、変数のような役割をしていることは、想像が付きますが、「F12」や「L13」とは何ののでしょうか?

それを解く鍵は、Spartan-3E スタータ キット ボード ユーザー ガイド (日本語版)Spartan-3E ASCII ピン配置と Excel フットプリント (英語版)にありました。
Spartan-3E スタータ キット ボード ユーザー ガイド (日本語版)の21ページに、LED1に対して、「F12」が接続されているという記述があります。
また、Spartan-3E ASCII ピン配置と Excel フットプリント (英語版)のピン配置は、碁盤の目のようになっており、「英字行」と「数値行」で、「F12」という記述でピン配置を表しています。

すなわち、これらの設定は、FPGAのピンが、どこに素子や端子に繋がっていて、どのような動作(in/out)をするかを、定義しているものです。

ということで、FGPAでHDLプログラミングするということは、

FGAPのピンをどの素子や端子に接続して、in/outするか?

というものを記述するということになるようです。



●main関数はどこ?
電源投入時に、読み込まれる関数(?)が、どれになるのか?という疑問です。

まず、vファイルの先頭行が、下記のようになっていることから、これが関数に相当するものだというのは想像できます。

module sw_led(led1, sw0);

ということは、main関数に相当する関数があってもよさそうです。で、調査してみようかと思ったのですが、調査法が検討付かないので、断念します。のちほど、知識が付いてきたときに再度チャレンジしたいと思います。

予想としては、main関数に相当するものは、ありそうだとは思うのですが、一つ懸念点として、

基盤上のLED1とLED2を別々に操作できるということは、FPGAの場合、関数が普通のプログラミングででいうところのプロセスやスレッドの単位で動作する

という点が気になるところです。これを考えると、固定的に1つだけmain関数を用意するのは、良くなさそうな感じがします。



●論理合成とは?
「4」では、何を行っているのか?の具体的な内容が解らないという疑問です。

下記のような設定をしたので、特別なファイルが出来るようなのですが、これがなにか?ということです。

[Readback Oprions]内の

[Create ReadBack Data Files] チェック

[Create Mask File] チェック

概要的には、FPGAの配線の設計図ということなのでしょうが、ド素人の私には、その内容が想像できません。
これも、ヒントなどがほしいところですが、いまのところ、私にはハードルが高いようです。

Creative Commons License
This weblog is licensed under a Creative Commons License.