次は、リスト1のプログラムを少し修正してみましょう。
変更後の仕様は、「スイッチが何も押されていない(000)ときは右端の赤色LEDが点灯し、スイッチがすべて押されている(111)ときは左端の赤色LEDが点灯する」です。
ソースを修正する前に、リスト1の動作のポイントをおさらいしておきましょう。
上記のポイントを考慮して、リスト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
ソースを修正すると、画面左の[Processes]ツリーにある「Synthesize - XST」「Implement Design」「Generate Programming File」にオレンジの「?」マークが表示されます。これはソースファイルがアップデートされたことを示すので、再びFPGAデータの生成を行う必要があります。
それでは、もう一度「配置配線」「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についても解説する予定です。(次回に続く)
Copyright © ITmedia, Inc. All Rights Reserved.