Raspberry Pi 備忘録 / Mbedもあるよ!

Raspberry Pi であれこれやった事の記録

Sipeed Tang primer を試す

f:id:pongsuke:20200728094039j:plainf:id:pongsuke:20200728094042j:plain
Tang Primer

TANG PRIMER という、FPGAの入門ボードみたいなの?を試します。

tang.sipeed.com

スイッチサイエンスから購入したのですが、商品名が Tang premier となっています。

www.switch-science.com

公式のガイド

Tang Primer Documentation :: Documentation for Tang Primer

Getting started を見ると、

  1. Requirements
  2. Installing Tang Dynasty IDE
  3. Installing USB Driver
  4. Getting to Blinky

となている。

ハードウェア構成

f:id:pongsuke:20200728094203j:plain

f:id:pongsuke:20200728144806p:plain

f:id:pongsuke:20200728144810p:plain

下の方にPINに関する詳細PDFがあります。

https://github.com/kprasadvnsi/tang-doc/releases/download/1.0.0/sipeed-tang-primer-pins.pdf

データシート

https://media.digikey.com/pdf/Data%20Sheets/Seeed%20Technology/102110202_Web.pdf

先に目を通しておきます。

IDE のダウンロードとインストール

ダウンロードの際に、キャプチャが有るのですが、なかなか難易度が高かったです・・・。

https://dl.sipeed.com/TANG/Primer/IDE

f:id:pongsuke:20200728094714p:plain

Installing USB Driver

そもそもわかっていないのですが、どうやら microUSB でつなぐようです。

USBで Windows10 パソコンと繋いで、デバイスマネージャーを確認しました。

f:id:pongsuke:20200728095758p:plain

右クリック から、ドライバーの更新、手動更新で、IDEインストール先のドライバーを指定します。

私の環境では C:\Anlogic\TD4.4.433\driver\win8_10_64 でした。

再起動して、再確認。 f:id:pongsuke:20200728102227p:plain

警告が出ています・・・

このデバイスに必要なドライバーのデジタル署名を検証できません。ハードウェアまたはソフトウェアに最近加えられた変更により、正しく署名されていないファイルや破損したファイルがインストールされた可能性があります。また、出所の不明な悪意のあるソフトウェアであることも考えられます。 (コード 52)

テストモードを試す

PS C:\WINDOWS\system32> bcdedit /set TESTSIGNING ON
要素データを設定中にエラーが発生しました。
この値はセキュア ブート ポリシーによって保護されているため、変更または削除できません。

仕方ないので、セキュアブートを無効しました。

認識の確認

IDE を立ち上げて、Download デバイスが出てくることを確認。

f:id:pongsuke:20200728103808p:plain

Getting to Blinky

サンプルコードを実行します。

github.com

git を Download して、Project > Open Project から Tang_FPGA_Examples-master\0.LED\prj\led.al を選択。

一旦 Run する。

led.bit が生成されるので、いよいよ読み込ませる。

Download から、 Add して、 Run

すると、RGB Led が、光りだします。

f:id:pongsuke:20200728105115j:plain

チュートリアルには、既知の不具合により Speed は 400kbps じゃないと動かない、、、と書かれていますが、1Mbps でも、動きました。

コードを見る

io.adc

set_pin_assignment {CLK_IN} { LOCATION = K14; }      ##24MHZ
set_pin_assignment {RST_N} { LOCATION = K16; }      ##USER_KEY

## RGB LEDs, 3 pins
set_pin_assignment {RGB_LED[0]} { LOCATION = R3;  } ##LED_R, R3
set_pin_assignment {RGB_LED[1]} { LOCATION = J14;  }    ##LED_G, J14
set_pin_assignment {RGB_LED[2]} { LOCATION = P13;  }    ##LED_B, P13

led.v

module led
    (
        input wire CLK_IN,
        input wire RST_N,
        output wire [2:0]RGB_LED
    );

    parameter time1 = 25'd24_000_000;//¾§ÕñΪ24Mhz

    reg [2:0]rledout;
    reg [24:0] count;
    reg [1:0]shift_cnt;
    
    initial
    begin
        count=25'b0;
        rledout=3'b1;
        shift_cnt=2'b0;
    end

    always @(posedge CLK_IN)begin
        if(RST_N==0)begin
            count <= 25'b0;
            rledout <= 3'b1;
            shift_cnt <=2'b0;
        end
    
        if(count == time1)
        begin 
            count<= 25'd0;
            
            if(shift_cnt==2'b10)begin
                rledout <= 3'b1;
                shift_cnt <=2'b0;
            end
            else begin
                rledout <= {rledout[1:0],1'b0};
                shift_cnt <= shift_cnt + 1'b1;
            end
        end
        else
            count <= count + 1'b1;
    end
    
    assign RGB_LED = rledout;
endmodule

そもそも、オンボードのフルカラーLEDの制御はどうするのか? という話ですが、上記のPDFを見ると 書いてあります。

R3 red
J14 green
P13 blue

f:id:pongsuke:20200728145143p:plain