組み込み機器・ハードウェアの設計開発から装置製作まで社内一貫対応!

組み込み機器・ハードウェア設計製作.com
組み込み機器・ハードウェア設計製作.com

produced by株式会社アイディアイ

設計のポイント

verilog記述のポイント:2段フリップフロップによる非同期信号の同期化

設計内容分類FPGA

実現したい仕様・課題

外部スイッチや他クロックドメインからの信号など、自クロックに非同期な信号をそのままフリップフロップで受けると、セットアップ/ホールド時間違反によりメタステーブル(出力が不定になる準安定状態)が発生し、後段回路の誤動作を引き起こします。非同期入力を安全に自クロックドメインへ取り込みたいというのが課題です。

設計のポイント

非同期信号は、自クロックで駆動するフリップフロップを2段直列に通してから使用します(2段シンクロナイザ)。1段目のフリップフロップでメタステーブルが発生しても、次のクロックエッジまでの間に出力が安定する確率が十分高く、2段目で受けることで後段へ不定値が伝播するリスクを実用上無視できるレベルまで低減できます。重要なのは、同期化前の信号を2段目以外の回路で直接参照しないことです。同期化前の信号を複数箇所で受けると、箇所ごとに異なる値として取り込まれる危険があります。また、この方式で安全に渡せるのは1bitの信号です。多ビットのデータやカウンタ値をビットごとに同期化すると、ビット間で取り込みタイミングがずれて不正な値になるため、多ビットの受け渡しにはDCFIFO、ハンドシェイク、グレイコード化カウンタなどの手法を用います。パルス幅が受け側クロック周期より短い信号は取りこぼすため、パルス伸長やトグル信号化などの対策も併せて検討します。

【コード例】
reg sig_ff1, sig_ff2;
always @(posedge clk) begin
sig_ff1 <= async_in; // 1段目(メタステーブルの可能性あり)
sig_ff2 <= sig_ff1; // 2段目(安定した値として使用可)
end
// 以降の回路では sig_ff2 のみを参照する

verilog記述のポイント:2段フリップフロップによる非同期信号の同期化 | 組み込み機器・ハードウェア設計製作.com

補足情報

当事例のような、FPGA設計に関するポイントをまとめた冊子の無料DLが可能です。
是非以下よりご確認ください。

FPGA設計のポイント

>>ダウンロードはこちら!

設計のポイント 一覧

FPGA設計のポイント

お問い合わせ

組み込み機器・ハードウェア 設計製作.comを運営する株式会社アイディアイは、組み込み機器・ハードウェアの設計開発代行サービスを提供しています。
試験装置や制御機器、組み込みボードなど、設計・開発委託先をお探しの皆様、お気軽に当社に御相談ください。

技術資料のダウンロードはこちらから 技術資料ダウンロ―ド メールフォームでのお問い合わせはこちらから ご相談お問合せ