第1回「非同期回路の設計」(201205)

「たまにレジスタがおかしな値になる。」「連続データのはずが、たまにデータが抜けることがある。」「指定していないアドレスのレジスタ値が書き変ってしまった。」実機検証でこのような経験をされたことはないでしょうか?こんな時はまず非同期クロック間のデータ転送を疑ってみたほうがよさそうです。
「そもそもなぜ設計において非同期クロックが必要となるのか?回路設計は単一クロックが基本のはずだが?」と思われる方もおられるかも知れません。確かにその通りで回路設計は単一クロック単一エッジの同期設計で行うのが基本です。
しかしながらシステム全体を見渡してみると、CPU、バス、通信インターフェース回路、画像表示回路、ユーザ回路などにおいて必要となるクロック周波数は様々であり、システム全体でクロックを統一することはほぼ不可能と言えます。
ということで非同期クロック間のデータ転送を行う回路(以下非同期回路と呼ぶ)はシステムでは不可欠な構成要素なのです。
では、冒頭のような不具合を発生させないためにどのような回路設計を行えばよいのでしょうか。ポイントは2つあります。

1つは入力側のクロック周波数と受け側のクロック周波数を把握したうえで、正しくデータ転送を行う回路仕様をしっかり検討すること。入力と受け側のクロック周波数の比率によりデータを取り込むタイミングなどの回路構造は大きく変わります。データの抜けや追い越しに気をつけて設計しなければなりません。
2つ目はFFのセットアップタイム、ホールドタイムを違反することで生じるメタ・ステーブルの対策を行うこと。周波数、位相が異なるクロック間ではこのメタ・ステーブルの現象は避けられません。対策回路はRTL設計スタイルガイドで紹介されていますので、これに準拠した回路を適応してください。

最後に非同期回路の検証方法についてですが、実機での確認はお勧めできません。非同期回路における不具合は発生頻度が低いという特徴がありますので、冒頭のような状況に陥ると原因究明に多くの時間がかかってしまいます。結論として非同期回路の検証はジッタを考慮したシミュレーションの実行と回路構造を解析する専用のツールで抑え込まなければいけません。

非同期回路の設計・検証のスキルは一人前の設計者になるための必須項目です。同期設計をマスターした方は是非ともチャレンジしてみてください。


今回ご紹介した内容については、以下の講座、書籍で詳しく解説しています。

●講座
検証上級講座
設計スタイルガイドセミナー

●書籍
RTL設計スタイルガイド

XILINX
教育サービス
HDLABトレーニング(SystemC)
HDLABトレーニング(SystemVerilog)
HDLABトレーニング(Verilog HDL)
HDLABトレーニング(フレッシュマン向け)
HDLABトレーニング(専門分野)
HDLABトレーニング(組込み分野)
HDLABトレーニング(XILINX認定)
HDLABトレーニング日程表
HDLABトレーニング開催リクエスト
Eラーニング
STIL講座
STIL講座ログイン
設計スキルアセスメント
設計技能検定試験「ESA」
設計技能検定試験「ESA Basic」
設計・コンサルティング
ARM CPUモデル環境
SystemC
Design Style Guide
設計・検証のワンポイント
購入・見積もり
ダウンロード
お問い合わせ

XAP