このページは機械翻訳を使用して翻訳されました。最新版の英語を参照するには、ここをクリックします。
クロック、リセット、イネーブル信号
クロック、リセット、イネーブルの駆動
コシミュレーション中のモデルに内部スティミュラスを適用する立ち上がりエッジまたは立ち下がりエッジのクロック、リセット、またはクロック イネーブル信号を作成できます。これらの信号は次の方法で追加できます。
これらの信号を HDL コードに直接実装します。モデルがさらに大規模な HDL デザインの一部である場合、あなた (または大規模なモデル設計者) は、これらの信号をVerilog®またはVHDL®ファイルに実装することを選択できます。ただし、その実装はこのドキュメントの範囲を超えています。詳細については、HDL リファレンスを参照してください。
Simulinkブロックを使用した信号の追加
Simulink®Simulinkモデルに追加します。モデルにブロックを追加する手順については、Simulinkユーザー ガイドおよびリファレンスを参照してください。
次の抜粋例では、影付きの領域に、複数のHDL Cosimulationブロック モデルへの入力としてのクロック、リセット、およびクロック イネーブル信号が示されています。これらの信号は、2 つのSimulinkデータ型変換ブロックと定数ソース ブロックを使用して作成され、「Manchester Receiver Subsystem」というラベルの付いた HDL Cosimulation ブロックに接続されます。
HDL コシミュレーション ブロックのクロック ペインを使用したオプションのクロックの作成
メモ
ModelSim®およびXcelium™ユーザーのみ。
ブロック定義でクロックを指定すると、 Simulink は、指定された HDL 信号を駆動する立ち上がりエッジまたは立ち下がりエッジのクロックを作成します。
Simulink は、 50% のデューティ サイクルと、立ち下がりエッジの場合に反転する事前定義された位相を持つクロックを作成しようとします。該当する場合、 Simulink は奇数のSimulinkサンプル時間に対応するためにデューティ サイクルを低下させます。最悪の場合のデューティ サイクルはT=3
のサンプル時間に対して 66% になります。 $$。
Timescalesペインを相対タイミング モードまたは絶対タイミング モードに設定したかどうかに関係なく、クロック周期には次の制限が適用されます。
明示的にクロック周期を指定する場合は、2 分解能単位 (ティック) 以上のサンプル時間を入力する必要があります。
クロック周期 (明示的に指定されているかデフォルトかに関係なく) が偶数の整数でない場合、 Simulink は50% のデューティ サイクルを作成できないため、 HDL Verifier™ソフトウェアは立ち下がりデューティ サイクルを作成します。
のエッジ (最も近い整数に切り捨てられます)。
相対タイミング モードと絶対タイミング モードの計算の詳細については、 「Simulinkと HDL シミュレータのタイミング関係の定義」を参照してください。
次の図は、 Simulinkサンプル時間T=10
および HDL シミュレータ分解能制限 1 ns の立ち上がりエッジおよび立ち下がりエッジ クロックを含むタイミング図を示しています。この図は、これらのタイミングパラメーターが与えられた場合、クロック デューティ サイクルが 50% であることも示しています。
時計を作成するには、次の手順を実行します。
HDL シミュレーターで、ブロック内で定義する予定のクロック信号のパス名を決定します。これを行うには、「HDL 信号をブロック ポートにマップする」のステップ 1 でポートの信号パス名を決定するために説明したのと同じ方法を使用できます。
[ブロックパラメーター]ダイアログ ボックスの[Clocks]タブを選択します。
Newをクリックして、新しいクロック信号を追加します。
デフォルトのクロック信号名 (
/top/clk
) をダブルクリックして、テーブル内のFull HDL Name列の下のクロック信号パス名を直接編集します。次に、HDL シミュレーターのパス名構文を使用して新しいクロックを指定します。Simulinkテストベンチ コシミュレーション用の HDL 信号/ポートおよびモジュール パスの指定を参照してください。HDL シミュレーターは、 Clocksペインのベクトル信号をサポートしません。信号は 1 と 0 の値を持つロジック タイプである必要があります。
クロックが立ち上がりエッジ信号を生成するか立ち下がりエッジ信号を生成するかを指定するには、
Rising
Active Clock EdgeリストからRising
またはFalling
を選択します。Periodフィールドはクロック周期を指定します。デフォルト (
2
) を受け入れるか、 Periodフィールドをダブルクリックして目的のクロック周期を明示的に入力してデフォルトをオーバーライドします。Periodフィールドを偶数の整数として指定し、最小値は
2
です。クロック信号の編集が完了したら、 Applyをクリックして、変更内容をSimulinkに登録します。
次のダイアログ ボックスでは、 HDL Cosimulationブロックの立ち上がりエッジ クロックclk
を、デフォルトの周期 2 で定義します ( Xceliumで使用する例を示しています) $)。
フォースコマンドを追加して信号を駆動する
次の 2 つの方法のいずれかで、クロック、リセット、および信号の有効化を駆動できます。
Simulationペインに強制コマンドを追加する (ModelSimおよびXceliumユーザーのみ)
HDL Verifier HDL シミュレーター起動コマンド (
vsim
またはnclaunch
) と Force コマンドのいずれかを使用して信号を駆動することによって
例: HDL Cosimulation ブロックに入力されたコマンドの強制 [シミュレーション ペイン]
以下は、 Simulationで使用する HDL Cosimulation ブロックのXcelium ペインに強制コマンドを入力する例です。
以下は、 Simulationで使用する HDL Cosimulation ブロックのModelSim ペインに強制コマンドを入力する例です。
例: HDL Verifier HDL シミュレーター起動コマンドで使用されるforceコマンド
vsim
関数と強制コマンド (ModelSimユーザー):
vsim('tclstart', {'force /iqconv/clk 0 0, 1 5 ns -repeat 10 ns', 'force /iqconv/reset 1 0 ns, 0 8 ns'});
nclaunch
関数と強制コマンド (Xceliumユーザー):
nclaunch('tclstart',['-input "{force iqconv.clk 0 -after 5ns -repeat 10ns}"', '-input "{force iqconv.reset 1 -after 0ns 0 -after 8ns}"',]);