単相同期回路で設計する理由触って学ぼう FPGA開発入門(4)(4/4 ページ)

» 2007年04月12日 00時00分 公開
[鳥海佳孝 設計アナリスト,@IT MONOist]
前のページへ 1|2|3|4       

シミュレーション(2)

 そこで、parameterの値の受け渡し機能(Verilog-HDLの機能)を使用します。この方法を用いれば、RTL記述に手を加えることなくシミュレーションを実行できます。

 具体的には、リスト3の8行目にあるように、テストベンチの「10進のアップ・ダウンカウンタ」をインスタンスしている部分に渡したいparameterの値を記述します。


1  module TEST_UPDOWN10;
2  reg clk, reset, dec;
3  wire [3:0] count;
4  
5  parameter CYCLE = 100;
6  parameter SIM_SEC1_MAX = 4;
7  
8  UPDOWN #(.SEC1_MAX(SIM_SEC1_MAX)) i1(.RESET(reset), .CLK(clk), .DEC(dec), .COUNT(count));
9  
10 always #(CYCLE/2)
11          clk = ~clk;
12  
13  initial
14  begin
15          reset = 1'b0; clk = 1'b0; dec = 1'b1;
16          #CYCLE reset = 1'b1;
17          #(15*CYCLE*SIM_SEC1_MAX) dec = 1'b0;
18          #(10*CYCLE*SIM_SEC1_MAX) $finish;
19  end
20  
21  initial
22          $monitor($time,,"clk=%b reset=%b count=%b", clk, reset, count);
23  
24  endmodule
リスト3 10進のアップ・ダウンカウンタのテストベンチ その2(T_UPDOWN10-2.v

 6行目のように記述することで、10進のアップ・ダウンカウンタ内で使用されているparameterの値が「4」として扱われて、シミュレーションが実行されます。

 インスタンスしたポートと信号を接続するイメージで記述すれば大丈夫です。このテストベンチとリスト1のRTL記述を使用してシミュレーションを行います。この結果を画面2に示します。

波形表示によるシミュレーション結果の確認 画面2 波形表示によるシミュレーション結果の確認

 いかがでしょうか? 見事に4クロックに1回、カウンタの値が変化している様子が分かります。このようにシミュレータ上では“1秒の動作を確認する”のではなく、“ENABLE信号が正しく10進のアップ・ダウンカウンタに効いているか”を検証するのです。1秒動作の確認は実機で行えばよいのです。

 このように検証する項目を分けて、効率的にRTLの動作を確認することがとても重要です。

FPGAボード上での動作確認

 それでは、出来上がった10進のアップ・ダウンカウンタをFPGA上で動作させてみましょう。

 テストベンチでparameterの値を渡したので、リスト1のRTL記述を特に変更する必要はありません。論理合成・配置配線を行って、FPGA上にダウンロードします。

※注:
「ISE WebPACK」などツールの使用方法は、連載第1回「理論より実践! FPGA開発をスタートしよう」を参考にしてください。


 見事に単相同期回路の方式を採用して、LEDが1秒でアップ・ダウンの動作をしているはずです。



 今回は、「単相同期回路」と「1秒で動作するようなカウンタをいかにしてシミュレーションするか」について解説しました。実践でも役に立つ重要な内容となります。特に単相同期回路に慣れていない設計者の方は、この記述スタイルや考え方をしっかりとマスターしてください。高速・複雑な設計になればなるほど必要な技術要素になるはずです。

 さて、次回は“10進カウンタの出力を7セグメントLEDに出力”させます。すでに10進のアップ・ダウンカウンタとデコーダが完成していますので、これらをどのように接続して記述するのかを中心に解説します。(次回に続く)

7セグメントLED 写真1 7セグメントLED


関連キーワード

FPGA | 回路 | 配線 | 設計 | 組み込み


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

Copyright © ITmedia, Inc. All Rights Reserved.