2025年12月1日更新
Moku Compileは、Moku FPGAベースのテスト・計測ツール全シリーズで利用可能な革新的な機能です。Moku Compileを使用すると、VHDLまたはVerilogコードをMokuデバイスにデプロイできます。このコードはカスタム機能を提供し、既存の計測器と連携することで、MokuのInstrument-on-Chipアーキテクチャによって実現される、新しくユニークな計測器を実現します。
このアプリケーションノートでは、Moku Compile の使い方について解説します。このガイドを読み終える頃には、Moku にカスタムコードをコンパイルしてデプロイするための基礎知識を習得できます。以下の例はどれも、どの Moku デバイスでも動作します。
概要
Moku Compileを使用すると、Mokuプラットフォームに実装するためのカスタム処理と機能を設計できます。CPUや特定用途向け集積回路(ASIC)ベースのDSPアプローチと比較して、FPGAプラットフォームは、従来のCPUのようにソフトウェアでプログラム可能でありながら、ASICレベルに近いレイテンシとパフォーマンスを提供します。
CPUベースの設計向けソフトウェアの開発には、広く使用されているソフトウェア言語が数多く存在しますが、FPGAプログラミングは一般的にVHDLまたはVerilogに限られています。これらの言語は、大規模で複雑なローカルツールチェーンのインストールを必要とします。HDLコードを展開できるプラットフォームは、通常、FPGAベンダーの評価ボードか、機能が限定されたオープンソースのハードウェアボードに限られています。Moku Compileには、以下の2つの機能があります。
- Moku Cloud Compile は、クラウドベースの統合型 VHDL および Verilog コンパイラです。
- Moku Custom Instrument は、コンパイルされたコードを展開する Moku デバイスで利用可能なインストゥルメントです。
Moku Compile は、高性能な研究室や研究グレードのハードウェア上で、従来の FPGA 設計ソフトウェアのオーバーヘッドなしにカスタム処理を実現するニーズに対応します。Moku Cloud Compile は、カスタムコードをクラウドでコンパイルし、あらゆる Moku デバイスにデプロイ可能なパッケージを提供します。
図 1: Moku Cloud Compile 導入プロセス
マルチインストゥルメントモードとMokuコンパイル
マルチ計測器モードでは、複数の計測器を同時に配置して動作させることができます。マルチ計測器モードでは、Moku上のFPGAのパーティションを表す複数のスロットが表示されます。これらのスロットには、計測器を柔軟に配置できます。図2は、スロット1にオシロスコープ、スロット2にスペクトラムアナライザを配置し、スロット3と4が空いているマルチ計測器モードのインターフェースを示しています。残りのスロットには、カスタム計測器を使用したカスタム設計のビットストリームなど、Mokuプラットフォームの拡張を続ける計測器リストのいずれかを配置できます。計測器の完全なリストは、こちらでご覧いただけます。 こちら.
図 2: マルチインストルメント モードでテスト システムを構築する。
図3のスロット4はMokuカスタムインストゥルメントで、コンパイル済みの設計をデプロイできます。カスタムインストゥルメントはマルチインストゥルメントモードで任意の空きスロットを占有でき、ADCおよびDACの入出力に加えて、他のMokuインストゥルメントと連携した設計が可能になります。
図 3: スロット 4 に Moku Custom Instrument を搭載して構築されたマルチインストゥルメント モードのセットアップ。
Moku Cloud Compile アカウントのセットアップ
Mokuデバイスにコードをコンパイルまたはデプロイする前に、まずオンラインアカウントを作成する必要があります。これは簡単なプロセスです。
- Moku Cloud Compileのユーザーアカウントを設定する コンパイル.liquidinstruments.comMokuOS の古いバージョン (v4.0 より前) を使用している場合は、代わりにレガシーコンパイラサイトを使用してください。 compile-legacy.liquidinstruments.com.
- 初めてご利用の場合は、「サインアップ」を選択する必要があります。
- サインアップ ページでは、ユーザーが選択したユーザー名、有効なメール アドレス、およびユーザー定義のパスワードのみが必要です。
- サインアップしてログインすると、図 4 に示すように、最初は空のプロジェクト ページが表示されます。
図 4: Moku Cloud Compile プロジェクト作成画面。
最初のプロジェクトを作成する
アカウントを作成してMoku Cloud Compileにログインすると、これまでの作業やデザインがすべて利用可能になります。さらに、新しいプロジェクトを作成したり、Mokuプラットフォームの将来の機能拡張に合わせて以前のデザインを再構築したりすることもできます。プロジェクトページは図5のとおりです。既存のコードは、 githubの リポジトリをクリックして インポート例とりあえず、 プロジェクトを作成します。
図 5: Moku Cloud Compile プロジェクト画面。
次に、図 6 に示すポップアップ ダイアログ ボックスを使用して、プロジェクトに名前を付け、デザインのコーディングを開始します。
図 6: 新しいプロジェクト ダイアログ ボックス。
次に、図7に示すプロジェクト構成画面が表示されます。ドロップダウンメニューに注目してください。 ビルド構成 画面の左下に向かって。
図 7: プロジェクト構成画面。
デザインをビルドする前に、まず使用しているハードウェアとMokuOSのバージョンを指定する必要があります。ビルド構成のドロップダウンを開くと、 ハードウェアモデル ドロップダウンから、現在使用しているMokuデバイスのいずれかを指定できます。適切なデバイスを選択すると、 スロット数 必要に応じて入力してください。Moku:GoとMoku:Labには、2つまたは3つのスロットのオプションがあります。最後に、Mokuデバイスで現在実行しているMokuOSのバージョンを指定する必要があります。どのバージョンが適切か分からない場合は、 MokuOSバージョン 使用しているMokuアプリの右下(図8参照)にこの情報が表示されます。最後に、 カスタムインストルメント 下 ターゲットインターフェース これが初めてのクラウドコンパイルプロジェクトである場合( カスタムラッパー 古いプロジェクトとの互換性を確保するために、新しいエンティティが利用可能です。
注:デバイス上のMokuOSをアップデートするたび、またはコードを別のMokuハードウェアにデプロイするたびに、デザインを再構築する必要があります。これは、プロジェクトを開き、ハードウェアとMokuOSの選択を変更し、ビルドを選択して、新しいビットストリームをダウンロードするだけで簡単に実行できます。
図 8: デバイス選択画面。右下隅に MokuOS のバージョン番号が表示されます。
デザインの構築
エンティティ カスタムインストルメント HDLコードをMokuハードウェアとインターフェースする方法です。エンティティは、カスタム設計で実装する必要があるインターフェースと変数を定義します。Moku Cloud Compileで新しいファイルを作成すると、コードはこのエンティティが既に定義された状態で開始されます。変更する必要はありません。古いコードやサンプルでは、エンティティが使用されている場合があることに注意してください。 カスタムラッパーこれは機能が似ており、古いコードバージョンとの互換性のために設計されており、すべての新しいデザインでは カスタムインストルメント.
Moku Cloud Compile 設計は、マルチインストゥルメント モードを介してスタンドアロン インストゥルメントとして展開できますが、ほとんどの設計は他の Moku インストゥルメントと組み合わせて展開すると、真のメリットが得られます。
最初のプロジェクト
この最初のプロジェクトでは、マルチインストゥルメントモードでInputAとInputBにマッピングされた2つの入力を受け取り、基本的な組み合わせ演算を実行するカスタムインストゥルメントを設計します。これらの2つの入力(InputA + InputB)の加算結果は、図9に示すようにOutputAに出力されます。また、2つの入力の減算結果は、図10に示すようにOutputBに出力されます。

VHDLコードの入力
この例ではVHDLを使用してプログラミングしますが、Verilogも使用できます。プロジェクトにHDLコードを挿入する方法は2つあります。まず、図11で強調表示されているボタンをクリックして、Moku Cloud Compileインターフェースにコードを入力します。まず、このコードを格納するファイルを作成する必要があります。今回は、 アダー.vhd.
図 11: プロジェクト内に VHDL ファイルを作成します。
これは、VHDL設計のコードを入力するファイルです。ファイルが作成されると、図12に示すように、カスタマイズ可能な空のテンプレートが表示されます。
図 12: ファイル テンプレートにコードを入力します。
この最初のプロジェクトでは、完全なコードをAdder.vhdファイルに直接コピー&ペーストし、完了したら保存してください。この簡単な例では、Adder.vhdファイル内の現在のコードをすべて上書きし、以下のコードを追加してください。
ライブラリ ieee;
CustomInstrumentのアーキテクチャの動作は
始まる
出力A <= 入力A + 入力B;
出力B <= 入力A – 入力B;
エンドアーキテクチャ。
VHDLコードのアップロード
Moku Cloud Compileのユーザーインターフェースでは、既に作成した.vhdファイルまたは.vファイルを直接アップロードすることもできます。この機能は、多数のファイルを含む複雑なプロジェクトや、特定のテキストエディタで作業する場合に特に便利です。図13は、既に作成したファイルから独自のVHDLコードをアップロードするためのボタンを示しています。
図 13: Moku Cloud Compile インターフェース内での VHDL コードのアップロード。
VHDLコードからビットストリームを生成する
VHDL設計をビルドするには、すべてのVHDLファイルをMoku Cloudに保存するだけです。ビルド構成が正しいことを確認し、プロジェクトウィンドウの右上にある「ビルド」を選択してください。プロジェクトのビルドは、図14に示すプロセスで実行されます。ビルドプロセスでエラーが発生した場合は、ビルドログに問題の説明とともにハイライト表示されます。

図 14: Moku Cloud Compile ビルド プロセスのフェーズ。
コードのコンパイルが完了すると、「IP」、「合成」、「配線」、「ビットストリーム」のアイコンがすべて緑色になります。ビルドログには黄色のテキストで表示されるコンパイラまたはシンセサイザーの警告が多数表示される可能性があります。これらの警告は、今回の目的上、ほとんど無視して構いません。ただし、エラーが発生した場合は、ビルドプロセスを停止させるため、注意が必要です。
将来使用するためにビットストリームを保存する
このビットストリームをコンピュータに保存しておけば、将来、デザインを再構築することなく、さまざまなマルチインストゥルメントモード構成で使用したり展開したりできます。まず、ドロップダウンを展開して 最新ビルド 画面の左下にある ビルド構成次に、図15に示すように、bitstream.tarファイルをダウンロードし、Mokuアプリにインポートするための既知の場所に保存します。このファイルは解凍したり展開したりしないでください。ただし、機能を説明するためにファイル名を変更することは可能です。
図 15: ビットストリームのダウンロード。
デザインの展開
コンパイルされたビットストリームはカスタムインストゥルメントを使用してデプロイされ、通常はマルチインストゥルメントモードを介してMokuで利用可能な他のインストゥルメントと組み合わせて使用されます。ビットストリームがスタンドアロンとして設計されている場合でも、Mokuデバイスのマルチインストゥルメントモードを介してデザインの機能にアクセスする必要があります。
マルチインストゥルメントモードの構成
Mokuカスタムインストゥルメントは、Mokuの空きスロットに配置できます。スロットの選択は、Mokuで設計したいインストゥルメントのチェーンと機能に応じて決定されます。この最初の例では、図16に示すMoku:Goのマルチインストゥルメントモード構成を使用します。
図 16: マルチインストゥルメントモードの構成。
スロット1にはMokuがあります オシロスコープ 出力Aと出力Bは、カスタムインストゥルメントを含むスロット2の入力Aと入力Bにルーティングされています。カスタムインストゥルメントの出力Aと出力Bは、デフォルトでスロット1の入力Aと入力Bにルーティングされます。この設定により、Moku:Goデバイス1台で設計のパフォーマンスを検証できます。
ビットストリームの展開
マルチインストゥルメントモードの設定とMoku Compileビットストリームのビルドとダウンロードが完了したら、ビットストリームを展開する準備が整います。展開するには、Moku Custom Instrumentアイコンの下にある3つの点をクリックします。「ビットストリームを参照」をクリックすると、図17に示すように、Moku Compileビットストリームブラウザが開きます。この機能はMoku Cloud Compileアカウントにリンクして、ビットストリームをデバイスに直接ダウンロードできます。手順については以下で説明します。まずは、 ローカル ビットストリーム… 先ほどダウンロードしたファイルに移動します。読み込まれたら、 変更を適用する マルチインストゥルメント モードの右上にある をクリックすると、カスタム インストゥルメントが実行されます。
図 17: Moku コンパイル ビットストリーム ブラウザー。
Cloud Compileアカウントのリンク
ビットストリームブラウザを使用してビットストリームをデバイスに直接ダウンロードする場合は、まずMoku Cloud CompileのウェブサイトからAPIキーを取得する必要があります。ログイン後、右上の文字(イニシャル)をクリックし、 環境設定 図18に示すように、ドロップダウン メニューから選択します。

図 18. Moku Cloud Compile の設定メニュー。
左側のメニューで、 APIキー作成したすべてのキーが表示されます。クリック APIキーを作成をクリックして名前を入力します。すべてのボックスをオンにして すべて選択します。 準備ができたら、をクリックします。 創造する図19に見られるように。

図 19. API キー作成メニュー。
APIキーが記載されたポップアップが表示されます。クリックしてください。 コピー このキーは再度表示できないため、どこかに貼り付けてください。コピーしたら、メニューを閉じて「APIキー」メニューに戻り、新しいキーの名前が表示されます。
Mokuデバイスのマルチインストゥルメントモード画面に戻り、前のセクションの図16に従って設定を行います。 ビットストリームを閲覧する、[OK]をクリックします APIキーを設定する 図20に示すように、取得したキーをコピーして貼り付け、 同意.

図 20. ビットストリーム ブラウザの API キー情報。
これを実行すると、左側に既存のプロジェクトが表示され始め、最新のビルド情報が表示されます。図21に示すように、最近コンパイルされたはずの「MyFirstProject」を確認します。 ビットストリームを使用する Mokuにロードするには、アップロード後、マルチインストゥルメントモードの設定画面に戻ります。 変更を適用する 次のセクションに進む前に、Moku を設定してください。
図 21: ビットストリーム ブラウザでビットストリームを選択する。
結果
Mokuオシロスコープの信号発生器機能を使用して、Moku Cloud Compileの加算器機能をデモンストレーションします。Moku Cloud Compileの設計が期待通りに動作することを確認するために、両方の出力チャネルに単純な2VDC信号を印加します。オシロスコープの入力Aには、安定した4V信号で0つの信号の加算結果が読み取られます。また、オシロスコープの入力Bには、安定した22V信号でXNUMXつの信号の差が読み取られます(図XNUMXを参照)。
図 22: 加算器のサンプル DC 結果。
信号タイプを「正弦波」に変更して、様々な効果を試すこともできます。異なる周波数の23つの正弦波を組み合わせるとビート音が生成され、同じXNUMXつの正弦波の位相を変えると、建設的干渉または破壊的干渉が生じます。図XNUMXにその例を示します。生成された信号に人工的なノイズを加えたい場合は、「ノイズ」信号タイプを選択することもできます。
図 23: 加算器のサンプルビートノート結果。
結論
ここで紹介した例は非常にシンプルですが、このアプリケーション ノートは、Moku Cloud Compile をすぐに使い始め、再構成可能な Moku プラットフォームの真の柔軟性を活用できるようにすることを目的としています。