パラメーター指定可能なアキュムレータ - 2020.2 日本語

Vivado Design Suite ユーザー ガイド: System Generator を使用したモデル ベースの DSP デザイン (UG897)

Document ID
UG897
Release Date
2020-11-18
Version
2020.2 日本語

この例では、MCode ブロックを使用して、柔軟なインプリメンテーションを可能にするため持続性ステート変数とパラメーターを定義したアキュムレータを作成する方法を示します。次の M コードは、xl_accum.m に含まれる M 関数 xl_accum を定義します。

function q = xl_accum(b, rst, load, en, nbits, ov, op, feed_back_down_scale)
% q = xl_accum(b, rst, nbits, ov, op, feed_back_down_scale) is
% equivalent to our Accumulator block.
  binpt = xl_binpt(b);
  init = 0;
  precision = {xlSigned, nbits, binpt, xlTruncate, ov};
  persistent s, s = xl_state(init, precision);
  q = s;
  if rst
    if load
      % reset from the input port
      s = b;
    else
      % reset from zero
      s = init;
    end
  else
    if ~en
    else
      % if enabled, update the state
      if op==0
        s = s/feed_back_down_scale + b;
      else
        s = s/feed_back_down_scale - b;
      end
    end
  end

次の図に、M 関数 xl_accum を使用するアキュムレータ MCode ブロックを含むサブシステムを示します。MCode ブロックには、MCode Accumulator という名前が付いています。サブシステムには、比較のため、Accumulator というザイリンクス アキュムレータ ブロックも含まれています。MCode ブロックは、ザイリンクス アキュムレータ ブロックと同じ機能を持ちますが、MCode ブロックのパラメーターをマスク インターフェイス (パラメーター ダイアログ ボックスの [Interface] タブ) で指定している点が異なります。

図 1. MCode アキュムレータ

Accum_MCode1 ブロックのオプションの入力 rst および load は、[Interface] タブでディスエーブルに設定されています。次に、MCode Accumulator ブロックのパラメーター ダイアログ ボックスを示します。

図 2. MCode アキュムレータのマスク

この例には、同じ M 関数を使用した MCode ブロックのアキュムレータ サブシステムがさらに 2 つ含まれていますが、異なるパラメーター設定を使用して、異なるアキュムレータを作成しています。