このページは機械翻訳を使用して翻訳されました。元の英語を参照するには、ここをクリックします。
キャプチャ可能な信号を使用して Intel FPGA ボードからオーディオ信号をストリーミングする
この例では、既存の HDL コードを使用して FPGA データ キャプチャでキャプチャ準備完了信号を使用し、FPGA ストリーミング信号を読み取る方法を示します。この例では、オーディオ信号をサンプリングするためのオンチップのアナログ-デジタル コンバーター (ADC) を実装する既存の FPGA 設計から始まります。ADC 知的財産 (IP) は、制御用の Avalon® メモリマップ (MM) スレーブ インターフェイスと、データ出力用の Avalon ストリーミング インターフェイスを公開します。既存の例には、ADC を起動するための単純な Avalon MM マスターが含まれています。FPGA データ キャプチャを使用して、Avalon ストリーミング インターフェイスから ADC 出力データを収集し、そのデータを MATLAB® ワークスペースにストリーミングします。
ready_to_capture
信号は FPGA データ キャプチャ HDL IP から出力されます。この出力は、FPGA データ キャプチャ HDL IP の前に先入れ先出し (FIFO) を配置し、データ キャプチャ IP にデータをストリーミングする前に ready_to_capture
信号をチェックした場合に、連続データをキャプチャします。FIFO が空でないことを確認する必要がある場合もあります。この図は、継続的なデータ キャプチャ ワークフローを示しています。
Avalon ストリーミング インターフェイスからのオーディオ データは FIFO に書き込まれ、ready_to_capture
信号がアサートされると FIFO が読み取られます。データのオーバーフローを回避するには、ready_to_capture
がデアサートされたときにデータをキャプチャできるほど FIFO が大きくなければなりません。この例では、FIFO の深度は 16 k に設定され、オーディオ サンプリング周波数は 50 kHz です。
要件と前提条件
サポートされているEDAツールとハードウェア に記載されているサポート対象バージョンの Intel Quartus® Prime ソフトウェア
Arrow® DECA MAX® 10 FPGA 評価キット
FPGA開発ボードのセットアップ
1. 電源スイッチがオフになっていることを確認してください。
2. FPGA 開発ボードとホスト コンピューターの間に JTAG ダウンロード ケーブルを接続します。
3. (オプション) 3.5 mm オーディオ ケーブルを使用して、FPGA ボードのライン入力ポートを携帯電話などのオーディオ ソースに接続します。この手順をスキップすると、キャプチャされたデータはランダムなノイズになります。
サンプルリソースを準備する
Intel Quartus をセットアップします。この例では、Intel Quartus 実行可能ファイルがファイル C:\altera\18.0\quartus\bin\quartus.exe
にあることを前提としています。実行可能ファイルの場所が異なる場合は、代わりにパスを使用してください。
hdlsetuptoolpath('ToolName','Altera Quartus II', ... 'ToolPath','C:\altera\18.0\quartus\bin\quartus.exe');
FPGAデータキャプチャコンポーネントを生成する
MATLAB でこのコマンドを実行して、FPGA Data Capture Component Generator ツールを起動します。
generateFPGADataCaptureIP
この例では、オーディオ システムの既存の HDL コードから 1 つの信号を監視します。信号は 12 ビットの adc_out
です。adc_out
信号は、オーディオ ライン入力信号のデジタル サンプルです。この信号で動作するようにデータ キャプチャ コンポーネントを構成するには、次の手順に従います。
1. FPGA ベンダー を Altera
に設定します。
2. 生成された IP 言語 を Verilog
に設定します。
3. ポート テーブルで信号の名前を adc_out
に変更します。
4. 信号のビット幅を12
に変更します。
5. サンプル深度を8192
に設定します。この値は、トリガーが検出されるたびにデータ キャプチャ ツールが MATLAB に返す各信号のサンプル数です。
この図はこれらのツール設定を示しています。
FPGA データ キャプチャ コンポーネントを生成するには、生成 をクリックします。生成の結果はレポートに表示されます。
FPGAデータキャプチャHDL IPの統合
生成された HDL IP コアをサンプル FPGA デザインに含める必要があります。生成されたレポートからモジュール インスタンス コードをコピーできます。この例では、生成された HDL IP を FIFO 経由で ADC 出力に接続します。
この例に付属する readyToCapture_top.v
ファイルを開きます。このコードのコメントを解除します。
datacapture1 u0(
.clk(clock),
.clk_enable(adc_valid),
.ready_to_capture(ready_to_capture),
.adc_out(adc_out)
);
readyToCapture_top.v
を保存し、変更した FPGA デザインをコンパイルし、次の Tcl スクリプトを使用して FPGA プログラミング ファイルを作成します。
system('quartus_sh -t readyToCapture_deca_max10.tcl &')
この例に含まれる Tcl スクリプトは、次の手順を実行します。
1. 新しい Quartus プロジェクトを作成します。
2. サンプル HDL ファイルと生成された FPGA データ キャプチャ HDL ファイルをプロジェクトに追加します。
3. デザインをコンパイルします。
4. FPGA をプログラムします。
次のステップに進む前に、Quartus プロセスが正常に終了するまで待機します。このプロセスには約 5 ~ 10 分かかります。
データのキャプチャ
FPGA データ キャプチャ コンポーネントが生成されるディレクトリに移動します。
cd hdlsrc
FPGA データ キャプチャでキャプチャ準備完了信号を使用するには、キャプチャ モードを Immediate に設定する必要があります。即時モードでデータをキャプチャするには、次の手順に従います。
1. FPGA データ キャプチャ System object™ を作成し、これらのプロパティを構成します。
DataCaptureObj = datacapture1; DataCaptureObj.TriggerPosition = 0; DataCaptureObj.NumCaptureWindows = 1; setRunImmediateFlag(DataCaptureObj,1);
2. FPGA データを継続的にキャプチャします。この例では、データの NumberOfSampledepth
スナップショットをキャプチャします。必要に応じて NumberOfSampledepth
値を変更できます。
NumberOfSampledepth = 10; Sample_depth = 8192; adc_out = int16(zeros(NumberOfSampledepth*Sample_depth, 1)); for i = 1:NumberOfSampledepth [~,~,adc_out(i*Sample_depth-(Sample_depth-1):i*Sample_depth)] = step(DataCaptureObj); end
3. キャプチャしたデータを .wav
形式で書き込んで、キャプチャしたオーディオ データを保存します。キャプチャしたデータを後で処理または再生します。
audiowrite('captured_audio_file.wav',adc_out,50000)
4. キャプチャしたデータを ロジック アナライザー ツールで表示します。ロジック アナライザー ツールでは、キャプチャされたデータのスナップショットを読み込むのに数秒かかる場合があります。
scope = dsp.LogicAnalyzer('NumInputPorts',1, ... 'DisplayChannelFormat','Analog', ... 'DisplayChannelHeight',100); tags = getDisplayChannelTags(scope); modifyDisplayChannel(scope,tags{1},'Name','adc_out'); scope(adc_out);
この図は、ロジック アナライザー ツールの 8k サンプルのオーディオ データを示しています。