PolarFire® SoCシリーズ① Lチカ_FPGA編

FPGA Faric

はじめに

1.概要

Microchip社のPolarFire® SoCは、不揮発性で低消費電力のミッドレンジSoC FPGAで、64ビットのRISC-V ISAを5コア搭載したプロセッサーと低消費電力FPGAを組み合わせたチップです。

(fig.1-1)PolarFire® SoC ブロック図

PolarFire® SoC FPGAs | Microchip Technology
Microchip Technology社 不揮発性SoC FPGA「PolarFire SoC」 – Microchip – マクニカ (macnica.co.jp)

intel(旧Altera)やAMD(旧ザイリンクス)のようなハイエンド向けではありませんが、高度なセキュリティ機能を有していますので、電力効率が高くセキュアなアプリケーション向けに使用されます。

2.この記事の目的

この記事は私の忘備録も兼ねて、PolarFire®SoCのFPGAにてLチカが出来る事を目指しています。

3.構成

PolarFire® SoC Discovery Kitを使用し、動作を確認していきます。
PolarFire® SoC Discovery Kit | Microchip Technology

Microchip Directでおおよそ23,000円程度で購入できます。Digikeyでチップ単体を購入すると約38,000円程度かかるので、この開発キットはかなり安いと感じます。

(fig.1-2)PolarFire® SoC Discovery Kit 外観
(fig.1-3)PolarFire® SoC Discovery Kit ブロック図

Lチカまでの道のり①

Lチカの前にまずは PolarFire® SoC Discovery Kit Quickstart Card (microchip.com) を参考に、デフォルトでインストールされているフィルターソフトを実行します。

1.ソフトのセットアップ

Libero® SoC 2024.1 のダウンロードとインストールを行います。Libero SoCは、アプリケーションの開発に使用される設計ツールです。
②Libero SoC Design Suite のシルバーライセンスを取得します。 MicrochipDirectからLibero Silverライセンスを生成します。

①シルバーライセンスには「Libero Silver 1 Yr DiskID NL License」と「Libero Silver 1Yr Floating License for Windows/Linux Server」が有りますが「Libero Silver 1 Yr DiskID NL License」を選択します。

②登録にはCドライブのDISK IDを求められますが、以下の2つの方法で確認ができます。
1)Microsemi(Microchip) License Utilityを立ち上げ、Disk volume の行に記載されている8桁16進数の値
2)コマンドプロンプトを立ち上げ 「C:\>Vol C:」とタイプする。

③DISK IDを入力し、問題なければ数分でMicrochipからライセンスファイルが添付されたメールが届きます。

④Microsemi(Microchip) License Utilityの「Add License File」ボタンをクリックし、ローカルに保存されたライセンスファイルを指定します。

⑤正常であればデータグリッドビューにライセンスが表示されます。

(fig.1-4)Microsemi(Microchip) License Utility


PolarFire® SoC MSS Configurator | Microchip Technology のダウンロードとインストールを行います。PolarFire® SoCマイクロプロセッササブシステム(MSS)コンフィギュレータは、PolarFire SoCマイクロプロセッササブシステムを構成するためのソフトウェアツールです。Libero SoC Design Suite v12.5以降のインストール時に同時にMSSコンフィギュレータがインストールされます。※今回の記事では使用しません。

ソフトコンソール |マイクロチップ・テクノロジー (microchip.com)のダウンロードとインストールを行います。SoftConsoleは、ベアメタルおよびRTOSベースのC/C++ソフトウェアを迅速に開発するためのソフトウェア開発環境です。※今回の記事では使用しません。

AN5165 | Application Note | Microchip Technology デモソフトのダウンロードとインストールを行います。

2.ハードウェアのセットアップ

①基板のジャンパーピンを以下の設定にします。私の購入時にはデフォルトで下記の状態になっていました。

JP状態役割
JP461-2ショートVDDAUX1電圧の設定
(1-2ショート = 3.3V / 2-3ショート = 2.5V)
JP451-2ショートVDDI1_5電圧の設定
(1-2ショート = 3.3V / 2-3ショート = 2.5V)
JP492-3ショートVCCB電圧の設定
(1-2ショート = 3.3V / 2-3ショート = 5V)
JP471-2ショート外部入力電圧の設定
(1-2ショート = USB-5Vを使用 / 1-2オープン = 外部5Vを使用)
(fig.1-5)ジャンパーピン設定

②FTDIのDrivers – FTDI (ftdichip.com)  ドライバーをインストールします。有名どころですのでインストール不要の場合もあるかもしれません。
ドライバをインストールしたら、基板とPCをUSB Type-Cを接続します。正常にインストールされていれば、下記の通り3つのCOMポートが表示されます。

