ShrikeLite AIに聞いて試した5分周回路

電子工作

 AI(Gemini)に次のような質問を投げかけて得られた回答を元に、ShrikeLiteで5分周回路を試してみました。質問「ステートマシンを利用してシステムクロックを5分周する回路をverilogで記述してください」

 Geminiの回答をForgeFPGAworkshopのmain.vの下の方に別のmoduleとしてコピペし、topモジュール内で次のように記述しました。Verilogの文法は勉強中ですが、AIに教えてもらいながら何とかやりたいことはできました。

	//divider to generate 10MHz
	clock_divider_5 divid5(
		.clk(clk),
		.reset_n(rst_n),
		.clk_out(clk10MHz)
	);
	reg clk10MHz;
	assign debug1 = clk10MHz;

 Geminiの回答では、デューティー比が1:5になるので、次のように変更して2:5にしました。冒頭の画像は、その出力波形です。デジタルオシロの表示では周波数は10.09MHz前後でした。

            case (state)
                S0: begin
                    state   <= S1;
                    clk_out <= 1'b1; // S0のタイミングでHighを出力
                end
                S1: begin
                    state   <= S2;
                    clk_out <= 1'b1; // same as S1
                end
                S2: begin
                    state   <= S3;
                    clk_out <= 1'b0;
                end
                S3: begin
                    state   <= S4;
                    clk_out <= 1'b0;
                end
                S4: begin
                    state   <= S0;
                    clk_out <= 1'b0;
                end
                default: begin
                    state   <= S0;
                    clk_out <= 1'b0;
                end
            endcase

コメント