FC2カウンター FPGAの部屋 Tang Primer 25K の PMOD-LED モジュールを使って L チカする1
fc2ブログ

FPGAやCPLDの話題やFPGA用のツールの話題などです。 マニアックです。 日記も書きます。

FPGAの部屋

FPGAの部屋の有用と思われるコンテンツのまとめサイトを作りました。Xilinx ISEの初心者の方には、FPGAリテラシーおよびチュートリアルのページをお勧めいたします。

Tang Primer 25K の PMOD-LED モジュールを使って L チカする1

今まで、Tang Primer 25K Dock ボード上の LED を使用して、L チカをしてきたが、PMOD-LED モジュールも 2 個購入したので、この PMOD LED モジュールを使って L チカしてみよう。

PMOD-LED モジュールを示す。
Tang_Primer_25K_151_240215.jpgTang_Primer_25K_152_240215.jpg

Tang Primer 25K Dock ボードに 2 個の PMOD-LED モジュールを挿入した。
Tang_Primer_25K_153_240215.jpg

Tang Primer 25K で Lチカする2(シミュレーション2)”の blink.sv を PMOD-LED モジュールを使って L チカするために blink2.sv を作成した。
blink2.sv を示す。

// blink2.sv
// 2024/02/14 by marsee

module blink2 #(
    parameter COUNT_LIMINT = 32'd12500000 // 50MHz / 4
) (
    input clk,
    output led,
    output pmod_led
);
    //wire clk;
    logic led = 0;
    logic [7:0] pmod_led[0:2];
    logic [31:0] count = 0;
    integer i;

    always_ff @( posedge clk ) begin : COUNTER
        if(count < COUNT_LIMINT-1) begin
            count <= count + 32'd1;
        end else begin
            count <= 32'd0;
        end
    end

    always_ff @( posedge clk ) begin : LED_OUTPUT
        if(count == COUNT_LIMINT-1) begin
            led <= ~led;
        end
    end

    always_comb begin
        for(i=0; i<3; i=i+1) begin
            if(led) begin
                if(i == 0)
                    pmod_led[i] = 8'h55;
                else
                    pmod_led[i] = 8'hff;
            end else begin
                if(i == 0)
                    pmod_led[i] = 8'haa;
                else
                    pmod_led[i] = 8'h00;
            end
        end
    end

endmodule


IDE/bin/gw_ide をダブルクリックして、GOWIN FPGA Designer を起動した。
File メニューから New... を選択して、プロジェクトを新規作成した。

New ダイアログが開いた。
Projects の FPGA Design Project を選択して、OK ボタンをクリックした。

Project Wizard ダイアログが表示された。
Project Name 画面で、Name に blink2 と入力し、Create in に /media/masaaki/Ubuntu_Disk/Gowin/HDL を指定した。
Next > ボタンをクリックした。

Slelect Device 画面
GW5A-LV25MG121NC1/10 を選択した。
Next > ボタンをクリックした。

Summary 画面
Finish ボタンをクリックした。

blink2 プロジェクトが作成できた。

blink2.sv を新規作成する。
File メニューから New... を選択した。

New ダイアログが開いた。
Files の Verilog File を選択した。
OK ボタンをクリックした。

New Verilog file ダイアログが開いた。
Name に blink2 を入力し .sv を選択した。
OK ボタンをクリックした。

blink2.sv ファイルが生成された。
blink2.sv のコードを用意した。
Tang_Primer_25K_146_240215.png

System Verilog を使えるように設定する。
Project メニューから Configration を選択した。
Configuration ダイアログが開いた。
Synthesis -> General をクリックし、GowinSynthesis の Verilog Language で System Verilog 2017 を選択した。
OK ボタンをクリックした。
Tang_Primer_25K_147_240215.png

Run Synthesis ボタンをクリックし、論理合成を行った。
Tang_Primer_25K_148_240215.png

ログを示す。

GowinSynthesis start
Running parser ...
Analyzing Verilog file '/media/masaaki/Ubuntu_Disk/Gowin/HDL/blink2/src/blink2.sv'
WARN  (EX3628) : Redeclaration of ANSI port 'led' is not allowed("/media/masaaki/Ubuntu_Disk/Gowin/HDL/blink2/src/blink2.sv":12)
WARN  (EX3628) : Redeclaration of ANSI port 'pmod_led' is not allowed("/media/masaaki/Ubuntu_Disk/Gowin/HDL/blink2/src/blink2.sv":13)
Compiling module 'blink2'("/media/masaaki/Ubuntu_Disk/Gowin/HDL/blink2/src/blink2.sv":4)
NOTE  (EX0101) : Current top module is "blink2"
[5%] Running netlist conversion ...
Running device independent optimization ...
[10%] Optimizing Phase 0 completed
[15%] Optimizing Phase 1 completed
[25%] Optimizing Phase 2 completed
Running inference ...
[30%] Inferring Phase 0 completed
[40%] Inferring Phase 1 completed
[50%] Inferring Phase 2 completed
[55%] Inferring Phase 3 completed
Running technical mapping ...
[60%] Tech-Mapping Phase 0 completed
[65%] Tech-Mapping Phase 1 completed
[75%] Tech-Mapping Phase 2 completed
[80%] Tech-Mapping Phase 3 completed
[90%] Tech-Mapping Phase 4 completed
[95%] Generate netlist file "/media/masaaki/Ubuntu_Disk/Gowin/HDL/blink2/impl/gwsynthesis/blink2.vg" completed
[100%] Generate report file "/media/masaaki/Ubuntu_Disk/Gowin/HDL/blink2/impl/gwsynthesis/blink2_syn.rpt.html" completed
GowinSynthesis finish


RTL Design Viewer でポートなどを見てみよう。

Gowin FPGA Designer の Tools メニューから Schematic Viewer -> RTL Design Viewer を選択した。
RTL Design Viewer が起動した。
Tang_Primer_25K_149_240215.png

pmod_led ポートは 1 次元配列となって、pmod_led[23:0] になっていた。上位のビットが pmod_led[0] なのだろうか?
Nets の pmod_led[0][7:0] をダブルクリックすると pmod_led[23:16] の色が赤になった。
pmod_led[0][7:0] が pmod_led[23:16] だった。
Tang_Primer_25K_150_240215.png
  1. 2024年02月15日 04:55 |
  2. Tang_Primer_25K
  3. | トラックバック:0
  4. | コメント:0

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック URL
https://marsee101.blog.fc2.com/tb.php/6187-b0d32fb3
この記事にトラックバックする(FC2ブログユーザー)