CCWO

挫けそうになるブログ #音楽 ##ライブ ##弾いてみた #programming ##Python ##C ##C++ ##VSCode ##Markdown ##TeX ##Git #電子工作 ##エフェクター ##PIC ##RX,RZ ##STM32 ##FPGA ##Raspberry Pi ##Ubuntu ##Fusion 360 #スポーツ ##筋トレ

FPGA MAX10 Topモジュールの作成

開発環境

Board MAX10 FB
IDE Quartus Prime Lite Edition
OS Windows 10 pro 64bit
Debbuger USB Blaster Rev C

こちらの記事で作成したプロジェクトから
ccwo.hatenablog.jp
このような画面が生成されたはずです。
f:id:CCWO:20170905044712p:plain:w800
Topモジュールを作成するために、新しいVerilog HDL Fileを追加します。画面左上の白紙マークか、File→New(Ctrl+N)で新規ファイルを追加します。
f:id:CCWO:20170905044906p:plain
Verilog HDL Fileを選択して、OKを押します。
f:id:CCWO:20170905045108p:plain:w800
プロジェクトの作成で決定したTopモジュールネームでVerilog HDL Fileをプロジェクトフォルダの直下に保存します。
FPGA.v

`define CYCLE_1SEC 48000000 // 48MHz

//---------------------------------
// Top pf the FPGA
//---------------------------------
module FPGA
(
	input  wire clk,			// 48MHzClock
	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

ソースはこちらを記入しました。今、MAX10には48MHzのクロックが供給され、ResetボタンとLEDが接続されていることが想定されています。
この状態で、左真ん中やや下のTaskからAnalysis & Synthesisを行います。(Verylog HDL Fileが正しいものであるかの検証みたいな感じです。)
f:id:CCWO:20170905045518p:plain:w800
無事に検証が完了すると、TaskのAnalysis & Synthesisに緑色のチェックがつき、Compilation Repotが表示されます。
これでTopモジュールの作成は完了です。