(fig.1-6)シリアルポートの確認

3.デモソフトの実行

①PC上でGUIソフトを起動します。

(fig.1-7)FIR Filter Demo GUI画面

②上記の鎖アイコンをクリックすると、ボードの接続待ちに遷移します。ボード上のSW1を押しダイアログのOKを押すと接続が完了します。

③Generate Filterをクリックすると、127タップ/カットオフ20MHzのフィルターが生成されます。

(fig.1-8)FIR Filter Demo GUI画面にてGenerate Filterをクリック

④次にGenerate Signalをクリックしダミー信号を生成します。

(fig.1-9)FIR Filter Demo GUI画面にてGenerate Signalをクリック

⑤左のペインのFilter Inputをクリックすると入力信号とスペクトルが表示されます

(fig.1-10)FIR Filter Demo GUI画面の入力信号とスペクトル表示

⑥再生ボタンを押すとPolarFire® SoCと通信が行われ、結果が表示されます。50MHzの成分は除去されている事が判ります。

(fig.1-11)FIR Filter Demo GUI画面のフィルター出力画面

Lチカまでの道のり②

次はAN5282: PolarFire SoC Design Flow Application Note (microchip.com) を参考に基板上の2つのSWをどちらか押した時にLEDが消灯するプロジェクトを生成します。

1.プロジェクトの新規作成

①Libero SOC Design Suite アプリを起動し、左のペインからNewをクリックします。


(fig.2-1-1)Libero SOC Design Suite起動画面

②プロジェクトの名前と保存場所を入力しNextをクリックします。VHDLかVerilogかは自由ですが個人的にVerilogを触ったことが無かったのでVerilogにします。


(fig.2-1-2)Libero SOC Design Suite新規プロジェクト作成

③Device Selection画面では以下のように設定します。

項目
FamilyPolarFilre SoC
DieMPFS095T
PackageFCSG325
Speed-1
RangeEXT
Part NumberMPFS095T-1FCSG325E

(fig.2-1-3)Device Selection設定
(fig.2-1-4)Device Selection設定

④Device Setting画面では以下のように設定し、「Finish」を選択します。

項目
Core Voltage1.0
Default I/O technologyLVCMOS 1.8V
Reserve pin for probesチェック オン
System controller suspended modeチェック オフ
(fig.2-1-5)Device Seltting設定
(fig.2-1-6)Device Seltting設定

2.デザインの作成

①Create SmartDesignをダブルクリックし、Create New SmartDesignダイアログのNameに「andgate」と入力しOKをクリックします。

(fig.2-2-1)デザインの作成

②CatalogタブからMacro Library展開し「AND2」をダブルクリックします。

(fig.2-2-2)ゲートの作成

③ANDゲートのA,B,Yピンを選択し、右クリックでメニューを開き、「Prompto Top Level」をクリックします。

(fig.2-2-3)外部接続ピンの作成

④これにより外部接続可能なピンが生成されますので、一旦保存します。

(fig.2-2-4)外部接続ピンの作成

⑤Smart Design から「Genarate Component」をクリックします。

(fig.2-2-5)コンポーネントの作成

⑥ Design Hierarchyタブを選択し「Build Hierarchy」をクリック後、「andgate」を右クリックします。

(fig.2-2-6)ヒエラルキーの設定

⑦「Set As Root」をクリックします。

(fig.2-2-7)ルートの設定

3.デザインの合成

①Dedign Flowタブの「Implement Design > Synthesize」を右クリックし「Run」をクリックします。

(fig.2-3-1)シンセサイズ

②合成が完了すると、左の「Synthesize」にチェックアイコンが付きます。

(fig.2-3-2)シンセサイズ完了

③Dedign Flowタブの「Constraints > Manage Constraints」を右クリックし、メニューから「Open Constraint Manager view」をクリックします。

(fig.2-3-3)I/Oエディタの立ち上げ

④I/O Editorが立ち上がりますので、下記のようにPin Numberを設定します。

Port NamePin Number
AT19
BU18
YT18
(fig.2-3-4)I/Oピンの割り付け
(fig.2-3-4)I/Oエディタの設定

⑤設定後は「File > Exit」をクリック後、保存して終了します。

⑥「Design Flow」タブの上部の再生アイコンをクリックすると、配置、配線が行われます。

(fig.2-3-5)配置配線実行

4.書込み

①「Design Flow」タブの「Run PROGRAM Action」を右クリック後、メニューから「Run」を選択

(fig.2-4-1)書込み開始

