連載
» 2009年01月29日 00時00分 公開

追い出したソフトウェアを“ハードウェア化”する準備−ザ・組み込み−ソフトウェアのハードウェア化(6)(4/4 ページ)

[鳥海佳孝 設計アナリスト,@IT MONOist]
前のページへ 1|2|3|4       

論理シミュレータでの検証(準備)

 ハードウェア設計において、論理シミュレータであらかじめ動作を検証することはとても重要です。

 というわけで、ここでは無償の論理シミュレータ環境を構築してみましょう(なお、定番の論理シミュレータ「Modelsim」は、Linuxで動作する無償版がありませんので今回はパスします)。

 以下のサイトからファイルをダウンロードしてください(保存先はrootのホームディレクトリの下とします)。


 まずは波形表示ツール「GTKWave」からインストールしてみましょう。以下のように解凍し、インストールします。

# tar zxvf gtkwave-3.2.0R4.tar.gz
# cd gtkwave-3.2.0RC4
# ./configure 

 ここで「gperf」というコマンドがないといわれてエラーになってしまいます。

configure: error: Couldn't find a usable gperf program.
Please install gperf which is available from
ftp://ftp.gnu.org/pub/gnu/gperf/ 

 やはり……。しかし、もう愚痴はいいません!! 「gperf」というコマンドをインストールするために、上記のエラーメッセージにあるサイトからソースファイルをゲットして(やはり保存先はrootのホームディレクトリの下とします)、コンパイルを行います。


# tar zxvf gperf-3.0.3.tar.gz
# cd gperf-3.0.3
# ./configure
# make
# make install  

 そして、以下のコマンドを入力し、

# which gperf 

「/usr/local/bin」の下に「gperf」コマンドがインストールされたかどうかを確認します。

 「gperf」コマンドのインストールが完了したら、GTKWaveのインストールを再度実行します。

# cd /root/gtkwave-3.2.0RC4
# ./configure 

 しかし、またもやエラーになります……。今度は「GTK+」がないといって文句をいっています。これについては、Vine Linuxのパッケージからインストールする必要があります。先ほど説明した[Synapticパッケージマネージャ]で「gtk2」を検索して、インストールしてください。その際、依存関係のあるファイルもインストールされます。

 それでは、再びGTKWaveのインストールを行います。

# ./configure 

 今度は成功しました! 引き続き以下のコマンドを実行してインストールを続行します。

# make
# make install  

 インストールが完了したら、念のため以下のコマンドで「/usr/local/bin」の下に無事インストールされているかどうかを確認してください。

# which gtkwave 

 次に、論理シミュレータ「iverilog」のインストールを以下のようにして行います。

# tar zxvf verilog-20081118.tar.gz
# cd verilog-20081118
# ./configure
# make
# make install 

 今度はすんなりといきました!!(珍しい!?) そして、「which」コマンドで念のため確認します。

# which iverilog 

 こちらも「/usr/local/bin」の下にインストールされていればOKです。

波形表示

 以上の準備ができたところで、ダウンロードしたRTL(Register Transfer Level)とテストベンチをコンパイルしてみましょう。

 リセットとインクリメント/デクリメントをコントロールする信号の論理が反転していますので、リスト3のようにテストベンチファイル「T_UPDOWN10-2.v」を書き換えます。また、波形表示をするためのシステムタスク($dumpvars)を追加します。

module TEST_UPDOWN10;
reg clk, reset, dec;
wire [3:0] count;
 
parameter CYCLE = 100;
parameter SIM_SEC1_MAX = 4;
 
UPDOWN #(.SEC1_MAX(SIM_SEC1_MAX)) i1(.RESET(reset), .CLK(clk), .DEC(dec), .COUNT(count));
 
always #(CYCLE/2)
clk = ~clk;
 
initial
begin
$dumpvars;
reset = 1'b1; clk = 1'b0; dec = 1'b0;
#CYCLE reset = 1'b0;
#(15*CYCLE*SIM_SEC1_MAX) dec = 1'b1;
#(10*CYCLE*SIM_SEC1_MAX) $finish;
end
 
initial
$monitor($time,,"clk=%b reset=%b count=%b", clk, reset, count);
 
endmodule
 
リスト3 テストベンチファイル「T_UPDOWN10-2.v」(書き換え版) →ダウンロードはこちら

 ここまで準備できたところで、以下のようにコンパイルして実行します。

# cd /home/tori/UPDOWN10
# iverilog T_UPDOWN10-2.v UPDOWN10.v 

 コンパイルが成功すると「a.out」という実行ファイルが出来上がりますので、以下のように実行してみてください。

# ./a.out 

 標準出力にシミュレータの実行結果が出力されて、結果を確認できるはずです。また、テストベンチファイルに「$dumpvars」というシステムタスクを追加したので、カレントディレクトリに「dump.vcd」という名前の「VCD(Value Change Dump)」ファイルが出来上がっています。

 それでは、以下のコマンドで波形表示をしてみましょう。

# gtkwave dump.vcd 

 GTKWaveの起動後、画面左上の[SST]ツリーの最上位階層にある「TEST_UPDOWN10」をクリックすると、同じく画面左の[Signals]ツリーに各種信号が表示されます。ここで波形表示させたい信号を選択([Shift]キーで複数選択可)し、画面左下の[Append]ボタンを押してください。

 いかがでしょうか? 画面14のように波形表示されればOKです。

波形表示 画面14 波形表示


 今回はハードウェアの開発環境を整えましたが、ソフトウェア編で開発環境を構築した際と同じような苦労をさせられました……。組み込みの神様は必ず試練を与えてくださるのですね。こうしたこともあり、今回は開発環境の構築に思いのほか、誌面を使ってしまいました。

 というわけで次回こそ、ハードウェア側に追い出したソフトウェア部分を「どうやってハードウェア化するのか」「どうやってFPGAに肩代わりしてもらうのか」について具体的に見ていきます。また、「マイコンとFPGAボードをどうやって接続するのか」についても触れたいと思います。ご期待ください!(次回に続く)


前のページへ 1|2|3|4       

Copyright © ITmedia, Inc. All Rights Reserved.