...

XAPP632: "電子メールによる FPGA のプログラミング" v1.0 (05/02)

by user

on
Category: Documents
8

views

Report

Comments

Transcript

XAPP632: "電子メールによる FPGA のプログラミング" v1.0 (05/02)
アプリケーション ノート: Virtex-II シリーズ
R
電子メールによる FPGA のプログラミング
著者 : Marc Defossez
XAPP632 (v1.0) 2002 年 5 月 13 日
概要
このアプリケーション ノートでは、イントラネットまたはインターネット接続を介して FPGA をプロ
グラムおよび再プログラムする方法について説明します。この題材には、多くのバリエーションがあり
ます。このアプリケーション ノートで示すアプリケーション例は、理論的な外部コントローラで、可能
性を示すためのものです。アプリケーション例の各モジュールは、ハードウェアとソフトウェアについ
てテストされています。このアプリケーション ノートは、すべてのテスト済みデザイン パーツをまと
めたものです。
はじめに
インターネットやイントラネットの最も一般的な用途は、電子メールの送受信です。電子メールを使用
して FPGA のプログラムや再プログラムができるということは、FPGA を使用するアプリケーションの
アップデートやサポートを行う場合の利点となります。このアプリケーション ノートでは、いくつかの
ソリューションを紹介します。ソリューションによっては、インターネットやイントラネットを認識す
る外部のマイクロプロセッサが必要になります。リファレンス デザイン例では Ubicom の SX52BD プ
ロセッサを使用していますが、IP2022 など他のコンポーネントや Rabbit、Lantronix、Zilog など他の
メーカーのコンポーネントも使用できます。
インターネットの
プロトコル
スタック
インターネット/イントラネットを利用する通信は、規格化されています。これらの規格は、RFC 文書
として http://www.ietf.org にあります。インターネット/イントラネットの動作メカニズムは、図 1 に示
すようにプロトコル スタックとして組織化されています。スタックを役割別にグループ化したものをレ
イヤと呼びます。各レイヤは独立したプログラムの集まりで、物理インターフェイス (物理レイヤ) から
ユーザー アプリケーション (アプリケーション レイヤ) またはその逆に情報が移動できるようにします。
STMP
POP3
HTTP
UDP
FTP
TCP
Application layer
Transport layer
ICMP
Internet layer
IP
PPP
Modem
UART
Ethernet
Network access layer
Ethernet
Physical layer
x632_01_022702
図 1: インターネット レイヤ プロトコル
© 2002 Xilinx, Inc. All rights reserved. すべての Xilinx の商標、登録商標、特許、免責条項は、http://www.xilinx.com/legal.htm にリストされています。他のすべての商標および登録商標
は、それぞれの所有者が所有しています。すべての仕様は通知なしに変更される可能性があります。
保証否認の通知 : Xilinx ではデザイン、コード、その他の情報を「現状有姿の状態」で提供しています。この特徴、アプリケーションまたは規格の一実施例としてデザイン、コード、そ
の他の情報を提供しておりますが、Xilinx はこの実施例が権利侵害のクレームを全く受けないということを表明するものではありません。お客様がご自分で実装される場合には、必要な
権利の許諾を受ける責任があります。Xilinx は、実装の妥当性に関するいかなる保証を行なうものではありません。この保証否認の対象となる保証には、権利侵害のクレームを受けない
ことの保証または表明、および市場性や特定の目的に対する適合性についての黙示的な保証も含まれます。
XAPP632 (v1.0) 2002 年 5 月 13 日
www.xilinx.co.jp
1
R
電子メールによる FPGA のプログラミング
各レイヤは上位または下位のレイヤから独立しており、受け取ったデータを処理して上位または下位の
レイヤに渡すという作業のみを行います。
•
物理レイヤ - 同軸ケーブル、光ファイバー、電話回線、電波など、デバイス間の通信に使用される
ハードウェアです。モデムと UART の組み合わせまたは Ethernet コントローラに接続されます。
•
ネットワーク アクセス レイヤ - このレイヤでは、受け取ったプロトコル (Ethernet など) の管理、
上位のレイヤから受け取ったパケットのカプセル化、上位レイヤのプロトコル用のアクセス レイ
ヤ プロトコルの分解を行います。PPP (モデムと UART) や Ethernet などが含まれます。
•
インターネット レイヤ - このレイヤは、インターネット プロトコル (IP) とも呼ばれます。イン
ターネット制御メッセージ プロトコル (ICMP) というサービス プロトコルも、このレベルにあり
ます。
IP プロトコルは、パケット ルーティングを提供します。エラー修復やフロー制御は行いません。こ
のプロトコルで行う作業には、送信側で大きいデータ ブロックを分割して受信側で復元するという
ものもあります。
0
8
Version
16
24
IHL
32
Type Of Service
Total Length
Identification
Time To Live
Flags
Protocol
Fragment Offset
Header Checksum
Source Address
Destination Address
x632_02_022802
図 2: IP ヘッダのフォーマット
ICMP プロトコルは IP プロトコルを拡張したもので、診断メッセージに使用されます。最も幅広く
使用されている ICMP コマンドは、ping ユーティリティです。
インターネット プロトコル スタックが機能するためには必ずしも全体のインプリメントは必要あ
りませんが、ping はインプリメントするべきです。このアプリケーション ノートでは、ping をイ
ンプリメントします。
0
8
16
24
Type
Code
32
Checksum
Identification
Sequence Number
Data ………………………………………………………
x632_03_022802
図 3: ICMP レイヤのフォーマット
•
2
トランスポート レイヤ - インターネット/イントラネットのトラフィックは、ほとんどすべてが
TCP および UDP という 2 種類のプロトコルによって処理されます。
-
伝送制御プロトコル (TCP) - こ れはデフ ォ ル ト のプ ロ ト コ ルで、 イ ン タ ーネ ッ ト のデー タ ト
ラ フ ィ ッ ク に幅広 く 使用 さ れてい る 規格です。 他のプ ロ ト コ ル (HTTP、 SMTP、 POP3) の下位
レ イ ヤ と し て使用 さ れます。
-
ユーザー データグラム プロトコル (UDP) - TCP ほ ど の信頼性がないので、 最近のアプ リ ケー
シ ョ ンではあ ま り 使用 さ れてい ません。
www.xilinx.co.jp
XAPP632 (v1.0) 2002 年 5 月 13 日
R
電子メールによる FPGA のプログラミング
0
8
16
24
Source Port
32
Destination Port
Sequence Number
Acknowledgement Number
Offset
Reserved
Flags
Window
Checksum
Urgent Pointer
Options ………………..
Data ……………………………
x632 04 030702
図 4: TCP ヘッダのフォーマット
•
電子メールの原理
アプリケーション レイヤ - アプリケーション レイヤには HTTP、FTP、POP3、SMTP などのプロ
トコルがあり、幅広く使用されているインターネット ブラウザや電子メール クライアント プログ
ラムに組み込まれています。このアプリケーション ノートは電子メールを対象にしているので、
電子メール プロトコルのみを扱います。
インターネットでメール メッセージの送受信を行うためのクライアント サーバ プロトコルで最も一般
的に使用されているのは、SMTP と POP3 です。通常、クライアントはデスクトップの電子メール プロ
グラムで、サーバはインターネット サービス プロバイダ (ISP) の SMTP サーバです。SMTP と POP3
は、どちらも単純なテキスト ベースのプロトコルを対象とする処理指向のクライアント サーバ プロト
コルです。リファレンス デザインは POP3 クライアントとして機能し、POP3 サーバから電子メールを
取得するという処理のみを行います。サーバとの接続が確立すると、POP3 接続がクライアントによっ
て開始され、電子メール メッセージの取得が始まります。処理中の通信の各段階で、相手側 (サーバ) か
らの応答 (アクション) を得る必要があります。
XAPP632 (v1.0) 2002 年 5 月 13 日
www.xilinx.co.jp
3
R
電子メールによる FPGA のプログラミング
POP3 Server
>
POP3 Client
An email has been sent to the POP3 client.
It’s waiting at the server side to be retrieved.
Open PPP connection
When a server–client connection has been
made, the POP3 client attempts to retrieve its
mail.
USER Command
The USER command is sent to the sever.
When the user is known at the sever side, a
+OK
positive acknowledge is replied.
PASS Command
The client then sends its password.
When it’s the correct password, again a positive
acknowledge is the response, else the link is
aborted.
+OK
STAT Command
The STAT command is the question for e-mail.
+OK xx yy
When mail is available, the server responds
with the number of mail messages waiting and
the total byte count.
RETR Command
The client wants to get the messages and send
the RETR command.
+OK
Message
After acknowledging to the retrieve command,
the server sends the messages to the client.
DELE Command
The client then can delete the message(s)
available at the server side. Again
acknowledged by the server.
+OK
QUIT Command
After retrieving the message(s), the client aborts
the link with the server. After the necessary
reply, the link is aborted and all messages
requested to be deleted are deleted.
x632_08_032502
QUIT Reply
図 5: POP_3 の通信
4
www.xilinx.co.jp
XAPP632 (v1.0) 2002 年 5 月 13 日
R
電子メールによる FPGA のプログラミング
外部コントローラ
SX52BD
Ubicom の SX52BD は、RISC アーキテクチャに基づく小さいコントローラです。高速な計算、柔軟な
I/O 制御、最大 100MHz の速度での効率的なデータ操作が可能です。ほとんどの命令は、単一サイク
ルのイベントに最適化されています。既製のソフトウェア モジュール (Virtual Peripheral) と組み合
わせると、インターネットやイントラネットでの可能性が広がります。このデバイスのデータシートは、
http://www.ubicom.com/products/sx/index.html にある Ubicom の Web サイトから入手できます。このリ
ファレンス デザイン例で使用するソフトウェア モジュールは、無料で入手できる SX-Stack です。この
モジュールに小規模な修正と追加を行って、FPGA のプログラムに使用します。
動作
インプリメンテーションは、SX52BD プロセッサと 2 つの UART ポートが含まれている Ubicom の
SXB-TCP01-02 ボードでテストされています。
Ubicom の Web サイトから、eSXv1_0_4.src という電子メール サーバ アセンブラのソース コードをダ
ウンロードします。このファイルで、POP3 デモと POP3 デバッグ機能を選択します。POP3 デバッグ
機能は、PPP ポートで受信した電子メールの内容をそのままデバッグ ポートに送信します。このコード
に、次のような修正を加えます。
•
場合によっては電子メールを FPGA のビットストリームとしては扱わないようにするメカニズム
をインプリメントする必要があります。ここで使用するメカニズムでは、ビットストリームが含ま
れるメールに特定の件名を与えます。
•
スレーブ シリアル ダウンロードをエミュレートする場合は、データの各ビット毎にクロック パル
スを生成する必要があります。
•
インターネット/イントラネット接続を中止するには、マイクロコントローラへの入力として
DONE ピンを使用する必要があります。
アセンブラのソース コードを修正するときのヒントには、次のようなものがあります。
•
Windows 2000 または Linux を使用する場合は、WIN32 および WIN98 オプションを設定または
設定解除します。
•
コードのオプション セクションで PO3DEBUG のコメントを解除すると、2 番目の UART である
デバッグ UART が使用されます。
•
POP3 制約セクションで POP3address1、POP3address2、POP3address3 を変更すると、デモの
デフォルト IP アドレスを修正できます。
•
2 番目の UART が使用するポートは、別のロケーションに変更できます。「debug_rx_pin」と
「debug_tx_pin」を探して、ピン番号を変更します。
•
POP3 のユーザ名とパスワードを変更できます。これを行うには、コードの canned ppp セクショ
ンで「USER_eSX」と「PASS_eSX」を変更します。
•
POP3 デモを初期化するサブルーチンは、ソース コードの 2164 行から始まります。これは、次の
ようになっています。
2164
IFDEF POP3DEMO
2165
;----------------------------------------------------------------2166
;Subroutine: AppInit
•
POP3 アプリケーションは、4439 行から始まります。
4439
4440
4441
;=======================================================
; TCP POP3 Demo Functions
;=======================================================
これは、POP3 ステート マシンとそのサブルーチンです。
•
「Subject: ...」という電子メール ヘッダを認識して、ビットを渡すか文字を転送するように、修正
できます。FPGA にダウンロードするビットストリームは、電子メールのバイナリ添付ファイル
として送信するか、Xilinx のツールで ASCII コードに変換してから電子メールの本文に組み込む
ことができます。採用する方法に従って、アセンブラのソース コードを修正する必要があります。
•
各データ ビットに合わせてクロック パルスを生成するには、デバッグ UART のコードを少し修正
します。
XAPP632 (v1.0) 2002 年 5 月 13 日
www.xilinx.co.jp
5
R
電子メールによる FPGA のプログラミング
このプロセッサは、TCP/IP の POP3 アプリケーションを実行するには最大限のパフォーマンスを発揮
しなければならず、データ メモリがほぼ完全に使用されます。このコントローラは、UART (PPP) ポー
トを介してのみ動作します。同じく Ubicom の IP2022 プロセッサを使用すると、より優れたソリュー
ションになります。
内部コントローラ
FPGA内部で使用できるマイクロコントローラ (MicroBlaze ソフト コアまたは PowerPC ハード コア
コントローラ) を使用して FPGA をコンフィギュレーションすることもできます。
この方法では、外部コントローラを使用する場合よりも少し複雑になり、追加ロジックが必要になり
ます。
内部コントローラを使用する場合は、ペリフェラルをダウンロードする必要があります。MicroBlaze ソ
フト コアを使用する場合は、コントローラもダウンロードする必要があります。コントローラとペリ
フェラルは、インターネットやイントラネットとの接続などのハードウェアの操作をする前に作動して
いなければなりません。
インターネットから新しいコンフィギュレーションをダウンロードするセットアップを図 6 に示します。
Xtal
TDI
TMS
TCK
TDO
VCC GND
Power Status
Master Mode
CoolRunner-II
FPGA
PROM 1
XC1800
TDI
TMS
TCK
TDO
OPB arbiter
DOUT
CEO
OE/Rst
CF
CE
DATA
CLK
PROG_B
DIN
CCLK
PROM 2
XC1800
New Conf
CEO
OE/Rst
CF
CE
DATA
CLK
OPB slave
(IRQ ctrl)
OPB slave
(GPIO)
OPB slave
(JTAG)
OPB slave
(UART or
Ethernet)
TDI
TMS
TCK
TDO
TDI
TMS
TCK
TDO
Processor
DONE
Ethernet PHY
RS232
x632_06_032502
図 6: 内部のダウンロード
動作
基本になる FPGA デザインを作成します。この基本デザインは、ペリフェラルがあるプロセッサかある
いは完全なかたちの初期 FPGA デザインになります。
•
6
初期 FPGA デザインがプロセッサといくつかのペリフェラルのみの場合、アプリケーションを起
動するときに実際のデザインをネットワークからダウンロードする必要があります。動作可能なデ
ザインが FPGA に含まれている場合は、新しいビットストリームのダウンロードが必要になるま
でネットワークへの接続を遅らせることができます。
www.xilinx.co.jp
XAPP632 (v1.0) 2002 年 5 月 13 日
R
電子メールによる FPGA のプログラミング
どちらの場合も、コントローラで TCP/IP スタックと POP3 アプリケーションを実行する必要がありま
す。これは、OS がプロセッサにインプリメントされている場合に可能です。そうでなければ、独立し
たコードとしてプロセッサに入力する必要があります。
半永久的なメモリ (フラッシュ PROM) のバンクを 2 つ以上デザインする必要があります。マスター ス
レーブ コンフィギュレーション モードの FPGA の数や使用する FPGA のサイズに従って複数のフラッ
シュ メモリ デバイスを 1 つのバンクに配置できます。たとえば、XC2VP20 のバンクには 2 つの
XC18V04 デバイスが必要です。この例では、FPGA の JTAG ポートを使用してフラッシュ メモリをコ
ンフィギュレーションします (CPLD も FPGA でコンフィギュレーションできます)。ただし、JTAG
ポートを制御するプロセッサ ペリフェラルをデザインする必要があります。
FPGA に送信するビットストリームは、JTAG に対応している必要があります。つまり、PROM をプロ
グラムするときに CF 出力にパルスを生成するコマンドが含まれている必要があります。PROM の CF
ピンを使用すると、FPGA をパワー ダウンしなくても JTAG CONFIG 命令で FPGA のコンフィギュ
レーションを開始できます。CF ピンはオープン ドレイン出力で、11101110 という JTAG CONFIG コ
マンドによって Low になります。FPGA へのデータ ストリームのソースを制御するため、ダウンロー
ド コントローラ デバイス (ここでは CoolRunner-II CPLD) を使用します。1 番目の FPGA は、マス
タ シリアル モードに設定する必要があります。この FPGA に、他の FPGA をスレーブ シリアル モー
ドで接続できます。
ダウンロード コントローラ
このデザインの主要な部分は、入力と出力の状態を示す 8 ビット レジスタです。2 つのダウン カウンタ
が必要になります。一つはダウンロード再試行ループの数、もう一つはビットストリーム全体の長さを
表します。このレジスタを表 1 に示します。
表 1: レジスタ
Valid
Conf_2
Done2
CEN_2
New
Conf_2
Valid
Conf_1
Done1
CEN_1
New
Conf_1
パワー ス
テータス
0
0
1
0
1
0
1
1
0
内部
入力
出力
入力
内部
入力
出力
入力
入力
フラッシュ PROM と CoolRunner-II CPLD は出荷時にプログラムされています。PROM 1 には基本的
な FPGA コードが格納されており、PROM 2 は空です。CPLD にはコントローラのデザインが格納さ
れており、PROM 0 に有効なコードが格納されていることを示すようレジスタがあらかじめ設定されて
います。
コントローラの機能
コントローラはステート マシンです。プロセスのフローチャートを、図 7 に示します。
1.
パワーアップ後、ダウンロード コントローラはあらかじめ定義された状態で起動し、有効なパワー
ステータスを待ちます。これによって、すべての電源が有効な電圧レベルに達していて FPGA のダ
ウンロードを開始できるかチェックします。
2. 「Valid Conf_1」と「Valid Conf_2」をチェックします。「Valid Conf_1」はあらかじめプログラム
されています。
3.
既知のコンフィギュレーションで PROM を有効にします。
4.
カウンタを起動します。
a. 「LoopCnt」は、必要なときにダウンロード操作を数回行うための小さいダウン カウンタです。
b. 「DldCnt」は、ビットストリームの転送に合わせてカウント ダウンします。
5.
FPGA の PROGRAM ピンにパルスを与えます。
6.
マスタ シリアル モードに設定されている FPGA は、クロックを CCLK ピンに出力し、PROM か
らデータを読み込みます。このとき、CCLK クロックが CPLD コントローラに供給され、CCLK
のパルスによって「DldCnt」がカウント ダウンします。
XAPP632 (v1.0) 2002 年 5 月 13 日
www.xilinx.co.jp
7
R
電子メールによる FPGA のプログラミング
7.
FPGA のダウンロードが正しく行われると、DONE ピンが High になります。この状態は、CPLD
コントローラにラッチされます。
8.
数クロック後、「DldCnt」ダウン カウンタが 0 になり、DONE ステータスを制御できるようにな
ります。
9.
DONE が High になると、次のようになります。
-
「Valid Conf_1」ビットと「Valid Conf_2」ビットがセットされます。
-
「New Conf_1」ビットと「New Conf_2」ビットがリセットされます。
-
DONE ステータスが 0 にリセットされます。
-
PROM が使用禁止になります。
10. FPGA が動作可能になります。
11. DONE ステータス ビットが High でない場合、
「LoopCnt」がデクリメントして、ステート マシン
はステート 4b に戻ります。
12. ダウンロードに失敗した場合は、「LoopCnt」が 0 になるまで次の処理が行われます。
-
「Valid Conf_1」ビットと「Valid Conf_2」ビットがリセットされます。
-
「New Conf_1」ビットと「New Conf_2」ビットがリセットされます。
-
LED が点滅して、FPGA をコンフィギュレーションできないことを示します。
13. 新しいビットストリームがフラッシュ PROM にロードされると、ダウンロードを処理するプロ
セッサは CPLD コントローラの「New Conf_1」ビットまたは「New Conf_2」ビットをセットし
て新しいコンフィギュレーションが可能になることを示します。
-
プロセッサは「Valid Conf_1」、「Valid Conf_2」、「New Conf_1」、「New Conf_2」の各ビッ
トを読み込んで、どのフラッシュ PROM バンクに新しいコンフィギュレーションを格納する
か調べます。
14. JTAG プログラミングが終了すると、PROM は CF パルスを生成します。
15. このパルスはステート マシンにトリガを与え、ダウンロードが始まります。
8
-
DONE が High になると、「Valid Conf_1」ビットまたは「Valid Conf_2」ビットがセットさ
れ、新しいコンフィギュレーションがデフォルトになります。
-
DONE が High にならない場合、ダウンロードが数回行われます。それでも DONE が High
にならない場合は、以前に有効だったコンフィギュレーションがダウンロードされます。
www.xilinx.co.jp
XAPP632 (v1.0) 2002 年 5 月 13 日
R
電子メールによる FPGA のプログラミング
B
1
C
N
PwrGood
On CCLK
Subtract DldCnt
CF
Y
N
Valid Conf 1
Valid Conf 0
Enable PROM
CEN 1 = 0
Enable PROM
CEN 0 = 0
DldCnt = 0
No Valid Conf
Y
New Conf 1
LoopCnt –1
New Conf 0
N
DONE = 1
Y
LoopCnt = Max
N
CEN 1 = 0
LoopCnt = 0
CEN 0 = 0
Set Valid
Conf bit
Y
DldCnt = Max
Reset New
Conf bit
N
New Conf
PROG pulse
1
Reset DONE
Y
Reset Valid
Conf bit
Reset New
Conf bit
Blink LED
C
A
Disable PROM
CEN = 1
x632_07_022802
図 7: コントローラのフローチャート
ステート マシンが図の A の状態になると、動作が停止します。図 7 を参照してください。FPGA は
CCLK パルスを生成し、ステート マシンは B の状態になり、「DldCnt」カウンタは 0 になるまでデク
リメントします。これで、コントローラのステート マシンの処理が終了します。
リファレンス
デザイン
SX52BD のアセンブラ参考コードを入手するには、
http://support.software911.com/ubicom/login.asp?op=8 にある Ubicom のサポート ポータルにログイン
してください。
終わりに
FPGA のプログラミングと再プログラミングは、インターネットまたはイントラネット システムを介し
て行うことができ、しかも非常に簡単です。このアプリケーション ノートとリファレンス デザインを
利用することで、このプロトコルをすぐに使用できます。
改訂履歴
次の表に、このドキュメントの改訂履歴を示します。
日付
バージョン
05/13/02
1.0
XAPP632 (v1.0) 2002 年 5 月 13 日
改訂内容
初期リリース
www.xilinx.co.jp
9
Fly UP