SiTCPに関する情報を共有するためのフォーラムです。この目的に反しない範囲で、質問、コメント、回答などご自由にご投稿ください。
This forum is for sharing information about SiTCP. Please do not hesitate to post any questions, comments or answers within the scope of this purpose.
This forum is for sharing information about SiTCP. Please do not hesitate to post any questions, comments or answers within the scope of this purpose.
スターターキット編
※ 2010年当時の内容をそのまま掲載しております。
リンク切れなどございますが、ご容赦ください
はじめまして、mamehachi です!
BBT で、FPGA 見習いやってます。
まだ、まだ、駆け出しです
これから SiTCP について学ぼうと思っているところです。
さて、何から始めようかな...
SiTCP って何が嬉しいんだろう。
データをイーサネット上で転送できるFPGA用のライブラリか~。
プログラムを組まずに、お気軽に転送できるってことかな...
ネットワークのプログラミングは難しそうだから、これは、うれしいな!
う~ん。他にもいいことがあるのかな?
Dr. Bean 教えてください。
This discussion has been closed.
Comments
目先の楽さだけに目を付けおって...
確かに、ハードウエアだけで、TCP のサーバーとして機能するから、
ソフトを組まなくて良いのじゃが、もっと注目せんといかん特徴があるのじゃよ。
ハードウエアで実装しているから、高速で安定した転送ができるのじゃよ。
最近は、FPGA に CPU を実装することもできるのじゃが、高速には動作せぬのじゃ。
それに、ライブラリが小さいから、中規模クラスのFPGAでユーザの回路と
共に実装することができるのもこのライブラリのウリじゃ。
UDP のよる通信で、レジスタの設定も出来るのじゃぞ。
内田先生のページがあるから、ちゃんと、目を通しておきなさい!
確か、先日、注文しておいた Xilinx の「Spartan-3A スタータ キット」が
届いていたはずじゃ。
SiTCP User Community にあるサンプルを、動かしてみてはどうじゃ。
「Spartan-3A スタータ キット」 で SiTCP を動かしてみます。
スタータキットを、探さないと...
こんにちは、mamehachi です。
Xilinx の「Spartan-3A スタータ キット」手に入れました!
さて、早速、開封。
基板、マニュアル、USBケーブル、CD が入っていますね。
マニュアルといっても、動作確認ぐらいしか書いてないな~。
まずは、「Start Here」と書かれたマニュアルに従って動作確認をしてみよう。
ちゃんと動作するのかちょっとドキドキするな~。
電源を接続して、電源スイッチをON...
とLCDに表示されました。
そして、約1秒後、コンフィグレーションのメニュー表示になりました。
無事起動しました~!
詳しいマニュアルは、オンラインにあるのか~。
検索、検索...
スタータキットの資料が置いてあるページがありました。
このボードは REVISION D だから
「Spartan-3A/3AN FPGA スタータ キット ボード ユーザー ガイド」
でいいようだな。後で、目を通しておこう。
資料探している途中で ISE12 って見かけたけど、CD には、ISE11 って書いてあるな~。
ISE11 でいいのかな?
こんな時は、Dr.Been に聞いてみよう。
どうなんですか?
ISE12 が最新じゃが、スタータキット用の SiTCP のサンプルは、ISE11 用なので、
今回は、xilinx がフリーで提供している ISE11の WebPack をインストールするのが良いぞ。
対応していないからじゃよ。ワシも以前、悩んだものじゃ。
tar のマニュアルに多少記述があるぞ。
そうじゃの~、古いバージョンのマニュアルの説明のほうが分かりやすいかもしれんの~。
どちらも英語じゃから、お主にはちょっと辛いかの~。
「tar @LongLink」で検索してみるのが良いかもしれんの~。
このことについて、ブログなど書いている人が結構おるから、参考になるじゃろう。
Laplus は、GNU 独自拡張に対応していないようじゃから、他のツールを探すのが良いぞ。
こんにちは、mamehachi です。
やっと、SiTCP に辿りつきました~
まずは、サンプル版をSiTCPサイトからダウンロードしてこよう!
SiTCP のメインメニューからダウンロードを開いて、
「Sample source for Xilinx Spartan 3A Starter kit」をクリックしてダウンロード。
XC3ASKSample.4.0.zip が、ダウンロードできました。
ZIP ファイルを解凍すると、XC3A_SK_SiTCP デレクトリができたぞ。
ISE を立ち上げよう。
ん~。file メニューを見ると、[Open Project] があるな~。これだろう。
ファイルの種類に「*.xise」ってあるから、拡張子が「xise」のファイルを
探せばいいんだな。
お、XC3A_SK_SiTCP/ISE11 の中に「ISE11.xise」ってファイルがあったぞ。
これだな。開いてみよう。
再生のアイコンをクリックすればいいのかな。
あれ、コンパイル済みなのか~。何も起こらないな~。
コンパイルしてみたいから、
XC3A_SK_SiTCP/src/S3A_SK_SiTCP.V
を変更せずに保存しなおして、タイムスタンプを更新してみよう。
もう一回、再生[Implement Top Module]をクリック。
お~、コンパイルできたみたいだ。
warning は出ているけど、大丈夫だろう。
「Generate Programming File」が「?」だな~。
再生アイコンのヒント表示に、「Implement Top Module」ってでるな~。
これは、Implement までみたいだな。
う~ん、どうすればいいんだろう。
[Generate Programing File] を右クリックするとしてみるか...
[Run] かな。
ちょっと待つと...
出来たみたいだ。
さ~て、スタータキットで動かすぞ!
って、どうすればいいんだ。
[Configure target Device] っぽいけど。
ユーザーズガイドを、見てもこの辺りについては詳しく書いてないようだな~。
Dr.Been に聞いてみよう。
どうすればいいんですか?
スタータキットの FLASH に書き込むことも出来るのじゃが、
今回は USB ケーブルを使って JTAG で直接 FPGA をプログラムするのが
簡単で良いじゃろう。
スタータキットの設定の変更も必要ないしの~。
まずは、ISE の [Configure Target Device] にある
[Manage Configure Project(iMPACt)] をダブルクリックして
起動するのじゃ。
立ち上がったら、[Boundary Scan] を選択して、
[Initialize Chain] を実行すると、
後は、なんとなく分かるじゃろう。
USB ケーブルか~。
確か、キットについていたはずだ...。
USB ケーブルで、PCとスタータキットを接続して、
電源を入れてみよう。
あ、ドライバーのインストールするのか~。
[いいえ、今回は接続しません] を選択して、[次へ] をクリック。
[ソフトウェアを自動的にインストールする] を選択して、[次へ] をクリック。
さーて、動かしてみよう!
と思ったらまた同じダイアログが表示されたぞ。
また、ドライバーのインストールなのかな?
同じ手順で、... 完了。
あれ~、また、出てきたな~。
大丈夫なのかな~。
もう一度、繰り返すか...完了。
今度は、ダイアログが出てこない。
良かった、先にすすめる
[Manage Configuration Project(iMPACT)] をダブルクリック。
Boundary Scan って、Dr.Bean が言っていたな~。
[Boundary Scan] を、クリック。
ん、何も起きないな~。じゃ、ダブルクリック。
「Right click to Add Device or Initialize JTAG chain」って出たぞ。
Dr.Bean が[Initialize Chain] を実行しろと言っていたのは、これだな。
「Right click」と書かれている付近を右クリックすると...
[Initialize Chain] を、クリック。
お~、FPGA が、表示された!
「Do you want to continue and assign configuration files(s)?」
って聞いているから、[Yes] かな。
表示されている、「s3a_sk_sitcp.bit」を指定すれば、良さそうだな。
[Open] をクリック。
FLASH は使わないと言っていたから、[No] でいいだろう。
あれ、また出てきたぞ。
あ、xcf04s に色が付いているな~。
一個ずつ選択するみたいだな。
FLASH だから、[Bypass] でいいかな。
デフォルトで大丈夫だろう。
[OK] をクリック。
xc3s700a を右クリックするんじゃないかな~。
予想通りだ [Program] をクリック。
お、どうだろう。
うまくいったみたいだ!
スタータキットの LED 表示が変わったぞ。
LD7 のみ点滅するようになりました。
動作しているみたいだな~。
LED の表示以外に起動確認の方法はないのかな~?
サンプル版は、SiTCP のデフォルトの IP アドレスを使用しているのじゃ。
デフォルトは、これじゃ。
まず、クロスケーブルでPC と接続しよう。
スタータキットのRJ-45コネクタのLEDが緑色で点灯したから、
LINK は、無事上がったみたいだな~。
コマンドプロンプトを起動して、
PING...えっとアドレスが、192.168.10.16...
あれ、 失敗だ
あ~、そうか、ネットワークの設定をしなきゃ。
[スタート]-[コントロールパネル]
で、コントロールパネルを表示して、
[ネットワーク接続]をダブルクリック。
[ローカルエリア接続] をダブルクリック。
[プロパティ] をクリック。
[インターネット プロトコル (TCP/IP)] をダブルクリック。
スタータキットが、192.168.10.16 だから、
でいいだろう。
今度は、うまくいくかな。
もう一度、ping を実行。
お、応答が返ってきた~!
ちゃんと、動いているようだ
次回は、機能の確認をしてみます!
今回は、SiTCP を動かして、その機能を確認してみます。
さて、どうしようかな。
確か、SiTCP User Community Site のダウンロードに「SiTCP Utility」が
あったけど、使えるんじゃないかな~。
「SiTCP Utility」 をダウンロードしてみよう。
SiTcpUtil.0.9.2e.zip がダウンロードできました。
中を見てみると、「setup.exe」があるな~。
一応、解凍してから、実行。
[実行]をクリック。
[同意する]をクリック。
そういえば、SiTCP Utility のダウンロードの説明に、
って書いてあったな~。
結構時間が掛かるのかな~。
ちょっと、放っておくか...
あ、終わってる
10分弱ぐらいかな~。意外と早かったな~。
[インストール」をクリックだな。
お、インストール終了したと思ったら、起動した
アドレスやポートは、Dr.Bean の言っていたデフォルト値になっているみたいだな。
まずは、UDP から確認してみよう。
[制御(UDP)]タブをクリック。
レジスタアドレスは 0 で、試してみよう。
[読み出し] をクリック。
おっ。目が動いた...ちょっと、ビックリ
とりあえず、何か読めたな~。
今度は適当に書き込んでみよう。
こんな感じでデータを書いて、[書き込み] をクリック。
お、LED の表示が変わったぞ!
読みだしてみよう、[読み出し]をクリック。
アドレス 8 以降が、書けるみたいだな~。
でも、アドレス 9 は、書けないのかな?
LED は、下位 7 bit と考えると、0x19 だな~。
とすると、アドレス 8 が LED なのかな?
アドレス 8 に 0x55 を書き換えてみよう。
[書き込み]をクリック。
お~、予想通りだ
UDP は、動作しているようだな。
次は、TCP をやってみよう
[データ(TCP)]タブをクリック。
[受信開始]をクリック。
何も受信できないみたいだな~。
Dr. Bean に聞いてみよう。
なんで、受信できないのですか?
仕様も分からずに、闇雲にやってもうまくいかんぞ。
簡単だから、ソースを見てどう動くのか調べてみなさい!
ソースは、確か、
XC3A_SK_SiTCP¥Src
にあったはず。
S3A_SK_SiTCP.V を見てみよう。
思ったより分量がないぞ。
理解できそうだ
これは、点滅している LED の記述だな~。
えーと、肝心の TCP は、どこかな。
お、TCP 関連の記述を発見!
TCP の受信と送信を FIFO を介して繋いでいるんだな~。
ということは、受信したものがループバックして送信されるのか~。
それじゃ~、受信しかない SiTCP Utility では、確認できないなぁ~。
どうすればいいんだろう。
プログラムを用意しないといけないのかな。
もっと、手軽な方法はないのかな~。
Dr.Bean に聞いてみよう!
そうじゃの~。
telnet で接続して、echo が返ることを確認するのが良いじゃろう。
telnet コマンドは、デフォルトで port 番号 23 を使うのじゃが、
指定することも可能なのじゃよ。
指定の仕方は、コマンドのヘルプででも調べるのじゃな。
telnet で、確認できるのか~。
さて、コマンドプロンプトを起動しよう。
telnet -h で、分かるかな~。
なるほど、アドレスの後にポート番号を書けばいいんだな。
telnet 192.168.10.16 24
おー、ちゃんと echo が返ってきている。
一応、TCP での通信の確認は出来たな~。
かなり低速でだけど
そうだ、UDP のソースも見てみよう!
XC3A_SK_SiTCP¥Src¥S3A_SK_SiTCP.V
を見てみると...
となっているな~。
このモジュールを見れば、分かりそうだ。
XC3A_SK_SiTCP¥Src¥
にあるもうひとつのファイルが、それだな~。
RBCP_REG.v を開いてみよう!
このソースも短いから理解できそうだ。
データが16個あって、アドレス0から順に割り当てられているんだな。
お、書き換えられなかったところは、Version と FPGA の ID 表示だったのか~。
X09Data[7:0] に DIP SW の内容が代入されているぞ。
アドレス 9 だけ、値が 0x00 で不思議だったんだよな~。
後で、DIP SW の値を変えて、試してみよう!
確かに、アドレス 8 の値に書き込んだら LED の表示が変化していたな~。
他のアドレスは、レジスタ接続されているんだ。
よし、大体理解できたぞ。
DIP SW を試してみよう!
DIP SW の値を変更して...
SiTCP Utility で、[制御(UDP)] を選択して、[読み出し] をクリック。
0x00 から 0x05 に変わりました。
ちゃんと、DIP SW の値が反映されているな~。
SiTCP の一通りの機能を確認できました~。
まだまだ、これからですが、SiTCP と FPGA に関する理解が深まったような気がします
スタータキット編は、今回をもって終了です。
また、何かに挑戦するときに、お会いしましょう!