FPGA ターンキー ワークフロー入門
この例では、FPGA ターンキー ワークフローを使用して MATLAB® 設計でスタンドアロン FPGA をプログラムする方法を示します。
この例のターゲット デバイスは Xilinx® Virtex-5 ML506 開発ボードです。
はじめに
この例では、関数 mlhdlc_ip_core_led_blinking
は、FPGA ボード上の LED を点滅させるカウンターをモデル化します。
2 つの入力端子 Blink_frequency
および Blink_direction
は LED の点滅頻度および方向を決定する制御端子です。
ハードウェアの入力値は、Xilinx Virtex-5 ML506 開発ボードのプッシュボタンで調整できます。設計関数 'LED' の出力端子は、LED ハードウェアに接続します。
design_name = 'mlhdlc_turnkey_led_blinking'; testbench_name = 'mlhdlc_turnkey_led_blinking_tb';
MATLAB 設計を確認します。
type(design_name);
function [LED, Read_back] = mlhdlc_turnkey_led_blinking(Blink_frequency, Blink_direction) % % Copyright 2013-2015 The MathWorks, Inc. persistent freqCounter LEDCounter if isempty(freqCounter) freqCounter = 0; LEDCounter = 255; end if Blink_frequency <= 0 Blink_frequency = 0; elseif Blink_frequency >= 15 Blink_frequency = 15; end blinkFrequencyOut = LookupTable(Blink_frequency); if blinkFrequencyOut == freqCounter freqMatch = 1; else freqMatch = 0; end freqCounter = freqCounter + 1; if freqMatch freqCounter = 0; end if Blink_direction LED = 255 - LEDCounter; else LED = LEDCounter; end if LEDCounter == 255 LEDCounter = 0; elseif freqMatch LEDCounter = LEDCounter + 1; end Read_back = LED; end function y = LookupTable(idx) s = 2.^(26:-1:11)'; y = s(idx+1); end
type(testbench_name);
% % Copyright 2013-2015 The MathWorks, Inc. for i=1:16 [yout, ~] = mlhdlc_turnkey_led_blinking(i-1, 0); [yout2, ~] = mlhdlc_turnkey_led_blinking(i-1, 1); end
HDL Coder™ プロジェクトの新規作成
coder -hdlcoder -new mlhdlc_turnkey_led_blinking_prj
次に、mlhdlc_turnkey_led_blinking.m
ファイルを MATLAB 関数としてプロジェクトに追加し、mlhdlc_turnkey_led_blinking_tb.m
を MATLAB テスト ベンチとして追加します。
MATLAB HDL Coder プロジェクトの作成と入力に関する詳細なチュートリアルについては、MATLAB から HDL へのワークフロー入門を参照してください。
設計を固定小数点に変換
1.[入力の型を定義] タスクを右クリックして [このタスクを実行] を選択します。
2. [固定小数点の変換] タスクで [詳細設定] をクリックし、[シミュレーションの最小/最大値に対する安全余裕 (%)] を 0 に設定します。
3. 変数 freqCounter
の [推奨された型] 列に「numerictype(0, 27, 0)
」と入力することで、その推奨された型を符号なし 27 ビット整数に設定します。
4.左側の [固定小数点の変換] タスクを右クリックして [このタスクを実行] を選択します。
設計端子をターゲット インターフェイスにマッピング
[コード生成ターゲットを選択] タスクで、次のように [FPGA Turnkey] ワークフローと [Xilinx Virtex-5 ML506 development board] を選択します。
1.[ワークフロー] で [FPGA Turnkey] を選択します。
2. [プラットフォーム] で [Xilinx Virtex-5 ML506 development board] を選択します。ターゲット デバイスがリストにない場合は、[さらに取得] を選択してサポート パッケージをダウンロードします。[チップ ファミリ]、[デバイス]、[パッケージ] および [速度] は、プラットフォームの選択に応じて自動的に設定されます。
3. FPGA クロック周波数について、[入力周波数 (MHz)] と [ターゲット周波数 (MHz)] の両方を 100 に設定します。
4.[ターゲット インターフェイスを設定] タスクで、[ターゲット プラットフォーム インターフェイス] 列のフィールドを次のように設定して、設計の入力端子と出力端子をターゲット デバイスのインターフェイスにマッピングします。
Blink_frequency_1
をUser Push Buttons N-E-S-W-C [0:4]
Blink_direction
をUser Push Buttons N-E-S-W-C [0:4]
LED
をLEDs General Purpose [0:7]
Read_back
端子はマッピングしないままでかまいません。
プログラミング ファイルを生成してハードウェアにダウンロード
既定の設定を使用してコードを生成し、合成と解析を実行して設計をターゲット ハードウェアにダウンロードできます。
1.[合成と解析] タスク グループで、[この手順をスキップ] オプションをオフにします。
2. [ターゲットにダウンロード] タスク グループで、[この手順をスキップ] オプションをオフにします。
3. [ターゲットにダウンロード]、[プログラミング ファイルを生成] を右クリックして [選択したタスクまで実行] を選択します。
4.ターゲット ハードウェアが接続されていてプログラムする準備ができている場合は、[ターゲット デバイスをプログラム] サブタスクを選択して [実行] をクリックします。