このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
HDL コード生成および高位合成コード生成のカウンターのモデル化
ハードウェアをモデル化する、HDL コード生成および高位合成 (HLS) コード生成に適した MATLAB® コードを記述するには、この設計パターンを使用します。
この設計パターンは、HDL コード生成および HLS コード生成用の MATLAB コード作成に関する次のベスト プラクティスを説明します。
永続変数を特定の値に初期化します。この例では、
if
ステートメントとisempty
関数により永続変数を初期化しています。永続変数を初期化しない場合、HDL コードおよび HLS コードは生成できません。関数内の永続変数を変更する前に、その変数を読み取ります。これにより、その永続変数がレジスタとして推定されます。
この Simulink® モデルは、この例でモデル化されている MATLAB カウンターを示しています。
Simulink でカウンターをモデル化する方法については、HDL 互換 Simulink モデルの作成を参照してください。
カウンター用の MATLAB コード
関数 mlhdlc_counter
は、4 ビットの同期式加算カウンターの動作モデルです。入力信号 enable_ctr
により、カウント レジスタ count_val
の値が 1 増加します。カウンターは、ゼロ以外の入力があるたびに、上限 15 に到達するまで 1 ずつ増加し続けます。上限に達すると、カウンターはゼロに戻ります。現在のカウント値は永続変数により表されます。この永続変数の初期値は 0 です。2 つの if
ステートメントにより、カウント値が入力に基づいて判定されます。
mldhlc_counter
および mldhlc_counter_tb
を定義するには、以下のコードを使用します。
MATLAB コード | MATLAB テストベンチ |
---|---|
%#codegen function count = mlhdlc_counter(enable_ctr) % four bit synchronous up counter % persistent variable for the state persistent count_val; if isempty(count_val) count_val = 0; end % counting up if enable_ctr count_val=count_val+1; % limit to four bits if count_val>15 count_val=0; end end count=count_val; end | for i = 1:100 if mod(i,5) == 0 % do not increment the counter if mod(i,5) is zero. val = mlhdlc_counter(false); else val = mlhdlc_counter(true); end end |