FPGA MAX10(2)-LEDチカチカ回路(1)

このエントリーをはてなブックマークに追加

前回、FPGA MAX10搭載基板と書き込み器製作用プリント基板の初期セットアップが完了したので、今回はLEDチカチカ回路を作ってみようと思います。

まずは、Quartus Primeを実行します。

Windowsのスタートメニューの中から実行できます。

QurtusPrimeLiteEdition_001

新規プロジェクトを作成します。

作成ディレクトリは任意で構いませんが、日本語は使用しない方がよさそうです。

プロジェクト名はFPGAにしました。

私の使用しているデバイスは「10M08SAE144C8GES」のようです。

シミュレーション・ツール形式は「Verilog HDL」に設定しておきます。

次にVerilog HDL Fileを作成します。

そして下記のようにハードウェア言語「Verilog HDL」を入力します。


`define CYCLE_1SEC 48000000

//---------------------------
// Top of the FPGA
//---------------------------
module FPGA
(
	input wire clk,			//48MHz Clock
	input wire res_n,			//Reset Switch
	output wire [2:0] led	//LED Output
);

//-----------------------------
// Counter to make 1sec Period
//-----------------------------
reg [31:0] counter_1sec;
wire period_1sec;

always @(posedge clk, negedge res_n)
begin
	if (~res_n)
		counter_1sec <= 32'h00000000;
	else if (period_1sec)
		counter_1sec <= 32'h00000000;
	else
		counter_1sec <= counter_1sec + 32'h00000001;
end

assign period_1sec = (counter_1sec == (`CYCLE_1SEC - 1));

//------------------------------
// Counter to make LED signal
//------------------------------
reg [2:0] counter_led;

always @(posedge clk, negedge res_n)
begin
	if (~res_n)
		counter_led <= 3'b000;
	else if (period_1sec)
		counter_led <= counter_led + 3'b001;
end

assign led = ~counter_led;	//LED on by low level

endmodule

Verilog HDL」言語については後ほど詳細を調査しようと思います。

とりあえず動作させる事を優先します。

次にTasks内の「Analysis & Synthesis」を右クリックしてStartを選択します。

これは「Verilog HDL」言語の解析と合成を実行しています。

分からない事が多いですが、ようは構築したコードが動作するかどうかチェックして、Quartus Primeにモジュールの階層構造や信号名を認識させているようです。

次に外部端子への信号アサインを行います。

メニューより[Assignments]→[Pin Planner]を選択します。

QurtusPrimeLiteEdition_PinPlanner_001

clkにPin_27を、led[2]にPIN_121、led[1]にPIN_122、led[0]にPIN_120、res_nにPIN_123を設定します。

メニューより[Processing]→[Start Complication]を選択します。

Tasks内からの実行など、他にも実行方法はあります。

次にMAX10版FLASHメモリにでなく、FPGA内のコンフィグレーション用のSDRAMへ書き込みます。

SDRAMに書き込むので、電源を落とすと書き込みはなくなります。

Tasks内のProgram Deviceを右クリックして、Openを選択します。

QurtusPrimeLiteEdition_Programmer_001

Add Fileより先程作成したsofファイルを選択して、Program/Configureにチェックを入れて、Startを選択します。

プログレスバーが100%になれば、コンフィグ成功のはずすが・・・動作しない。

原因を調査したところ、上記で構築したコードが正しくなかったようです。

※上記コードは修正後のコードとなります。

FLASHメモリに書き込む際は、pofファイルを選択して、CFM0のProgram/Configureにチェックを入れて、Startを選択します。

FLASHメモリに書き込んだ場合は、電源を落として、再度起動してもLEDが光るのが確認できます。