DFF1 w SyncWarn
非同期信号を同期化する際のガイド役としてSIM警告機能を付加した、1ビットDフリップフロップ
のVerilogサンプルコードです。
入力信号のパルス幅が設定値未満になると、SIM専用に設けたSYNCWARN信号をアサートし警告を
発します。同信号はVerilogのSpecifyブロックを用いて生成しているため、論理合成時には回路化
されません。回路規模を増やすことなく、SIM時のみのガイド役として機能します。
言うまでもありませんが、複数のクロックが混在する回路ブロックで、互いに異なるクロック系の間で
正しく信号をやりとりしようとすると、入力信号のトグル周波数とサンプリング周波数との関係で
一定のルールを守ることが必要となります。初期設計時には正しい回路、正しいコーディングが
なされていても、後々、動作周波数を変更することになったり、同期化の回路そのものを変更
したりといった場合に、当初のルールを外れ、正しく同期化できない回路になってしまうことも
あり得ます。これを簡単に防ぐ目的で、受け側のDフリップフロップにSIM警告機能を設けたものが
本サンプルコードです。
SIMはファンクションSIMで構いませんが、Specifyブロックはタイミングをチェックしています。
異なるクロック系は、それぞれ正規の周波数で動作するよう、SIM環境を構築しておきましょう。
なお、単一のクロックで動作する同期回路としてコーディングする場合は、このようなガイド付きの
コードを使う必要は全くありません。むしろSIM を重くするだけなので、使用すべきではないでしょう。
また、付加されているのはあくまでSIM 上の警告信号ですので、そもそもSIM しない向きには全く
意味がないこともお忘れなく。
のVerilogサンプルコードです。
入力信号のパルス幅が設定値未満になると、SIM専用に設けたSYNCWARN信号をアサートし警告を
発します。同信号はVerilogのSpecifyブロックを用いて生成しているため、論理合成時には回路化
されません。回路規模を増やすことなく、SIM時のみのガイド役として機能します。
言うまでもありませんが、複数のクロックが混在する回路ブロックで、互いに異なるクロック系の間で
正しく信号をやりとりしようとすると、入力信号のトグル周波数とサンプリング周波数との関係で
一定のルールを守ることが必要となります。初期設計時には正しい回路、正しいコーディングが
なされていても、後々、動作周波数を変更することになったり、同期化の回路そのものを変更
したりといった場合に、当初のルールを外れ、正しく同期化できない回路になってしまうことも
あり得ます。これを簡単に防ぐ目的で、受け側のDフリップフロップにSIM警告機能を設けたものが
本サンプルコードです。
SIMはファンクションSIMで構いませんが、Specifyブロックはタイミングをチェックしています。
異なるクロック系は、それぞれ正規の周波数で動作するよう、SIM環境を構築しておきましょう。
なお、単一のクロックで動作する同期回路としてコーディングする場合は、このようなガイド付きの
コードを使う必要は全くありません。むしろSIM を重くするだけなので、使用すべきではないでしょう。
また、付加されているのはあくまでSIM 上の警告信号ですので、そもそもSIM しない向きには全く
意味がないこともお忘れなく。
Port | I/O | Description |
---|---|---|
CLK | in | 同期クロックです。本モジュールの全ての信号は、本クロックに同期している想定です。 |
DIN | in | フリップフロップのD入力です。 |
DOUT | out | フリップフロップのQ出力です。 |
※特に注記のない限り、信号は全て正論理です。
本ソースコードはVerilog版のみとなっております。
詳細は下記の資料ダウンロードをクリックください。
詳細は下記の資料ダウンロードをクリックください。