ちなみに、これで生成されたソースコードは以下「List1」になる。
ソースコードの説明はまた次回以降に説明するとして、これをこのままコンパイルしてファイルを生成、ダウンロードしてもLEDに変化はない。
`timescale 1ns / 1ps ////////////////////////////////////////////////////////////////////////////////// // Company: Axelsys // Engineer: Greg Miller // // Create Date: 11:21:08 08/21/2014 // Design Name: LED // Module Name: LED_Verilog // Project Name: Altera MAX10 Breakout Board // Target Devices: 10M08SAE144C7G // Tool versions: 14.0 // Description: // LEDs, D1 through D5 will blink on for 1/2 second and off for 1/2 second. // Clock is operating at 50MHz. // // Dependencies: // // Revision: // Revision 0.01 - File Created // Additional Comments: // ////////////////////////////////////////////////////////////////////////////////// module LED_Flash_all( input clk, output LED1, output LED2, output LED3, output LED4, output LED5 ); reg[15:0] div_cntr1; reg[9:0] div_cntr2; reg dec_cntr; reg half_sec_pulse; initial begin div_cntr1 = 0; div_cntr2 = 0; dec_cntr = 0; end always@(posedge clk) begin div_cntr1 <= div_cntr1 + 1; if (div_cntr1 == 0) if (div_cntr2 == 762) begin div_cntr2 <= 0; half_sec_pulse <= 1; end else div_cntr2 <= div_cntr2 + 1; else half_sec_pulse <= 0; if (half_sec_pulse == 1) dec_cntr <= !dec_cntr; end assign LED1 = dec_cntr ; assign LED2 = dec_cntr ; assign LED3 = dec_cntr ; assign LED4 = dec_cntr; assign LED5 = dec_cntr ; endmodule *****
そこで最後の5行を書き換えてみた。
assign LED1 = dec_cntr ; assign LED2 = dec_cntr ; assign LED3 = dec_cntr ; assign LED4 = dec_cntr; assign LED5 = dec_cntr ;
から
assign LED1 = dec_cntr ; assign LED2 = !dec_cntr ; assign LED3 = dec_cntr ; assign LED4 = !dec_cntr; assign LED5 = dec_cntr ;
に変更してみた。
dec_cntrは0か1の値を取り、0ならLEDが消灯、1なら点灯する。そこでLED 1/3/5とLED 2/4に与える値を反転させることで、互い違いに点滅させようというものだ。この変更をQuartus IIの画面上で行ったら、やはり左側、Entityの下にある“Tasks”画面で“Compile Design”をクリックすると、問題がなければ数分(環境による:2回目以降は1分かからなかった)後にコンパイルが完了するはずだ(Photo25)。
Copyright © ITmedia, Inc. All Rights Reserved.