検索
連載

理論より実践! FPGA開発をスタートしよう触って学ぼう FPGA開発入門(1)(3/3 ページ)

「どこから始めたらよいのか分からない」というFPGA開発入門者を対象に、低価格FPGAボードを使って実際に動かしながら解説

PC用表示 関連情報
Share
Tweet
LINE
Hatena
前のページへ |       

プログラムの修正と反映

ソースを変更してみよう

 次は、リスト1のプログラムを少し修正してみましょう。

 変更後の仕様は、「スイッチが何も押されていない(000)ときは右端の赤色LEDが点灯し、スイッチがすべて押されている(111)ときは左端の赤色LEDが点灯する」です。

 ソースを修正する前に、リスト1の動作のポイントをおさらいしておきましょう。

  • FPGAボード上のスイッチ入力が負論理(「0」でスイッチがON)になっている
  • FPGAボード上の赤色LED出力が負論理(「0」を出力すると赤色LEDが点灯)になっている

 上記のポイントを考慮して、リスト1を変更します。今回は特に詳しく説明はしませんが、入力のA、B、Cと出力の8bitのYをそれぞれ反転させればよいのです。Verilog-HDLでの反転の演算子は「~」です。これを使用して修正します。

 ISE WebPACK上でdec.vをリスト2のように書き換えて、上書き保存([Ctrl]+[S]キー)します。

1  module DECODER(A,B,C,Y);
2  input A,B,C;
3  output [7:0] Y;
4  reg [7:0] Y;
5  
6  always @(A or B or C)
7  begin
8     case(~{A,B,C})
9             3'b000:Y=~(8'b00000001);
10            3'b001:Y=~(8'b00000010);
11            3'b010:Y=~(8'b00000100);
12            3'b011:Y=~(8'b00001000);
13            3'b100:Y=~(8'b00010000);
14            3'b101:Y=~(8'b00100000);
15            3'b110:Y=~(8'b01000000);
16            3'b111:Y=~(8'b10000000);
17            default:Y=8'bxxxxxxxx;
18    endcase
19 end
20 endmodule
リスト2 変更を加えた「3入力8出力のデコーダ」のVerilog-HDLソース

 ソースを修正すると、画面左の[Processes]ツリーにある「Synthesize - XST」「Implement Design」「Generate Programming File」にオレンジの「?」マークが表示されます。これはソースファイルがアップデートされたことを示すので、再びFPGAデータの生成を行う必要があります。

ソースファイルがアップデータされたときの様子
画面6 ソースファイルがアップデータされたときの様子

 それでは、もう一度「配置配線」「FPGAのデータ生成」を行いましょう。画面左の[Sources]ツリーにある「DECODER(dec.v)」を選択し、同じく画面左の[Process]ツリーにある「Generate Programming File」を右クリックして[Run]を実行します(注)。

※注:
「論理合成」も自動的に実行してくれます。


 正常終了したらBitCfgを起動して、FPGAデータをボードにダウンロードしてください。

 さて、今度はいかがでしょうか? スイッチが何も押されていないときには、右端の赤色LEDだけが点灯し、スイッチがすべて押されているときには左端のLEDだけが点灯しているはずです。スイッチの押し方は全部で8通りありますので、一通りボード上で動作を確認してみましょう。

 このようにHDLを使用すると、入力や出力の反転程度の変更であれば非常に簡単に行えます。これを回路図で行うと、入力3bitと出力8bitのすべてに反転素子を置く必要があり、修正が非常に面倒です。この修正変更の容易さは、HDLで設計するメリットの1つであるといえます。また、回路修正をした場合にその変更をすぐに回路に反映できる点がFPGAの一番の特長といえます。



 いかがでしたでしょうか? 今回は肩慣らしということで、詳しい説明抜きにFPGAボードに回路を作成する手順を紹介しました。この先の連載では、もう少し詳しくFPGAの中身やVerilog-HDLの文法的な要素を解説していきたいと思います。

 次回は、「7セグメントLEDを使った回路作成」を中心にVerilog-HDLについても解説する予定です。(次回に続く)

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

関連キーワード

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


Copyright © ITmedia, Inc. All Rights Reserved.

前のページへ |       
ページトップに戻る