計算機アーキテクチャ特論 Chapter9(6-7) 学籍番号:6311622 小野寺 道寛
Chapter 9.6 テストベンチの作り方
テストベンチを作るためには ここでのテストベンチとは? テストベンチ作成に必要なこと(概要) ハードウェア部とソフトウェア部の性能テストを行うシステムのこと テストベンチ作成に必要なこと(概要) プラットホーム(テストを行う場所)の作成 FPGAベンダツールを用いて、プラットホームの環境設定を行う プラットホームを実機(FPGAのプロトタイプボード)に実装する Xilinx Platform Studioを使用する 使用するボードは、 VirTexⅡプロトタイプボード
VirTexⅡプロトタイプボード 実際に用いるVirTexⅡプロトタイプボードはMemec Design社製 V2MB1000ボード テストベンチに必要な入出力の資源・便利なその他機能が揃っている。
前準備 生成法(概要) テストベンチの作成に必要となるものを生成する必要がある プラットホームの構築時に使用するハードウェア(HDLファイル) 3DESアルゴリズムが表記してあるファイル テストベンチのソースファイル等 生成法(概要) Impulse C の統合開発環境ツールであるCoDeveloperを使用する。
前準備 生成法(詳細) 1.↓のような生成オプションダイアログで設定を行う。 1 2 A B 3 C D
FPGAのプロトタイプボード、ソフトウェアプロセッサコア、バスアーキテクチャ等 前準備 考慮すべき点1 プラットホームサポートパッケージの指定 テストベンチで使用するものを考慮して指定する必要がある。 FPGAのプロトタイプボード、ソフトウェアプロセッサコア、バスアーキテクチャ等 今回は、 Xilinx MicroBlaze FSLを指定する。 考慮すべき点2 項目Aには、ハードウェア部のソースを生成するディレクトリを指定 項目Bには、ソフトウェア部のソースを生成するディレクトリを指定 項目C,Dには、生成されたソースの移動先ディレクトリを指定 考慮すべき点3 チェックが入っているかどうか確認する(入っていなかったら、チェックを入れる)。 FPGAのコンポーネント(トリプルDES暗号化コア)がMicroBlazeプロセッサとは異なるクロック周波数で動作することを意味する。
前準備 生成法(詳細) 2. CoDeveloperの[Project]メニューから[Generate HDL]を選択する。 これを選択する
前準備 3.コンパイルが行われ、HDLファイル等の様々なファイルが出力される。
Xilinx Platform Studio(XPS)という統合環境ツールを用いて、 プラットホームの作成について Xilinx Platform Studio(XPS)という統合環境ツールを用いて、 プラットホームの作成・環境設定を行う。 XPSを使用する前に、プロジェクトディレクトリの中にEDKという名前のサブディレクトリを作成しておく 後に、前準備の段階で 生成されたファイルを ここに移すことになる このディレクトリにはXPSで作られる プロジェクトファイルが出力される
プラットホームの作成について (プロジェクトファイルの作成) XPSを起動する。 Base System Builder Wizardを選択する。 新しいプロジェクトファイル(system.xmp)を作成する。 Project/system.xmp 以降、XPSを使うことを前提に話を進めていく。 System.xmpの作成 処理2 処理3
プラットホームの作成について (使用するボードの選択) 次に進むと、使用するボードを選択する画面が現れる。 これを選択 このように入力すればよい
プラットホームの作成について (使用するプロセッサの選択) 次に進むと、使用するプロセッサを選択する画面が現れる。 これを選択
プラットホームの作成について (MicroBlazeの環境設定) 基準クロックの周波数 プロセッサバスの クロック周波数 次に進むと、 右図のようなMicroBlazeの 環境設定を行う画面が現れる。 どちらの周波数も100MHzに設定 基準クロック: CPUや周辺機能など各装置の 同期を取るための周期的な信号 これを選択 プロセッサバス: コンピュータ内部で、メモリや入出力装置 などとCPUを接続するデータ伝送路のこと デフォルトでは8KBなので、 64KBに増加させておく。
プラットホームの作成について (I/Oインターフェイスの設定) RS232デバイスとSRAM_256Kx32を選択する。 なお、選択する際には次のようにパラメーターを設定する I/0 Device: RS232 Peripheral: OPB UARTLITE Baudrate(データの伝送速度): 9600(bit/s) Data Bits(1個のデータにおけるビット数): 8 Parity(パリティチェックするかどうか): NONE Use Interrupt (割り込み処理を行うかどうか): disabled RS232デバイスの選択 I/0 Device: SRAM_256Kx32 Peripheral: OPB EMC SRAM_256Kx32の選択 RS232とは、パソコン、モデム等を接続するシリアル通信方式のシリアルインターフェースの一つ。 つまり、シリアルポートの一つ。 シリアルポートとは、1本の信号線を使って1ビットずつ順番にデータを送受信するシリアル転送方式の通信コネクタのこと。
プラットホームの作成について (ソフトウェアの設定ダイアログ) 次に進むと、ソフトウェアの設定ダイアログが表示される。 チェックを入れる 入出力のインターフェースとしてRS232を選択する
プラットホームの作成について (環境設定の完了) 次に進むと、 今まで作成してきた プラットホームの概要が表示される。 [Generate]ボタンを クリックすることによって、 プラットホームとプロジェクトファイルが 生成される。
前準備で作成したファイルを XPSプロジェクトに移動 前準備で作成したファイルをEDKディレクトリに移動させる。 目的: XPSプロジェクトでも、前準備で生成されたHWを利用できるようにするため。 方法: CoDeveloperを起動する。 「 Export Generated Hardware options 」というコマンドを選択 「 Export Generated Software options 」というコマンドを選択
次に、先程EDKに移した3DESハードウェアを HWのプラットホームへのインポート 次に、先程EDKに移した3DESハードウェアを プラットホームにインポートする。 インポートするためには 3DESハードウェアのIPコア(fsl_des)をプラットホームに追加する。 fsl_desをFSLバスに接続する。 最初に行うこと XPSを起動する。 先程作成したSystem.xpsを開く。
fsl_desのプラットホームへの追加 fsl_desの追加方法 「Project→Add/Edit Cores」という項目を選択して、ダイアログを開く。 右下のリストからfsl_desを選択し、Addボタンを押す。 使用可能な 全てのIPコア 処理2 処理2によって 追加された
FSLバスのパラメーターの設定 パラメーターの設定方法 fsl_desをFSLバスに接続する前に、FSLバスのパラメーターの設定を行う。 ここをクリック パラメーターの設定方法 これを選択 理由は分からないけど、おそらくトリプルDESアルゴリズムを使用するためだと思われる。 具体的に言うと、トリプルDESアルゴリズムでは、暗号化→復号化→暗号化というプロセスを3回行うので、 1個のコネクションにつきその処理を1回行うためだと思われます。 3を入力 使用するFSLバスのコネクション数を表す。 この場合は3個使用するということ。 クリック
fsl_desとFSLバスのコネクションの作成 コネクションの作成法 これを選択 ここをクリック ここを3回クリックする。 3つのコネクションを作成するため。 fsl_v20_0に接続 fsl_v20_1に接続 fsl_v20_2に接続
3DESハードウェア用の二次クロックの作成 MicroBlazeプロセッサとは異なるクロック(二次クロック)を作成する。 作成法 ダイアログの[Ports]タグをクリックする。それ以降の処理は以下の通り。 co_clkポートのネット名を変更 (二次クロックの完成) リストに追加される clkとco_clkを追加
ここで、作成した二次クロックに外部ポートを追加する。 方法 Make Externalを選択後、 ここに追加される 二次クロックを持つ ポートを選択する これをクリック (外部ポートの追加)
FSLバスのコネクション用クロックの接続 方法 ダイアログの[Ports]タグをクリックする。それ以降の処理は以下の通り。 FSL_ Clkポートにはsys_clk_sを SYS_Rstポートにはnet_gndを 選択する。 各コネクション(fsl_v20_0,fsl_v20_1,fsl_v20_2)の FSL_ ClkとSYS_Rstポートを追加
OPBタイマーコアの追加 OPBタイマーのIPコアを追加する必要がある。 このタイマーは、3DESアルゴリズムのSWとHWの処理速度を 計るために使用される。 追加法 Add/EditダイアログのPeripheralsタブを選択して、opb_timerを追加する(opb_timer_0が生成される)。 Bus Connectionsタブを選択して、mb_opdバスにopb_timer_0を接続する。 Portsタブを選択し、 opb_timer_0 のOPB_Clkポートにsys_clk_sを選択する 追加法は、先程のfsl_desの追加とほぼ同じなので、 箇条書きのみで示す。
各周辺機器のアドレスが自動的に割り当てられる。 周辺機器のアドレスの指定 例:opb_timer プラットホームの作成に使われた周辺機器のアドレスの指定を行う。 方法 ここをクリック ここをクリックすることによって、 各周辺機器のアドレスが自動的に割り当てられる。
3DESハードウェアを動かすときに使うので、追加する必要がある。 2個目のシステムクロック端子の追加 2個目のシステムクロック端子は 3DESハードウェアを動かすときに使うので、追加する必要がある。 追加法 system.ucfファイル(プロジェクトファイルの下にある)を開く。 「 Net sys_clk_2 LOC=A11; 」という記述を追加する。 なお、今回使用するボードにおいて、A11は24Mhzの周波数を意味する。
テストベンチを表すソフトウェアのソースファイルを アプリケーションSWのインポート テストベンチを表すソフトウェアのソースファイルを プロジェクトにインポートする 方法 4.3を行うと、この画面が表示される。ここで、co_init.cとdes_sw.cを選ぶ。 1.ここをクリック さっきまではプラットフォームを作ってたけど、テストベンチアプリをインポートするよ。 2.ここにあるTestApp.cを削除。 3.ここで右クリックして「Add Files」を選択。
FPGAのビットマップイメージの生成 ボードにアプリケーションをダウンロードするために、 FPGAのビットマップイメージを生成する。 生成法 1.XPSで、「Tools→Generate Bitstream」を選択する。 この処理で、FPGAのビットマップイメージが出力されるが、 ソフトウェアのバイナリイメージは出力されない。 2.「Tools→ Build All User Applications」を選択する。 この処理によって、ソフトウェアのバイナリイメージが出力される。 3.「Tools→ Update Bitstream」を選択する。 この処理によって、処理2で出力されたソフトウェアのバイナリイメージが 処理1で出力されたFPGAのビットマップイメージに追加される。
アプリケーションのダウンロードと実行 1.Hyper Terminalウィンドウを開く。 この処理によって、ボード上のRS232の周辺機器に 接続されたシリアルポートへ作成したプラットホームを接続します。 2.ボードの電源をオンにして、「Tools→Download」を選択する。 処理2の後に、 このようなメッセージが 表示されれば、テストは成功。 暗号化の実行のために 消費した時間
Chapter 9.7 まとめ
このテストを用いて、アルゴリズムの迅速な検証や 様々な入力パターンの試行が可能である。 この章では、ソフトウェア部分がストリームベースの通信を使用して、ハードウェアのプロセスと直接通信する混合ハードウェア/ソフトウェアアプリケーション(即ち、テストベンチ)の作成を行った。 このテストを用いて、アルゴリズムの迅速な検証や 様々な入力パターンの試行が可能である。 次章では、このテストを用いて、システムの性能の最適化について議論する。