②書き込みが完了するまで待機します。完了すると以下のようなメッセージが表示されます。

(fig.2-4-2)書込み完了

5.動作確認

これで基板上のSW1かSW2のどちらかを押すとLED1が消灯することが確認できると思います。

Lチカまでの道のり③

最後に1秒間隔でLED1を点滅させるプロジェクトを作成します。

1.プロジェクト作成

①プロジェクトを生成し「NEXT」をクリック

(fig.3-1-1)プロジェクトの作成

②MPFS095T-1FCSG325Eを選択し「NEXT」をクリック

(fig.3-1-2)デバイスの選定

③下記のように設定し「NEXT」をクリック

項目
Core Voltage1.0
Default I/O technologyLVCMOS 1.8V
Reserve pin for probesチェック オン
System controller suspended modeチェック オフ
(fig.3-1-3)デバイスの設定
(fig.3-1-4)デバイスの設定

④「Finish」をクリック

(fig.3-1-5)プロジェクトの生成完了

⑤Dedign Flowタブの「Create SmartDesign」をダブルクリック

(fig.3-1-6)スマートデザインの生成

⑥Create New SmartDesignダイアログのNameに「Lchica」と入力しOKをクリック

2.VHDLデザインの作成

①「File > New >HDL」の順にクリック

(fig.3-2-1)HDLの作成

②HDLtypeをVeriloghに選択、Nameを「Counter_32bit」と入力し「OK」をクリック

(fig.3-2-2)HDLの命名

③エディター画面に下記コードをペーストし保存

(fig.3-2-3)verilogの作成
module counter_32bit (
    input clk,
    input reset,
    output reg [31:0] count
);

always @(posedge clk or posedge reset) begin
    if (reset)
        count <= 32'b00000000000000000000000000000000;
    else
        count <= count + 1;
end

endmodule

⑤「File > New >HDL」の順にクリック

(fig.3-2-4)HDLの作成

⑥HDLtypeをVeriloghに選択、Nameを「comparator_32bit」と入力し「OK」をクリック

(fig.3-2-5)HDLの命名

③エディター画面に下記コードをペーストし保存します。

(fig.3-2-6)verilogの作成
module comparator_32bit(
    input [31:0] a,
    output reg gt,   // greater than (a > b)
    output reg gte,  // greater than or equal to (a >= b)
    output reg eq,   // equal (a == b)
    output reg lte,  // less than or equal to (a <= b)
    output reg lt    // less than (a < b)
);

parameter [31:0] FIXED_VALUE = 32'h02FAF080; // 32-bit fixed value

always @(*) begin
    // Initialize outputs
    gt = 0;
    gte = 0;
    eq = 0;
    lte = 0;
    lt = 0;

    // Perform comparisons
    if (a > FIXED_VALUE) begin
        gt = 1;
        gte = 1;
    end else if (a < FIXED_VALUE) begin
        lt = 1;
        lte = 1;
    end else begin
        eq = 1;
        gte = 1;
        lte = 1;
    end
end


endmodule

3.論理回路の作成

①Design Hierarchyタブを選択し「Build Hierarchy」をクリック後、「Lchica」を右クリックし、「Set As Root」をクリックします。

②作成したVerilogを右クリックし、「Instantiate in Lchica」をクリックします。

(fig.3-3-1)verilogのインスタンス化

③カウンターとコンパレータが追加されますので、更に「CLKBUF」「INV」「DFN1」を追加後、下記のように接続し、保存します。

(fig.3-3-2)モジュールの配線

④Lchicaを右クリックし「Generate Component」をクリック

(fig.3-3-3)コンポーネントの作成

⑤Build Hierarchyをクリック

(fig.3-3-4)コンポーネントの作成

4.デザインの合成

①Dedign Flowタブの「Implement Design > Synthesize」を右クリックし「Run」をクリックします。

③Dedign Flowタブの「Constraints > Manage Constraints」を右クリックし、メニューから「Open Constraint Manager view」をクリックします。

outlをT18、PADをR18に設定し保存後ウィンドウを閉じます。

(fig.3-4-1)ピンの設定

④「Design Flow」タブの上部の再生アイコンをクリックすると、合成が行われます。

⑤「Design Flow」タブの「Run PROGRAM Action」を右クリック後、メニューから「Run」を選択

⑥書き込みが完了するまで待機します。完了すると以下のようなメッセージが表示されます。

5.結果

チップ抵抗R699の方端をオシロスコープで確認すると1秒間隔でトグルしている事がわかります。

(fig.3-5-1)結果の確認

コメント

タイトルとURLをコピーしました